diff options
| author | Albrecht Schlosser <albrechts.fltk@online.de> | 2020-06-13 15:19:27 +0200 |
|---|---|---|
| committer | Albrecht Schlosser <albrechts.fltk@online.de> | 2020-07-15 00:34:53 +0200 |
| commit | 720b84ef9d086245f5119d143202a2661a78ca53 (patch) | |
| tree | 26bcd11ffa797c3c01917507e9204fbc9f9b45aa /CMake/setup.cmake | |
| parent | 54425030774eb04b29c749ffa85d224c8bbfcc34 (diff) | |
CMake: refactor and reformat CMake files
- raise minimum CMake version from 2.6.3 to 3.2.3 (Jun 01, 2015)
- indent all CMake files according to the CMP (2 col.)
- refactor FLTK version number definitions and usage
- unify CMake and autoconf/configure variable names:
- FL_VERSION -> FLTK_VERSION
- FL_MAJOR_VERSION -> FLTK_VERSION_MAJOR
- etc. for _MINOR_ and _PATCH_, respectively
- note: this does not affect FL_VERSION etc. in source code
- generate "export headers" for all libraries (experimental: OFF)
- port some forgotten goodies from branch-1.3 to master
- merge and improve macro 'create_example' (WIP)
- remove "temporary" options and code for older CMake versions
- include and use 'GenerateExportHeader' (experimental, WIP: OFF)
- note: created header files are not yet used
- build only *one* DLL with Visual Studio (tested, works)
- similar to the bundled IDE projects in 1.3.x
- add some dynamically linked test/demo programs ('*-shared')
if shared libraries are built (WIP)
- split 'macros.cmake': use one file per macro
Diffstat (limited to 'CMake/setup.cmake')
| -rw-r--r-- | CMake/setup.cmake | 201 |
1 files changed, 93 insertions, 108 deletions
diff --git a/CMake/setup.cmake b/CMake/setup.cmake index 8935ed2bf..db661a54f 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) # Written by Michael Surette # -# Copyright 1998-2018 by Bill Spitzak and others. +# Copyright 1998-2020 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,52 +19,37 @@ # basic setup ####################################################################### -# The FLTK version -set(FLTK_VERSION_MAJOR "1") -set(FLTK_VERSION_MINOR "4") -set(FLTK_VERSION_PATCH "0") -set(FLTK_VERSION "${FLTK_VERSION_MAJOR}.${FLTK_VERSION_MINOR}") -set(FLTK_VERSION_FULL "${FLTK_VERSION}.${FLTK_VERSION_PATCH}") - -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 (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}) +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}) - -# Setup install locations -if(CMAKE_VERSION VERSION_GREATER 2.8.4) - # Use GNUInstallDirs if available. - include(GNUInstallDirs) -else() - # Else set reasonable defaults. - set(CMAKE_INSTALL_BINDIR bin) - set(CMAKE_INSTALL_LIBDIR lib) - set(CMAKE_INSTALL_INCLUDEDIR include) - set(CMAKE_INSTALL_DATADIR share) - set(CMAKE_INSTALL_MANDIR share/man) -endif(CMAKE_VERSION VERSION_GREATER 2.8.4) - -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 - "Library install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute 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 - "Non-arch data install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute 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 - "Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") +set (FLTK_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + +# Setup install locations (requires CMake 2.8.4) + +include(GNUInstallDirs) + + +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 + "Library install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute 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 + "Non-arch data install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute 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 + "Non-arch doc install path relative to CMAKE_INSTALL_PREFIX unless set to an absolute path.") ####################################################################### @@ -72,56 +57,56 @@ set(FLTK_DOCDIR ${CMAKE_INSTALL_DATADIR}/doc CACHE PATH ####################################################################### # 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 OPTION_APPLE_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(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) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -U__APPLE__") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U__APPLE__") - if(${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_THREAD_API_PTHREAD") - endif(${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0) - elseif(OPTION_APPLE_SDL) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__") - else() - set(__APPLE_QUARTZ__ 1) - 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) - # 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) - add_definitions(-DWIN32_LEAN_AND_MEAN) - add_definitions(-D_CRT_SECURE_NO_WARNINGS) - set(BORDER_WIDTH 2) - endif(MSVC) - if(CMAKE_C_COMPILER_ID STREQUAL GNU) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows") - endif(CMAKE_C_COMPILER_ID STREQUAL GNU) - if(MINGW AND EXISTS /mingw) - list(APPEND CMAKE_PREFIX_PATH /mingw) - endif(MINGW AND EXISTS /mingw) -endif(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 (OPTION_APPLE_X11) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -U__APPLE__") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U__APPLE__") + if (${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LIBCPP_HAS_THREAD_API_PTHREAD") + endif (${CMAKE_SYSTEM_VERSION} VERSION_GREATER 16.9.0) + elseif (OPTION_APPLE_SDL) + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__") + set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${SDL2_INCLUDE_DIRS} -U__APPLE__") + else () + set (__APPLE_QUARTZ__ 1) + 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) + # 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) + add_definitions (-DWIN32_LEAN_AND_MEAN) + add_definitions (-D_CRT_SECURE_NO_WARNINGS) + set (BORDER_WIDTH 2) + endif (MSVC) + if (CMAKE_C_COMPILER_ID STREQUAL GNU) + set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-subsystem,windows") + endif (CMAKE_C_COMPILER_ID STREQUAL GNU) + if (MINGW AND EXISTS /mingw) + list(APPEND CMAKE_PREFIX_PATH /mingw) + endif (MINGW AND EXISTS /mingw) +endif (WIN32) ####################################################################### # size of ints @@ -130,24 +115,24 @@ include(CheckTypeSize) CHECK_TYPE_SIZE(short SIZEOF_SHORT) 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$") +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$") |
