FLTK logo

[master] b4cf1a9 - Fix and improve generation of fltk-config (#954 and more)

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] b4cf1a9 - Fix and improve generation of fltk-config (#954 and more) "Albrecht Schlosser" 10:17 Apr 14  
 
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 ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.