1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
OPTION(USE_HUNTER "Use Hunter cmake package handler" OFF)
if(USE_HUNTER)
include(${CMAKE_CURRENT_LIST_DIR}/CMakeModules/HunterGate.cmake)
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.18.43.tar.gz"
SHA1 "d2c8c42cd07f7cefe18fd9a9b9c13114b1a15a27"
# LOCAL
)
endif()
PROJECT(FORGE)
SET_PROPERTY(GLOBAL PROPERTY USE_FOLDERS ON)
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
INCLUDE(FGInstallDirs)
INCLUDE(Version)
############################## BEGIN - CMAKE OPTIONS ##########################
OPTION(BUILD_DOCUMENTATION "Build Documentation" OFF)
OPTION(BUILD_EXAMPLES "Build Examples" ON)
OPTION(USE_FREEIMAGE "Use freeimage to allow saving of charts" ON)
# Set a default build type if none was specified
IF(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"MinSizeRel" "RelWithDebInfo")
ENDIF()
############################## END - CMAKE OPTIONS ##########################
############################## BEGIN - OS Definitions #########################
IF(UNIX)
ADD_DEFINITIONS(-Wall -std=c++11 -fvisibility=hidden)
ENDIF()
IF(UNIX)
IF(APPLE)
ADD_DEFINITIONS(-DOS_MAC)
SET(CMAKE_MACOSX_RPATH ON)
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}")
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}")
ENDIF("${isSystemDir}" STREQUAL "-1")
ELSE(APPLE)
ADD_DEFINITIONS(-DOS_LNX)
ENDIF(APPLE)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
ELSE(UNIX)
ADD_DEFINITIONS(-DOS_WIN -DNOMINMAX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
ENDIF(UNIX)
############################## END - OS Definitions ###########################
INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/include")
## X11 libraries need to be explicitly linked on MacOS
## This is required by both examples and the library itself
## Hence, it is placed here.
SET(X11_LIBS "")
IF(APPLE)
FIND_PACKAGE(X11 REQUIRED)
INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR})
SET(X11_LIBS ${X11_LIBRARIES})
ENDIF(APPLE)
ADD_SUBDIRECTORY(src/backend)
IF(BUILD_EXAMPLES)
ADD_SUBDIRECTORY(examples)
ENDIF()
# Generate documentation
IF(BUILD_DOCUMENTATION)
ADD_SUBDIRECTORY(docs)
ENDIF(BUILD_DOCUMENTATION)
#--------------------------------------------------------------------
# Create generated files
#--------------------------------------------------------------------
INCLUDE(CMakePackageConfigHelpers)
configure_package_config_file("${PROJECT_SOURCE_DIR}/CMakeModules/ForgeConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/ForgeConfig.cmake"
INSTALL_DESTINATION ${FG_INSTALL_CMAKE_DIR}
PATH_VARS CMAKE_INSTALL_PREFIX
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/ForgeConfigVersion.cmake"
VERSION ${FG_VERSION}
COMPATIBILITY SameMajorVersion)
#--------------------------------------------------------------------
# Install files other than the library, examples and docs
# The library is installed by src/backend/*/CMakeLists.txt
#--------------------------------------------------------------------
INSTALL(DIRECTORY "${PROJECT_SOURCE_DIR}/include/" DESTINATION "${FG_INSTALL_INC_DIR}"
FILES_MATCHING
PATTERN "*.h"
PATTERN "*.hpp"
PATTERN ".gitignore" EXCLUDE
)
INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/ForgeConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/ForgeConfigVersion.cmake"
DESTINATION ${FG_INSTALL_CMAKE_DIR})
# We are only installing the source files for examples.
# So this should not depend on the value of BUILD_EXAMPLES
# These examples will be installed without building the executables for the examples
INSTALL(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/examples/"
DESTINATION "${FG_INSTALL_EXAMPLE_DIR}"
COMPONENT examples)
INSTALL(FILES
"${PROJECT_SOURCE_DIR}/CMakeModules/FindOpenCL.cmake"
DESTINATION "${FG_INSTALL_EXAMPLE_DIR}/CMakeModules/"
COMPONENT examples)
|