-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
112 lines (103 loc) · 4.17 KB
/
CMakeLists.txt
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
#=============================
# Preamble
#=============================
cmake_minimum_required(VERSION 3.17)
get_property(isMultiConfig GLOBAL
PROPERTY GENERATOR_IS_MULTI_CONFIG)
if(NOT isMultiConfig)
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "" CACHE STRING "")
set(CMAKE_BUILD_TYPE Release)
message(STATUS "VisualT: CMAKE_BUILD_TYPE is undefined. VisualT will default to ${CMAKE_BUILD_TYPE}")
endif()
set(allowedBuildTypes Debug Release RelWithDebInfo MinSizeRel)
if(NOT CMAKE_BUILD_TYPE IN_LIST allowedBuildTypes)
message(FATAL_ERROR "VisualT: unknown build type: ${CMAKE_BUILD_TYPE}")
endif()
else()
message(STATUS "VisualT: Hunter-managed dependencies will default to Release for multi-config generators")
# set for Hunter packages
set(CMAKE_BUILD_TYPE Release)
endif()
#=============================
# Hunter-related setup
#=============================
set(HUNTER_ROOT "${CMAKE_CURRENT_BINARY_DIR}/hunter" CACHE PATH "Path to Hunter root directory.")
option(HUNTER_BUILD_SHARED_LIBS "Build dependencies as shared libraries. Not explicitly supported." NO)
mark_as_advanced(HUNTER_ROOT HUNTER_BUILD_SHARED_LIBS)
option(VisualT_BUILD_SHARED_LIBS "Build VisualT libraries as shared libraries. A more specific alternative to BUILD_SHARED_LIBS." NO)
if(VisualT_BUILD_SHARED_LIBS)
set(BUILD_SHARED_LIBS YES)
endif()
option(VisualT_XP_IMPORTER "Enable the .xp importer library." NO)
if(VisualT_XP_IMPORTER)
list(APPEND HUNTER_PACKAGES "ZLIB")
if(BUILD_SHARED_LIBS)
list(APPEND HUNTER_ZLIB_CMAKE_ARGS
"CMAKE_POSITION_INDEPENDENT_CODE:BOOL=YES")
endif()
list(APPEND HUNTER_ZLIB_CMAKE_ARGS
"CMAKE_POLICY_DEFAULT_CMP0063:STRING=NEW"
"CMAKE_C_VISIBILITY_PRESET:BOOL=hidden"
"CMAKE_VISIBILITY_INLINES_HIDDEN:BOOL=YES")
endif()
include(FetchContent)
fetchcontent_declare(SetupHunter GIT_REPOSITORY https://github.com/cpp-pm/gate)
fetchcontent_makeavailable(SetupHunter)
#=============================
# Project wide setup
#=============================
project(VisualT
VERSION 2.0.0
DESCRIPTION "a text-based graphic library"
HOMEPAGE_URL "https://lucide.github.io/VisualT"
LANGUAGES C)
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)
#enable_testing()
set(CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc/${PROJECT_NAME}")
set(VisualT_export_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED YES)
set(CMAKE_C_EXTENSIONS NO)
set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
#=============================
# Top level project only
#=============================
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
if(NOT isMultiConfig)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY
STRINGS "${allowedBuildTypes}")
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY
HELPSTRING "Supported build types are: Debug, Release (default), RelWithDebInfo, and MinSizeRel")
endif()
message(DEBUG "installation directories:")
list(APPEND CMAKE_MESSAGE_INDENT " ")
message(DEBUG "default prefix \"${CMAKE_INSTALL_PREFIX}\"")
message(DEBUG "BINDIR \"${CMAKE_INSTALL_BINDIR}\"")
message(DEBUG "LIBDIR \"${CMAKE_INSTALL_LIBDIR}\"")
message(DEBUG "INCLUDEDIR \"${CMAKE_INSTALL_INCLUDEDIR}\"")
message(DEBUG "DATAROOTDIR \"${CMAKE_INSTALL_DATAROOTDIR}\"")
message(DEBUG "DATADIR \"${CMAKE_INSTALL_DATADIR}\"")
message(DEBUG "DOCDIR \"${CMAKE_INSTALL_DOCDIR}\"")
list(POP_BACK CMAKE_MESSAGE_INDENT)
endif()
#=============================
# Subdirectories
#=============================
add_subdirectory(src)
add_subdirectory(tests)
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
add_subdirectory(examples)
add_subdirectory(doc)
endif()
#=============================
# Installation
#=============================
write_basic_package_version_file("${PROJECT_BINARY_DIR}/VisualTVersion.cmake"
COMPATIBILITY SameMinorVersion)
install(FILES
VisualTConfig.cmake
"${PROJECT_BINARY_DIR}/VisualTVersion.cmake"
COMPONENT VisualT_runtime
DESTINATION ${VisualT_export_dir})