summaryrefslogtreecommitdiff
path: root/CMake/export.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'CMake/export.cmake')
-rw-r--r--CMake/export.cmake138
1 files changed, 81 insertions, 57 deletions
diff --git a/CMake/export.cmake b/CMake/export.cmake
index 63502a4d9..a466e37ae 100644
--- a/CMake/export.cmake
+++ b/CMake/export.cmake
@@ -1,8 +1,9 @@
#
# Export CMake file to build the FLTK project using CMake (www.cmake.org)
+#
# Originally written by Michael Surette
#
-# Copyright 1998-2022 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
@@ -21,42 +22,65 @@
# Set the fluid executable path used to create .cxx/.h from .fl files
-if (FLTK_BUILD_FLUID AND NOT CMAKE_CROSSCOMPILING)
- # use the fluid executable we build
- if (WIN32)
- set (FLTK_FLUID_EXECUTABLE fluid-cmd)
- set (FLUID_EXPORT fluid fluid-cmd) # export fluid and fluid-cmd
- else ()
- set (FLTK_FLUID_EXECUTABLE fluid)
- set (FLUID_EXPORT fluid) # export fluid
- endif ()
-else ()
- # find a fluid executable on the host system
- find_file(FLUID_PATH
+if(FLTK_BUILD_FLUID AND NOT CMAKE_CROSSCOMPILING)
+ # Use the fluid executable we build using its namespaced target name
+ if(WIN32)
+ set(FLTK_FLUID_EXECUTABLE fltk::fluid-cmd)
+ set(FLUID_EXPORT fluid fluid-cmd) # export fluid and fluid-cmd
+ else()
+ set(FLTK_FLUID_EXECUTABLE fltk::fluid)
+ set(FLUID_EXPORT fluid) # export fluid
+ endif()
+else()
+ # We don't build fluid /or/ we are cross-compiling (or both):
+ # we need to find a fluid executable on the build host.
+ # The search is restricted to the user's PATH (environment).
+ find_program(FLTK_FLUID_HOST
NAMES fluid fluid.exe
PATHS ENV PATH
+ NO_DEFAULT_PATH
NO_CMAKE_FIND_ROOT_PATH
)
- set (FLTK_FLUID_EXECUTABLE ${FLUID_PATH})
- set (FLUID_EXPORT "") # don't export fluid
-endif (FLTK_BUILD_FLUID AND NOT CMAKE_CROSSCOMPILING)
+ if(NOT FLTK_FLUID_HOST)
+ message(STATUS "Warning: fluid not found on the build system!")
+ endif()
+ # Note: this *may* assign "FLTK_FLUID_HOST-NOTFOUND"
+ set(FLTK_FLUID_EXECUTABLE "${FLTK_FLUID_HOST}")
+ set(FLUID_EXPORT "") # don't export fluid
+endif(FLTK_BUILD_FLUID AND NOT CMAKE_CROSSCOMPILING)
+
+if(0) # Debug
+ message(STATUS "##############################################################")
+ message(STATUS "[export.cmake] INFO: Did we find fluid?")
+ fl_debug_var(FLTK_FLUID_HOST)
+ fl_debug_var(FLTK_FLUID_EXECUTABLE)
+ fl_debug_var(FLTK_BUILD_FLUID)
+ fl_debug_var(CMAKE_CROSSCOMPILING)
+ message(STATUS "##############################################################")
+endif()
# generate FLTK-Targets.cmake for build directory use
-export (TARGETS ${FLUID_EXPORT} ${FLTK_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/FLTK-Targets.cmake)
+export(TARGETS
+ ${FLUID_EXPORT} ${FLTK_LIBRARIES}
+ FILE
+ ${CMAKE_CURRENT_BINARY_DIR}/FLTK-Targets.cmake
+ NAMESPACE
+ fltk::)
# generate FLTK-Functions.cmake for build directory use
-configure_file (
+configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTK-Functions.cmake
${CMAKE_CURRENT_BINARY_DIR}/FLTK-Functions.cmake
COPYONLY
)
# generate FLTKConfig.cmake for build directory use
-set (INCLUDE_DIRS "${FLTK_INCLUDE_DIRS}")
-if (FLTK_HAVE_CAIRO)
- list (APPEND INCLUDE_DIRS ${PKG_CAIRO_INCLUDE_DIRS})
-endif ()
-set (CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR})
+set(INCLUDE_DIRS "${FLTK_INCLUDE_DIRS}")
+if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO)
+ list(APPEND INCLUDE_DIRS ${PKG_CAIRO_INCLUDE_DIRS})
+endif()
+list(REMOVE_DUPLICATES INCLUDE_DIRS)
+set(CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR})
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
@@ -65,14 +89,14 @@ configure_file(
)
# generate fltk-config for build directory use
-set (prefix ${CMAKE_CURRENT_BINARY_DIR})
-set (exec_prefix "\${prefix}")
-set (includedir "${CMAKE_CURRENT_SOURCE_DIR}")
-set (BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
-set (libdir "\${exec_prefix}/lib")
-set (srcdir ".")
+set(prefix ${CMAKE_CURRENT_BINARY_DIR})
+set(exec_prefix "\${prefix}")
+set(includedir "${CMAKE_CURRENT_SOURCE_DIR}")
+set(BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
+set(libdir "\${exec_prefix}/lib")
+set(srcdir ".")
-set (LIBNAME "${libdir}/libfltk.a")
+set(LIBNAME "${libdir}/libfltk.a")
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
@@ -80,38 +104,38 @@ configure_file(
@ONLY
)
-# Set execute permissions on fltk-config in build dir
-# Note: file(CHMOD) available since CMake 3.19,
+# Set execute permissions on fltk-config in the build directory.
+# Note: file(CHMOD) is available since CMake 3.19,
# use fallback before CMake 3.19
-if (CMAKE_VERSION VERSION_LESS 3.19)
- if (UNIX OR MSYS OR MINGW)
+if(CMAKE_VERSION VERSION_LESS 3.19)
+ if(UNIX OR MSYS OR MINGW)
execute_process(COMMAND chmod 755 fltk-config
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
- endif ()
-else (CMAKE_VERSION VERSION_LESS 3.19)
- file (CHMOD "${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
+ endif()
+else(CMAKE_VERSION VERSION_LESS 3.19)
+ file(CHMOD "${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
-endif (CMAKE_VERSION VERSION_LESS 3.19)
+endif(CMAKE_VERSION VERSION_LESS 3.19)
# prepare some variables for config.h
-if (IS_ABSOLUTE "${FLTK_DATADIR}")
- set (PREFIX_DATA "${FLTK_DATADIR}/fltk")
-else (IS_ABSOLUTE "${FLTK_DATADIR}")
- set (PREFIX_DATA "${CMAKE_INSTALL_PREFIX}/${FLTK_DATADIR}/fltk")
-endif (IS_ABSOLUTE "${FLTK_DATADIR}")
+if(IS_ABSOLUTE "${FLTK_DATADIR}")
+ set(PREFIX_DATA "${FLTK_DATADIR}/fltk")
+else(IS_ABSOLUTE "${FLTK_DATADIR}")
+ set(PREFIX_DATA "${CMAKE_INSTALL_PREFIX}/${FLTK_DATADIR}/fltk")
+endif(IS_ABSOLUTE "${FLTK_DATADIR}")
-if (IS_ABSOLUTE "${FLTK_DOCDIR}")
- set (PREFIX_DOC "${FLTK_DOCDIR}/fltk")
-else (IS_ABSOLUTE "${FLTK_DOCDIR}")
- set (PREFIX_DOC "${CMAKE_INSTALL_PREFIX}/${FLTK_DOCDIR}/fltk")
-endif (IS_ABSOLUTE "${FLTK_DOCDIR}")
+if(IS_ABSOLUTE "${FLTK_DOCDIR}")
+ set(PREFIX_DOC "${FLTK_DOCDIR}/fltk")
+else(IS_ABSOLUTE "${FLTK_DOCDIR}")
+ set(PREFIX_DOC "${CMAKE_INSTALL_PREFIX}/${FLTK_DOCDIR}/fltk")
+endif(IS_ABSOLUTE "${FLTK_DOCDIR}")
-set (CONFIG_H_IN configh.cmake.in)
-set (CONFIG_H config.h)
+set(CONFIG_H_IN configh.cmake.in)
+set(CONFIG_H config.h)
# generate config.h
@@ -121,15 +145,15 @@ configure_file(
@ONLY
)
-if (OPTION_CREATE_LINKS)
+if(FLTK_INSTALL_LINKS)
# Set PREFIX_INCLUDE to the proper value.
- if (IS_ABSOLUTE ${FLTK_INCLUDEDIR})
- set (PREFIX_INCLUDE ${FLTK_INCLUDEDIR})
- else ()
- set (PREFIX_INCLUDE "${CMAKE_INSTALL_PREFIX}/${FLTK_INCLUDEDIR}")
- endif (IS_ABSOLUTE ${FLTK_INCLUDEDIR})
+ if(IS_ABSOLUTE ${FLTK_INCLUDEDIR})
+ set(PREFIX_INCLUDE ${FLTK_INCLUDEDIR})
+ else()
+ set(PREFIX_INCLUDE "${CMAKE_INSTALL_PREFIX}/${FLTK_INCLUDEDIR}")
+ endif(IS_ABSOLUTE ${FLTK_INCLUDEDIR})
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake"
@ONLY)
-endif (OPTION_CREATE_LINKS)
+endif(FLTK_INSTALL_LINKS)