summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
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 /CMakeLists.txt
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 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt140
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)