diff options
| author | maxim nikonov <maxim.nikonov@hqo.co> | 2026-02-05 15:21:34 +0500 |
|---|---|---|
| committer | maxim nikonov <maxim.nikonov@hqo.co> | 2026-02-05 15:21:34 +0500 |
| commit | db214d1145e46d527a46d1fc2519548d2c4d23f1 (patch) | |
| tree | cf0fd9922e4d54f6beb63888f9b28c8e2a787bdf /src/CMakeLists.txt | |
| parent | 75fc94d6c71fe686f6dde5b41ad91cba2f6bdd6f (diff) | |
wip: fork
Diffstat (limited to 'src/CMakeLists.txt')
| -rw-r--r-- | src/CMakeLists.txt | 1071 |
1 files changed, 0 insertions, 1071 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt deleted file mode 100644 index cf4196185..000000000 --- a/src/CMakeLists.txt +++ /dev/null @@ -1,1071 +0,0 @@ -# -# CMakeLists.txt to build the FLTK library using CMake (www.cmake.org) -# -# Copyright 1998-2026 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 -# file is missing or damaged, see the license at: -# -# https://www.fltk.org/COPYING.php -# -# Please see the following page on how to report bugs and issues: -# -# https://www.fltk.org/bugs.php -# - -# 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 - Fl_Browser.cxx - Fl_Browser_.cxx - Fl_Browser_load.cxx - Fl_Box.cxx - Fl_Button.cxx - Fl_Chart.cxx - Fl_Check_Browser.cxx - Fl_Check_Button.cxx - Fl_Choice.cxx - Fl_Clock.cxx - Fl_Color_Chooser.cxx - Fl_Copy_Surface.cxx - Fl_Counter.cxx - Fl_Device.cxx - Fl_Dial.cxx - Fl_Double_Window.cxx - Fl_File_Browser.cxx - Fl_File_Chooser.cxx - Fl_File_Chooser2.cxx - Fl_File_Icon.cxx - Fl_File_Input.cxx - Fl_Flex.cxx - Fl_Graphics_Driver.cxx - Fl_Grid.cxx - Fl_Group.cxx - Fl_Help_View.cxx - Fl_Image.cxx - Fl_Image_Surface.cxx - Fl_Input.cxx - Fl_Input_.cxx - Fl_Input_Choice.cxx - Fl_Light_Button.cxx - Fl_Menu.cxx - Fl_Menu_.cxx - Fl_Menu_Bar.cxx - Fl_Menu_Button.cxx - Fl_Menu_Window.cxx - Fl_Menu_add.cxx - Fl_Menu_global.cxx - Fl_Message.cxx - Fl_Multi_Label.cxx - Fl_Native_File_Chooser.cxx - Fl_Overlay_Window.cxx - Fl_Pack.cxx - Fl_Paged_Device.cxx - Fl_Pixmap.cxx - Fl_Positioner.cxx - Fl_Preferences.cxx - Fl_Printer.cxx - Fl_Progress.cxx - Fl_Repeat_Button.cxx - Fl_Return_Button.cxx - Fl_Roller.cxx - Fl_Round_Button.cxx - Fl_Scheme.cxx - Fl_Scheme_Choice.cxx - Fl_Screen_Driver.cxx - Fl_Scroll.cxx - Fl_Scrollbar.cxx - Fl_Shared_Image.cxx - Fl_Shortcut_Button.cxx - Fl_Single_Window.cxx - Fl_Slider.cxx - Fl_Spinner.cxx - Fl_Sys_Menu_Bar.cxx - Fl_System_Driver.cxx - Fl_Table.cxx - Fl_Table_Row.cxx - Fl_Tabs.cxx - Fl_Terminal.cxx - Fl_Text_Buffer.cxx - Fl_Text_Display.cxx - Fl_Text_Editor.cxx - Fl_Tile.cxx - Fl_Tiled_Image.cxx - Fl_Timeout.cxx - Fl_Tooltip.cxx - Fl_Tree.cxx - Fl_Tree_Item_Array.cxx - Fl_Tree_Item.cxx - Fl_Tree_Prefs.cxx - Fl_Valuator.cxx - Fl_Value_Input.cxx - Fl_Value_Output.cxx - Fl_Value_Slider.cxx - Fl_Widget.cxx - Fl_Widget_Surface.cxx - Fl_Window.cxx - Fl_Window_Driver.cxx - Fl_Window_fullscreen.cxx - Fl_Window_hotspot.cxx - Fl_Window_iconize.cxx - Fl_Wizard.cxx - Fl_XBM_Image.cxx - Fl_XPM_Image.cxx - Fl_abort.cxx - Fl_add_idle.cxx - Fl_arg.cxx - Fl_compose.cxx - Fl_display.cxx - Fl_get_system_colors.cxx - Fl_grab.cxx - Fl_lock.cxx - Fl_own_colormap.cxx - Fl_visual.cxx - filename_absolute.cxx - filename_expand.cxx - filename_ext.cxx - filename_isdir.cxx - filename_list.cxx - filename_match.cxx - filename_setext.cxx - fl_arc.cxx - fl_ask.cxx - fl_boxtype.cxx - fl_color.cxx - fl_contrast.cxx - fl_cursor.cxx - fl_curve.cxx - fl_diamond_box.cxx - fl_draw.cxx - fl_draw_arrow.cxx - fl_draw_pixmap.cxx - fl_encoding_latin1.cxx - fl_encoding_mac_roman.cxx - fl_engraved_label.cxx - fl_file_dir.cxx - fl_font.cxx - fl_gleam.cxx - fl_gtk.cxx - fl_labeltype.cxx - fl_open_uri.cxx - fl_oval_box.cxx - fl_overlay.cxx - fl_oxy.cxx - fl_plastic.cxx - fl_read_image.cxx - fl_rect.cxx - fl_round_box.cxx - fl_rounded_box.cxx - fl_set_font.cxx - fl_scroll_area.cxx - fl_shadow_box.cxx - fl_shortcut.cxx - fl_show_colormap.cxx - fl_string_functions.cxx - fl_symbols.cxx - fl_utf8.cxx - fl_vertex.cxx - print_button.cxx - screen_xywh.cxx -) - -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 includes directory <FL/...> -file(GLOB - HEADER_FILES - "../FL/*.[hH]" - "../FL/core/*.[hH]" -) - -# find all private header files in source directory "src/..." -file(GLOB - PRIVATE_HEADER_FILES - "*.[hH]" -) - -# find all private header files in source directory "src/..." -file(GLOB - PRIVATE_HEADER_FILES - "*.[hH]" -) - -# add generated header files in build directory -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 - -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 FLTK_OPTION_PRINT_SUPPORT) - -set(DRIVER_FILES) - -if(FLTK_USE_X11 AND NOT FLTK_USE_WAYLAND) - - # X11 (including APPLE with X11) - - set(DRIVER_FILES - drivers/Posix/Fl_Posix_Printer_Driver.cxx - drivers/X11/Fl_X11_Screen_Driver.cxx - drivers/X11/Fl_X11_Window_Driver.cxx - drivers/Posix/Fl_Posix_System_Driver.cxx - drivers/Unix/Fl_Unix_System_Driver.cxx - drivers/Unix/Fl_Unix_Screen_Driver.cxx - drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.cxx - drivers/Xlib/Fl_Xlib_Image_Surface_Driver.cxx - drivers/X11/fl_X11_platform_init.cxx - Fl_x.cxx - fl_dnd_x.cxx - Fl_Native_File_Chooser_FLTK.cxx - Fl_Native_File_Chooser_GTK.cxx - Fl_get_key.cxx - ) - - list(APPEND DRIVER_FILES - Fl_Native_File_Chooser_Kdialog.cxx - Fl_Native_File_Chooser_Zenity.cxx) - - 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) - list(APPEND DRIVER_FILES - drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx - ) - 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) - 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 - drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx - drivers/Xlib/Fl_Xlib_Graphics_Driver_line_style.cxx - drivers/Xlib/Fl_Xlib_Graphics_Driver_rect.cxx - drivers/Xlib/Fl_Xlib_Graphics_Driver_vertex.cxx - ) - endif(FLTK_USE_CAIRO) - - 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 - drivers/Xlib/Fl_Xlib_Graphics_Driver.H - drivers/Xlib/Fl_Font.H - drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.H - 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} - 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} - drivers/Cairo/Fl_Cairo_Graphics_Driver.H - ) - endif(FLTK_USE_CAIRO) - -elseif(FLTK_USE_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 - drivers/Wayland/Fl_Wayland_Screen_Driver.cxx - drivers/Wayland/Fl_Wayland_Window_Driver.cxx - drivers/Unix/Fl_Unix_System_Driver.cxx - drivers/Wayland/Fl_Wayland_Graphics_Driver.cxx - drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.cxx - drivers/Wayland/Fl_Wayland_Image_Surface_Driver.cxx - drivers/Wayland/fl_wayland_clipboard_dnd.cxx - drivers/Wayland/fl_wayland_platform_init.cxx - drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx - Fl_Native_File_Chooser_FLTK.cxx - Fl_Native_File_Chooser_GTK.cxx - ) - - list(APPEND DRIVER_FILES - Fl_Native_File_Chooser_Kdialog.cxx - Fl_Native_File_Chooser_Zenity.cxx) - - 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 - drivers/Posix/Fl_Posix_System_Driver.H - drivers/Wayland/Fl_Wayland_Screen_Driver.H - drivers/Wayland/Fl_Wayland_Window_Driver.H - drivers/Wayland/Fl_Wayland_Graphics_Driver.H - drivers/Cairo/Fl_Cairo_Graphics_Driver.H - drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.H - drivers/Wayland/Fl_Wayland_Copy_Surface_Driver.H - drivers/Wayland/Fl_Wayland_Image_Surface_Driver.H - drivers/Unix/Fl_Unix_System_Driver.H - ) - -elseif(APPLE) - - # Apple Quartz - - 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 - drivers/Quartz/Fl_Quartz_Graphics_Driver_font.cxx - drivers/Quartz/Fl_Quartz_Graphics_Driver_vertex.cxx - drivers/Quartz/Fl_Quartz_Graphics_Driver_image.cxx - drivers/Quartz/Fl_Quartz_Graphics_Driver_arci.cxx - drivers/Quartz/Fl_Quartz_Graphics_Driver_line_style.cxx - drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.cxx - drivers/Quartz/Fl_Quartz_Image_Surface_Driver.cxx - drivers/Cocoa/Fl_Cocoa_Window_Driver.cxx - drivers/Cocoa/Fl_Cocoa_Screen_Driver.cxx - drivers/Posix/Fl_Posix_System_Driver.cxx - drivers/Darwin/Fl_Darwin_System_Driver.cxx - Fl_get_key_mac.cxx - drivers/Darwin/fl_macOS_platform_init.cxx - ) - 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 - drivers/Cocoa/Fl_Cocoa_Window_Driver.H - drivers/Cocoa/Fl_MacOS_Sys_Menu_Bar_Driver.H - drivers/Quartz/Fl_Quartz_Graphics_Driver.H - drivers/Quartz/Fl_Quartz_Copy_Surface_Driver.H - drivers/Quartz/Fl_Font.H - drivers/Quartz/Fl_Quartz_Image_Surface_Driver.H - ) - -else() - - # Windows (GDI) - - set(DRIVER_FILES - drivers/WinAPI/Fl_WinAPI_System_Driver.cxx - drivers/WinAPI/Fl_WinAPI_Screen_Driver.cxx - drivers/WinAPI/Fl_WinAPI_Window_Driver.cxx - drivers/WinAPI/Fl_WinAPI_Printer_Driver.cxx - drivers/GDI/Fl_GDI_Graphics_Driver.cxx - drivers/GDI/Fl_GDI_Graphics_Driver_arci.cxx - drivers/GDI/Fl_GDI_Graphics_Driver_color.cxx - drivers/GDI/Fl_GDI_Graphics_Driver_font.cxx - drivers/GDI/Fl_GDI_Graphics_Driver_image.cxx - drivers/GDI/Fl_GDI_Graphics_Driver_line_style.cxx - drivers/GDI/Fl_GDI_Graphics_Driver_rect.cxx - drivers/GDI/Fl_GDI_Graphics_Driver_vertex.cxx - drivers/GDI/Fl_GDI_Copy_Surface_Driver.cxx - drivers/GDI/Fl_GDI_Image_Surface_Driver.cxx - Fl_win32.cxx - fl_dnd_win32.cxx - Fl_Native_File_Chooser_WIN32.cxx - Fl_get_key_win32.cxx - drivers/WinAPI/fl_WinAPI_platform_init.cxx - ) - 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 - drivers/GDI/Fl_GDI_Graphics_Driver.H - drivers/GDI/Fl_Font.H - drivers/GDI/Fl_GDI_Copy_Surface_Driver.H - drivers/GDI/Fl_GDI_Image_Surface_Driver.H - ) - - # Optional Pen/Tablet Support - - if(FLTK_HAVE_PEN_SUPPORT) - list(APPEND DRIVER_FILES - drivers/WinAPI/Fl_WinAPI_Pen_Driver.cxx - ) - endif(FLTK_HAVE_PEN_SUPPORT) - -endif(FLTK_USE_X11 AND NOT FLTK_USE_WAYLAND) - -# Common Pen/Tablet Support Files - -if(FLTK_HAVE_PEN_SUPPORT) - list(APPEND DRIVER_FILES - drivers/Base/Fl_Base_Pen_Events.cxx - ) - list(APPEND DRIVER_HEADER_FILES - drivers/Base/Fl_Base_Pen_Events.H - ) -endif(FLTK_HAVE_PEN_SUPPORT) - -source_group("Header Files" FILES ${HEADER_FILES}) -source_group("Private Header Files" FILES ${PRIVATE_HEADER_FILES}) -source_group("Driver Source Files" FILES ${DRIVER_FILES}) -source_group("Driver Header Files" FILES ${DRIVER_HEADER_FILES}) - -set(CPPFILES - ${CPPFILES} - ${DRIVER_FILES} -) - -if(FLTK_BUILD_FORMS) - set(FORMS_FILES - forms_compatibility.cxx - forms_bitmap.cxx - forms_free.cxx - forms_fselect.cxx - forms_pixmap.cxx - forms_timer.cxx - ) -else() - set(FORMS_FILES "") -endif() - -set(GLCPPFILES - Fl_Gl_Choice.cxx - Fl_Gl_Device_Plugin.cxx - Fl_Gl_Overlay.cxx - Fl_Gl_Window.cxx - freeglut_geometry.cxx - freeglut_stroke_mono_roman.cxx - freeglut_stroke_roman.cxx - freeglut_teapot.cxx - gl_draw.cxx - gl_start.cxx - glut_compatibility.cxx - glut_font.cxx -) - -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 - drivers/OpenGL/Fl_OpenGL_Graphics_Driver_arci.cxx - drivers/OpenGL/Fl_OpenGL_Graphics_Driver_color.cxx - drivers/OpenGL/Fl_OpenGL_Graphics_Driver_font.cxx - drivers/OpenGL/Fl_OpenGL_Graphics_Driver_line_style.cxx - drivers/OpenGL/Fl_OpenGL_Graphics_Driver_rect.cxx - drivers/OpenGL/Fl_OpenGL_Graphics_Driver_vertex.cxx -) -if(FLTK_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(FLTK_USE_WAYLAND) - -set(GL_DRIVER_HEADER_FILES ${GL_DRIVER_FILES} - drivers/OpenGL/Fl_OpenGL_Display_Device.H - drivers/OpenGL/Fl_OpenGL_Graphics_Driver.H -) - -source_group("Driver Header Files" FILES ${GL_DRIVER_HEADER_FILES}) -source_group("Driver Source Files" FILES ${GL_DRIVER_FILES}) - -set(GLCPPFILES - ${GLCPPFILES} - ${GL_DRIVER_FILES} -) - -set(IMGCPPFILES - fl_images_core.cxx - fl_write_png.cxx - Fl_BMP_Image.cxx - Fl_File_Icon2.cxx - Fl_GIF_Image.cxx - Fl_Anim_GIF_Image.cxx - Fl_Help_Dialog.cxx - Fl_ICO_Image.cxx - Fl_JPEG_Image.cxx - Fl_PNG_Image.cxx - Fl_PNM_Image.cxx - Fl_Image_Reader.cxx - Fl_SVG_Image.cxx - nanosvg.cxx - drivers/SVG/Fl_SVG_File_Surface.cxx -) - -set(CFILES - flstring.c - numericsort.c - vsnprintf.c - xutf8/is_right2left.c - xutf8/is_spacing.c - xutf8/case.c -) - -if(FLTK_USE_X11) - list(APPEND CFILES - xutf8/keysym2Ucs.c - scandir_posix.c - ) - if(NOT USE_XFT) - list(APPEND CFILES - xutf8/utf8Utils.c - xutf8/utf8Input.c - ) - if(NOT APPLE) - list(APPEND CFILES xutf8/utf8Wrap.c) - endif(NOT APPLE) - endif(NOT USE_XFT) -endif(FLTK_USE_X11) - -if(FLTK_USE_WAYLAND) - set(IDIRS "${CMAKE_CURRENT_BINARY_DIR}") - set(CDEFS "_GNU_SOURCE;HAVE_MKOSTEMP") - if(${CMAKE_HOST_SYSTEM_NAME} STREQUAL "Linux" OR ${CMAKE_HOST_SYSTEM_NAME} STREQUAL "FreeBSD") - set(CDEFS "${CDEFS};HAVE_MEMFD_CREATE;HAVE_POSIX_FALLOCATE") - endif() - set(COPTS "-fPIC") - if(FLTK_USE_DBUS) - pkg_check_modules(DBUS IMPORTED_TARGET dbus-1) - if(DBUS_FOUND) - set(CDEFS "${CDEFS};HAS_DBUS") - set(IDIRS "${IDIRS};${DBUS_INCLUDE_DIRS}") - endif(DBUS_FOUND) - endif(FLTK_USE_DBUS) - 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( - ${FLTK_SOURCE_DIR}/libdecor/build/fl_libdecor-plugins.c - ${FLTK_SOURCE_DIR}/libdecor/src/os-compatibility.c - ${FLTK_SOURCE_DIR}/libdecor/src/desktop-settings.c - PROPERTIES COMPILE_DEFINITIONS "${CDEFS}" - INCLUDE_DIRECTORIES "${IDIRS}" - COMPILE_OPTIONS "${COPTS}" - ) - else() - 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 FLTK_USE_LIBDECOR_GTK) - set(CDEFS "${CDEFS};HAVE_GTK") - endif(GTK_FOUND AND FLTK_USE_LIBDECOR_GTK) - set_source_files_properties( - ${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/desktop-settings.c - PROPERTIES - COMPILE_DEFINITIONS "${CDEFS}" - INCLUDE_DIRECTORIES "${IDIRS}" - COMPILE_OPTIONS "${COPTS}" - ) - endif(USE_SYSTEM_LIBDECOR) - set_source_files_properties( - ${FLTK_SOURCE_DIR}/src/drivers/Wayland/Fl_Wayland_Window_Driver.cxx - ${FLTK_SOURCE_DIR}/src/drivers/Wayland/Fl_Wayland_Screen_Driver.cxx - PROPERTIES COMPILE_DEFINITIONS "USE_SYSTEM_LIBDECOR=${USE_SYSTEM_LIBDECOR}" - ) - - list(APPEND CFILES - scandir_posix.c - ../libdecor/src/desktop-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 - ) - endif(NOT USE_SYSTEM_LIBDECOR) -endif(FLTK_USE_WAYLAND) - -if(WIN32) - list(APPEND CFILES - scandir_win32.c - ) -endif(WIN32) - -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 - ) - if(FLTK_HAVE_PEN_SUPPORT) - list(APPEND MMFILES - drivers/Cocoa/Fl_Cocoa_Pen_Events.mm - ) - endif() - source_group("ObjC Source Files" FILES ${MMFILES}) -else() - 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} ${PRIVATE_HEADER_FILES} ${DRIVER_HEADER_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() - -####################################################################### -# -# Prepare optional libs for shared and static FLTK libraries. -# -# Notes: -# - 'OPTIONAL_LIBS' is a CMake 'list' but must not contain arbitrary -# CMake targets because these targets would be propagated to -# consumer projects. The macro below simplifies adding link -# libraries of such targets to 'OPTIONAL_LIBS'. -# - 'OPTIONAL_INCLUDES' is a similar CMake list that defines additional -# include directories. -# -# This macro appends link libraries to 'OPTIONAL_LIBS' and include -# directories to 'OPTIONAL_INCLUDES'. -# -# Input: -# 'targets' may be a CMake list of targets or a single target. -# It must be quoted if multiple targets are to be added in -# one call (see examples below). -# -####################################################################### - -set(OPTIONAL_LIBS) -set(OPTIONAL_INCLUDES) - -macro(append_optional_libs targets) - foreach(_target ${targets}) - get_target_property(_link_libraries ${_target} INTERFACE_LINK_LIBRARIES) - if(_link_libraries) - list(APPEND OPTIONAL_LIBS ${_link_libraries}) - endif() - get_target_property(_include_dirs ${_target} INTERFACE_INCLUDE_DIRECTORIES) - if(_include_dirs) - list(APPEND OPTIONAL_INCLUDES ${_include_dirs}) - endif() - endforeach() - unset(_target) - unset(_link_libraries) - unset(_include_dirs) -endmacro() - -# Add the required properties for ${OPTIONAL_LIBS} to the given target. -# Note: we must use 'PUBLIC', see GitHub Issue #1173 - -macro(add_optional_libs target) - target_link_libraries (${target} PUBLIC ${OPTIONAL_LIBS}) - target_include_directories(${target} PUBLIC ${OPTIONAL_INCLUDES}) -endmacro() - -# Build the list of optional libs - -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(FLTK_USE_X11) - list(APPEND OPTIONAL_LIBS ${X11_LIBRARIES}) - list(APPEND OPTIONAL_INCLUDES ${X11_INCLUDE_DIR}) -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(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_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(USE_PANGO) - list(APPEND OPTIONAL_LIBS ${HAVE_LIB_PANGO}) - append_optional_libs(PkgConfig::PANGOCAIRO) - list(APPEND OPTIONAL_LIBS ${HAVE_LIB_GOBJECT}) - if(USE_PANGOXFT) - append_optional_libs(PkgConfig::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_USE_WAYLAND) - pkg_get_variable(PROTOCOLS wayland-protocols pkgdatadir) - # replace "//" with "/" - 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 ${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 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 ${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 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 ${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") - - 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 ${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(HAVE_XDG_DIALOG) - set(INFILE ${PROTOCOLS}/staging/xdg-dialog/xdg-dialog-v1.xml) - add_custom_command( - OUTPUT xdg-dialog-protocol.c xdg-dialog-client-protocol.h - COMMAND wayland-scanner private-code ${INFILE} xdg-dialog-protocol.c - COMMAND wayland-scanner client-header ${INFILE} xdg-dialog-client-protocol.h - DEPENDS ${INFILE} - VERBATIM - ) - list(APPEND STATIC_FILES "xdg-dialog-protocol.c") - list(APPEND SHARED_FILES "xdg-dialog-protocol.c") - endif() - - if(HAVE_CURSOR_SHAPE) - set(INFILE ${PROTOCOLS}/staging/cursor-shape/cursor-shape-v1.xml) - add_custom_command( - OUTPUT cursor-shape-protocol.c cursor-shape-client-protocol.h - COMMAND wayland-scanner private-code ${INFILE} cursor-shape-protocol.c - COMMAND wayland-scanner client-header ${INFILE} cursor-shape-client-protocol.h - DEPENDS ${INFILE} - VERBATIM - ) - list(APPEND STATIC_FILES "cursor-shape-protocol.c") - list(APPEND SHARED_FILES "cursor-shape-protocol.c") -# File cursor-shape-protocol.c requires memory data allocated by the "Tablet" protocol -# but that protocol's header file is not necessary for the "cursor shape" protocol itself. - set(INFILE ${PROTOCOLS}/stable/tablet/tablet-v2.xml) - add_custom_command( - OUTPUT tablet-protocol.c # tablet-client-protocol.h - COMMAND wayland-scanner private-code ${INFILE} tablet-protocol.c -# COMMAND wayland-scanner client-header ${INFILE} tablet-client-protocol.h - DEPENDS ${INFILE} - VERBATIM - ) - list(APPEND STATIC_FILES "tablet-protocol.c") - list(APPEND SHARED_FILES "tablet-protocol.c") - endif() - - if(STOP_REQUIRED) - message(FATAL_ERROR "*** Terminating: one or more required file(s) were not found. ***") - endif() - - if(FLTK_USE_GL) - append_optional_libs("PkgConfig::WLD_EGL;PkgConfig::PKG_EGL") - endif(FLTK_USE_GL) - - if(USE_SYSTEM_LIBDECOR) - append_optional_libs(PkgConfig::SYSTEM_LIBDECOR) - elseif(GTK_FOUND AND FLTK_USE_LIBDECOR_GTK) - append_optional_libs(PkgConfig::GTK) - endif() - - append_optional_libs("PkgConfig::WLDCURSOR;PkgConfig::WLDCLIENT;PkgConfig::XKBCOMMON") - - if(FLTK_USE_DBUS AND DBUS_FOUND) - append_optional_libs(PkgConfig::DBUS) - endif() - -endif(UNIX AND FLTK_USE_WAYLAND) - -list(REMOVE_DUPLICATES OPTIONAL_LIBS) -list(REMOVE_DUPLICATES OPTIONAL_INCLUDES) - -####################################################################### - -fl_add_library(fltk STATIC "${STATIC_FILES}") -add_optional_libs(fltk) - -####################################################################### - -if(FLTK_BUILD_FORMS) - fl_add_library(fltk_forms STATIC "${FORMS_FILES}") - target_link_libraries(fltk_forms PUBLIC fltk::fltk) -endif() - -####################################################################### - -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() - -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_BUNDLED_JPEG) - target_include_directories(fltk_images PUBLIC - $<BUILD_INTERFACE:${FLTK_SOURCE_DIR}/jpeg> - $<INSTALL_INTERFACE:include/FL/images>) -endif() - -if(FLTK_USE_BUNDLED_PNG) - target_include_directories(fltk_images PUBLIC - $<BUILD_INTERFACE:${FLTK_SOURCE_DIR}/png> - $<INSTALL_INTERFACE:include/FL/images>) -endif() - -if(FLTK_USE_BUNDLED_ZLIB) - target_include_directories(fltk_images PUBLIC - $<BUILD_INTERFACE:${FLTK_SOURCE_DIR}/zlib> - $<INSTALL_INTERFACE:include/FL/images>) -endif() - -####################################################################### - -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) - target_include_directories(fltk_gl PUBLIC ${OPENGL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIRS}) - - # Add "optional libs" (FIXME: this can be optimized, we don't need *all* these libs here) - add_optional_libs(fltk_gl) - - if(FLTK_OPENGL_GLU_INCLUDE_DIR) - target_include_directories(fltk_gl PUBLIC ${FLTK_OPENGL_GLU_INCLUDE_DIR}) - endif() -endif(FLTK_USE_GL) - -####################################################################### -# Build shared libraries (optional) -####################################################################### -# Shared libraries, part 1: everything except Visual Studio (MSVC) -####################################################################### - -if(FLTK_BUILD_SHARED_LIBS AND NOT MSVC) - - fl_add_library(fltk SHARED "${SHARED_FILES}") - add_optional_libs(fltk-shared) - - ################################################################### - - 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 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_BUNDLED_JPEG) - 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 PUBLIC ${JPEG_LIBRARIES}) - endif() - - if(FLTK_USE_BUNDLED_PNG) - target_link_libraries(fltk_images-shared PUBLIC fltk::png-shared) - else() - target_link_libraries(fltk_images-shared PUBLIC ${PNG_LIBRARIES}) - endif() - - ################################################################### - - 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) - target_include_directories(fltk_gl-shared PUBLIC ${OPENGL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIRS}) - - # Add "optional libs" (FIXME: this can be optimized, we don't need *all* these libs here) - add_optional_libs(fltk_gl-shared) - - if(FLTK_OPENGL_GLU_INCLUDE_DIR) - target_include_directories(fltk_gl-shared PUBLIC ${FLTK_OPENGL_GLU_INCLUDE_DIR}) - endif() - endif(FLTK_USE_GL) - -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. -# 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(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) - - fl_add_library(fltk SHARED "${SOURCES}") - add_optional_libs(fltk-shared) - - if(FLTK_USE_BUNDLED_JPEG) - target_link_libraries(fltk-shared PUBLIC fltk::jpeg-shared) - else() - target_link_libraries(fltk-shared PUBLIC ${FLTK_JPEG_LIBRARIES}) - endif() - - if(FLTK_USE_BUNDLED_PNG) - target_link_libraries(fltk-shared PUBLIC fltk::png-shared) - else() - target_link_libraries(fltk-shared PUBLIC ${FLTK_PNG_LIBRARIES}) - endif() - - if(OPENGL_FOUND) - target_link_libraries(fltk-shared PUBLIC ${OPENGL_LIBRARIES}) - target_include_directories(fltk-shared PUBLIC ${OPENGL_INCLUDE_DIR} ${OPENGL_INCLUDE_DIRS}) - if(FLTK_OPENGL_GLU_INCLUDE_DIR) - target_include_directories(fltk-shared PUBLIC ${FLTK_OPENGL_GLU_INCLUDE_DIR}) - endif() - endif(OPENGL_FOUND) - -endif(FLTK_BUILD_SHARED_LIBS AND MSVC) - -####################################################################### - -set(FLTK_LIBRARIES ${FLTK_LIBRARIES} PARENT_SCOPE) -set(FLTK_LIBRARIES_SHARED ${FLTK_LIBRARIES_SHARED} PARENT_SCOPE) |
