diff options
Diffstat (limited to 'CMake/setup.cmake')
| -rw-r--r-- | CMake/setup.cmake | 191 |
1 files changed, 108 insertions, 83 deletions
diff --git a/CMake/setup.cmake b/CMake/setup.cmake index 7dd91ebd4..b663813be 100644 --- a/CMake/setup.cmake +++ b/CMake/setup.cmake @@ -2,7 +2,7 @@ # CMakeLists.txt to build the FLTK project using CMake (www.cmake.org) # Originally written by Michael Surette # -# Copyright 1998-2023 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 @@ -19,107 +19,132 @@ # basic setup ####################################################################### -set (EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) -set (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) -set (ARCHIVE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) +set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) +set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) +set(ARCHIVE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) # Search for modules in the FLTK source dir first -set (CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") - -set (FLTK_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) -include_directories (${FLTK_INCLUDE_DIRS}) - -# Remember root of FLTK source directory in case we're in a subdirectory. -# Used for instance to find the source directory for doxygen docs -set (FLTK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) +set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake") # Setup install locations (requires CMake 2.8.4) include(GNUInstallDirs) -set (FLTK_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH +set(FLTK_BINDIR ${CMAKE_INSTALL_BINDIR} CACHE PATH "Binary install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") -set (FLTK_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH +set(FLTK_LIBDIR ${CMAKE_INSTALL_LIBDIR} CACHE PATH "Library install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") -set (FLTK_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH +set(FLTK_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} CACHE PATH "Public header install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") -set (FLTK_DATADIR ${CMAKE_INSTALL_DATADIR} CACHE PATH +set(FLTK_DATADIR ${CMAKE_INSTALL_DATADIR} CACHE PATH "Non-arch data install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") -set (FLTK_MANDIR ${CMAKE_INSTALL_MANDIR} CACHE PATH +set(FLTK_MANDIR ${CMAKE_INSTALL_MANDIR} CACHE PATH "Manual install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") -set (FLTK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc CACHE PATH +set(FLTK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc CACHE PATH "Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") ####################################################################### -# initialize internally used variables -# some of these variables are used to *append* other values later +# Initialize variables needed to collect include directories etc.. +# Some of these variables are used to *append* other values later ####################################################################### -set (FLTK_LDLIBS "") -set (FLTK_LIBRARIES "") -set (GLLIBS "") -set (IMAGELIBS "") -set (LDFLAGS "") -set (LIBS "") -set (LINK_LIBS "") -set (STATICIMAGELIBS "") +set(FLTK_BUILD_INCLUDE_DIRECTORIES "") +set(FLTK_IMAGE_INCLUDE_DIRECTORIES "") +set(FLTK_IMAGE_LIBRARIES "") +set(FLTK_IMAGE_LIBRARIES_SHARED "") + +set(FLTK_CFLAGS "") +set(FLTK_LIBRARIES "") +set(FLTK_LIBRARIES_SHARED "") + +# Remember root of FLTK source directory in case we're later in a subdirectory. +# Used for instance to find the source directory for doxygen docs + +set(FLTK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + +if(FLTK_SOURCE_DIR STREQUAL ${CMAKE_SOURCE_DIR}) + set(FLTK_IS_TOPLEVEL TRUE) +else() + set(FLTK_IS_TOPLEVEL FALSE) +endif() + +# Note: FLTK_INCLUDE_DIRS is used to export the required include directories +# in FLTKConfig.cmake etc. +# ### FIXME ### check if we really need this ... + +set(FLTK_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) + +# FLTK_BUILD_INCLUDE_DIRECTORIES is used to build the main FLTK lib + +set(FLTK_BUILD_INCLUDE_DIRECTORIES) + +# Some of these variables are used to *append* other values later + +set(FLTK_LDLIBS "") +set(FLTK_LIBRARIES "") +set(GLLIBS "") +set(IMAGELIBS "") +set(LDFLAGS "") +set(LIBS "") +set(LINK_LIBS "") +set(STATICIMAGELIBS "") ####################################################################### # platform dependent information ####################################################################### # set where config files go -if (WIN32 AND NOT CYGWIN) - set (FLTK_CONFIG_PATH CMake) -elseif (APPLE AND NOT OPTION_APPLE_X11) - set (FLTK_CONFIG_PATH FLTK.framework/Resources/CMake) -else () - set (FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk) -endif (WIN32 AND NOT CYGWIN) +if(WIN32 AND NOT CYGWIN) + set(FLTK_CONFIG_PATH CMake) +elseif(APPLE AND NOT FLTK_BACKEND_X11) + set(FLTK_CONFIG_PATH FLTK.framework/Resources/CMake) +else() + set(FLTK_CONFIG_PATH ${FLTK_DATADIR}/fltk) +endif(WIN32 AND NOT CYGWIN) include(TestBigEndian) TEST_BIG_ENDIAN(WORDS_BIGENDIAN) -if (CMAKE_GENERATOR MATCHES "Xcode") +if(CMAKE_GENERATOR MATCHES "Xcode") # Tell Xcode to regenerate scheme information automatically whenever the # CMake configuration changes without asking the user - set (CMAKE_XCODE_GENERATE_SCHEME 1) + set(CMAKE_XCODE_GENERATE_SCHEME 1) endif() -if (APPLE) - set (HAVE_STRCASECMP 1) - set (HAVE_DIRENT_H 1) - set (HAVE_SNPRINTF 1) - set (HAVE_VSNPRINTF 1) - set (HAVE_SCANDIR 1) - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated") - if (OPTION_APPLE_X11) - if (NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0)) # a.k.a. macOS version ≥ 10.13 - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_THREAD_API_PTHREAD") - endif (NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0)) - else () - set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa") - set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework Cocoa") - endif (OPTION_APPLE_X11) -endif (APPLE) - -if (WIN32) +if(APPLE) + set(HAVE_STRCASECMP 1) + set(HAVE_DIRENT_H 1) + set(HAVE_SNPRINTF 1) + set(HAVE_VSNPRINTF 1) + set(HAVE_SCANDIR 1) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated") + if(FLTK_BACKEND_X11) + if(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0)) # a.k.a. macOS version ≥ 10.13 + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_THREAD_API_PTHREAD") + endif(NOT(${CMAKE_SYSTEM_VERSION} VERSION_LESS 17.0.0)) + else() + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -framework Cocoa") + endif(FLTK_BACKEND_X11) +endif(APPLE) + +if(WIN32) # we do no longer define WIN32 or _WIN32 (since FLTK 1.4.0) # ... but if we did, we'd define _WIN32 (since FLTK 1.4.0) # add_definitions (-D_WIN32) - if (MSVC) + if(MSVC) add_definitions (-DWIN32_LEAN_AND_MEAN) add_definitions (-D_CRT_SECURE_NO_WARNINGS) - if (NOT MSVC_VERSION VERSION_LESS 1900) # Visual Studio 2015 - add_compile_options (/utf-8) # equivalent to `/source-charset:utf-8 /execution-charset:utf-8` - endif () - set (BORDER_WIDTH 2) - endif (MSVC) - if (MINGW AND EXISTS /mingw) + if(NOT MSVC_VERSION VERSION_LESS 1900) # Visual Studio 2015 + add_compile_options (/utf-8) # equivalent to `/source-charset:utf-8 /execution-charset:utf-8` + endif() + set(BORDER_WIDTH 2) + endif(MSVC) + if(MINGW AND EXISTS /mingw) list(APPEND CMAKE_PREFIX_PATH /mingw) - endif (MINGW AND EXISTS /mingw) -endif (WIN32) + endif(MINGW AND EXISTS /mingw) +endif(WIN32) ####################################################################### # size of ints @@ -130,22 +155,22 @@ CHECK_TYPE_SIZE(int SIZEOF_INT) CHECK_TYPE_SIZE(long SIZEOF_LONG) CHECK_TYPE_SIZE("long long" HAVE_LONG_LONG) -if (${SIZEOF_SHORT} MATCHES "^2$") - set (U16 "unsigned short") -endif (${SIZEOF_SHORT} MATCHES "^2$") - -if (${SIZEOF_INT} MATCHES "^4$") - set (U32 "unsigned") -else () - if (${SIZEOF_LONG} MATCHES "^4$") - set (U32 "unsigned long") - endif (${SIZEOF_LONG} MATCHES "^4$") -endif (${SIZEOF_INT} MATCHES "^4$") - -if (${SIZEOF_INT} MATCHES "^8$") - set (U64 "unsigned") -else () - if (${SIZEOF_LONG} MATCHES "^8$") - set (U64 "unsigned long") - endif (${SIZEOF_LONG} MATCHES "^8$") -endif (${SIZEOF_INT} MATCHES "^8$") +if(${SIZEOF_SHORT} MATCHES "^2$") + set(U16 "unsigned short") +endif(${SIZEOF_SHORT} MATCHES "^2$") + +if(${SIZEOF_INT} MATCHES "^4$") + set(U32 "unsigned") +else() + if(${SIZEOF_LONG} MATCHES "^4$") + set(U32 "unsigned long") + endif(${SIZEOF_LONG} MATCHES "^4$") +endif(${SIZEOF_INT} MATCHES "^4$") + +if(${SIZEOF_INT} MATCHES "^8$") + set(U64 "unsigned") +else() + if(${SIZEOF_LONG} MATCHES "^8$") + set(U64 "unsigned long") + endif(${SIZEOF_LONG} MATCHES "^8$") +endif(${SIZEOF_INT} MATCHES "^8$") |
