File: CMakeLists.txt

package info (click to toggle)
forge 1.0.1-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,324 kB
  • sloc: cpp: 12,447; ansic: 319; xml: 182; makefile: 19
file content (130 lines) | stat: -rw-r--r-- 4,695 bytes parent folder | download
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)