|
commit b4cf1a9824f2c4ba9596044962d3af36e3ca3d99
Author: Albrecht Schlosser <albrechts.fltk@online.de>
AuthorDate: Sun Apr 14 19:05:39 2024 +0200
Commit: Albrecht Schlosser <albrechts.fltk@online.de>
CommitDate: Sun Apr 14 19:15:08 2024 +0200
Fix and improve generation of fltk-config (#954 and more)
Parts of this commit fix the usage of CMake targets in the generation
process of fltk-config modified by PR #954.
The rest improves handling of variables used to generate fltk-config,
removes obsolete comments, documents variables like GLLIBS etc. which
had to be done anyway.
CMake/options.cmake | 49 ++++++++++++++++++++++++++-----------------------
CMake/setup.cmake | 2 --
CMake/variables.cmake | 30 ++++++++++++++++++------------
src/CMakeLists.txt | 32 +++++---------------------------
4 files changed, 49 insertions(+), 64 deletions(-)
diff --git CMake/options.cmake CMake/options.cmake
index 45ece76..b242c5f 100644
--- CMake/options.cmake
+++ CMake/options.cmake
@@ -603,13 +603,16 @@ if(FLTK_BUILD_GL)
if(FLTK_BACKEND_WAYLAND)
pkg_check_modules(WLD_EGL IMPORTED_TARGET wayland-egl)
pkg_check_modules(PKG_EGL IMPORTED_TARGET egl)
- pkg_check_modules(PKG_GL IMPORTED_TARGET gl)
+ pkg_check_modules(PKG_GL IMPORTED_TARGET gl)
pkg_check_modules(PKG_GLU IMPORTED_TARGET glu)
+
if(NOT (WLD_EGL_FOUND AND PKG_EGL_FOUND AND PKG_GL_FOUND AND PKG_GLU_FOUND))
message(STATUS "Modules 'wayland-egl, egl, gl, and glu' are required to build for the Wayland backend.")
message(FATAL_ERROR "*** Aborting ***")
- endif(NOT (WLD_EGL_FOUND AND PKG_EGL_FOUND AND PKG_GL_FOUND AND PKG_GLU_FOUND))
+ endif()
+
endif(FLTK_BACKEND_WAYLAND)
+
if(FLTK_BACKEND_X11)
set(OPENGL_FOUND TRUE)
find_library(OPENGL_LIB GL)
@@ -628,7 +631,7 @@ if(FLTK_BUILD_GL)
set(HAVE_GL_GLU_H ${HAVE_OPENGL_GLU_H})
endif(APPLE)
endif(FLTK_BACKEND_X11)
-else()
+else(FLTK_BUILD_GL)
set(OPENGL_FOUND FALSE)
set(HAVE_GL FALSE)
set(HAVE_GL_GLU_H FALSE)
@@ -641,24 +644,32 @@ mark_as_advanced(OPENGL_LIB) # internal cache variable, not relevant for users
# from the cache above. It has been marked "advanced" before in resources.cmake.
mark_as_advanced(HAVE_GL_GLU_H)
+# Note: GLLIBS is a CMake 'list' and is used exclusively to generate fltk-config !
+
+# FIXME, this should be improved!
+# We should probably deduct this from OPENGL_LIBRARIES but it turned
+# out to be difficult since FindOpenGL seems to return different
+# syntax depending on the platform (and maybe also CMake version).
+# Hence we use the following code...
+
+set(GLLIBS)
+set(FLTK_GL_FOUND FALSE)
+
if(OPENGL_FOUND)
+ set(FLTK_GL_FOUND TRUE)
find_path(OPENGL_GLU_INCLUDE_DIR NAMES GL/glu.h OpenGL/glu.h HINTS ${OPENGL_INCLUDE_DIR} ${X11_INCLUDE_DIR})
set(CMAKE_REQUIRED_INCLUDES ${OPENGL_INCLUDE_DIR}/GL ${OPENGL_GLU_INCLUDE_DIR})
- # Set GLLIBS (used in fltk-config).
- # We should probably deduct this from OPENGL_LIBRARIES but it turned
- # out to be difficult since FindOpenGL seems to return different
- # syntax depending on the platform (and maybe also CMake version).
- # Hence we use the following code...
-
if(WIN32)
- set(GLLIBS "-lglu32 -lopengl32")
+ list(APPEND GLLIBS -lglu32 -lopengl32)
elseif(APPLE AND NOT FLTK_BACKEND_X11)
- set(GLLIBS "-framework OpenGL")
+ list(APPEND GLLIBS "-framework OpenGL")
elseif(FLTK_BACKEND_WAYLAND)
- set(GLLIBS PkgConfig::WLD_EGL PkgConfig::PKG_EGL PkgConfig::PKG_GLU PkgConfig::PKG_GL)
+ foreach(_lib WLD_EGL PKG_EGL PKG_GLU PKG_GL)
+ list(APPEND GLLIBS ${${_lib}_LDFLAGS})
+ endforeach(_lib )
else()
- set(GLLIBS "-lGLU -lGL")
+ list(APPEND GLLIBS -lGLU -lGL)
endif(WIN32)
# check if function glXGetProcAddressARB exists
@@ -667,11 +678,6 @@ if(OPENGL_FOUND)
check_function_exists(glXGetProcAddressARB HAVE_GLXGETPROCADDRESSARB)
set(CMAKE_REQUIRED_LIBRARIES ${TEMP_REQUIRED_LIBRARIES})
unset(TEMP_REQUIRED_LIBRARIES)
-
- set(FLTK_GL_FOUND TRUE)
-else()
- set(FLTK_GL_FOUND FALSE)
- set(GLLIBS)
endif(OPENGL_FOUND)
#######################################################################
@@ -861,10 +867,9 @@ if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO)
# add required libraries to fltk-config ...
if(USE_PANGOXFT)
- list(APPEND FLTK_LDLIBS PkgConfig::PANGOXFT)
+ list(APPEND FLTK_LDLIBS ${PANGOXFT_LDFLAGS})
endif(USE_PANGOXFT)
- list(APPEND FLTK_LDLIBS PkgConfig::PANGOCAIRO)
- list(REMOVE_DUPLICATES FLTK_LDLIBS)
+ list(APPEND FLTK_LDLIBS ${PANGOCAIRO_LDFLAGS})
# *FIXME* Libraries should not be added explicitly if possible
if(FLTK_BACKEND_WAYLAND AND FLTK_USE_LIBDECOR_GTK AND NOT USE_SYSTEM_LIBDECOR)
@@ -874,8 +879,6 @@ if((X11_Xft_FOUND OR NOT USE_PANGOXFT) AND FLTK_USE_PANGO)
list(APPEND FLTK_LDLIBS -lX11)
endif()
- list(REMOVE_DUPLICATES FLTK_LDLIBS)
-
if(APPLE)
get_filename_component(PANGO_L_PATH ${HAVE_LIB_PANGO} PATH)
set(LDFLAGS "${LDFLAGS} -L${PANGO_L_PATH}")
diff --git CMake/setup.cmake CMake/setup.cmake
index ed00be3..3b67084 100644
--- CMake/setup.cmake
+++ CMake/setup.cmake
@@ -83,10 +83,8 @@ set(FLTK_BUILD_INCLUDE_DIRECTORIES)
set(FLTK_LDLIBS "")
set(FLTK_LIBRARIES "")
-set(GLLIBS "")
set(IMAGELIBS "")
set(LDFLAGS "")
-set(LIBS "")
set(LINK_LIBS "")
set(STATICIMAGELIBS "")
diff --git CMake/variables.cmake CMake/variables.cmake
index 20a36ed..cb5d624 100644
--- CMake/variables.cmake
+++ CMake/variables.cmake
@@ -24,7 +24,6 @@ if(DEBUG_VARIABLES_CMAKE)
fl_debug_var(CMAKE_DL_LIBS)
fl_debug_var(CMAKE_EXE_LINKER_FLAGS)
fl_debug_var(LDFLAGS)
- fl_debug_var(LIBS)
fl_debug_var(GLLIBS)
fl_debug_var(IMAGELIBS)
fl_debug_var(STATICIMAGELIBS)
@@ -45,9 +44,11 @@ if(WIN32)
elseif(APPLE AND NOT FLTK_BACKEND_X11)
list(APPEND FLTK_LDLIBS ${FLTK_COCOA_FRAMEWORKS})
elseif(FLTK_BACKEND_WAYLAND)
- list(APPEND FLTK_LDLIBS PkgConfig::WLDCURSOR PkgConfig::WLDCLIENT PkgConfig::XKBCOMMON PkgConfig::DBUS)
+ foreach(_lib WLDCURSOR WLDCLIENT XKBCOMMON DBUS)
+ list(APPEND FLTK_LDLIBS "${${_lib}_LDFLAGS}")
+ endforeach()
if(USE_SYSTEM_LIBDECOR)
- list(APPEND FLTK_LDLIBS PkgConfig::SYSTEM_LIBDECOR)
+ list(APPEND FLTK_LDLIBS ${SYSTEM_LIBDECOR_LDFLAGS})
endif(USE_SYSTEM_LIBDECOR)
else()
list(APPEND FLTK_LDLIBS -lm)
@@ -115,8 +116,19 @@ else()
endif(LIB_zlib)
endif(FLTK_USE_BUNDLED_ZLIB)
-string(REPLACE ";" " " IMAGELIBS "${IMAGELIBS}")
-string(REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}")
+# remove duplicates from CMake "list" variables for fltk-config
+
+list(REMOVE_DUPLICATES GLLIBS)
+list(REMOVE_DUPLICATES FLTK_LDLIBS)
+list(REMOVE_DUPLICATES IMAGELIBS)
+list(REMOVE_DUPLICATES STATICIMAGELIBS)
+
+# convert CMake lists to strings with spaces for fltk-config
+
+string(REPLACE ";" " " GLLIBS "${GLLIBS}")
+string(REPLACE ";" " " LIBS "${FLTK_LDLIBS}")
+string(REPLACE ";" " " IMAGELIBS "${IMAGELIBS}")
+string(REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}")
#######################################################################
set(CC ${CMAKE_C_COMPILER})
@@ -136,12 +148,6 @@ endforeach(arg ${FLTK_CFLAGS})
set(CXXFLAGS "${CFLAGS}")
-foreach(arg ${FLTK_LDLIBS})
- set(LINK_LIBS "${LINK_LIBS} ${arg}")
-endforeach(arg ${FLTK_LDLIBS})
-
-set(LIBS "${LINK_LIBS}")
-
if(${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
set(SHAREDSUFFIX "_s")
else()
@@ -154,11 +160,11 @@ if(DEBUG_VARIABLES_CMAKE)
fl_debug_var(CMAKE_DL_LIBS)
fl_debug_var(CMAKE_EXE_LINKER_FLAGS)
fl_debug_var(LDFLAGS)
+ fl_debug_var(FLTK_LDLIBS)
fl_debug_var(LIBS)
fl_debug_var(GLLIBS)
fl_debug_var(IMAGELIBS)
fl_debug_var(STATICIMAGELIBS)
- fl_debug_var(FLTK_LDLIBS)
fl_debug_var(LIB_jpeg)
fl_debug_var(LIB_png)
fl_debug_var(LIB_zlib)
diff --git src/CMakeLists.txt src/CMakeLists.txt
index 326fb5d..b01ee09 100644
--- src/CMakeLists.txt
+++ src/CMakeLists.txt
@@ -631,9 +631,12 @@ endif()
#######################################################################
-# prepare optional libs for shared and static FLTK libraries
+# Prepare optional libs for shared and static FLTK libraries.
+# Note: OPTIONAL_LIBS is a CMake 'list' and may contain CMake targets,
+# i.e. it is only used for CMake stuff: target_link_libraries().
+# FIXME: make this all more consistent (targets rather than libs).
-set(OPTIONAL_LIBS)
+set(OPTIONAL_LIBS) # init
if(LIB_dl)
list(APPEND OPTIONAL_LIBS ${LIB_dl})
@@ -670,10 +673,6 @@ if(HAVE_XRENDER)
list(APPEND OPTIONAL_LIBS ${X11_Xrender_LIB})
endif(HAVE_XRENDER)
-### if(FLTK_HAVE_CAIRO) # FLTK_OPTION_CAIRO_WINDOW or FLTK_OPTION_CAIRO_EXT or Wayland
-### list(APPEND OPTIONAL_LIBS ${PKG_CAIRO_LIBRARIES})
-### endif()
-
if(USE_PANGO)
### FIXME ### This needs to use the PKG_* variables directly
list(APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGO} PkgConfig::PANGOCAIRO)
@@ -772,10 +771,6 @@ endif(UNIX AND FLTK_BACKEND_WAYLAND)
fl_add_library(fltk STATIC "${STATIC_FILES}")
target_link_libraries(fltk PUBLIC ${OPTIONAL_LIBS})
-### if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO)
-### target_link_directories(fltk PUBLIC ${PKG_CAIRO_LIBRARY_DIRS})
-### endif()
-
#######################################################################
if(FLTK_BUILD_FORMS)
@@ -798,10 +793,6 @@ fl_add_library(fltk_images STATIC "${IMGCPPFILES}")
target_link_libraries(fltk_images PUBLIC fltk::fltk)
target_link_libraries(fltk_images PRIVATE ${FLTK_IMAGE_LIBRARIES})
-### target_link_libraries(fltk_images PUBLIC ${FLTK_JPEG_LIBRARIES})
-### target_link_libraries(fltk_images PUBLIC ${FLTK_PNG_LIBRARIES})
-### target_link_libraries(fltk_images PUBLIC ${FLTK_IMAGE_LIBRARIES})
-
if(FLTK_USE_BUNDLED_JPEG)
target_include_directories(fltk_images PUBLIC
$<BUILD_INTERFACE:${FLTK_SOURCE_DIR}/jpeg>
@@ -825,17 +816,11 @@ endif(FLTK_USE_GL)
# Shared libraries, part 1: everything except Visual Studio (MSVC)
#######################################################################
-### fl_debug_var(OPTIONAL_LIBS)
-
if(FLTK_BUILD_SHARED_LIBS AND NOT MSVC)
fl_add_library(fltk SHARED "${SHARED_FILES}")
target_link_libraries(fltk-shared PUBLIC ${OPTIONAL_LIBS})
- ### if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO)
- ### target_link_directories(fltk-shared PUBLIC ${PKG_CAIRO_LIBRARY_DIRS})
- ### endif()
-
###################################################################
if(FLTK_BUILD_FORMS)
@@ -845,12 +830,6 @@ if(FLTK_BUILD_SHARED_LIBS AND NOT MSVC)
###################################################################
- ### fl_debug_var(fltk_images)
- ### fl_debug_var(FLTK_JPEG_LIBRARIES)
- ### fl_debug_var(FLTK_PNG_LIBRARIES)
- ### fl_debug_var(FLTK_ZLIB_LIBRARIES)
- ### fl_debug_var(FLTK_IMAGE_LIBRARIES)
-
fl_add_library(fltk_images SHARED "${IMGCPPFILES}")
target_link_libraries(fltk_images-shared PUBLIC fltk::fltk-shared)
@@ -859,7 +838,6 @@ if(FLTK_BUILD_SHARED_LIBS AND NOT MSVC)
target_link_libraries(fltk_images PUBLIC ${FLTK_IMAGE_LIBRARIES})
if(FLTK_USE_BUNDLED_JPEG)
- ## include_directories(${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(fltk_images-shared PUBLIC
$<BUILD_INTERFACE:${FLTK_SOURCE_DIR}/jpeg>
# $<INSTALL_INTERFACE:include>
[ Direct Link to Message ] | |