summaryrefslogtreecommitdiff
path: root/CMake/setup.cmake
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2020-06-13 15:19:27 +0200
committerAlbrecht Schlosser <albrechts.fltk@online.de>2020-07-15 00:34:53 +0200
commit720b84ef9d086245f5119d143202a2661a78ca53 (patch)
tree26bcd11ffa797c3c01917507e9204fbc9f9b45aa /CMake/setup.cmake
parent54425030774eb04b29c749ffa85d224c8bbfcc34 (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.cmake201
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$")