summaryrefslogtreecommitdiff
path: root/CMake/fl_create_example.cmake
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 /CMake/fl_create_example.cmake
parent75fc94d6c71fe686f6dde5b41ad91cba2f6bdd6f (diff)
wip: fork
Diffstat (limited to 'CMake/fl_create_example.cmake')
-rw-r--r--CMake/fl_create_example.cmake173
1 files changed, 0 insertions, 173 deletions
diff --git a/CMake/fl_create_example.cmake b/CMake/fl_create_example.cmake
deleted file mode 100644
index 571e33b43..000000000
--- a/CMake/fl_create_example.cmake
+++ /dev/null
@@ -1,173 +0,0 @@
-#
-# A function used by the CMake build system for the Fast Light Tool Kit (FLTK).
-# Originally written by Michael Surette
-#
-# 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
-#
-
-################################################################################
-#
-# function fl_create_example - Create a test/demo (example) program
-#
-# Input:
-#
-# - NAME: program name, e.g. 'hello'
-#
-# - SOURCES: list of source files, separated by ';' (needs quotes)
-# Sources can be:
-# - .c/.cxx files, e.g. 'hello.cxx'
-# - .fl (fluid) files, e.g. 'radio.fl'
-# - .plist file(macOS), e.g. 'editor.plist'
-# - .icns file(macOS Icon), e.g. 'checkers.icns'
-# - .rc file(Windows resource file, e.g. icon definition)
-#
-# Order of sources doesn't matter, multiple .cxx and .fl files are
-# supported, but only one .plist and one .icns file.
-#
-# File name (type), e.g. '.icns' matters, it is parsed internally:
-# File types .fl, .plist, and .icns are treated specifically,
-# all other file types are added to the target's source files.
-#
-# macOS specific .icns and .plist files are ignored on other platforms.
-# These files must reside in the subdirectory 'mac-resources'.
-#
-# - LIBRARIES:
-# List of libraries (CMake target names), separated by ';'. Must be
-# quoted if more than one library is required, e.g. "fltk::gl;fltk::images"
-#
-################################################################################
-
-function(fl_create_example NAME SOURCES LIBRARIES)
-
- set(srcs) # source files
- set(flsrcs) # fluid source (.fl) files
- set(TARGET_NAME ${NAME}) # CMake target name
- set(ICON_NAME) # macOS icon (max. one)
- set(PLIST) # macOS .plist file(max. one)
- set(ICON_PATH) # macOS icon resource path
-
- # create macOS bundle? 0 = no, 1 = yes
-
- if(APPLE AND NOT FLTK_BACKEND_X11)
- set(MAC_BUNDLE 1)
- else()
- set(MAC_BUNDLE 0)
- endif()
-
- # filter input files for different handling (fluid, icon, plist, source)
-
- foreach(src ${SOURCES})
- if("${src}" MATCHES "\\.fl$")
- list(APPEND flsrcs ${src})
- elseif("${src}" MATCHES "\\.icns$")
- set(ICON_NAME "${src}")
- elseif("${src}" MATCHES "\\.plist$")
- set(PLIST "${src}")
- else()
- list(APPEND srcs ${src})
- endif("${src}" MATCHES "\\.fl$")
- endforeach(src)
-
- # generate source files from .fl files, add output to sources
-
- if(flsrcs)
- if(NOT FLTK_FLUID_EXECUTABLE)
- message(STATUS "Example app \"${NAME}\" will not be built. FLUID executable not found.")
- return ()
- endif()
- FLTK_RUN_FLUID (FLUID_SOURCES "${flsrcs}")
- list(APPEND srcs ${FLUID_SOURCES})
- unset(FLUID_SOURCES)
- endif(flsrcs)
-
- # set macOS (icon) resource path if applicable
-
- if(MAC_BUNDLE AND ICON_NAME)
- set(ICON_PATH "${CMAKE_CURRENT_SOURCE_DIR}/mac-resources/${ICON_NAME}")
- endif(MAC_BUNDLE AND ICON_NAME)
-
- ##############################################################################
- # add executable target and set properties (all platforms)
- ##############################################################################
-
- if(MAC_BUNDLE)
- add_executable (${TARGET_NAME} MACOSX_BUNDLE ${srcs} ${ICON_PATH})
- else()
- add_executable (${TARGET_NAME} WIN32 ${srcs})
- endif(MAC_BUNDLE)
-
- set_target_properties (${TARGET_NAME} PROPERTIES OUTPUT_NAME ${NAME})
- target_link_libraries (${TARGET_NAME} PRIVATE ${LIBRARIES})
-
- # make sure we're "exporting" global symbols like 'fl_disable_wayland',
- # see also README.Wayland.txt and CMake policy CMP0065.
-
- set_target_properties (${TARGET_NAME} PROPERTIES ENABLE_EXPORTS TRUE)
-
-
- # Search the current binary directory for header files created by CMake
- # or fluid and the source folder for other headers included by test programs
-
- target_include_directories(${TARGET_NAME} PRIVATE
- ${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}
- )
-
- if(MAC_BUNDLE)
- if(PLIST)
- set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST
- "${CMAKE_CURRENT_SOURCE_DIR}/mac-resources/${PLIST}")
- endif()
-
- string(REPLACE "_" "-" FLTK_BUNDLE_ID "org.fltk.${TARGET_NAME}")
- set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "${TARGET_NAME}")
- set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER "${FLTK_BUNDLE_ID}")
- set_target_properties(${TARGET_NAME} PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER "${FLTK_BUNDLE_ID}")
-
- if(ICON_NAME)
- set_target_properties(${TARGET_NAME} PROPERTIES MACOSX_BUNDLE_ICON_FILE ${ICON_NAME})
- set_target_properties(${TARGET_NAME} PROPERTIES RESOURCE ${ICON_PATH})
- endif()
- endif()
-
- ##############################################################################
- # Copy macOS "bundle wrapper" (shell script) to target directory.
- # The "custom command" will be executed "POST_BUILD".
- ##############################################################################
-
- if(MAC_BUNDLE)
- set(WRAPPER "${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${TARGET_NAME}")
-
- add_custom_command(
- TARGET ${TARGET_NAME} POST_BUILD
- COMMAND cp ${FLTK_SOURCE_DIR}/CMake/macOS-bundle-wrapper.in ${WRAPPER}
- COMMAND chmod u+x,g+x,o+x ${WRAPPER}
- BYPRODUCTS ${WRAPPER}
- # COMMENT "Creating macOS bundle wrapper script ${WRAPPER}"
- VERBATIM
- )
- unset(WRAPPER)
- endif(MAC_BUNDLE)
-
- ##############################################################################
- # MSVC: Add fltk-shared (DLL) path to Environment 'PATH' for debugging
- ##############################################################################
-
- if(MSVC AND TARGET fltk-shared)
- set(DllDir "$<SHELL_PATH:$<TARGET_FILE_DIR:fltk-shared>>")
- set_target_properties(${TARGET_NAME} PROPERTIES
- VS_DEBUGGER_ENVIRONMENT "PATH=${DllDir};$ENV{PATH}"
- )
- endif()
-
-endfunction()