diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2024-02-07 18:30:11 +0100 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2024-02-07 18:37:34 +0100 |
| commit | fd5cd809356dc73d2ede5bb2f0db25098771cb8e (patch) | |
| tree | 70c82946eb7d11eba910bb387dc3bcc20abfd42c /CMake/variables.cmake | |
| parent | 1cf6fdfa8562fafa0566e1008f74ea94f71356e4 (diff) | |
Introduce "Modern CMake" in FLTK
This is a big commit and there are too many changes to list them all.
The main changes are:
- rename all CMake build options to 'FLTK_*'
- export library targets with namespace (prefix) 'fltk::'
- standardize shared library target names with suffix '-shared'
- set public build properties on libraries for consumers
- document library names and aliases in README.CMake.txt
- document changes in "Migrating Code from FLTK 1.3 to 1.4"
- partial backwards compatibility for old user projects
Included but not directly related changes:
- fix Windows (Visual Studio) DLL build
- add CMake function fl_debug_target() to show target properties
- don't build test programs if FLTK is a subproject
- internal: reformat CMake code: remove space before '('
Thanks to Matthias and Manolo for their help, testing, and feeback.
Diffstat (limited to 'CMake/variables.cmake')
| -rw-r--r-- | CMake/variables.cmake | 244 |
1 files changed, 124 insertions, 120 deletions
diff --git a/CMake/variables.cmake b/CMake/variables.cmake index 25bbefaeb..3d37aecad 100644 --- a/CMake/variables.cmake +++ b/CMake/variables.cmake @@ -1,8 +1,8 @@ # # This file sets variables for common use in export.cmake and install.cmake -# Written by Michael Surette +# Originally written by Michael Surette # -# Copyright 1998-2020 by Bill Spitzak and others. +# Copyright 1998-2024 by Bill Spitzak and others. # # This library is free software. Distribution and use rights are outlined in # the file "COPYING" which should have been included with this file. If this @@ -17,51 +17,52 @@ ####################################################################### -set (DEBUG_VARIABLES_CMAKE 0) -if (DEBUG_VARIABLES_CMAKE) - message (STATUS "[** variables.cmake **]") - fl_debug_var (HAVE_DLSYM) - 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) - fl_debug_var (FLTK_LDLIBS) - fl_debug_var (LIB_jpeg) - fl_debug_var (LIB_png) - fl_debug_var (LIB_zlib) -endif (DEBUG_VARIABLES_CMAKE) +set(DEBUG_VARIABLES_CMAKE 0) +if(DEBUG_VARIABLES_CMAKE) + message(STATUS "[** variables.cmake **]") + fl_debug_var(HAVE_DLSYM) + 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) + fl_debug_var(FLTK_LDLIBS) + fl_debug_var(LIB_jpeg) + fl_debug_var(LIB_png) + fl_debug_var(LIB_zlib) + fl_debug_var(FLTK_LIBRARIES) +endif(DEBUG_VARIABLES_CMAKE) ####################################################################### # add several libraries # FIXME: libraries may need reordering. # FIXME: check fontconfig conditions (only if Xft is used or ...) -if (WIN32) - list (APPEND FLTK_LDLIBS -lole32 -luuid -lcomctl32 -lws2_32) -elseif (APPLE AND NOT OPTION_APPLE_X11) - list (APPEND FLTK_LDLIBS "-framework Cocoa") -elseif (OPTION_USE_WAYLAND) - list (APPEND FLTK_LDLIBS "-lwayland-cursor -lwayland-client -lxkbcommon -ldbus-1") - if (OPTION_USE_SYSTEM_LIBDECOR) - list (APPEND FLTK_LDLIBS "-ldecor-0") - endif (OPTION_USE_SYSTEM_LIBDECOR) -else () - list (APPEND FLTK_LDLIBS -lm) -endif (WIN32) - -if (LIB_fontconfig) +if(WIN32) + list(APPEND FLTK_LDLIBS -lole32 -luuid -lcomctl32 -lws2_32) +elseif(APPLE AND NOT FLTK_BACKEND_X11) + list(APPEND FLTK_LDLIBS "-framework Cocoa") +elseif(FLTK_BACKEND_WAYLAND) + list(APPEND FLTK_LDLIBS "-lwayland-cursor -lwayland-client -lxkbcommon -ldbus-1") + if(USE_SYSTEM_LIBDECOR) + list(APPEND FLTK_LDLIBS "-ldecor-0") + endif(USE_SYSTEM_LIBDECOR) +else() + list(APPEND FLTK_LDLIBS -lm) +endif(WIN32) + +if(LIB_fontconfig) list(APPEND FLTK_LDLIBS -lfontconfig) -endif (LIB_fontconfig) +endif(LIB_fontconfig) # add "-ldl" or whatever is necessary according to CMake (CMAKE_DL_LIBS) -if (HAVE_DLSYM) - foreach (LIB ${CMAKE_DL_LIBS}) - list (APPEND FLTK_LDLIBS "-l${LIB}") - endforeach () -endif (HAVE_DLSYM) +if(HAVE_DLSYM) + foreach(LIB ${CMAKE_DL_LIBS}) + list(APPEND FLTK_LDLIBS "-l${LIB}") + endforeach() +endif(HAVE_DLSYM) ####################################################################### # Set variables for fltk-config (generated from fltk-config.in) @@ -75,90 +76,93 @@ endif (HAVE_DLSYM) # should be set here, whereas variables with different values should # be set in install.cmake or export.cmake, respectively. -if (WIN32) - set (LDFLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows") -endif () - -set (IMAGELIBS) -set (STATICIMAGELIBS) - -if (FLTK_USE_BUILTIN_JPEG) - list (APPEND IMAGELIBS -lfltk_jpeg) - list (APPEND STATICIMAGELIBS \$libdir/libfltk_jpeg.a) -else () - if (LIB_jpeg) - list (APPEND IMAGELIBS -ljpeg) - list (APPEND STATICIMAGELIBS -ljpeg) - endif (LIB_jpeg) -endif (FLTK_USE_BUILTIN_JPEG) - -if (FLTK_USE_BUILTIN_PNG) - list (APPEND IMAGELIBS -lfltk_png) - list (APPEND STATICIMAGELIBS \$libdir/libfltk_png.a) -else () - if (LIB_png) - list (APPEND IMAGELIBS -lpng) - list (APPEND STATICIMAGELIBS -lpng) - endif (LIB_png) -endif (FLTK_USE_BUILTIN_PNG) - -if (FLTK_USE_BUILTIN_ZLIB) - list (APPEND IMAGELIBS -lfltk_z) - list (APPEND STATICIMAGELIBS \$libdir/libfltk_z.a) -else () - if (LIB_zlib) - list (APPEND IMAGELIBS -lz) - list (APPEND STATICIMAGELIBS -lz) - endif (LIB_zlib) -endif (FLTK_USE_BUILTIN_ZLIB) - -string (REPLACE ";" " " IMAGELIBS "${IMAGELIBS}") -string (REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}") +if(WIN32) + set(LDFLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows") +endif() + +set(IMAGELIBS) +set(STATICIMAGELIBS) + +if(FLTK_USE_BUNDLED_JPEG) + list(APPEND IMAGELIBS -lfltk_jpeg) + list(APPEND STATICIMAGELIBS \$libdir/libfltk_jpeg.a) +else() + if(LIB_jpeg) + # fl_debug_var(LIB_jpeg) + list(APPEND IMAGELIBS ${LIB_jpeg}) + list(APPEND STATICIMAGELIBS ${LIB_jpeg}) + endif(LIB_jpeg) +endif(FLTK_USE_BUNDLED_JPEG) + +if(FLTK_USE_BUNDLED_PNG) + list(APPEND IMAGELIBS -lfltk_png) + list(APPEND STATICIMAGELIBS \$libdir/libfltk_png.a) +else() + if(LIB_png) + # fl_debug_var(LIB_png) + list(APPEND IMAGELIBS ${LIB_png}) + list(APPEND STATICIMAGELIBS ${LIB_png}) + endif(LIB_png) +endif(FLTK_USE_BUNDLED_PNG) + +if(FLTK_USE_BUNDLED_ZLIB) + list(APPEND IMAGELIBS -lfltk_z) + list(APPEND STATICIMAGELIBS \$libdir/libfltk_z.a) +else() + if(LIB_zlib) + list(APPEND IMAGELIBS ${LIB_zlib}) + list(APPEND STATICIMAGELIBS ${LIB_zlib}) + endif(LIB_zlib) +endif(FLTK_USE_BUNDLED_ZLIB) + +string(REPLACE ";" " " IMAGELIBS "${IMAGELIBS}") +string(REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}") ####################################################################### -set (CC ${CMAKE_C_COMPILER}) -set (CXX ${CMAKE_CXX_COMPILER}) +set(CC ${CMAKE_C_COMPILER}) +set(CXX ${CMAKE_CXX_COMPILER}) -set (ARCHFLAGS ${OPTION_ARCHFLAGS}) +set(ARCHFLAGS ${FLTK_ARCHFLAGS}) string(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_UPPER) -if (${BUILD_UPPER}) - set (CFLAGS "${CMAKE_C_FLAGS_${BUILD_UPPER}} ${CFLAGS}") -endif (${BUILD_UPPER}) - -set (CFLAGS "${OPTION_OPTIM} ${CMAKE_C_FLAGS} ${CFLAGS}") -foreach (arg ${FLTK_CFLAGS}) - set (CFLAGS "${CFLAGS} ${arg}") -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 () - set (SHAREDSUFFIX "") -endif (${CMAKE_SYSTEM_NAME} STREQUAL "AIX") - -if (DEBUG_VARIABLES_CMAKE) - message (STATUS "") # empty line - fl_debug_var (HAVE_DLSYM) - 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) - fl_debug_var (FLTK_LDLIBS) - fl_debug_var (LIB_jpeg) - fl_debug_var (LIB_png) - fl_debug_var (LIB_zlib) - message (STATUS "[** end of variables.cmake **]") -endif (DEBUG_VARIABLES_CMAKE) -unset (DEBUG_VARIABLES_CMAKE) +if(${BUILD_UPPER}) + set(CFLAGS "${CMAKE_C_FLAGS_${BUILD_UPPER}} ${CFLAGS}") +endif(${BUILD_UPPER}) + +set(CFLAGS "${FLTK_OPTION_OPTIM} ${CMAKE_C_FLAGS} ${CFLAGS}") +foreach(arg ${FLTK_CFLAGS}) + set(CFLAGS "${CFLAGS} ${arg}") +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() + set(SHAREDSUFFIX "") +endif(${CMAKE_SYSTEM_NAME} STREQUAL "AIX") + +if(DEBUG_VARIABLES_CMAKE) + message(STATUS "") # empty line + fl_debug_var(HAVE_DLSYM) + 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) + fl_debug_var(FLTK_LDLIBS) + fl_debug_var(LIB_jpeg) + fl_debug_var(LIB_png) + fl_debug_var(LIB_zlib) + fl_debug_var(FLTK_LIBRARIES) + message(STATUS "[** end of variables.cmake **]") +endif(DEBUG_VARIABLES_CMAKE) +unset(DEBUG_VARIABLES_CMAKE) |
