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 /CMakeLists.txt | |
| 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 'CMakeLists.txt')
| -rw-r--r-- | CMakeLists.txt | 140 |
1 files changed, 103 insertions, 37 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 172a949d0..281d6b440 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ # Main 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 @@ -15,64 +15,87 @@ # https://www.fltk.org/bugs.php # -# Prevent annoying warning under Cygwin; this must be before project(). -# Remove when CMake >= 2.8.4 is required -set(CMAKE_LEGACY_CYGWIN_WIN32 0) +####################################################################### +# set CMake minimum version (must be before `project()` +####################################################################### + +# Note: previous (1.3.x) minimum version +# cmake_minimum_required (VERSION 2.6.3) + +# Note: minimum CMake version required by GNUInstallDirs +# cmake_minimum_required (VERSION 2.8.4) + +# Minimum CMake version required by FLTK 1.4 (06/2020, work in progress) +cmake_minimum_required (VERSION 3.2.3 FATAL_ERROR) + +####################################################################### +# define the FLTK project and version +####################################################################### -project(FLTK) -cmake_minimum_required(VERSION 2.6.3) +project (FLTK VERSION 1.4.0) ####################################################################### -# define some macros +# include macro definitions of generally used macros ####################################################################### -include(CMake/macros.cmake) + +include (CMake/fl_debug_var.cmake) +include (CMake/fl_add_library.cmake) + +if (false) + fl_debug_var (FLTK_VERSION_MAJOR) + fl_debug_var (FLTK_VERSION_MINOR) + fl_debug_var (FLTK_VERSION_PATCH) + fl_debug_var (FLTK_VERSION) + fl_debug_var (FLTK_VERSION) +endif (false) ####################################################################### # basic setup ####################################################################### -include(CMake/setup.cmake) +include (CMake/setup.cmake) ####################################################################### # check for headers, libraries and functions ####################################################################### -include(CMake/resources.cmake) +include (CMake/resources.cmake) ####################################################################### # options ####################################################################### -include(CMake/options.cmake) +include (CMake/options.cmake) ####################################################################### # Android Studio setup ####################################################################### if (OPTION_CREATE_ANDROID_STUDIO_IDE) - include(CMake/android.cmake) + include (CMake/android.cmake) endif (OPTION_CREATE_ANDROID_STUDIO_IDE) - ####################################################################### # print (debug) several build variables and options ####################################################################### set (debug_build 0) # set to 1 to show debug info + if (debug_build) message ("") message (STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: set debug_build to 0 to disable the following info:") - fl_debug_var(WIN32) - fl_debug_var(MINGW) - fl_debug_var(CYGWIN) - fl_debug_var(MSVC) - fl_debug_var(UNIX) - fl_debug_var(APPLE) - fl_debug_var(ANDROID) - fl_debug_var(CMAKE_BUILD_TYPE) - fl_debug_var(CMAKE_SIZEOF_VOID_P) - fl_debug_var(OPTION_OPTIM) - fl_debug_var(CMAKE_C_FLAGS) - fl_debug_var(CMAKE_CXX_FLAGS) - fl_debug_var(CMAKE_EXE_LINKER_FLAGS) + fl_debug_var (WIN32) + fl_debug_var (MINGW) + fl_debug_var (CYGWIN) + fl_debug_var (MSVC) + fl_debug_var (UNIX) + fl_debug_var (APPLE) + fl_debug_var (ANDROID) + fl_debug_var (CMAKE_BUILD_TYPE) + fl_debug_var (CMAKE_SIZEOF_VOID_P) + fl_debug_var (OPTION_OPTIM) + fl_debug_var (CMAKE_C_FLAGS) + fl_debug_var (CMAKE_CXX_FLAGS) + fl_debug_var (CMAKE_EXE_LINKER_FLAGS) message (STATUS "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt: end of debug_build info.") endif (debug_build) + unset (debug_build) ####################################################################### @@ -81,25 +104,25 @@ unset (debug_build) # install.cmake creates these files for an installed FLTK # these two would only differ in paths, so common variables are set here ####################################################################### -include(CMake/variables.cmake) +include (CMake/variables.cmake) ####################################################################### # final config and export ####################################################################### -include(CMake/export.cmake) +include (CMake/export.cmake) -configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/abi-version.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/FL/abi-version.h - @ONLY - ) +configure_file ( + ${CMAKE_CURRENT_SOURCE_DIR}/abi-version.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/FL/abi-version.h + @ONLY +) ####################################################################### # build examples - these have to be built after fluid is built/imported ####################################################################### -if(OPTION_BUILD_EXAMPLES) - add_subdirectory(test) -endif(OPTION_BUILD_EXAMPLES) +if (OPTION_BUILD_EXAMPLES) + add_subdirectory (test) +endif (OPTION_BUILD_EXAMPLES) ####################################################################### # Android Studio wrapup @@ -111,4 +134,47 @@ endif (OPTION_CREATE_ANDROID_STUDIO_IDE) ####################################################################### # installation ####################################################################### -include(CMake/install.cmake) +include (CMake/install.cmake) + +####################################################################### +# Generate Library Export Headers *** EXPERIMENTAL *** WIP *** +####################################################################### + +# Enable (1) or disable (0) generation of experimental headers (WIP) +set (GENERATE_EXPORT_HEADERS 0) + +if (OPTION_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS) + + include (GenerateExportHeader) + + generate_export_header (fltk_SHARED + BASE_NAME fl + EXPORT_FILE_NAME FL/fltk_export.h + STATIC_DEFINE FL_STATIC_LIB + ) + + if (NOT MSVC) + + # Visual Studio builds only one shared lib (DLL) + + generate_export_header (fltk_images_SHARED + BASE_NAME fl_images + EXPORT_FILE_NAME FL/fltk_images_export.h + STATIC_DEFINE FL_STATIC_LIB + ) + + generate_export_header (fltk_forms_SHARED + BASE_NAME fl_forms + EXPORT_FILE_NAME FL/fltk_forms_export.h + STATIC_DEFINE FL_STATIC_LIB + ) + + generate_export_header (fltk_gl_SHARED + BASE_NAME fl_gl + EXPORT_FILE_NAME FL/fltk_gl_export.h + STATIC_DEFINE FL_STATIC_LIB + ) + + endif (NOT MSVC) + +endif (OPTION_BUILD_SHARED_LIBS AND GENERATE_EXPORT_HEADERS) |
