summaryrefslogtreecommitdiff
path: root/fluid/CMakeLists.txt
diff options
context:
space:
mode:
authormaxim nikonov <maxim.nikonov@hqo.co>2026-02-05 15:21:34 +0500
committermaxim nikonov <maxim.nikonov@hqo.co>2026-02-05 15:21:34 +0500
commitdb214d1145e46d527a46d1fc2519548d2c4d23f1 (patch)
treecf0fd9922e4d54f6beb63888f9b28c8e2a787bdf /fluid/CMakeLists.txt
parent75fc94d6c71fe686f6dde5b41ad91cba2f6bdd6f (diff)
wip: fork
Diffstat (limited to 'fluid/CMakeLists.txt')
-rw-r--r--fluid/CMakeLists.txt306
1 files changed, 0 insertions, 306 deletions
diff --git a/fluid/CMakeLists.txt b/fluid/CMakeLists.txt
deleted file mode 100644
index 9eeec492b..000000000
--- a/fluid/CMakeLists.txt
+++ /dev/null
@@ -1,306 +0,0 @@
-#
-# CMakeLists.txt to build fluid for the FLTK project using CMake (www.cmake.org)
-#
-# Copyright 1998-2025 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
-#
-
-# Targets that will be built: fluid and fluid-cmd (Windows)
-
-# Targets that will be built: fluid, fluid-shared, and fluid-cmd (Windows only)
-set(TARGETS "")
-
-# Defaults to be used and potentially modified later
-
-set(BACKEND_APPLE FALSE) # FIXME: should be global, e.g. FLTK_BACKEND_APPLE
-set(ICON_NAME "")
-set(ICON_PATH "")
-set(SUFFIX "UNIX") # suffix for platform specific source files
-
-# platform specific settings
-
-if(APPLE AND NOT FLTK_BACKEND_X11) # macOS "native"
- set(BACKEND_APPLE TRUE)
- set(ICON_NAME fluid.icns)
- set(ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/icons/${ICON_NAME}")
-elseif(WIN32)
- set(SUFFIX "WIN32")
-endif()
-
-# This macro is used to avoid duplicate code to create executable programs.
-# This must be a macro because it changes at least one global variable: TARGETS.
-# This macro also uses some (local) variables defined above.
-# In the future this might be converted to a function to avoid side effects.
-
-macro(make_target TARGET GUI SOURCES LIBS EXPORT_NAME)
-
- if(ICON_PATH)
- list(APPEND SOURCES ${ICON_PATH}) # macOS only
- endif()
-
- # message(STATUS "[fluid] make_target ${TARGET} ${GUI} ${SOURCES} ${LIBS} ${EXPORT_NAME}")
-
- # Options WIN32 and MACOSX_BUNDLE build a Windows GUI program or macOS bundle,
- # respectively. Both options are ignored on other platforms.
-
- if(${GUI})
- add_executable(${TARGET} WIN32 MACOSX_BUNDLE ${SOURCES})
- else()
- add_executable(${TARGET} ${SOURCES})
- endif(${GUI})
-
- list(APPEND TARGETS ${TARGET})
-
- if(BACKEND_APPLE)
-
- # set bundle properties
- set_target_properties(${TARGET} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/${TARGET}.plist")
- set_target_properties(${TARGET} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
- set_target_properties(${TARGET} PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "org.fltk.${TARGET}")
-
- # install command line tool
- install(PROGRAMS $<TARGET_FILE:${TARGET}>
- DESTINATION ${FLTK_BINDIR})
-
- # create macOS bundle wrapper script
-
- set(WRAPPER "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${TARGET}")
- add_custom_command(
- TARGET ${TARGET} POST_BUILD
- COMMAND cp ${FLTK_SOURCE_DIR}/CMake/macOS-bundle-wrapper.in ${WRAPPER}
- COMMAND chmod u+x,g+x,o+x ${WRAPPER}
- BYPRODUCTS ${WRAPPER}
- VERBATIM
- )
- unset(WRAPPER)
-
- endif(BACKEND_APPLE)
-
- target_link_libraries(${TARGET} PRIVATE ${LIBS})
- set_target_properties(${TARGET} PROPERTIES EXPORT_NAME ${EXPORT_NAME})
-
-endmacro(make_target TARGET GUI SOURCES LIBS EXPORT_NAME)
-
-
-# Main source and header files used for the executable because macOS (Xcode)
-# needs at least one source file (main.cxx) to link the main program properly
-
-set(MAIN_FILES main.cxx main.h)
-
-# Source files for 'fluid-lib': all source files except ${MAIN_FILES}
-
-set(CPPFILES
- Fluid.cxx
- Project.cxx
- app/args.cxx
- app/Snap_Action.cxx
- app/Image_Asset.cxx
- app/history.cxx
- app/Menu.cxx
- app/shell_command.cxx
- app/templates.cxx
- io/Code_Writer.cxx
- io/Project_Writer.cxx
- io/Project_Reader.cxx
- io/String_Writer.cxx
- nodes/Tree.cxx
- nodes/Button_Node.cxx
- nodes/Function_Node.cxx
- nodes/Grid_Node.cxx
- nodes/Group_Node.cxx
- nodes/Menu_Node.cxx
- nodes/Node.cxx
- nodes/Widget_Node.cxx
- nodes/Window_Node.cxx
- nodes/callbacks.cxx
- nodes/factory.cxx
- panels/about_panel.cxx
- panels/codeview_panel.cxx
- panels/function_panel.cxx
- panels/settings_panel.cxx
- panels/template_panel.cxx
- panels/widget_panel.cxx
- panels/widget_panel/Grid_Tab.cxx
- panels/widget_panel/Grid_Child_Tab.cxx
- proj/align_widget.cxx
- proj/i18n.cxx
- proj/mergeback.cxx
- proj/undo.cxx
- rsrcs/pixmaps.cxx
- tools/ExternalCodeEditor_${SUFFIX}.cxx
- tools/autodoc.cxx
- tools/filename.cxx
- widgets/App_Menu_Bar.cxx
- widgets/Code_Editor.cxx
- widgets/Code_Viewer.cxx
- widgets/Text_Viewer.cxx
- widgets/Formula_Input.cxx
- widgets/Bin_Button.cxx
- widgets/Style_Parser.cxx
- widgets/Node_Browser.cxx
-)
-
-# List header files in Apple's Xcode IDE
-
-set(HEADERFILES
- Fluid.h
- Project.h
- app/args.h
- app/Snap_Action.h
- app/Image_Asset.h
- app/history.h
- app/Menu.h
- app/shell_command.h
- app/templates.h
- io/Code_Writer.h
- io/Project_Writer.h
- io/Project_Reader.h
- io/String_Writer.h
- nodes/Tree.h
- nodes/Button_Node.h
- nodes/Function_Node.h
- nodes/Grid_Node.h
- nodes/Group_Node.h
- nodes/Menu_Node.h
- nodes/Node.h
- nodes/Widget_Node.h
- nodes/Window_Node.h
- nodes/callbacks.h
- nodes/factory.h
- panels/about_panel.h
- panels/codeview_panel.h
- panels/function_panel.h
- panels/settings_panel.h
- panels/template_panel.h
- panels/widget_panel.h
- panels/widget_panel/Grid_Tab.h
- panels/widget_panel/Grid_Child_Tab.h
- proj/align_widget.h
- proj/mergeback.h
- proj/i18n.h
- proj/undo.h
- rsrcs/comments.h
- rsrcs/pixmaps.h
- tools/ExternalCodeEditor_${SUFFIX}.h
- tools/autodoc.h
- tools/filename.h
- widgets/App_Menu_Bar.h
- widgets/Code_Editor.h
- widgets/Code_Viewer.h
- widgets/Text_Viewer.h
- widgets/Formula_Input.h
- widgets/Bin_Button.h
- widgets/Style_Parser.h
- widgets/Node_Browser.h
-)
-
-source_group(
- TREE
- ${CMAKE_CURRENT_SOURCE_DIR}
- FILES
- ${CPPFILES}
- ${HEADERFILES}
- ${MAIN_FILES}
- CMakeLists.txt
-)
-
-# Build a local object library to avoid compiling all source files
-# multiple times for all fluid targets on Windows (fluid + fluid-cmd).
-
-add_library(fluid-lib OBJECT EXCLUDE_FROM_ALL)
-target_sources(fluid-lib PRIVATE ${CPPFILES} ${HEADERFILES})
-target_include_directories(fluid-lib PUBLIC .)
-target_link_libraries(fluid-lib PUBLIC fltk::images)
-
-# Build targets
-
-make_target(fluid TRUE "${MAIN_FILES}" fluid-lib fluid)
-
-# Build the console app on Windows
-# This is done for all Windows targets, even if cross-compiling.
-
-if(WIN32)
- make_target(fluid-cmd FALSE "${MAIN_FILES}" fluid-lib fluid-cmd)
- set(FLTK_FLUID_EXECUTABLE fltk::fluid-cmd)
-else()
- set(FLTK_FLUID_EXECUTABLE fltk::fluid)
-endif()
-
-# Add the "shared" executable (linked against the shared FLTK libs).
-# Note 1: only the GUI version is built as "shared" executable.
-# Note 2: For MSVC we need the special object library 'call_main'.
-
-if(FLTK_BUILD_SHARED_LIBS)
-
- add_library(fluid-lib-shared OBJECT EXCLUDE_FROM_ALL)
- target_sources(fluid-lib-shared PRIVATE ${CPPFILES} ${HEADERFILES})
- target_include_directories(fluid-lib-shared PUBLIC .)
- if(MSVC)
- target_link_libraries(fluid-lib-shared PUBLIC fltk::fltk-shared)
- else()
- target_link_libraries(fluid-lib-shared PUBLIC fltk::images-shared)
- endif(MSVC)
-
- if(MSVC)
- make_target(fluid-shared TRUE "${MAIN_FILES}" "fluid-lib-shared;call_main" fluid-shared)
- else()
- make_target(fluid-shared TRUE "${MAIN_FILES}" fluid-lib-shared fluid-shared)
- endif()
-
- # experimental
- # if(NOT WIN32)
- # set(FLTK_FLUID_EXECUTABLE fltk::fluid-shared)
- # message(STATUS "** experimental ** FLTK_FLUID_EXECUTABLE = ${FLTK_FLUID_EXECUTABLE}")
- # endif()
-
-endif(FLTK_BUILD_SHARED_LIBS)
-
-# export the variable FLTK_FLUID_EXECUTABLE to the parent scope
-
-set(FLTK_FLUID_EXECUTABLE "${FLTK_FLUID_EXECUTABLE}" PARENT_SCOPE)
-
-# Create aliases for all targets
-
-foreach(tgt ${TARGETS})
- add_executable(fltk::${tgt} ALIAS ${tgt})
-endforeach()
-
-# Install the GUI and (on Windows only) the commandline tool 'fluid-cmd'
-# message(STATUS "Fluid: INSTALL TARGETS: ${TARGETS}")
-
-install(TARGETS ${TARGETS}
- EXPORT FLTK-Targets
- RUNTIME DESTINATION ${FLTK_BINDIR}
- LIBRARY DESTINATION ${FLTK_LIBDIR}
- ARCHIVE DESTINATION ${FLTK_LIBDIR}
- BUNDLE DESTINATION ${FLTK_BINDIR} # macOS: bundles
-)
-
-# Install desktop files
-
-if(UNIX)
- install(FILES fluid.desktop
- DESTINATION ${FLTK_DATADIR}/applications
- )
- # Install mime-type file(x-fluid.desktop method is deprecated)
- install(FILES fluid.xml
- DESTINATION ${FLTK_DATADIR}/mime/packages
- )
-
- # Install desktop icons
- foreach(icon 32 48 64 128)
- install(FILES icons/fluid-${icon}.png
- DESTINATION ${FLTK_DATADIR}/icons/hicolor/${icon}x${icon}/apps
- RENAME fluid.png
- )
- endforeach()
-endif(UNIX)