summaryrefslogtreecommitdiff
path: root/CMake
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2024-04-14 19:05:39 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2024-04-14 19:15:08 +0200
commitb4cf1a9824f2c4ba9596044962d3af36e3ca3d99 (patch)
tree4a0e7b9867f2c39412e29df51e519ac0e3d4582d /CMake
parent5417ea5f1f33f62e2511bda74477da05dce900a3 (diff)
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.
Diffstat (limited to 'CMake')
-rw-r--r--CMake/options.cmake49
-rw-r--r--CMake/setup.cmake2
-rw-r--r--CMake/variables.cmake30
3 files changed, 44 insertions, 37 deletions
diff --git a/CMake/options.cmake b/CMake/options.cmake
index 45ece7632..b242c5f40 100644
--- a/CMake/options.cmake
+++ b/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 a/CMake/setup.cmake b/CMake/setup.cmake
index ed00be391..3b6708416 100644
--- a/CMake/setup.cmake
+++ b/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 a/CMake/variables.cmake b/CMake/variables.cmake
index 20a36eda8..cb5d62481 100644
--- a/CMake/variables.cmake
+++ b/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)