Reorder CMake build options for better order of include directories
This is only one minor step to remove issues of some CMake options that can cause conflicting include directories ("-I..." switches). See implementation note in CMake/options.cmake.
This commit is contained in:
parent
6c07d7b597
commit
b4bbc53c5e
@ -15,6 +15,38 @@
|
||||
# https://www.fltk.org/bugs.php
|
||||
#
|
||||
|
||||
#######################################################################
|
||||
# Important implementation note for FLTK developers
|
||||
#######################################################################
|
||||
#
|
||||
# *FIXME* In the current version of FLTK's CMake build files we're
|
||||
# using 'include_directories()' to define directories that must be
|
||||
# used in compile commands (typically "-Idirectories").
|
||||
#
|
||||
# include_directories() is a global command that affects *all* source
|
||||
# files in the current directory and all subdirectories. This can lead
|
||||
# to conflicts and should be replaced with target_include_directories()
|
||||
# which can be applied to particular targets and source files only.
|
||||
#
|
||||
# This could remove some of these potential build conflicts, for
|
||||
# instance # if the bundled image libs and Cairo or Pango are used
|
||||
# together (Pango depends on Cairo and Cairo depends on libpng).
|
||||
# However, this is not a proper solution!
|
||||
#
|
||||
# That said, order of "-I..." switches matters, and therefore the
|
||||
# bundled libraries (png, jpeg, zlib) *must* appear before any other
|
||||
# include_directories() statements that might introduce conflicts.
|
||||
# Currently 'resources.cmake' is included before this file and thus
|
||||
# 'include_directories (${FREETYPE_PATH})' is executed before this
|
||||
# file but this doesn't matter.
|
||||
#
|
||||
# This *MUST* be fixed using target_include_directories() as
|
||||
# appropriate but this would need a major rework.
|
||||
#
|
||||
# Albrecht-S April 6, 2022
|
||||
#
|
||||
#######################################################################
|
||||
|
||||
set (DEBUG_OPTIONS_CMAKE 0)
|
||||
if (DEBUG_OPTIONS_CMAKE)
|
||||
message (STATUS "[** options.cmake **]")
|
||||
@ -46,6 +78,118 @@ set (OPTION_ABI_VERSION ""
|
||||
set (FL_ABI_VERSION ${OPTION_ABI_VERSION})
|
||||
|
||||
#######################################################################
|
||||
# Bundled Library Options
|
||||
#######################################################################
|
||||
|
||||
option (OPTION_USE_SYSTEM_ZLIB "use system zlib" ON)
|
||||
|
||||
if (APPLE)
|
||||
option (OPTION_USE_SYSTEM_LIBJPEG "use system libjpeg" OFF)
|
||||
option (OPTION_USE_SYSTEM_LIBPNG "use system libpng" OFF)
|
||||
else ()
|
||||
option (OPTION_USE_SYSTEM_LIBJPEG "use system libjpeg" ON)
|
||||
option (OPTION_USE_SYSTEM_LIBPNG "use system libpng" ON)
|
||||
endif ()
|
||||
|
||||
#######################################################################
|
||||
# Bundled Compression Library : zlib
|
||||
#######################################################################
|
||||
|
||||
if (OPTION_USE_SYSTEM_ZLIB)
|
||||
find_package (ZLIB)
|
||||
endif ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)
|
||||
set (FLTK_USE_BUILTIN_ZLIB FALSE)
|
||||
set (FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
|
||||
include_directories (${ZLIB_INCLUDE_DIRS})
|
||||
else()
|
||||
if (OPTION_USE_SYSTEM_ZLIB)
|
||||
message (STATUS "cannot find system zlib library - using built-in\n")
|
||||
endif ()
|
||||
|
||||
add_subdirectory (zlib)
|
||||
set (FLTK_USE_BUILTIN_ZLIB TRUE)
|
||||
set (FLTK_ZLIB_LIBRARIES fltk_z)
|
||||
set (ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib)
|
||||
include_directories (${CMAKE_CURRENT_SOURCE_DIR}/zlib)
|
||||
endif ()
|
||||
|
||||
set (HAVE_LIBZ 1)
|
||||
|
||||
#######################################################################
|
||||
# Bundled Image Library : libjpeg
|
||||
#######################################################################
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBJPEG)
|
||||
find_package (JPEG)
|
||||
endif ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
|
||||
set (FLTK_USE_BUILTIN_JPEG FALSE)
|
||||
set (FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
|
||||
include_directories (${JPEG_INCLUDE_DIR})
|
||||
else ()
|
||||
if (OPTION_USE_SYSTEM_LIBJPEG)
|
||||
message (STATUS "cannot find system jpeg library - using built-in\n")
|
||||
endif ()
|
||||
|
||||
add_subdirectory (jpeg)
|
||||
set (FLTK_USE_BUILTIN_JPEG TRUE)
|
||||
set (FLTK_JPEG_LIBRARIES fltk_jpeg)
|
||||
include_directories (${CMAKE_CURRENT_SOURCE_DIR}/jpeg)
|
||||
endif ()
|
||||
|
||||
set (HAVE_LIBJPEG 1)
|
||||
|
||||
#######################################################################
|
||||
# Bundled Image Library : libpng
|
||||
#######################################################################
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBPNG)
|
||||
find_package (PNG)
|
||||
endif ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)
|
||||
|
||||
set (FLTK_USE_BUILTIN_PNG FALSE)
|
||||
set (FLTK_PNG_LIBRARIES ${PNG_LIBRARIES})
|
||||
include_directories (${PNG_INCLUDE_DIRS})
|
||||
add_definitions (${PNG_DEFINITIONS})
|
||||
|
||||
set (_INCLUDE_SAVED ${CMAKE_REQUIRED_INCLUDES})
|
||||
list (APPEND CMAKE_REQUIRED_INCLUDES ${PNG_INCLUDE_DIRS})
|
||||
|
||||
# Note: we do not check for <libpng/png.h> explicitly.
|
||||
# This is assumed to exist if we have PNG_FOUND and don't find <png.h>
|
||||
|
||||
# FIXME - Force search by unsetting the chache variable. Maybe use
|
||||
# FIXME - another cache variable to check for option changes?
|
||||
|
||||
unset (HAVE_PNG_H CACHE) # force search
|
||||
check_include_file (png.h HAVE_PNG_H)
|
||||
mark_as_advanced (HAVE_PNG_H)
|
||||
|
||||
set (CMAKE_REQUIRED_INCLUDES ${_INCLUDE_SAVED})
|
||||
unset (_INCLUDE_SAVED)
|
||||
|
||||
else ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBPNG)
|
||||
message (STATUS "cannot find system png library - using built-in\n")
|
||||
endif ()
|
||||
|
||||
add_subdirectory (png)
|
||||
set (FLTK_USE_BUILTIN_PNG TRUE)
|
||||
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)
|
||||
endif ()
|
||||
|
||||
set (HAVE_LIBPNG 1)
|
||||
|
||||
#######################################################################
|
||||
if (UNIX)
|
||||
option (OPTION_CREATE_LINKS "create backwards compatibility links" OFF)
|
||||
@ -365,114 +509,6 @@ if (debug_threads)
|
||||
endif (debug_threads)
|
||||
unset (debug_threads)
|
||||
|
||||
#######################################################################
|
||||
# Image Library Options
|
||||
#######################################################################
|
||||
|
||||
option (OPTION_USE_SYSTEM_ZLIB "use system zlib" ON)
|
||||
|
||||
if (APPLE)
|
||||
option (OPTION_USE_SYSTEM_LIBJPEG "use system libjpeg" OFF)
|
||||
option (OPTION_USE_SYSTEM_LIBPNG "use system libpng" OFF)
|
||||
else ()
|
||||
option (OPTION_USE_SYSTEM_LIBJPEG "use system libjpeg" ON)
|
||||
option (OPTION_USE_SYSTEM_LIBPNG "use system libpng" ON)
|
||||
endif ()
|
||||
|
||||
#######################################################################
|
||||
# Image Library : ZLIB
|
||||
#######################################################################
|
||||
|
||||
if (OPTION_USE_SYSTEM_ZLIB)
|
||||
find_package (ZLIB)
|
||||
endif ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)
|
||||
set (FLTK_USE_BUILTIN_ZLIB FALSE)
|
||||
set (FLTK_ZLIB_LIBRARIES ${ZLIB_LIBRARIES})
|
||||
include_directories (${ZLIB_INCLUDE_DIRS})
|
||||
else()
|
||||
if (OPTION_USE_SYSTEM_ZLIB)
|
||||
message (STATUS "cannot find system zlib library - using built-in\n")
|
||||
endif ()
|
||||
|
||||
add_subdirectory (zlib)
|
||||
set (FLTK_USE_BUILTIN_ZLIB TRUE)
|
||||
set (FLTK_ZLIB_LIBRARIES fltk_z)
|
||||
set (ZLIB_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/zlib)
|
||||
include_directories (${CMAKE_CURRENT_SOURCE_DIR}/zlib)
|
||||
endif ()
|
||||
|
||||
set (HAVE_LIBZ 1)
|
||||
|
||||
#######################################################################
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBJPEG)
|
||||
find_package (JPEG)
|
||||
endif ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
|
||||
set (FLTK_USE_BUILTIN_JPEG FALSE)
|
||||
set (FLTK_JPEG_LIBRARIES ${JPEG_LIBRARIES})
|
||||
include_directories (${JPEG_INCLUDE_DIR})
|
||||
else ()
|
||||
if (OPTION_USE_SYSTEM_LIBJPEG)
|
||||
message (STATUS "cannot find system jpeg library - using built-in\n")
|
||||
endif ()
|
||||
|
||||
add_subdirectory (jpeg)
|
||||
set (FLTK_USE_BUILTIN_JPEG TRUE)
|
||||
set (FLTK_JPEG_LIBRARIES fltk_jpeg)
|
||||
include_directories (${CMAKE_CURRENT_SOURCE_DIR}/jpeg)
|
||||
endif ()
|
||||
|
||||
set (HAVE_LIBJPEG 1)
|
||||
|
||||
#######################################################################
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBPNG)
|
||||
find_package (PNG)
|
||||
endif ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)
|
||||
|
||||
set (FLTK_USE_BUILTIN_PNG FALSE)
|
||||
set (FLTK_PNG_LIBRARIES ${PNG_LIBRARIES})
|
||||
include_directories (${PNG_INCLUDE_DIRS})
|
||||
add_definitions (${PNG_DEFINITIONS})
|
||||
|
||||
set (_INCLUDE_SAVED ${CMAKE_REQUIRED_INCLUDES})
|
||||
list (APPEND CMAKE_REQUIRED_INCLUDES ${PNG_INCLUDE_DIRS})
|
||||
|
||||
# Note: we do not check for <libpng/png.h> explicitly.
|
||||
# This is assumed to exist if we have PNG_FOUND and don't find <png.h>
|
||||
|
||||
# FIXME - Force search by unsetting the chache variable. Maybe use
|
||||
# FIXME - another cache variable to check for option changes?
|
||||
|
||||
unset (HAVE_PNG_H CACHE) # force search
|
||||
check_include_file (png.h HAVE_PNG_H)
|
||||
mark_as_advanced (HAVE_PNG_H)
|
||||
|
||||
set (CMAKE_REQUIRED_INCLUDES ${_INCLUDE_SAVED})
|
||||
unset (_INCLUDE_SAVED)
|
||||
|
||||
else ()
|
||||
|
||||
if (OPTION_USE_SYSTEM_LIBPNG)
|
||||
message (STATUS "cannot find system png library - using built-in\n")
|
||||
endif ()
|
||||
|
||||
add_subdirectory (png)
|
||||
set (FLTK_USE_BUILTIN_PNG TRUE)
|
||||
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)
|
||||
endif ()
|
||||
|
||||
set (HAVE_LIBPNG 1)
|
||||
|
||||
#######################################################################
|
||||
if (X11_Xinerama_FOUND)
|
||||
|
Loading…
Reference in New Issue
Block a user