diff options
Diffstat (limited to 'CMake/fl_add_library.cmake')
| -rw-r--r-- | CMake/fl_add_library.cmake | 257 |
1 files changed, 0 insertions, 257 deletions
diff --git a/CMake/fl_add_library.cmake b/CMake/fl_add_library.cmake deleted file mode 100644 index 8806de191..000000000 --- a/CMake/fl_add_library.cmake +++ /dev/null @@ -1,257 +0,0 @@ -# -# Macro 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 -# - -####################################################################### -# fl_add_library - add a static or shared library to the build -#====================================================================== -# -# Input: -# -# LIBNAME: name of the library, including 'fltk_' prefix if applicable. -# -# LIBTYPE: either "STATIC" or "SHARED" -# -# SOURCES: Files needed to build the library -# -# Output: -# -# FLTK_LIBRARIES or FLTK_LIBRARIES_SHARED (in parent scope) -# -# This function adds the given library to the build, adds it to -# either FLTK_LIBRARIES or FLTK_LIBRARIES_SHARED, respectively, -# and "exports" the modified variable to the parent scope. -# -# For each library an alias is defined (see comment below). -# -####################################################################### - -function(fl_add_library LIBNAME LIBTYPE SOURCES) - - # message(STATUS "Building library **************** ${LIBNAME} ${LIBTYPE}") - - set(suffix "") - if(LIBTYPE STREQUAL "SHARED") - set(suffix "-shared") - endif() - - set(TARGET_NAME ${LIBNAME}${suffix}) - - ## Strip 'fltk_' from target name (if it exists in the name) - ## and use the result as EXPORT_NAME property. This makes it - ## easy to export library targets fltk::fltk and fltk::images - ## rather than fltk::fltk_images. - - string(REPLACE "fltk_" "" EXPORT_NAME ${TARGET_NAME}) - - if(MSVC) - set(OUTPUT_NAME_DEBUG "${LIBNAME}d") - else() - set(OUTPUT_NAME_DEBUG "${LIBNAME}") - endif(MSVC) - - set(OUTPUT_NAME_RELEASE "${LIBNAME}") - - add_library(${TARGET_NAME} ${LIBTYPE} ${SOURCES}) - - # Create an alias 'fltk::alias_name' for the library - # where 'alias_name' is the library name without the prefix 'fltk_' - # - # e.g. 'fltk' -> 'fltk::fltk' - # and 'fltk-shared' -> 'fltk::fltk-shared' - # but 'fltk_images' -> 'fltk::images' - # and 'fltk_images-shared' -> 'fltk::images-shared' - - if(NOT (LIBNAME STREQUAL "fltk")) - string(REPLACE "fltk_" "" alias_name ${LIBNAME}) - else() - set(alias_name ${LIBNAME}) - endif() - set(alias_name "fltk::${alias_name}${suffix}") - - add_library(${alias_name} ALIAS ${TARGET_NAME}) - - if(0) - fl_debug_var(TARGET_NAME) - fl_debug_var(LIBTYPE) - fl_debug_var(alias_name) - # fl_debug_var(SOURCES) - endif() - - # Target properties for all libraries - - # Set 'PRIVATE' target compile definitions for the library - # so they are not inherited by consumers - - target_compile_definitions(${TARGET_NAME} PRIVATE "FL_LIBRARY") - - # Set PUBLIC properties, e.g. C++ standard and include and linker directories. - # These properties are inherited by consumers of the libraries - - target_compile_features(${TARGET_NAME} PUBLIC "cxx_std_${CMAKE_CXX_STANDARD}") - - if(0) # DEBUG - message(STATUS "fl_add_library and alias : fltk::${alias_name} ALIAS ${TARGET_NAME}") - fl_debug_var(TARGET_NAME) - fl_debug_var(FLTK_INCLUDE_DIRS) - fl_debug_var(CMAKE_CURRENT_BINARY_DIR) - fl_debug_var(CMAKE_CURRENT_SOURCE_DIR) - fl_debug_var(FLTK_BUILD_INCLUDE_DIRECTORIES) - endif() - - # Special handling for the core 'fltk' library, - # no matter if it's SHARED or STATIC - # FIXME: maybe this should be in src/CMakeLists.txt (?) - - if(LIBNAME STREQUAL "fltk") - - target_include_directories(${TARGET_NAME} PUBLIC - $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/..> - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..> - $<INSTALL_INTERFACE:include> - ) - - ### FIXME: why does the simplified else() block not work? - ### Needs investigation, using 'if(1)' for now... - - if(1) - - foreach(dir ${FLTK_BUILD_INCLUDE_DIRECTORIES}) - target_include_directories(${TARGET_NAME} PRIVATE - $<BUILD_INTERFACE:${dir}> - ) - endforeach() - - else() - - ### This generates a wrong string in property INTERFACE_INCLUDE_DIRECTORIES: - ### ... $<INSTALL_INTERFACE:include>;/git/fltk/modern-cmake/src/$<BUILD_INTERFACE:/usr/include/freetype2; ... - ### ... --- OK ---------------------^^^^^^^ WRONG ^^^^^^^^^^^^^^-------- would be OK -------------------- ... - ### End of string: ';/usr/include/libpng16' (WRONG: missing '>') - ### I don't see anything wrong with this statement though but - ### maybe I'm missing something. Albrecht, Jan 22 2024 - - target_include_directories(${TARGET_NAME} PRIVATE - $<BUILD_INTERFACE:${FLTK_BUILD_INCLUDE_DIRECTORIES}> - ) - - endif() - - target_link_directories(${TARGET_NAME} PUBLIC - $<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/../lib> - $<INSTALL_INTERFACE:lib> - ) - - if(APPLE AND NOT FLTK_BACKEND_X11) - foreach(item ${FLTK_COCOA_FRAMEWORKS}) - target_link_libraries(${TARGET_NAME} PUBLIC "${item}") - endforeach() - endif() - - # we must link fltk with cairo if Cairo or Wayland is enabled (or both) - if(FLTK_HAVE_CAIRO OR FLTK_USE_CAIRO) - target_include_directories(${TARGET_NAME} PUBLIC ${PKG_CAIRO_INCLUDE_DIRS}) - target_link_directories (${TARGET_NAME} PUBLIC ${PKG_CAIRO_LIBRARY_DIRS}) - target_link_libraries (${TARGET_NAME} PUBLIC ${PKG_CAIRO_LIBRARIES}) - endif() - - endif(LIBNAME STREQUAL "fltk") - - # Set additional target properties for static libraries - - if(LIBTYPE STREQUAL "STATIC") - set_target_properties(${TARGET_NAME} - PROPERTIES - OUTPUT_NAME ${LIBNAME} - OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG} - OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE} - EXPORT_NAME ${EXPORT_NAME} - ) - endif(LIBTYPE STREQUAL "STATIC") - - # Set additional target properties for shared (dynamic) libraries (DLL's) - - if(LIBTYPE STREQUAL "SHARED") - set_target_properties(${TARGET_NAME} PROPERTIES - VERSION ${FLTK_VERSION} - SOVERSION ${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR} - OUTPUT_NAME ${LIBNAME} - OUTPUT_NAME_DEBUG ${OUTPUT_NAME_DEBUG} - OUTPUT_NAME_RELEASE ${OUTPUT_NAME_RELEASE} - EXPORT_NAME ${EXPORT_NAME} - ) - # Visual Studio only: - if(MSVC) - set_target_properties(${TARGET_NAME} PROPERTIES - OUTPUT_NAME ${LIBNAME}_dll - OUTPUT_NAME_DEBUG ${LIBNAME}_dlld - OUTPUT_NAME_RELEASE ${LIBNAME}_dll - ) - target_compile_definitions(${TARGET_NAME} PUBLIC FL_DLL) - endif(MSVC) - endif(LIBTYPE STREQUAL "SHARED") - - # Debug library output names (optional) - set(DEBUG_ONAME 0) - - if(DEBUG_ONAME) - get_target_property(XX_NAME ${TARGET_NAME} NAME) - get_target_property(XX_ONAME ${TARGET_NAME} OUTPUT_NAME) - get_target_property(XX_ONAME_DEBUG ${TARGET_NAME} OUTPUT_NAME_DEBUG) - get_target_property(XX_ONAME_RELEASE ${TARGET_NAME} OUTPUT_NAME_RELEASE) - get_target_property(XX_EXPORT_NAME ${TARGET_NAME} EXPORT_NAME) - - message(STATUS "--- DEBUG_ONAME ---") - fl_debug_var(TARGET_NAME) - fl_debug_var(XX_NAME) - fl_debug_var(XX_ONAME) - fl_debug_var(XX_ONAME_DEBUG) - fl_debug_var(XX_ONAME_RELEASE) - fl_debug_var(XX_EXPORT_NAME) - message(STATUS "--- /DEBUG_ONAME ---") - endif(DEBUG_ONAME) - - if(MSVC) - if(FLTK_OPTION_LARGE_FILE) - set_target_properties(${TARGET_NAME} PROPERTIES - LINK_FLAGS /LARGEADDRESSAWARE - ) - endif(FLTK_OPTION_LARGE_FILE) - endif(MSVC) - - install(TARGETS ${TARGET_NAME} EXPORT FLTK-Targets - RUNTIME DESTINATION ${FLTK_BINDIR} - LIBRARY DESTINATION ${FLTK_LIBDIR} - ARCHIVE DESTINATION ${FLTK_LIBDIR} - ) - - if(LIBTYPE STREQUAL "SHARED") - list(APPEND FLTK_LIBRARIES_SHARED "${TARGET_NAME}") - set(FLTK_LIBRARIES_SHARED "${FLTK_LIBRARIES_SHARED}" PARENT_SCOPE) - else() - list(APPEND FLTK_LIBRARIES "${TARGET_NAME}") - set(FLTK_LIBRARIES "${FLTK_LIBRARIES}" PARENT_SCOPE) - endif() - - if(0) - fl_debug_var(fl_add_library_DEBUG) - fl_debug_var(FLTK_LIBRARIES) - fl_debug_var(FLTK_LIBRARIES_SHARED) - fl_debug_var(fl_add_library_END) - message("") - endif() - -endfunction(fl_add_library LIBNAME LIBTYPE SOURCES) |
