summaryrefslogtreecommitdiff
path: root/CMake
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2018-02-23 19:41:52 +0000
committerAlbrecht Schlosser <albrechts.fltk@online.de>2018-02-23 19:41:52 +0000
commit7d1488507d110e567f57610894e9ce5d0eaebf2b (patch)
tree39ec070c7b17850b61f3a665f5190f5b9b55a4e2 /CMake
parenta0863e393af4231c93f917c18ef6b3366153c21e (diff)
CMake: Fix fltk-config for Windows and Unix/Linux.
This update ought to work with fltk-config [--use-images] [--use-gl] --compile <c source file> on both Windows and Unix/Linux when built with CMake. It was tested under Windows and Linux using fltk-config directly from the build tree, but it should work as well after installation. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12686 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'CMake')
-rw-r--r--CMake/export.cmake16
-rw-r--r--CMake/install.cmake5
-rw-r--r--CMake/options.cmake202
-rw-r--r--CMake/resources.cmake119
-rw-r--r--CMake/variables.cmake116
5 files changed, 307 insertions, 151 deletions
diff --git a/CMake/export.cmake b/CMake/export.cmake
index a58a05553..fecd1bd22 100644
--- a/CMake/export.cmake
+++ b/CMake/export.cmake
@@ -71,21 +71,17 @@ set(srcdir ".")
set(LIBNAME "${libdir}/libfltk.a")
-if (WIN32)
- set (LDFLAGS "-mwindows")
- set (LIBS "-lole32 -luuid -lcomctl32")
-endif ()
-
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
"${CMAKE_CURRENT_BINARY_DIR}/fltk-config"
@ONLY
)
-if(UNIX)
- execute_process(COMMAND chmod 755 fltk-config
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
- )
-endif(UNIX)
+
+if (UNIX)
+ execute_process(COMMAND chmod 755 fltk-config
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ )
+endif (UNIX)
# prepare some variables for config.h
diff --git a/CMake/install.cmake b/CMake/install.cmake
index cab36e9f2..cb4f8fe71 100644
--- a/CMake/install.cmake
+++ b/CMake/install.cmake
@@ -84,11 +84,6 @@ set(srcdir ".")
set(LIBNAME "${libdir}/libfltk.a")
-if (WIN32)
- set (LDFLAGS "-mwindows")
- set (LIBS "-lole32 -luuid -lcomctl32")
-endif ()
-
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
"${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config"
diff --git a/CMake/options.cmake b/CMake/options.cmake
index da4d781bc..22b83525f 100644
--- a/CMake/options.cmake
+++ b/CMake/options.cmake
@@ -17,6 +17,22 @@
# http://www.fltk.org/str.php
#
+set (DEBUG_OPTIONS_CMAKE 0)
+if (DEBUG_OPTIONS_CMAKE)
+ message (STATUS "[** options.cmake **]")
+ fl_debug_var (WIN32)
+ fl_debug_var (FLTK_LDLIBS)
+endif (DEBUG_OPTIONS_CMAKE)
+
+#######################################################################
+# *temporary* option to modify header searches
+#######################################################################
+option(USE_FIND_FILE
+ "Deprecated: use find_file() for header searches"
+ OFF
+)
+mark_as_advanced(USE_FIND_FILE)
+
#######################################################################
# options
#######################################################################
@@ -42,10 +58,14 @@ set(FL_ABI_VERSION ${OPTION_ABI_VERSION})
#######################################################################
#######################################################################
-if(UNIX)
+if (UNIX)
option(OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
list(APPEND FLTK_LDLIBS -lm)
-endif(UNIX)
+endif (UNIX)
+
+if (WIN32)
+ list(APPEND FLTK_LDLIBS -lole32 -luuid -lcomctl32)
+endif (WIN32)
#######################################################################
## Add a TEMPORARY OPTION to enable high-DPI support under Windows.
@@ -177,21 +197,31 @@ if(OPTION_USE_GL)
endif(OPTION_APPLE_X11)
endif(OPTION_USE_GL)
-if(OPENGL_FOUND)
- set(CMAKE_REQUIRED_INCLUDES ${OPENGL_INCLUDE_DIR}/GL)
- set(GLLIB "-lGLU -lGL")
+if (DEBUG_OPTIONS_CMAKE)
+ fl_debug_var(OPENGL_FOUND)
+ fl_debug_var(OPENGL_INCLUDE_DIR)
+ fl_debug_var(OPENGL_LIBRARIES)
+endif (DEBUG_OPTIONS_CMAKE)
+
+if (OPENGL_FOUND)
+ set (CMAKE_REQUIRED_INCLUDES ${OPENGL_INCLUDE_DIR}/GL)
+ if (WIN32)
+ set (GLLIBS "-lglu32 -lopengl32")
+ else ()
+ set (GLLIBS "-lGLU -lGL")
+ endif ()
- # check if function glXGetProcAddressARB exists
- set(TEMP_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
- set(CMAKE_REQUIRED_LIBRARIES GLU GL)
- CHECK_FUNCTION_EXISTS(glXGetProcAddressARB HAVE_GLXGETPROCADDRESSARB)
- set(CMAKE_REQUIRED_LIBRARIES ${TEMP_REQUIRED_LIBRARIES})
- unset(TEMP_REQUIRED_LIBRARIES)
+ # check if function glXGetProcAddressARB exists
+ set (TEMP_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+ set (CMAKE_REQUIRED_LIBRARIES ${OPENGL_LIBRARIES})
+ CHECK_FUNCTION_EXISTS (glXGetProcAddressARB HAVE_GLXGETPROCADDRESSARB)
+ set (CMAKE_REQUIRED_LIBRARIES ${TEMP_REQUIRED_LIBRARIES})
+ unset (TEMP_REQUIRED_LIBRARIES)
- set(FLTK_GL_FOUND TRUE)
-else()
- set(FLTK_GL_FOUND FALSE)
-endif(OPENGL_FOUND)
+ set (FLTK_GL_FOUND TRUE)
+else ()
+ set (FLTK_GL_FOUND FALSE)
+endif (OPENGL_FOUND)
#######################################################################
# Create an option whether we want to check for pthreads.
@@ -257,91 +287,91 @@ endif (debug_threads)
unset (debug_threads)
#######################################################################
-option(OPTION_LARGE_FILE "enable large file support" ON)
+option (OPTION_LARGE_FILE "enable large file support" ON)
-if(OPTION_LARGE_FILE)
- if(NOT MSVC)
- add_definitions(-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE)
- list(APPEND FLTK_CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE)
- endif(NOT MSVC)
-endif(OPTION_LARGE_FILE)
+if (OPTION_LARGE_FILE)
+ if (NOT MSVC)
+ add_definitions (-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE)
+ list (APPEND FLTK_CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE)
+ endif (NOT MSVC)
+endif (OPTION_LARGE_FILE)
#######################################################################
-option(OPTION_USE_SYSTEM_ZLIB "use system zlib" ON)
+option (OPTION_USE_SYSTEM_ZLIB "use system zlib" ON)
-if(OPTION_USE_SYSTEM_ZLIB AND LIB_zlib)
- include(FindZLIB)
-endif(OPTION_USE_SYSTEM_ZLIB AND LIB_zlib)
+if (OPTION_USE_SYSTEM_ZLIB)
+ include (FindZLIB)
+endif (OPTION_USE_SYSTEM_ZLIB)
-if(OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)
- set(FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
- include_directories(${ZLIB_INCLUDE_DIRS})
- set(FLTK_BUILTIN_ZLIB_FOUND FALSE)
+if (ZLIB_FOUND)
+ set (FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
+ include_directories (${ZLIB_INCLUDE_DIRS})
+ set (FLTK_BUILTIN_ZLIB_FOUND FALSE)
else()
- add_subdirectory(zlib)
- set(FLTK_ZLIB_LIBRARIES fltk_z)
- set(ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib)
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/zlib)
- set(FLTK_BUILTIN_ZLIB_FOUND TRUE)
-endif(OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)
+ if (OPTION_USE_SYSTEM_ZLIB)
+ message(STATUS "\ncannot find system zlib library - using built-in\n")
+ endif (OPTION_USE_SYSTEM_ZLIB)
-if(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND)
- message(STATUS "\ncannot find system zlib library - using built-in\n")
-endif(OPTION_USE_SYSTEM_ZLIB AND NOT ZLIB_FOUND)
+ add_subdirectory (zlib)
+ set (FLTK_ZLIB_LIBRARIES fltk_z)
+ set (ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib)
+ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/zlib)
+ set (FLTK_BUILTIN_ZLIB_FOUND TRUE)
+endif (ZLIB_FOUND)
-set(HAVE_LIBZ 1)
+set (HAVE_LIBZ 1)
#######################################################################
-option(OPTION_USE_SYSTEM_LIBJPEG "use system libjpeg" ON)
+option (OPTION_USE_SYSTEM_LIBJPEG "use system libjpeg" ON)
-if(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
- include(FindJPEG)
-endif(OPTION_USE_SYSTEM_LIBJPEG AND LIB_jpeg)
+if (OPTION_USE_SYSTEM_LIBJPEG)
+ include (FindJPEG)
+endif (OPTION_USE_SYSTEM_LIBJPEG)
-if(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
- set(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
- include_directories(${JPEG_INCLUDE_DIR})
- set(FLTK_BUILTIN_JPEG_FOUND FALSE)
-else()
- add_subdirectory(jpeg)
- set(FLTK_JPEG_LIBRARIES fltk_jpeg)
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/jpeg)
- set(FLTK_BUILTIN_JPEG_FOUND TRUE)
-endif(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
+if (JPEG_FOUND)
+ set(FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
+ include_directories(${JPEG_INCLUDE_DIR})
+ set(FLTK_BUILTIN_JPEG_FOUND FALSE)
+else ()
+ if (OPTION_USE_SYSTEM_LIBJPEG)
+ message (STATUS "\ncannot find system jpeg library - using built-in\n")
+ endif (OPTION_USE_SYSTEM_LIBJPEG)
-if(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
- message(STATUS "\ncannot find system jpeg library - using built-in\n")
-endif(OPTION_USE_SYSTEM_LIBJPEG AND NOT JPEG_FOUND)
+ add_subdirectory (jpeg)
+ set (FLTK_JPEG_LIBRARIES fltk_jpeg)
+ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/jpeg)
+ set (FLTK_BUILTIN_JPEG_FOUND TRUE)
+endif (JPEG_FOUND)
-set(HAVE_LIBJPEG 1)
+set (HAVE_LIBJPEG 1)
#######################################################################
-option(OPTION_USE_SYSTEM_LIBPNG "use system libpng" ON)
+option (OPTION_USE_SYSTEM_LIBPNG "use system libpng" ON)
-if(OPTION_USE_SYSTEM_LIBPNG AND LIB_png)
- include(FindPNG)
-endif(OPTION_USE_SYSTEM_LIBPNG AND LIB_png)
+if (OPTION_USE_SYSTEM_LIBPNG)
+ include (FindPNG)
+endif (OPTION_USE_SYSTEM_LIBPNG)
-if(OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)
- set(FLTK_PNG_LIBRARIES ${PNG_LIBRARIES})
- include_directories(${PNG_INCLUDE_DIR})
- add_definitions(${PNG_DEFINITIONS})
- set(FLTK_BUILTIN_PNG_FOUND FALSE)
+if (PNG_FOUND)
+ set (FLTK_PNG_LIBRARIES ${PNG_LIBRARIES})
+ include_directories (${PNG_INCLUDE_DIR})
+ add_definitions (${PNG_DEFINITIONS})
+ set (FLTK_BUILTIN_PNG_FOUND FALSE)
else()
- add_subdirectory(png)
- set(FLTK_PNG_LIBRARIES fltk_png)
- set(HAVE_PNG_H 1)
- set(HAVE_PNG_GET_VALID 1)
- set(HAVE_PNG_SET_TRNS_TO_ALPHA 1)
- include_directories(${CMAKE_CURRENT_SOURCE_DIR}/png)
- set(FLTK_BUILTIN_PNG_FOUND TRUE)
-endif(OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)
+ if (OPTION_USE_SYSTEM_LIBPNG)
+ message (STATUS "\ncannot find system png library - using built-in\n")
+ endif (OPTION_USE_SYSTEM_LIBPNG)
-if(OPTION_USE_SYSTEM_LIBPNG AND NOT PNG_FOUND)
- message(STATUS "\ncannot find system png library - using built-in\n")
-endif(OPTION_USE_SYSTEM_LIBPNG AND NOT PNG_FOUND)
+ add_subdirectory (png)
+ set (FLTK_PNG_LIBRARIES fltk_png)
+ set (HAVE_PNG_H 1)
+ set (HAVE_PNG_GET_VALID 1)
+ set (HAVE_PNG_SET_TRNS_TO_ALPHA 1)
+ include_directories (${CMAKE_CURRENT_SOURCE_DIR}/png)
+ set (FLTK_BUILTIN_PNG_FOUND TRUE)
+endif (PNG_FOUND)
-set(HAVE_LIBPNG 1)
+set (HAVE_LIBPNG 1)
#######################################################################
if(X11_Xinerama_FOUND)
@@ -440,6 +470,7 @@ if(X11_Xft_FOUND AND OPTION_USE_PANGO)
find_path(GLIB_H_PATH glib.h ${PANGO_H_PREFIX}/glib/glib-2.0)
endif(NOT GLIB_H_PATH)
include_directories(${PANGO_H_PREFIX}/pango-1.0 ${GLIB_H_PATH} ${PANGOLIB_DIR}/glib-2.0/include)
+ list(APPEND FLTK_LDLIBS -lpango-1.0 -lpangoxft-1.0 -lgobject-2.0)
endif(HAVE_LIB_PANGO AND HAVE_LIB_PANGOXFT AND HAVE_LIB_GOBJECT)
endif(X11_Xft_FOUND AND OPTION_USE_PANGO)
@@ -505,3 +536,16 @@ if(NOT CMAKE_VERSION VERSION_LESS 3.0.0)
"suppress rules to re-run CMake on rebuild" OFF)
mark_as_advanced(CMAKE_SUPPRESS_REGENERATION)
endif(NOT CMAKE_VERSION VERSION_LESS 3.0.0)
+
+#######################################################################
+# Debugging ...
+
+if (DEBUG_OPTIONS_CMAKE)
+ fl_debug_var (WIN32)
+ fl_debug_var (LIBS)
+ fl_debug_var (GLLIBS)
+ fl_debug_var (FLTK_LDLIBS)
+ fl_debug_var (USE_FIND_FILE)
+ message (STATUS "[** end of options.cmake **]")
+endif (DEBUG_OPTIONS_CMAKE)
+unset (DEBUG_OPTIONS_CMAKE)
diff --git a/CMake/resources.cmake b/CMake/resources.cmake
index 71fc9c4c3..3676d3bc0 100644
--- a/CMake/resources.cmake
+++ b/CMake/resources.cmake
@@ -20,27 +20,71 @@
#######################################################################
# check for headers, libraries and functions
#######################################################################
-# headers
-find_file(HAVE_ALSA_ASOUNDLIB_H alsa/asoundlib.h)
-find_file(HAVE_DLFCN_H dlfcn.h)
-find_file(HAVE_FREETYPE_H freetype.h PATH_SUFFIXES freetype2 freetype2/freetype)
-find_file(HAVE_GL_GLU_H GL/glu.h)
-find_file(HAVE_LIBPNG_PNG_H libpng/png.h)
-find_file(HAVE_LOCALE_H locale.h)
-find_file(HAVE_OPENGL_GLU_H OpenGL/glu.h)
-find_file(HAVE_PNG_H png.h)
-find_file(HAVE_STDIO_H stdio.h)
-find_file(HAVE_STRINGS_H strings.h)
-find_file(HAVE_SYS_SELECT_H sys/select.h)
-find_file(HAVE_SYS_STDTYPES_H sys/stdtypes.h)
-find_file(HAVE_X11_XREGION_H X11/Xregion.h)
-find_path(HAVE_XDBE_H Xdbe.h PATH_SUFFIXES X11/extensions extensions)
+
+# The following code is work in progress (as of Feb 2018) - AlbrechtS
+
+# The cache option USE_FIND_FILE can be set to ON to switch back to the old
+# behavior that tries to find headers by find_file() which appears to be
+# error prone at least under Windows when MSYS2 and MinGW are both
+# installed on one system.
+# If USE_FIND_FILE is OFF (new behavior), then headers are searched for by
+# check_include_files() which tries to compile a small file to test if
+# the header file can be used. In some cases this needs more than one
+# header in a list because another header must be included before the
+# header being searched for.
+# Example: X11/Xlib.h must be included before X11/Xregion.h so Xregion.h
+# can be compiled successfully.
+
+# If CMAKE_REQUIRED_QUIET is 1 (default) the search is mostly quiet, if
+# it is 0 (or not defined) check_include_files() is more verbose and
+# the result of the search is logged with fl_debug_var().
+# This is useful for debugging.
+
+set (CMAKE_REQUIRED_QUIET 1)
+
+include(CheckIncludeFiles)
+
+# The following macro is used to switch between old and new behavior.
+# Once this is stable (USE_FIND_FILE = 0) the unused part may be removed.
+
+macro (fl_find_header VAR HEADER)
+ if (USE_FIND_FILE)
+ find_file (${VAR} "${HEADER}")
+ else (USE_FIND_FILE)
+ check_include_files("${HEADER}" ${VAR})
+ endif (USE_FIND_FILE)
+ if (NOT CMAKE_REQUIRED_QUIET)
+ fl_debug_var (${VAR})
+ endif (NOT CMAKE_REQUIRED_QUIET)
+endmacro (fl_find_header)
+
+# Find header files...
+
+fl_find_header (HAVE_ALSA_ASOUNDLIB_H alsa/asoundlib.h)
+fl_find_header (HAVE_DLFCN_H dlfcn.h)
+fl_find_header (HAVE_GL_GLU_H GL/glu.h)
+fl_find_header (HAVE_LIBPNG_PNG_H libpng/png.h)
+fl_find_header (HAVE_LOCALE_H locale.h)
+fl_find_header (HAVE_OPENGL_GLU_H OpenGL/glu.h)
+fl_find_header (HAVE_PNG_H png.h)
+fl_find_header (HAVE_STDIO_H stdio.h)
+fl_find_header (HAVE_STRINGS_H strings.h)
+fl_find_header (HAVE_SYS_SELECT_H sys/select.h)
+fl_find_header (HAVE_SYS_STDTYPES_H sys/stdtypes.h)
+
+if (USE_FIND_FILE)
+ fl_find_header (HAVE_X11_XREGION_H "X11/Xregion.h")
+ fl_find_header (HAVE_XDBE_H "X11/extensions/Xdbe.h")
+else ()
+ fl_find_header (HAVE_X11_XREGION_H "X11/Xlib.h;X11/Xregion.h")
+ fl_find_header (HAVE_XDBE_H "X11/Xlib.h;X11/extensions/Xdbe.h")
+endif()
if (WIN32 AND NOT CYGWIN)
# we don't use pthreads on Windows (except for Cygwin, see options.cmake)
set(HAVE_PTHREAD_H 0)
else ()
- find_file(HAVE_PTHREAD_H pthread.h)
+ fl_find_header (HAVE_PTHREAD_H pthread.h)
endif (WIN32 AND NOT CYGWIN)
# Special case for Microsoft Visual Studio generator (MSVC):
@@ -91,24 +135,24 @@ endif (MSVC)
# Simulate the behavior of autoconf macro AC_HEADER_DIRENT, see:
# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Particular-Headers.html
# "Check for the following header files. For the first one that is found
-# and defines ‘DIR’, define the listed C preprocessor macro ..."
+# and defines 'DIR', define the listed C preprocessor macro ..."
#
# Note: we don't check if it really defines 'DIR', but we stop processing
# once we found the first suitable header file.
-find_file(HAVE_DIRENT_H dirent.h)
+fl_find_header (HAVE_DIRENT_H dirent.h)
if(NOT HAVE_DIRENT_H)
- find_file(HAVE_SYS_NDIR_H sys/ndir.h)
+ fl_find_header (HAVE_SYS_NDIR_H sys/ndir.h)
if(NOT HAVE_SYS_NDIR_H)
- find_file(HAVE_SYS_DIR_H sys/dir.h)
+ fl_find_header (HAVE_SYS_DIR_H sys/dir.h)
if(NOT HAVE_SYS_DIR_H)
- find_file(HAVE_NDIR_H ndir.h)
+ fl_find_header (HAVE_NDIR_H ndir.h)
endif(NOT HAVE_SYS_DIR_H)
endif(NOT HAVE_SYS_NDIR_H)
endif(NOT HAVE_DIRENT_H)
mark_as_advanced(HAVE_ALSA_ASOUNDLIB_H HAVE_DIRENT_H HAVE_DLFCN_H)
-mark_as_advanced(HAVE_FREETYPE_H HAVE_GL_GLU_H)
+mark_as_advanced(HAVE_GL_GLU_H)
mark_as_advanced(HAVE_LIBPNG_PNG_H HAVE_LOCALE_H HAVE_NDIR_H)
mark_as_advanced(HAVE_OPENGL_GLU_H HAVE_PNG_H HAVE_PTHREAD_H)
mark_as_advanced(HAVE_STDIO_H HAVE_STRINGS_H HAVE_SYS_DIR_H)
@@ -116,12 +160,19 @@ mark_as_advanced(HAVE_SYS_NDIR_H HAVE_SYS_SELECT_H)
mark_as_advanced(HAVE_SYS_STDTYPES_H HAVE_XDBE_H)
mark_as_advanced(HAVE_X11_XREGION_H)
+#----------------------------------------------------------------------
+# The following code is used to find the include path for freetype
+# headers to be able to #include <ft2build.h> in Xft.h.
+
# where to find freetype headers
+
find_path(FREETYPE_PATH freetype.h PATH_SUFFIXES freetype2)
find_path(FREETYPE_PATH freetype/freetype.h PATH_SUFFIXES freetype2)
-if(FREETYPE_PATH)
- include_directories(${FREETYPE_PATH})
-endif(FREETYPE_PATH)
+
+if (FREETYPE_PATH)
+ include_directories(${FREETYPE_PATH})
+endif (FREETYPE_PATH)
+
mark_as_advanced(FREETYPE_PATH)
#######################################################################
@@ -153,7 +204,7 @@ endif(DEFINED CMAKE_REQUIRED_LIBRARIES)
set(CMAKE_REQUIRED_LIBRARIES)
if(HAVE_DLFCN_H)
- set(HAVE_DLFCN_H 1)
+ set(HAVE_DLFCN_H 1)
endif(HAVE_DLFCN_H)
set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS})
@@ -169,19 +220,19 @@ if(LIB_png)
set(CMAKE_REQUIRED_LIBRARIES)
endif(LIB_png)
-CHECK_FUNCTION_EXISTS(scandir HAVE_SCANDIR)
-CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
+CHECK_FUNCTION_EXISTS(scandir HAVE_SCANDIR)
+CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF)
# not really true but we convert strcasecmp calls to _stricmp calls in flstring.h
if(MSVC)
set(HAVE_STRCASECMP 1)
endif(MSVC)
-CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
+CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
-CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
-CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY)
-CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
+CHECK_FUNCTION_EXISTS(strlcat HAVE_STRLCAT)
+CHECK_FUNCTION_EXISTS(strlcpy HAVE_STRLCPY)
+CHECK_FUNCTION_EXISTS(vsnprintf HAVE_VSNPRINTF)
if(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
set(MSG "POSIX compatible scandir")
@@ -231,6 +282,10 @@ endif (DOXYGEN_FOUND)
# message("LaTex found : ${LATEX_FOUND}")
# message("LaTex Compiler : ${LATEX_COMPILER}")
+# Cleanup: unset local variables
+
+unset (CMAKE_REQUIRED_QUIET)
+
#
# End of "$Id$".
#
diff --git a/CMake/variables.cmake b/CMake/variables.cmake
index d20964201..9719435cf 100644
--- a/CMake/variables.cmake
+++ b/CMake/variables.cmake
@@ -4,7 +4,7 @@
# This file sets variables for common use in export.cmake and install.cmake
# Written by Michael Surette
#
-# Copyright 1998-2015 by Bill Spitzak and others.
+# Copyright 1998-2018 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
@@ -18,37 +18,88 @@
#
#######################################################################
-set(FL_MAJOR_VERSION ${FLTK_VERSION_MAJOR})
-set(FL_MINOR_VERSION ${FLTK_VERSION_MINOR})
-set(FL_PATCH_VERSION ${FLTK_VERSION_PATCH})
+set (FL_MAJOR_VERSION ${FLTK_VERSION_MAJOR})
+set (FL_MINOR_VERSION ${FLTK_VERSION_MINOR})
+set (FL_PATCH_VERSION ${FLTK_VERSION_PATCH})
+
+set (DEBUG_VARIABLES_CMAKE 0)
+if (DEBUG_VARIABLES_CMAKE)
+ message (STATUS "[** variables.cmake **]")
+ fl_debug_var (CMAKE_EXE_LINKER_FLAGS)
+ fl_debug_var (LDFLAGS)
+ fl_debug_var (LIBS)
+ fl_debug_var (GLLIBS)
+ fl_debug_var (IMAGELIBS)
+ fl_debug_var (STATICIMAGELIBS)
+ fl_debug_var (FLTK_LDLIBS)
+ fl_debug_var (LIB_jpeg)
+ fl_debug_var (LIB_png)
+ fl_debug_var (LIB_zlib)
+endif (DEBUG_VARIABLES_CMAKE)
#######################################################################
-# add several libraries (STR #3011)
-# FIXME: libraries may need reordering, and this version does not yet
-# correctly support static linking and local zlib, png, and jpeg libs.
+# add several libraries
+# FIXME: libraries may need reordering.
-if(LIB_fontconfig)
- list(APPEND FLTK_LDLIBS -lfontconfig)
-endif(LIB_fontconfig)
+if (LIB_fontconfig)
+ list(APPEND FLTK_LDLIBS -lfontconfig)
+endif (LIB_fontconfig)
-if(HAVE_DLSYM)
- list(APPEND FLTK_LDLIBS -ldl)
-endif(HAVE_DLSYM)
+if (HAVE_DLSYM AND NOT WIN32)
+ list(APPEND FLTK_LDLIBS -ldl)
+endif (HAVE_DLSYM AND NOT WIN32)
-if(LIB_png)
- list(APPEND IMAGELIBS -lpng)
-endif(LIB_png)
+#######################################################################
+# Set variables for fltk-config (generated from fltk-config.in)
+#######################################################################
+
+# Variables in fltk-config.in (@VAR@) are used in configure(.ac)
+# and in CMake so their names and usage must be synchronized.
+# CMake generates two instances of fltk-config, one that can be used
+# directly in the build tree (see export.cmake) and one that is copied
+# to the installation directory (see install.cmake). Common variables
+# should be set here, whereas variables with different values should
+# be set in install.cmake or export.cmake, respectively.
+
+if (WIN32)
+ set (LDFLAGS "${CMAKE_EXE_LINKER_FLAGS} -mwindows")
+endif ()
-if(LIB_zlib)
- list(APPEND IMAGELIBS -lz)
-endif(LIB_zlib)
+set (IMAGELIBS)
+set (STATICIMAGELIBS)
-if(LIB_jpeg)
- list(APPEND IMAGELIBS -ljpeg)
-endif(LIB_jpeg)
+if (FLTK_BUILTIN_JPEG_FOUND)
+ list(APPEND IMAGELIBS -lfltk_jpeg)
+ list(APPEND STATICIMAGELIBS \$libdir/libfltk_jpeg.a)
+else ()
+ if (LIB_jpeg)
+ list(APPEND IMAGELIBS -ljpeg)
+ list(APPEND STATICIMAGELIBS -ljpeg)
+ endif (LIB_jpeg)
+endif (FLTK_BUILTIN_JPEG_FOUND)
+
+if (FLTK_BUILTIN_PNG_FOUND)
+ list(APPEND IMAGELIBS -lfltk_png)
+ list(APPEND STATICIMAGELIBS \$libdir/libfltk_png.a)
+else ()
+ if (LIB_png)
+ list(APPEND IMAGELIBS -lpng)
+ list(APPEND STATICIMAGELIBS -lpng)
+ endif (LIB_png)
+endif (FLTK_BUILTIN_PNG_FOUND)
+
+if (FLTK_BUILTIN_ZLIB_FOUND)
+ list(APPEND IMAGELIBS -lfltk_z)
+ list(APPEND STATICIMAGELIBS \$libdir/libfltk_z.a)
+else ()
+ if (LIB_zlib)
+ list(APPEND IMAGELIBS -lz)
+ list(APPEND STATICIMAGELIBS -lz)
+ endif (LIB_zlib)
+endif (FLTK_BUILTIN_ZLIB_FOUND)
string(REPLACE ";" " " IMAGELIBS "${IMAGELIBS}")
-set(STATICIMAGELIBS "${IMAGELIBS}")
+string(REPLACE ";" " " STATICIMAGELIBS "${STATICIMAGELIBS}")
#######################################################################
set(CC ${CMAKE_C_COMPILER})
@@ -57,9 +108,9 @@ set(CXX ${CMAKE_CXX_COMPILER})
set(ARCHFLAGS ${OPTION_ARCHFLAGS})
string(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_UPPER)
-if(${BUILD_UPPER})
+if (${BUILD_UPPER})
set(CFLAGS "${CMAKE_C_FLAGS_${BUILD_UPPER}} ${CFLAGS}")
-endif(${BUILD_UPPER})
+endif (${BUILD_UPPER})
set(CFLAGS "${OPTION_OPTIM} ${CMAKE_C_FLAGS} ${CFLAGS}")
foreach(arg ${FLTK_CFLAGS})
@@ -79,3 +130,18 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
else ()
set(SHAREDSUFFIX "")
endif (${CMAKE_SYSTEM_NAME} STREQUAL "AIX")
+
+if (DEBUG_VARIABLES_CMAKE)
+ fl_debug_var (CMAKE_EXE_LINKER_FLAGS)
+ fl_debug_var (LDFLAGS)
+ fl_debug_var (LIBS)
+ fl_debug_var (GLLIBS)
+ fl_debug_var (IMAGELIBS)
+ fl_debug_var (STATICIMAGELIBS)
+ fl_debug_var (FLTK_LDLIBS)
+ fl_debug_var (LIB_jpeg)
+ fl_debug_var (LIB_png)
+ fl_debug_var (LIB_zlib)
+ message (STATUS "[** end of variables.cmake **]")
+endif (DEBUG_VARIABLES_CMAKE)
+unset (DEBUG_VARIABLES_CMAKE)