summaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2024-02-07 18:30:11 +0100
committerAlbrecht Schlosser <albrechts.fltk@online.de>2024-02-07 18:37:34 +0100
commitfd5cd809356dc73d2ede5bb2f0db25098771cb8e (patch)
tree70c82946eb7d11eba910bb387dc3bcc20abfd42c /src/CMakeLists.txt
parent1cf6fdfa8562fafa0566e1008f74ea94f71356e4 (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 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt733
1 files changed, 386 insertions, 347 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 80d829ce7..757fcac91 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -14,7 +14,21 @@
# https://www.fltk.org/bugs.php
#
-set (CPPFILES
+# Local macro to check existence of a required file with warning message
+#
+# In: FILENAME (string): File to search
+# Out: WARN (string): *Name* of a variable that is set to true if NOT found
+#
+# Set variable ${WARN} to FALSE before calling this macro
+
+macro(fl_check_required_file WARN FILENAME)
+ if(NOT EXISTS ${FILENAME})
+ message("*** Required file not found: ${FILENAME} ***")
+ set(${WARN} TRUE)
+ endif()
+endmacro(fl_check_required_file WARN FILENAME)
+
+set(CPPFILES
Fl.cxx
Fl_Adjuster.cxx
Fl_Bitmap.cxx
@@ -173,41 +187,40 @@ set (CPPFILES
screen_xywh.cxx
)
-if (FLTK_HAVE_CAIRO) # OPTION_CAIRO or OPTION_CAIROEXT
- list (APPEND CPPFILES Fl_Cairo.cxx)
-endif ()
+if(FLTK_HAVE_CAIRO) # FLTK_OPTION_CAIRO_WINDOW or FLTK_OPTION_CAIRO_EXT
+ list(APPEND CPPFILES Fl_Cairo.cxx)
+endif()
# find all header files in source directory <FL/...>
-file (GLOB
+file(GLOB
HEADER_FILES
"../FL/*.[hH]"
)
# add generated header files in build directory
-list (APPEND HEADER_FILES
+list(APPEND HEADER_FILES
${CMAKE_CURRENT_BINARY_DIR}/../FL/fl_config.h
${CMAKE_CURRENT_BINARY_DIR}/../config.h
)
-set (GL_HEADER_FILES) # FIXME: not (yet?) defined
+set(GL_HEADER_FILES) # FIXME: not (yet?) defined
-if (FLTK_USE_X11 AND NOT OPTION_PRINT_SUPPORT)
- set (PSFILES
- )
-else ()
- set (PSFILES
+if(FLTK_USE_X11 AND NOT FLTK_OPTION_PRINT_SUPPORT)
+ set(PSFILES)
+else()
+ set(PSFILES
drivers/PostScript/Fl_PostScript.cxx
drivers/PostScript/Fl_PostScript_image.cxx
)
-endif (FLTK_USE_X11 AND NOT OPTION_PRINT_SUPPORT)
+endif(FLTK_USE_X11 AND NOT FLTK_OPTION_PRINT_SUPPORT)
-set (DRIVER_FILES)
+set(DRIVER_FILES)
-if (FLTK_USE_X11 AND NOT OPTION_USE_WAYLAND)
+if(FLTK_USE_X11 AND NOT FLTK_BACKEND_WAYLAND)
# X11 (including APPLE with X11)
- set (DRIVER_FILES
+ set(DRIVER_FILES
drivers/Posix/Fl_Posix_Printer_Driver.cxx
drivers/X11/Fl_X11_Screen_Driver.cxx
drivers/X11/Fl_X11_Window_Driver.cxx
@@ -224,30 +237,31 @@ if (FLTK_USE_X11 AND NOT OPTION_USE_WAYLAND)
Fl_get_key.cxx
)
- if (OPTION_USE_KDIALOG)
- set (DRIVER_FILES ${DRIVER_FILES} Fl_Native_File_Chooser_Kdialog.cxx
+ if(FLTK_USE_KDIALOG)
+ list(APPEND DRIVER_FILES
+ Fl_Native_File_Chooser_Kdialog.cxx
Fl_Native_File_Chooser_Zenity.cxx)
- endif (OPTION_USE_KDIALOG)
+ endif(FLTK_USE_KDIALOG)
- if (FLTK_USE_CAIRO)
- set (DRIVER_FILES ${DRIVER_FILES}
+ if(FLTK_USE_CAIRO)
+ list(APPEND DRIVER_FILES
drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx
)
- else ()
- if (USE_XFT)
- set (DRIVER_FILES ${DRIVER_FILES}
+ else()
+ if(USE_XFT)
+ list(APPEND DRIVER_FILES
drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
)
- if (USE_PANGO)
- set (DRIVER_FILES ${DRIVER_FILES} drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx)
- endif (USE_PANGO)
- else ()
- set (DRIVER_FILES ${DRIVER_FILES}
+ if(USE_PANGO)
+ list(APPEND DRIVER_FILES drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx)
+ endif(USE_PANGO)
+ else()
+ list(APPEND DRIVER_FILES
drivers/Xlib/Fl_Xlib_Graphics_Driver_font_x.cxx
)
- endif (USE_XFT)
- set (DRIVER_FILES ${DRIVER_FILES}
+ endif(USE_XFT)
+ list(APPEND DRIVER_FILES
drivers/Xlib/Fl_Xlib_Graphics_Driver.cxx
drivers/Xlib/Fl_Xlib_Graphics_Driver_arci.cxx
drivers/Xlib/Fl_Xlib_Graphics_Driver_color.cxx
@@ -256,9 +270,9 @@ if (FLTK_USE_X11 AND NOT OPTION_USE_WAYLAND)
drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx
drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx
)
- endif (FLTK_USE_CAIRO)
+ endif(FLTK_USE_CAIRO)
- set (DRIVER_HEADER_FILES
+ set(DRIVER_HEADER_FILES
drivers/Posix/Fl_Posix_System_Driver.H
drivers/X11/Fl_X11_Screen_Driver.H
drivers/X11/Fl_X11_Window_Driver.H
@@ -268,20 +282,20 @@ if (FLTK_USE_X11 AND NOT OPTION_USE_WAYLAND)
drivers/Xlib/Fl_Xlib_Image_Surface_Driver.H
drivers/Unix/Fl_Unix_System_Driver.H
)
- if (FLTK_USE_CAIRO)
- set (DRIVER_HEADER_FILES ${DRIVER_HEADER_FILES}
+ if(FLTK_USE_CAIRO)
+ set(DRIVER_HEADER_FILES ${DRIVER_HEADER_FILES}
drivers/Cairo/Fl_Cairo_Graphics_Driver.H
drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.H
)
- elseif (USE_PANGO)
- set (DRIVER_HEADER_FILES ${DRIVER_HEADER_FILES}
+ elseif(USE_PANGO)
+ set(DRIVER_HEADER_FILES ${DRIVER_HEADER_FILES}
drivers/Cairo/Fl_Cairo_Graphics_Driver.H
)
- endif (FLTK_USE_CAIRO)
+ endif(FLTK_USE_CAIRO)
-elseif (OPTION_USE_WAYLAND)
- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_CURRENT_BINARY_DIR}")
- set (DRIVER_FILES
+elseif(FLTK_BACKEND_WAYLAND)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_CURRENT_BINARY_DIR}")
+ set(DRIVER_FILES
drivers/Posix/Fl_Posix_System_Driver.cxx
drivers/Posix/Fl_Posix_Printer_Driver.cxx
drivers/Unix/Fl_Unix_Screen_Driver.cxx
@@ -296,24 +310,28 @@ elseif (OPTION_USE_WAYLAND)
drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
Fl_Native_File_Chooser_FLTK.cxx
Fl_Native_File_Chooser_GTK.cxx
+ )
+
+ if(FLTK_USE_KDIALOG)
+ list(APPEND DRIVER_FILES
+ Fl_Native_File_Chooser_Kdialog.cxx
+ Fl_Native_File_Chooser_Zenity.cxx)
+ endif(FLTK_USE_KDIALOG)
+
+ if(FLTK_USE_X11)
+ list(APPEND DRIVER_FILES
+ drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx
+ drivers/X11/Fl_X11_Screen_Driver.cxx
+ drivers/X11/Fl_X11_Window_Driver.cxx
+ drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx
+ drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx
+ Fl_x.cxx
+ fl_dnd_x.cxx
+ Fl_get_key.cxx
)
- if (OPTION_USE_KDIALOG)
- set (DRIVER_FILES ${DRIVER_FILES} Fl_Native_File_Chooser_Kdialog.cxx
- Fl_Native_File_Chooser_Zenity.cxx)
- endif (OPTION_USE_KDIALOG)
- if (FLTK_USE_X11)
- list (APPEND DRIVER_FILES
- drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx
- drivers/X11/Fl_X11_Screen_Driver.cxx
- drivers/X11/Fl_X11_Window_Driver.cxx
- drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx
- drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx
- Fl_x.cxx
- fl_dnd_x.cxx
- Fl_get_key.cxx
- )
- endif (FLTK_USE_X11)
- set (DRIVER_HEADER_FILES
+ endif(FLTK_USE_X11)
+
+ set(DRIVER_HEADER_FILES
drivers/Posix/Fl_Posix_System_Driver.H
drivers/Wayland/Fl_Wayland_Screen_Driver.H
drivers/Wayland/Fl_Wayland_Window_Driver.H
@@ -325,11 +343,11 @@ elseif (OPTION_USE_WAYLAND)
drivers/Unix/Fl_Unix_System_Driver.H
)
-elseif (APPLE)
+elseif(APPLE)
# Apple Quartz
- set (DRIVER_FILES
+ set(DRIVER_FILES
drivers/Quartz/Fl_Quartz_Graphics_Driver.cxx
drivers/Quartz/Fl_Quartz_Graphics_Driver_color.cxx
drivers/Quartz/Fl_Quartz_Graphics_Driver_rect.cxx
@@ -347,7 +365,7 @@ elseif (APPLE)
Fl_get_key_mac.cxx
drivers/Darwin/fl_macOS_platform_init.cxx
)
- set (DRIVER_HEADER_FILES
+ set(DRIVER_HEADER_FILES
drivers/Posix/Fl_Posix_System_Driver.H
drivers/Darwin/Fl_Darwin_System_Driver.H
drivers/Cocoa/Fl_Cocoa_Screen_Driver.H
@@ -359,11 +377,11 @@ elseif (APPLE)
drivers/Quartz/Fl_Quartz_Image_Surface_Driver.H
)
-else ()
+else()
# Windows (GDI)
- set (DRIVER_FILES
+ set(DRIVER_FILES
drivers/WinAPI/Fl_WinAPI_System_Driver.cxx
drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx
drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx
@@ -384,7 +402,7 @@ else ()
Fl_get_key_win32.cxx
drivers/WinAPI/fl_WinAPI_platform_init.cxx
)
- set (DRIVER_HEADER_FILES
+ set(DRIVER_HEADER_FILES
drivers/WinAPI/Fl_WinAPI_System_Driver.H
drivers/WinAPI/Fl_WinAPI_Screen_Driver.H
drivers/WinAPI/Fl_WinAPI_Window_Driver.H
@@ -394,19 +412,19 @@ else ()
drivers/GDI/Fl_GDI_Image_Surface_Driver.H
)
-endif (FLTK_USE_X11 AND NOT OPTION_USE_WAYLAND)
+endif(FLTK_USE_X11 AND NOT FLTK_BACKEND_WAYLAND)
source_group("Header Files" FILES ${HEADER_FILES})
source_group("Driver Source Files" FILES ${DRIVER_FILES})
source_group("Driver Header Files" FILES ${DRIVER_HEADER_FILES})
-set (CPPFILES
+set(CPPFILES
${CPPFILES}
${DRIVER_FILES}
)
-if (FLTK_BUILD_FORMS)
- set (FORMS_FILES
+if(FLTK_BUILD_FORMS)
+ set(FORMS_FILES
forms_compatibility.cxx
forms_bitmap.cxx
forms_free.cxx
@@ -414,11 +432,11 @@ if (FLTK_BUILD_FORMS)
forms_pixmap.cxx
forms_timer.cxx
)
-else ()
- set (FORMS_FILES "")
-endif ()
+else()
+ set(FORMS_FILES "")
+endif()
-set (GLCPPFILES
+set(GLCPPFILES
Fl_Gl_Choice.cxx
Fl_Gl_Device_Plugin.cxx
Fl_Gl_Overlay.cxx
@@ -433,7 +451,7 @@ set (GLCPPFILES
glut_font.cxx
)
-set (GL_DRIVER_FILES
+set(GL_DRIVER_FILES
drivers/OpenGL/Fl_OpenGL_Display_Device.cxx
# the following file doesn't contribute any code:
# drivers/OpenGL/Fl_OpenGL_Graphics_Driver.cxx
@@ -444,25 +462,25 @@ set (GL_DRIVER_FILES
drivers/OpenGL/Fl_OpenGL_Graphics_Driver_rect.cxx
drivers/OpenGL/Fl_OpenGL_Graphics_Driver_vertex.cxx
)
-if (OPTION_USE_WAYLAND)
- set (GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx)
- set (GL_DRIVER_HEADER_FILES drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H)
- if (FLTK_USE_X11)
- list (APPEND GL_DRIVER_FILES drivers/X11/Fl_X11_Gl_Window_Driver.cxx)
- list (APPEND GL_DRIVER_HEADER_FILES drivers/X11/Fl_X11_Gl_Window_Driver.H)
- endif (FLTK_USE_X11)
-elseif (FLTK_USE_X11)
- set (GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/X11/Fl_X11_Gl_Window_Driver.cxx)
- set (GL_DRIVER_HEADER_FILES drivers/X11/Fl_X11_Gl_Window_Driver.H)
-elseif (APPLE)
- set (GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm)
- set (GL_DRIVER_HEADER_FILES drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.H)
-elseif (WIN32)
- set (GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.cxx)
- set (GL_DRIVER_HEADER_FILES drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.H)
-endif (OPTION_USE_WAYLAND)
-
-set (GL_DRIVER_HEADER_FILES ${GL_DRIVER_FILES}
+if(FLTK_BACKEND_WAYLAND)
+ set(GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/Wayland/Fl_Wayland_Gl_Window_Driver.cxx)
+ set(GL_DRIVER_HEADER_FILES drivers/Wayland/Fl_Wayland_Gl_Window_Driver.H)
+ if(FLTK_USE_X11)
+ list(APPEND GL_DRIVER_FILES drivers/X11/Fl_X11_Gl_Window_Driver.cxx)
+ list(APPEND GL_DRIVER_HEADER_FILES drivers/X11/Fl_X11_Gl_Window_Driver.H)
+ endif(FLTK_USE_X11)
+elseif(FLTK_USE_X11)
+ set(GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/X11/Fl_X11_Gl_Window_Driver.cxx)
+ set(GL_DRIVER_HEADER_FILES drivers/X11/Fl_X11_Gl_Window_Driver.H)
+elseif(APPLE)
+ set(GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.mm)
+ set(GL_DRIVER_HEADER_FILES drivers/Cocoa/Fl_Cocoa_Gl_Window_Driver.H)
+elseif(WIN32)
+ set(GL_DRIVER_FILES ${GL_DRIVER_FILES} drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.cxx)
+ set(GL_DRIVER_HEADER_FILES drivers/WinAPI/Fl_WinAPI_Gl_Window_Driver.H)
+endif(FLTK_BACKEND_WAYLAND)
+
+set(GL_DRIVER_HEADER_FILES ${GL_DRIVER_FILES}
drivers/OpenGL/Fl_OpenGL_Display_Device.H
drivers/OpenGL/Fl_OpenGL_Graphics_Driver.H
)
@@ -470,12 +488,12 @@ set (GL_DRIVER_HEADER_FILES ${GL_DRIVER_FILES}
source_group("Driver Header Files" FILES ${GL_DRIVER_HEADER_FILES})
source_group("Driver Source Files" FILES ${GL_DRIVER_FILES})
-set (GLCPPFILES
+set(GLCPPFILES
${GLCPPFILES}
${GL_DRIVER_FILES}
)
-set (IMGCPPFILES
+set(IMGCPPFILES
fl_images_core.cxx
fl_write_png.cxx
Fl_BMP_Image.cxx
@@ -492,7 +510,7 @@ set (IMGCPPFILES
drivers/SVG/Fl_SVG_File_Surface.cxx
)
-set (CFILES
+set(CFILES
flstring.c
numericsort.c
vsnprintf.c
@@ -501,301 +519,306 @@ set (CFILES
xutf8/case.c
)
-if (FLTK_USE_X11)
- list (APPEND CFILES
+if(FLTK_USE_X11)
+ list(APPEND CFILES
xutf8/keysym2Ucs.c
scandir_posix.c
)
- if (NOT USE_XFT)
- list (APPEND CFILES
+ if(NOT USE_XFT)
+ list(APPEND CFILES
xutf8/utf8Utils.c
xutf8/utf8Wrap.c
# xutf8/utf8Input.c # not used
)
- endif (NOT USE_XFT)
-endif (FLTK_USE_X11)
+ endif(NOT USE_XFT)
+endif(FLTK_USE_X11)
-if (OPTION_USE_WAYLAND)
+if(FLTK_BACKEND_WAYLAND)
pkg_check_modules(DBUS dbus-1)
- set (IDIRS "${CMAKE_CURRENT_BINARY_DIR}")
- set (CDEFS "_GNU_SOURCE;HAVE_MEMFD_CREATE;HAVE_MKOSTEMP;HAVE_POSIX_FALLOCATE")
- set (COPTS "-fPIC")
- if (DBUS_FOUND)
- set (CDEFS "${CDEFS};HAS_DBUS")
- set (IDIRS "${IDIRS};${DBUS_INCLUDE_DIRS}")
- endif (DBUS_FOUND)
- if (OPTION_USE_SYSTEM_LIBDECOR)
- set (CDEFS "${CDEFS};USE_SYSTEM_LIBDECOR;LIBDECOR_PLUGIN_DIR=${LIBDECOR_PLUGIN_DIR}")
- if (GTK_FOUND)
- set (CDEFS "${CDEFS};HAVE_GTK")
- endif (GTK_FOUND)
+ set(IDIRS "${CMAKE_CURRENT_BINARY_DIR}")
+ set(CDEFS "_GNU_SOURCE;HAVE_MEMFD_CREATE;HAVE_MKOSTEMP;HAVE_POSIX_FALLOCATE")
+ set(COPTS "-fPIC")
+ if(DBUS_FOUND)
+ set(CDEFS "${CDEFS};HAS_DBUS")
+ set(IDIRS "${IDIRS};${DBUS_INCLUDE_DIRS}")
+ endif(DBUS_FOUND)
+ if(USE_SYSTEM_LIBDECOR)
+ set(CDEFS "${CDEFS};USE_SYSTEM_LIBDECOR;LIBDECOR_PLUGIN_DIR=${LIBDECOR_PLUGIN_DIR}")
+ if(GTK_FOUND)
+ set(CDEFS "${CDEFS};HAVE_GTK")
+ endif(GTK_FOUND)
set_source_files_properties(
- ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/build/fl_libdecor-plugins.c
- ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src/os-compatibility.c
- ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src/cursor-settings.c
+ ${FLTK_SOURCE_DIR}/libdecor/build/fl_libdecor-plugins.c
+ ${FLTK_SOURCE_DIR}/libdecor/src/os-compatibility.c
+ ${FLTK_SOURCE_DIR}/libdecor/src/cursor-settings.c
PROPERTIES COMPILE_DEFINITIONS "${CDEFS}"
INCLUDE_DIRECTORIES "${IDIRS}"
COMPILE_OPTIONS "${COPTS}"
)
else()
- set (IDIRS "${IDIRS};${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src"
- "${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src/plugins")
- set (CDEFS "${CDEFS};USE_SYSTEM_LIBDECOR=0;LIBDECOR_PLUGIN_API_VERSION=1"
+ set(IDIRS "${IDIRS};${FLTK_SOURCE_DIR}/libdecor/src"
+ "${FLTK_SOURCE_DIR}/libdecor/src/plugins")
+ set(CDEFS "${CDEFS};USE_SYSTEM_LIBDECOR=0;LIBDECOR_PLUGIN_API_VERSION=1"
"LIBDECOR_PLUGIN_DIR=\"\"")
- if (GTK_FOUND AND OPTION_ALLOW_GTK_PLUGIN)
- set (CDEFS "${CDEFS};HAVE_GTK")
- endif (GTK_FOUND AND OPTION_ALLOW_GTK_PLUGIN)
+ if(GTK_FOUND AND FLTK_USE_LIBDECOR_GTK)
+ set(CDEFS "${CDEFS};HAVE_GTK")
+ endif(GTK_FOUND AND FLTK_USE_LIBDECOR_GTK)
set_source_files_properties(
- ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/build/fl_libdecor.c
- ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/build/fl_libdecor-plugins.c
- ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src/os-compatibility.c
- ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/src/cursor-settings.c
+ ${FLTK_SOURCE_DIR}/libdecor/build/fl_libdecor.c
+ ${FLTK_SOURCE_DIR}/libdecor/build/fl_libdecor-plugins.c
+ ${FLTK_SOURCE_DIR}/libdecor/src/os-compatibility.c
+ ${FLTK_SOURCE_DIR}/libdecor/src/cursor-settings.c
PROPERTIES
COMPILE_DEFINITIONS "${CDEFS}"
INCLUDE_DIRECTORIES "${IDIRS}"
COMPILE_OPTIONS "${COPTS}"
)
- endif (OPTION_USE_SYSTEM_LIBDECOR)
+ endif(USE_SYSTEM_LIBDECOR)
- list (APPEND CFILES
+ list(APPEND CFILES
scandir_posix.c
../libdecor/src/cursor-settings.c
../libdecor/src/os-compatibility.c
../libdecor/build/fl_libdecor-plugins.c
+ )
+ if(FLTK_USE_X11)
+ list(APPEND CFILES xutf8/keysym2Ucs.c)
+ endif(FLTK_USE_X11)
+ if(NOT USE_SYSTEM_LIBDECOR)
+ list(APPEND CFILES
+ ../libdecor/build/fl_libdecor.c
+ ../libdecor/src/plugins/common/libdecor-cairo-blur.c
)
- if (FLTK_USE_X11)
- list (APPEND CFILES xutf8/keysym2Ucs.c)
- endif (FLTK_USE_X11)
- if (NOT OPTION_USE_SYSTEM_LIBDECOR)
- list (APPEND CFILES
- ../libdecor/build/fl_libdecor.c
- ../libdecor/src/plugins/common/libdecor-cairo-blur.c
- )
- endif (NOT OPTION_USE_SYSTEM_LIBDECOR)
-endif (OPTION_USE_WAYLAND)
+ endif(NOT USE_SYSTEM_LIBDECOR)
+endif(FLTK_BACKEND_WAYLAND)
-if (WIN32)
- list (APPEND CFILES
+if(WIN32)
+ list(APPEND CFILES
scandir_win32.c
)
-endif (WIN32)
+endif(WIN32)
-if (APPLE AND (NOT OPTION_APPLE_X11))
- set (MMFILES
+if(APPLE AND NOT FLTK_BACKEND_X11)
+ set(MMFILES
Fl_cocoa.mm
drivers/Cocoa/Fl_Cocoa_Printer_Driver.mm
Fl_Native_File_Chooser_MAC.mm
Fl_MacOS_Sys_Menu_Bar.mm
)
else()
- set (MMFILES
- )
-endif (APPLE AND (NOT OPTION_APPLE_X11))
+ set(MMFILES)
+endif()
#######################################################################
# prepare source files for shared and static FLTK libraries
-set (SHARED_FILES ${CPPFILES} ${MMFILES} ${CFILES} ${PSFILES})
-list (APPEND SHARED_FILES ${HEADER_FILES} ${DRIVER_HEADER_FILES})
+set(SHARED_FILES ${CPPFILES} ${MMFILES} ${CFILES} ${PSFILES})
+list(APPEND SHARED_FILES ${HEADER_FILES} ${DRIVER_HEADER_FILES})
-set (STATIC_FILES ${SHARED_FILES})
+set(STATIC_FILES ${SHARED_FILES})
# Visual Studio (MSVC) is known to need WinMain() and maybe BORLAND
# needs it as well, hence we include it on all Windows platforms.
# The GNU compilers (MinGW, MSYS2, Cygwin) disable compilation inside
# the source file which is what we finally want and need.
-if (WIN32)
- list (APPEND STATIC_FILES fl_call_main.c)
-endif ()
+if(WIN32)
+ list(APPEND STATIC_FILES fl_call_main.c)
+endif()
#######################################################################
# prepare optional libs for shared and static FLTK libraries
-set (OPTIONAL_LIBS)
+set(OPTIONAL_LIBS)
-if (LIB_dl)
- list (APPEND OPTIONAL_LIBS ${LIB_dl})
-endif (LIB_dl)
+if(LIB_dl)
+ list(APPEND OPTIONAL_LIBS ${LIB_dl})
+endif(LIB_dl)
-if (USE_THREADS)
- list (APPEND OPTIONAL_LIBS ${CMAKE_THREAD_LIBS_INIT})
-endif (USE_THREADS)
+if(USE_THREADS)
+ list(APPEND OPTIONAL_LIBS ${CMAKE_THREAD_LIBS_INIT})
+endif(USE_THREADS)
-if (FLTK_USE_X11)
- list (APPEND OPTIONAL_LIBS ${X11_LIBRARIES})
-endif (FLTK_USE_X11)
+if(FLTK_USE_X11)
+ list(APPEND OPTIONAL_LIBS ${X11_LIBRARIES})
+endif(FLTK_USE_X11)
-if (WIN32)
- list (APPEND OPTIONAL_LIBS comctl32 ws2_32)
- if (USE_GDIPLUS)
- list (APPEND OPTIONAL_LIBS gdiplus)
- endif ()
-endif (WIN32)
+if(WIN32)
+ list(APPEND OPTIONAL_LIBS comctl32 ws2_32)
+ if(USE_GDIPLUS)
+ list(APPEND OPTIONAL_LIBS gdiplus)
+ endif()
+endif(WIN32)
-if (HAVE_XINERAMA)
- list (APPEND OPTIONAL_LIBS ${X11_Xinerama_LIB})
-endif (HAVE_XINERAMA)
+if(HAVE_XINERAMA)
+ list(APPEND OPTIONAL_LIBS ${X11_Xinerama_LIB})
+endif(HAVE_XINERAMA)
-if (HAVE_XFIXES)
- list (APPEND OPTIONAL_LIBS ${X11_Xfixes_LIB})
-endif (HAVE_XFIXES)
+if(HAVE_XFIXES)
+ list(APPEND OPTIONAL_LIBS ${X11_Xfixes_LIB})
+endif(HAVE_XFIXES)
-if (HAVE_XCURSOR)
- list (APPEND OPTIONAL_LIBS ${X11_Xcursor_LIB})
-endif (HAVE_XCURSOR)
+if(HAVE_XCURSOR)
+ list(APPEND OPTIONAL_LIBS ${X11_Xcursor_LIB})
+endif(HAVE_XCURSOR)
-if (HAVE_XRENDER)
- list (APPEND OPTIONAL_LIBS ${X11_Xrender_LIB})
-endif (HAVE_XRENDER)
+if(HAVE_XRENDER)
+ list(APPEND OPTIONAL_LIBS ${X11_Xrender_LIB})
+endif(HAVE_XRENDER)
-if (FLTK_HAVE_CAIRO) # OPTION_CAIRO or OPTION_CAIROEXT
- list (APPEND OPTIONAL_LIBS ${PKG_CAIRO_LIBRARIES})
-endif()
+### 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)
+if(USE_PANGO)
### FIXME ### This needs to use the PKG_* variables directly
- list (APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGO} ${HAVE_LIB_PANGOCAIRO})
- list (APPEND OPTIONAL_LIBS ${HAVE_LIB_CAIRO} ${HAVE_LIB_GOBJECT})
- if (USE_PANGOXFT)
- list (APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGOXFT})
- endif (USE_PANGOXFT)
-endif (USE_PANGO)
-
-if (USE_XFT)
- list (APPEND OPTIONAL_LIBS ${X11_Xft_LIB})
- if (LIB_fontconfig)
- list (APPEND OPTIONAL_LIBS ${LIB_fontconfig})
- endif (LIB_fontconfig)
-endif (USE_XFT)
-
-if (UNIX AND OPTION_USE_WAYLAND)
+ list(APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGO} ${HAVE_LIB_PANGOCAIRO})
+ list(APPEND OPTIONAL_LIBS ${HAVE_LIB_CAIRO} ${HAVE_LIB_GOBJECT})
+ if(USE_PANGOXFT)
+ list(APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGOXFT})
+ endif(USE_PANGOXFT)
+endif(USE_PANGO)
+
+if(USE_XFT)
+ list(APPEND OPTIONAL_LIBS ${X11_Xft_LIB})
+ if(LIB_fontconfig)
+ list(APPEND OPTIONAL_LIBS ${LIB_fontconfig})
+ endif(LIB_fontconfig)
+endif(USE_XFT)
+
+if(UNIX AND FLTK_BACKEND_WAYLAND)
pkg_get_variable(PROTOCOLS wayland-protocols pkgdatadir)
# replace "//" with "/"
- string (REPLACE "//" "/" PROTOCOLS ${PROTOCOLS})
- if (NOT(EXISTS ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml))
- message(WARNING "Install necessary file ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml")
- endif ()
- if (NOT(EXISTS ${PROTOCOLS}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml))
- message(WARNING
- "Install necessary file ${PROTOCOLS}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml")
- endif ()
- if (NOT(EXISTS ${PROTOCOLS}/unstable/text-input/text-input-unstable-v3.xml))
- message(WARNING
- "Install necessary file ${PROTOCOLS}/unstable/text-input/text-input-unstable-v3.xml")
- endif ()
- if (NOT((EXISTS ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml) AND
- (EXISTS ${PROTOCOLS}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml) AND
- (EXISTS ${PROTOCOLS}/unstable/text-input/text-input-unstable-v3.xml)))
- message(FATAL_ERROR "*** Terminating: one or more required file(s) missing.")
- endif ()
+ string(REPLACE "//" "/" PROTOCOLS ${PROTOCOLS})
+
+ # The following variable is used for finding required files and to terminate
+ # the build if one or more files are not found. For user convenience
+ # the build is terminated after *all* files have been checked.
+ set(STOP_REQUIRED FALSE)
+
+ set(INFILE ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml)
+ fl_check_required_file(STOP_REQUIRED ${INFILE})
add_custom_command(
OUTPUT xdg-shell-protocol.c xdg-shell-client-protocol.h
- COMMAND wayland-scanner private-code ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml xdg-shell-protocol.c
- COMMAND wayland-scanner client-header ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml xdg-shell-client-protocol.h
- DEPENDS ${PROTOCOLS}/stable/xdg-shell/xdg-shell.xml
+ COMMAND wayland-scanner private-code ${INFILE} xdg-shell-protocol.c
+ COMMAND wayland-scanner client-header ${INFILE} xdg-shell-client-protocol.h
+ DEPENDS ${INFILE}
VERBATIM
)
- list (APPEND STATIC_FILES "xdg-shell-protocol.c")
- list (APPEND SHARED_FILES "xdg-shell-protocol.c")
- if (NOT OPTION_USE_SYSTEM_LIBDECOR)
+ list(APPEND STATIC_FILES "xdg-shell-protocol.c")
+ list(APPEND SHARED_FILES "xdg-shell-protocol.c")
+
+ if(NOT USE_SYSTEM_LIBDECOR)
+ set(INFILE ${PROTOCOLS}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml)
+ fl_check_required_file(STOP_REQUIRED ${INFILE})
add_custom_command(
OUTPUT xdg-decoration-protocol.c xdg-decoration-client-protocol.h
- COMMAND wayland-scanner private-code ${PROTOCOLS}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml xdg-decoration-protocol.c
- COMMAND wayland-scanner client-header ${PROTOCOLS}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml xdg-decoration-client-protocol.h
- DEPENDS ${PROTOCOLS}/unstable/xdg-decoration/xdg-decoration-unstable-v1.xml
+ COMMAND wayland-scanner private-code ${INFILE} xdg-decoration-protocol.c
+ COMMAND wayland-scanner client-header ${INFILE} xdg-decoration-client-protocol.h
+ DEPENDS ${INFILE}
VERBATIM
)
- list (APPEND STATIC_FILES "xdg-decoration-protocol.c")
- list (APPEND SHARED_FILES "xdg-decoration-protocol.c")
- endif (NOT OPTION_USE_SYSTEM_LIBDECOR)
+ list(APPEND STATIC_FILES "xdg-decoration-protocol.c")
+ list(APPEND SHARED_FILES "xdg-decoration-protocol.c")
+ endif(NOT USE_SYSTEM_LIBDECOR)
+
+ set(INFILE ${FLTK_SOURCE_DIR}/libdecor/build/gtk-shell.xml)
add_custom_command(
- OUTPUT gtk-shell-protocol.c gtk-shell-client-protocol.h
- COMMAND wayland-scanner private-code ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/build/gtk-shell.xml gtk-shell-protocol.c
- COMMAND wayland-scanner client-header ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/build/gtk-shell.xml gtk-shell-client-protocol.h
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../libdecor/build/gtk-shell.xml
- VERBATIM
+ OUTPUT gtk-shell-protocol.c gtk-shell-client-protocol.h
+ COMMAND wayland-scanner private-code ${INFILE} gtk-shell-protocol.c
+ COMMAND wayland-scanner client-header ${INFILE} gtk-shell-client-protocol.h
+ DEPENDS ${INFILE}
+ VERBATIM
)
- list (APPEND STATIC_FILES "gtk-shell-protocol.c")
- list (APPEND SHARED_FILES "gtk-shell-protocol.c")
+ list(APPEND STATIC_FILES "gtk-shell-protocol.c")
+ list(APPEND SHARED_FILES "gtk-shell-protocol.c")
+
+ set(INFILE ${PROTOCOLS}/unstable/text-input/text-input-unstable-v3.xml)
+ fl_check_required_file(STOP_REQUIRED ${INFILE})
add_custom_command(
OUTPUT text-input-protocol.c text-input-client-protocol.h
- COMMAND wayland-scanner private-code ${PROTOCOLS}/unstable/text-input/text-input-unstable-v3.xml text-input-protocol.c
- COMMAND wayland-scanner client-header ${PROTOCOLS}/unstable/text-input/text-input-unstable-v3.xml text-input-client-protocol.h
- DEPENDS ${PROTOCOLS}/unstable/text-input/text-input-unstable-v3.xml
+ COMMAND wayland-scanner private-code ${INFILE} text-input-protocol.c
+ COMMAND wayland-scanner client-header ${INFILE} text-input-client-protocol.h
+ DEPENDS ${INFILE}
VERBATIM
)
- list (APPEND STATIC_FILES "text-input-protocol.c")
- list (APPEND SHARED_FILES "text-input-protocol.c")
-
- if (OPTION_USE_GL)
- list (APPEND OPTIONAL_LIBS "-lwayland-egl -lEGL")
- endif (OPTION_USE_GL)
- if (OPTION_USE_SYSTEM_LIBDECOR)
- list (APPEND OPTIONAL_LIBS "-ldecor-0")
- elseif (GTK_FOUND AND OPTION_ALLOW_GTK_PLUGIN)
- list (APPEND OPTIONAL_LIBS ${GTK_LDFLAGS} )
- endif (OPTION_USE_SYSTEM_LIBDECOR)
- list (APPEND OPTIONAL_LIBS "-lwayland-cursor -lwayland-client -lxkbcommon -ldl")
- if (DBUS_FOUND)
- list (APPEND OPTIONAL_LIBS "${DBUS_LDFLAGS}")
- endif (DBUS_FOUND)
- if (NOT OPTION_WAYLAND_ONLY)
- list (APPEND OPTIONAL_LIBS "-lXcursor -lXrender -lXinerama -lXfixes -lXft -lXext -lX11")
- endif (NOT OPTION_WAYLAND_ONLY)
- if (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux" AND NOT OPTION_BUILD_SHARED_LIBS)
- list (APPEND OPTIONAL_LIBS "-no-pie")
- endif (${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux" AND NOT OPTION_BUILD_SHARED_LIBS)
-endif (UNIX AND OPTION_USE_WAYLAND)
+ list(APPEND STATIC_FILES "text-input-protocol.c")
+ list(APPEND SHARED_FILES "text-input-protocol.c")
+
+ if(STOP_REQUIRED)
+ message(FATAL_ERROR "*** Terminating: one or more required file(s) were not found. ***")
+ endif()
+
+ if(FLTK_USE_GL)
+ list(APPEND OPTIONAL_LIBS "-lwayland-egl -lEGL")
+ endif(FLTK_USE_GL)
+ if(USE_SYSTEM_LIBDECOR)
+ list(APPEND OPTIONAL_LIBS "-ldecor-0")
+ elseif(GTK_FOUND AND FLTK_USE_LIBDECOR_GTK)
+ list(APPEND OPTIONAL_LIBS ${GTK_LDFLAGS} )
+ endif(USE_SYSTEM_LIBDECOR)
+ list(APPEND OPTIONAL_LIBS "-lwayland-cursor -lwayland-client -lxkbcommon -ldl")
+ if(DBUS_FOUND)
+ list(APPEND OPTIONAL_LIBS "${DBUS_LDFLAGS}")
+ endif(DBUS_FOUND)
+ if(NOT FLTK_BACKEND_WAYLAND_ONLY)
+ list(APPEND OPTIONAL_LIBS "-lXcursor -lXrender -lXinerama -lXfixes -lXft -lXext -lX11")
+ endif(NOT FLTK_BACKEND_WAYLAND_ONLY)
+ if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND NOT FLTK_BUILD_SHARED_LIBS)
+ list(APPEND OPTIONAL_LIBS "-no-pie")
+ endif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND NOT FLTK_BUILD_SHARED_LIBS)
+endif(UNIX AND FLTK_BACKEND_WAYLAND)
#######################################################################
-FL_ADD_LIBRARY (fltk STATIC "${STATIC_FILES}")
-target_link_libraries (fltk ${OPTIONAL_LIBS})
+fl_add_library(fltk STATIC "${STATIC_FILES}")
+target_link_libraries(fltk PUBLIC ${OPTIONAL_LIBS})
-if (FLTK_HAVE_CAIRO)
- target_link_directories (fltk PUBLIC ${PKG_CAIRO_LIBRARY_DIRS})
-endif()
+### if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO)
+### target_link_directories(fltk PUBLIC ${PKG_CAIRO_LIBRARY_DIRS})
+### endif()
#######################################################################
-if (FLTK_BUILD_FORMS)
- FL_ADD_LIBRARY (fltk_forms STATIC "${FORMS_FILES}")
- target_link_libraries (fltk_forms fltk)
-endif ()
+if(FLTK_BUILD_FORMS)
+ fl_add_library(fltk_forms STATIC "${FORMS_FILES}")
+ target_link_libraries(fltk_forms PUBLIC fltk::fltk)
+endif()
#######################################################################
-FL_ADD_LIBRARY (fltk_images STATIC "${IMGCPPFILES}")
-target_link_libraries (fltk_images fltk)
+if(0)
+ message(STATUS "---------------------- 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)
+ message(STATUS "---------------------- fltk_images -----------------------")
+endif()
-if (FLTK_USE_BUILTIN_JPEG)
- target_link_libraries (fltk_images fltk_jpeg)
-else()
- target_link_libraries (fltk_images ${FLTK_JPEG_LIBRARIES})
-endif ()
+fl_add_library(fltk_images STATIC "${IMGCPPFILES}")
+target_link_libraries(fltk_images PUBLIC fltk::fltk)
+target_link_libraries(fltk_images PRIVATE ${FLTK_IMAGE_LIBRARIES})
-if (FLTK_USE_BUILTIN_ZLIB)
- target_link_libraries (fltk_images fltk_z)
-else()
- target_link_libraries (fltk_images ${FLTK_ZLIB_LIBRARIES})
-endif ()
+### 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_BUILTIN_PNG)
- target_link_libraries (fltk_images fltk_png)
-else()
- target_link_libraries (fltk_images ${FLTK_PNG_LIBRARIES})
-endif ()
+if(FLTK_USE_BUNDLED_JPEG)
+ target_include_directories(fltk_images PUBLIC
+ $<BUILD_INTERFACE:${FLTK_SOURCE_DIR}/jpeg>
+ $<INSTALL_INTERFACE:include>)
+endif()
#######################################################################
-if (OPENGL_FOUND)
- FL_ADD_LIBRARY (fltk_gl STATIC "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
- target_link_libraries (fltk_gl fltk ${OPENGL_LIBRARIES})
-endif (OPENGL_FOUND)
+if(FLTK_USE_GL)
+ fl_add_library(fltk_gl STATIC "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
+ target_link_libraries(fltk_gl PUBLIC ${OPENGL_LIBRARIES} fltk::fltk)
+endif(FLTK_USE_GL)
#######################################################################
# Build shared libraries (optional)
@@ -803,92 +826,108 @@ endif (OPENGL_FOUND)
# Shared libraries, part 1: everything except Visual Studio (MSVC)
#######################################################################
-if (OPTION_BUILD_SHARED_LIBS AND NOT 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 ${OPTIONAL_LIBS} ${PKG_CAIRO_LIBRARIES})
- target_link_directories (fltk_SHARED PUBLIC ${PKG_CAIRO_LIBRARY_DIRS})
+ 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)
- FL_ADD_LIBRARY (fltk_forms SHARED "${FORMS_FILES}")
- target_link_libraries (fltk_forms_SHARED fltk_SHARED)
- endif ()
+ if(FLTK_BUILD_FORMS)
+ fl_add_library(fltk_forms SHARED "${FORMS_FILES}")
+ target_link_libraries(fltk_forms-shared PUBLIC fltk::fltk-shared)
+ endif()
###################################################################
- FL_ADD_LIBRARY (fltk_images SHARED "${IMGCPPFILES}")
- target_link_libraries (fltk_images_SHARED fltk_SHARED)
+ ### 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)
- if (FLTK_USE_BUILTIN_JPEG)
- target_link_libraries (fltk_images_SHARED fltk_jpeg_SHARED)
- else()
- target_link_libraries (fltk_images_SHARED ${FLTK_JPEG_LIBRARIES})
- endif ()
+ fl_add_library(fltk_images SHARED "${IMGCPPFILES}")
+ target_link_libraries(fltk_images-shared PUBLIC fltk::fltk-shared)
+
+ 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_BUILTIN_PNG)
- target_link_libraries (fltk_images_SHARED fltk_png_SHARED)
+ 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>
+ )
+ endif()
+
+ if(FLTK_USE_BUNDLED_JPEG)
+ target_link_libraries(fltk_images-shared PUBLIC fltk::jpeg-shared)
else()
- target_link_libraries (fltk_images_SHARED ${FLTK_PNG_LIBRARIES})
- endif ()
+ target_link_libraries(fltk_images-shared PUBLIC ${JPEG_LIBRARIES})
+ endif()
- if (FLTK_USE_BUILTIN_ZLIB)
- target_link_libraries (fltk_images_SHARED fltk_z_SHARED)
+ if(FLTK_USE_BUNDLED_PNG)
+ target_link_libraries(fltk_images-shared PUBLIC fltk::png-shared)
else()
- target_link_libraries (fltk_images_SHARED ${FLTK_ZLIB_LIBRARIES})
- endif ()
+ target_link_libraries(fltk_images-shared PUBLIC ${PNG_LIBRARIES})
+ endif()
###################################################################
- if (OPENGL_FOUND)
- FL_ADD_LIBRARY (fltk_gl SHARED "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
- target_link_libraries (fltk_gl_SHARED fltk_SHARED ${OPENGL_LIBRARIES})
- endif (OPENGL_FOUND)
+ if(FLTK_USE_GL)
+ fl_add_library(fltk_gl SHARED "${GLCPPFILES};${GL_HEADER_FILES};${GL_DRIVER_HEADER_FILES}")
+ target_link_libraries(fltk_gl-shared PUBLIC ${OPENGL_LIBRARIES} fltk::fltk-shared)
+ endif(FLTK_USE_GL)
-endif (OPTION_BUILD_SHARED_LIBS AND NOT MSVC)
+endif(FLTK_BUILD_SHARED_LIBS AND NOT MSVC)
#######################################################################
# Shared libraries, part 2: Visual Studio (MSVC)
#######################################################################
-# Note to devs: As of June 2020 we can't build separate shared libs (DLL's)
-# under Windows with Visual Studio (MSVC) but we can build one big DLL
-# that comprises all FLTK and optional PNG, JPEG, and ZLIB libs.
+# Note to devs: As of June 2020 we can't build separate shared libs
+# (DLL's) under Windows with Visual Studio (MSVC) but we can build one
+# big DLL that comprises all FLTK and optional PNG, JPEG, and ZLIB libs.
+# The reason is the common DLL linkage (FL_EXPORT) for all libs. This
+# might be changed in the future but it would require a lot of work.
# AlbrechtS
-if (OPTION_BUILD_SHARED_LIBS AND MSVC)
+if(FLTK_BUILD_SHARED_LIBS AND MSVC)
- set (SOURCES ${SHARED_FILES} ${FORMS_FILES} ${IMGCPPFILES})
- if (OPENGL_FOUND)
- list (APPEND SOURCES ${GLCPPFILES} ${GL_HEADER_FILES} ${GL_DRIVER_HEADER_FILES})
- endif (OPENGL_FOUND)
+ set(SOURCES ${SHARED_FILES} ${FORMS_FILES} ${IMGCPPFILES})
+ if(OPENGL_FOUND)
+ list(APPEND SOURCES ${GLCPPFILES} ${GL_HEADER_FILES} ${GL_DRIVER_HEADER_FILES})
+ endif(OPENGL_FOUND)
- FL_ADD_LIBRARY (fltk SHARED "${SOURCES}")
- target_link_libraries (fltk_SHARED ${OPTIONAL_LIBS})
+ fl_add_library(fltk SHARED "${SOURCES}")
+ target_link_libraries(fltk-shared PUBLIC ${OPTIONAL_LIBS})
- if (FLTK_USE_BUILTIN_JPEG)
- target_link_libraries (fltk_SHARED fltk_jpeg)
+ if(FLTK_USE_BUNDLED_JPEG)
+ target_link_libraries(fltk-shared PUBLIC fltk::jpeg-shared)
else()
- target_link_libraries (fltk_SHARED ${FLTK_JPEG_LIBRARIES})
- endif ()
+ target_link_libraries(fltk-shared PUBLIC ${FLTK_JPEG_LIBRARIES})
+ endif()
- if (FLTK_USE_BUILTIN_PNG)
- target_link_libraries (fltk_SHARED fltk_png)
+ if(FLTK_USE_BUNDLED_PNG)
+ target_link_libraries(fltk-shared PUBLIC fltk::png-shared)
else()
- target_link_libraries (fltk_SHARED ${FLTK_PNG_LIBRARIES})
- endif ()
+ target_link_libraries(fltk-shared PUBLIC ${FLTK_PNG_LIBRARIES})
+ endif()
- if (FLTK_USE_BUILTIN_ZLIB)
- target_link_libraries (fltk_SHARED fltk_z)
- else()
- target_link_libraries (fltk_SHARED ${FLTK_ZLIB_LIBRARIES})
- endif ()
+ if(OPENGL_FOUND)
+ target_link_libraries(fltk-shared PUBLIC ${OPENGL_LIBRARIES})
+ endif(OPENGL_FOUND)
- if (OPENGL_FOUND)
- target_link_libraries (fltk_SHARED ${OPENGL_LIBRARIES})
- endif (OPENGL_FOUND)
-
-endif (OPTION_BUILD_SHARED_LIBS AND MSVC)
+endif(FLTK_BUILD_SHARED_LIBS AND MSVC)
#######################################################################
+
+set(FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE)
+set(FLTK_LIBRARIES_SHARED ${FLTK_LIBRARIES_SHARED} PARENT_SCOPE)