summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbrecht Schlosser <albrechts.fltk@online.de>2018-01-10 20:49:03 +0000
committerAlbrecht Schlosser <albrechts.fltk@online.de>2018-01-10 20:49:03 +0000
commit7aef0cad39e55e6fb18917cf80ddb7aa433b1180 (patch)
tree682ab60af955d291104d03a0c4f4d89934c5b6b8
parentb47dc05909a5c00ef34847c3550b82eebaaad749 (diff)
CMake: enable building FLTK in a subdirectory of another project.
Basically replace CMAKE_XXX_DIR with CMAKE_CURRENT_XXX_DIR where XXX = SOURCE or BINARY. Patch proposal by cleanrock, FLTK PR #4: https://github.com/fltk/test-only/pull/4 Patch modified to fix target dirs for test programs and doxygen docs. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12630 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
-rw-r--r--CMake/export.cmake34
-rw-r--r--CMake/install.cmake30
-rw-r--r--CMake/options.cmake10
-rw-r--r--CMake/resources.cmake6
-rw-r--r--CMake/setup.cmake16
-rw-r--r--CMakeLists.txt6
-rw-r--r--documentation/CMakeLists.txt6
-rw-r--r--documentation/Doxyfile.in20
-rw-r--r--test/CMakeLists.txt4
9 files changed, 68 insertions, 64 deletions
diff --git a/CMake/export.cmake b/CMake/export.cmake
index 84ee0d748..7a7f94f89 100644
--- a/CMake/export.cmake
+++ b/CMake/export.cmake
@@ -4,7 +4,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2017 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
@@ -42,43 +42,43 @@ endif(CMAKE_CROSSCOMPILING)
add_subdirectory(src)
# generate FLTK-Targets.cmake for build directory use
-export(TARGETS ${FLUID} ${FLTK_LIBRARIES} FILE ${CMAKE_BINARY_DIR}/FLTK-Targets.cmake)
+export(TARGETS ${FLUID} ${FLTK_LIBRARIES} FILE ${CMAKE_CURRENT_BINARY_DIR}/FLTK-Targets.cmake)
# generate FLTKConfig.cmake for build directory use
set(INCLUDE_DIRS "${FLTK_INCLUDE_DIRS}")
-set(CONFIG_PATH ${CMAKE_BINARY_DIR})
+set(CONFIG_PATH ${CMAKE_CURRENT_BINARY_DIR})
configure_file(
- ${CMAKE_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
- ${CMAKE_BINARY_DIR}/FLTKConfig.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/FLTKConfig.cmake
@ONLY
)
# generate UseFLTK.cmake for build directory use
configure_file(
- ${CMAKE_SOURCE_DIR}/CMake/UseFLTK.cmake.in
- ${CMAKE_BINARY_DIR}/UseFLTK.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/UseFLTK.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/UseFLTK.cmake
@ONLY
)
# generate fltk-config for build directory use
-set(prefix ${CMAKE_BINARY_DIR})
+set(prefix ${CMAKE_CURRENT_BINARY_DIR})
set(exec_prefix "\${prefix}")
-set(includedir "${CMAKE_SOURCE_DIR}")
-set(BINARY_DIR "${CMAKE_BINARY_DIR}")
+set(includedir "${CMAKE_CURRENT_SOURCE_DIR}")
+set(BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
set(libdir "\${exec_prefix}/lib")
set(srcdir ".")
set(LIBNAME "${libdir}/libfltk.a")
configure_file(
- "${CMAKE_SOURCE_DIR}/fltk-config.in"
- "${CMAKE_BINARY_DIR}/fltk-config"
+ "${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_BINARY_DIR}"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
)
endif(UNIX)
@@ -102,8 +102,8 @@ set(CONFIG_H config.h)
# generate config.h
configure_file(
- "${CMAKE_SOURCE_DIR}/${CONFIG_H_IN}"
- "${CMAKE_BINARY_DIR}/${CONFIG_H}"
+ "${CMAKE_CURRENT_SOURCE_DIR}/${CONFIG_H_IN}"
+ "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG_H}"
@ONLY
)
@@ -115,8 +115,8 @@ if(OPTION_CREATE_LINKS)
set(PREFIX_INCLUDE "${CMAKE_INSTALL_PREFIX}/${FLTK_INCLUDEDIR}")
endif(IS_ABSOLUTE ${FLTK_INCLUDEDIR})
configure_file(
- "${CMAKE_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
- "${CMAKE_BINARY_DIR}/install-symlinks.cmake"
+ "${CMAKE_CURRENT_SOURCE_DIR}/CMake/install-symlinks.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake"
@ONLY
)
endif(OPTION_CREATE_LINKS)
diff --git a/CMake/install.cmake b/CMake/install.cmake
index f3eb3b3a0..cb4f8fe71 100644
--- a/CMake/install.cmake
+++ b/CMake/install.cmake
@@ -4,7 +4,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2017 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
@@ -31,17 +31,17 @@ add_custom_target(uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
)
-install(DIRECTORY ${CMAKE_SOURCE_DIR}/FL
+install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/FL
DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
PATTERN ".svn" EXCLUDE
)
-install(DIRECTORY ${CMAKE_BINARY_DIR}/FL
+install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/FL
DESTINATION ${FLTK_INCLUDEDIR} USE_SOURCE_PERMISSIONS
)
if(OPTION_CREATE_LINKS)
- install(SCRIPT ${CMAKE_BINARY_DIR}/install-symlinks.cmake)
+ install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install-symlinks.cmake)
endif(OPTION_CREATE_LINKS)
# generate FLTKConfig.cmake for installed directory use
@@ -55,22 +55,22 @@ install(EXPORT FLTK-Targets
)
configure_file(
- ${CMAKE_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
- ${CMAKE_BINARY_DIR}/etc/FLTKConfig.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/FLTKConfig.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
@ONLY
)
-install(FILES ${CMAKE_BINARY_DIR}/etc/FLTKConfig.cmake
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/etc/FLTKConfig.cmake
DESTINATION ${FLTK_CONFIG_PATH}
)
configure_file(
- ${CMAKE_SOURCE_DIR}/CMake/UseFLTK.cmake.in
- ${CMAKE_BINARY_DIR}/etc/UseFLTK.cmake
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/UseFLTK.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/etc/UseFLTK.cmake
@ONLY
)
-install(FILES ${CMAKE_BINARY_DIR}/etc/UseFLTK.cmake
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/etc/UseFLTK.cmake
DESTINATION ${FLTK_CONFIG_PATH}
)
@@ -85,24 +85,24 @@ set(srcdir ".")
set(LIBNAME "${libdir}/libfltk.a")
configure_file(
- "${CMAKE_SOURCE_DIR}/fltk-config.in"
- "${CMAKE_BINARY_DIR}/bin/fltk-config"
+ "${CMAKE_CURRENT_SOURCE_DIR}/fltk-config.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config"
@ONLY
)
if(UNIX)
execute_process(COMMAND chmod 755 fltk-config
- WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bin"
)
endif(UNIX)
-install(PROGRAMS ${CMAKE_BINARY_DIR}/bin/fltk-config
+install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/bin/fltk-config
DESTINATION ${FLTK_BINDIR}
)
if(UNIX OR MSYS OR (MINGW AND CMAKE_CROSSCOMPILING))
macro(INSTALL_MAN FILE LEVEL)
install(FILES
- ${CMAKE_SOURCE_DIR}/documentation/src/${FILE}.man
+ ${CMAKE_CURRENT_SOURCE_DIR}/documentation/src/${FILE}.man
DESTINATION ${FLTK_MANDIR}/man${LEVEL}
RENAME ${FILE}.${LEVEL}
)
diff --git a/CMake/options.cmake b/CMake/options.cmake
index 60e9fc0e0..187e1e67e 100644
--- a/CMake/options.cmake
+++ b/CMake/options.cmake
@@ -4,7 +4,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2017 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
@@ -282,8 +282,8 @@ if(OPTION_USE_SYSTEM_ZLIB AND ZLIB_FOUND)
else()
add_subdirectory(zlib)
set(FLTK_ZLIB_LIBRARIES fltk_z)
- set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/zlib)
- include_directories(${CMAKE_SOURCE_DIR}/zlib)
+ 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)
@@ -307,7 +307,7 @@ if(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
else()
add_subdirectory(jpeg)
set(FLTK_JPEG_LIBRARIES fltk_jpeg)
- include_directories(${CMAKE_SOURCE_DIR}/jpeg)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/jpeg)
set(FLTK_BUILTIN_JPEG_FOUND TRUE)
endif(OPTION_USE_SYSTEM_LIBJPEG AND JPEG_FOUND)
@@ -335,7 +335,7 @@ else()
set(HAVE_PNG_H 1)
set(HAVE_PNG_GET_VALID 1)
set(HAVE_PNG_SET_TRNS_TO_ALPHA 1)
- include_directories(${CMAKE_SOURCE_DIR}/png)
+ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/png)
set(FLTK_BUILTIN_PNG_FOUND TRUE)
endif(OPTION_USE_SYSTEM_LIBPNG AND PNG_FOUND)
diff --git a/CMake/resources.cmake b/CMake/resources.cmake
index fb2308bd6..71fc9c4c3 100644
--- a/CMake/resources.cmake
+++ b/CMake/resources.cmake
@@ -4,7 +4,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2017 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
@@ -187,8 +187,8 @@ if(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX)
set(MSG "POSIX compatible scandir")
message(STATUS "Looking for ${MSG}")
try_compile(V
- ${CMAKE_BINARY_DIR}
- ${CMAKE_SOURCE_DIR}/CMake/posixScandir.cxx
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/CMake/posixScandir.cxx
)
if(V)
message(STATUS "${MSG} - found")
diff --git a/CMake/setup.cmake b/CMake/setup.cmake
index a31016dff..fd70d44d8 100644
--- a/CMake/setup.cmake
+++ b/CMake/setup.cmake
@@ -4,7 +4,7 @@
# CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2017 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
@@ -28,16 +28,20 @@ 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_BINARY_DIR}/bin)
-set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
-set(ARCHIVE_OUTPUT_PATH ${CMAKE_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_SOURCE_DIR}/CMake")
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
-set(FLTK_INCLUDE_DIRS ${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR})
+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.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8f1c5653a..c70f65074 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,7 @@
# Main CMakeLists.txt to build the FLTK project using CMake (www.cmake.org)
# Written by Michael Surette
#
-# Copyright 1998-2014 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
@@ -58,8 +58,8 @@ include(CMake/variables.cmake)
include(CMake/export.cmake)
configure_file(
- ${CMAKE_SOURCE_DIR}/abi-version.cmake.in
- ${CMAKE_BINARY_DIR}/FL/abi-version.h
+ ${CMAKE_CURRENT_SOURCE_DIR}/abi-version.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/FL/abi-version.h
@ONLY
)
diff --git a/documentation/CMakeLists.txt b/documentation/CMakeLists.txt
index 08a8493ab..f5b82dfb7 100644
--- a/documentation/CMakeLists.txt
+++ b/documentation/CMakeLists.txt
@@ -3,7 +3,7 @@
#
# CMakeLists.txt to build docs for the FLTK project using CMake (www.cmake.org)
#
-# 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
@@ -123,7 +123,7 @@ endif (DOCS)
if(OPTION_INSTALL_HTML_DOCUMENTATION AND OPTION_BUILD_HTML_DOCUMENTATION)
- install(DIRECTORY ${CMAKE_BINARY_DIR}/documentation/html
+ install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html
DESTINATION ${FLTK_DATADIR}/doc/fltk
)
@@ -131,7 +131,7 @@ endif(OPTION_INSTALL_HTML_DOCUMENTATION AND OPTION_BUILD_HTML_DOCUMENTATION)
if(OPTION_INSTALL_PDF_DOCUMENTATION AND OPTION_BUILD_PDF_DOCUMENTATION)
- install(FILES ${CMAKE_BINARY_DIR}/documentation/fltk.pdf
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/fltk.pdf
DESTINATION ${FLTK_DATADIR}/doc/fltk/
)
diff --git a/documentation/Doxyfile.in b/documentation/Doxyfile.in
index b3e22c687..3faed9254 100644
--- a/documentation/Doxyfile.in
+++ b/documentation/Doxyfile.in
@@ -565,9 +565,9 @@ INPUT += @CMAKE_CURRENT_SOURCE_DIR@/src/opengl.dox
INPUT += @CMAKE_CURRENT_SOURCE_DIR@/src/fluid.dox
INPUT += @CMAKE_CURRENT_SOURCE_DIR@/src/advanced.dox
INPUT += @CMAKE_CURRENT_SOURCE_DIR@/src/unicode.dox
-INPUT += @CMAKE_SOURCE_DIR@/FL
-INPUT += @CMAKE_SOURCE_DIR@/src
-INPUT += @CMAKE_SOURCE_DIR@/cairo
+INPUT += @FLTK_SOURCE_DIR@/FL
+INPUT += @FLTK_SOURCE_DIR@/src
+INPUT += @FLTK_SOURCE_DIR@/cairo
INPUT += @CMAKE_CURRENT_SOURCE_DIR@/src/enumerations.dox
INPUT += @CMAKE_CURRENT_SOURCE_DIR@/src/glut.dox
INPUT += @CMAKE_CURRENT_SOURCE_DIR@/src/forms.dox
@@ -610,13 +610,13 @@ RECURSIVE = YES
# excluded from the INPUT source files. This way you can easily exclude a
# subdirectory from a directory tree whose root is specified with the INPUT tag.
-EXCLUDE = @CMAKE_SOURCE_DIR@/src/drivers/
-EXCLUDE += @CMAKE_SOURCE_DIR@/src/fl_dnd_win32.cxx
-EXCLUDE += @CMAKE_SOURCE_DIR@/src/fl_dnd_x.cxx
-EXCLUDE += @CMAKE_SOURCE_DIR@/src/fl_font_mac.cxx
-EXCLUDE += @CMAKE_SOURCE_DIR@/src/fl_font_win32.cxx
-EXCLUDE += @CMAKE_SOURCE_DIR@/src/Fl_get_key_mac.cxx
-EXCLUDE += @CMAKE_SOURCE_DIR@/src/Fl_get_key_win32.cxx
+EXCLUDE = @FLTK_SOURCE_DIR@/src/drivers/
+EXCLUDE += @FLTK_SOURCE_DIR@/src/fl_dnd_win32.cxx
+EXCLUDE += @FLTK_SOURCE_DIR@/src/fl_dnd_x.cxx
+EXCLUDE += @FLTK_SOURCE_DIR@/src/fl_font_mac.cxx
+EXCLUDE += @FLTK_SOURCE_DIR@/src/fl_font_win32.cxx
+EXCLUDE += @FLTK_SOURCE_DIR@/src/Fl_get_key_mac.cxx
+EXCLUDE += @FLTK_SOURCE_DIR@/src/Fl_get_key_win32.cxx
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
# directories that are symbolic links (a Unix filesystem feature) are excluded
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index e118d7c86..cc51d88bc 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -3,7 +3,7 @@
#
# CMakeLists.txt used to build test and demo apps by the CMake build system
#
-# Copyright 2004-2017 by Bill Spitzak and others.
+# Copyright 2004-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
@@ -17,7 +17,7 @@
#
#######################################################################
-set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin/examples)
+set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/../bin/examples)
#######################################################################
# audio libs for test apps