Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/libyaml/CMakeLists.txt
39476 views
1
2
cmake_minimum_required(VERSION 3.0)
3
project (yaml C)
4
5
set (YAML_VERSION_MAJOR 0)
6
set (YAML_VERSION_MINOR 2)
7
set (YAML_VERSION_PATCH 5)
8
set (YAML_VERSION_STRING "${YAML_VERSION_MAJOR}.${YAML_VERSION_MINOR}.${YAML_VERSION_PATCH}")
9
10
option(BUILD_SHARED_LIBS "Build libyaml as a shared library" OFF)
11
set(YAML_STATIC_LIB_NAME "yaml" CACHE STRING "Base name of static library output")
12
13
#
14
# Output directories for a build tree
15
#
16
if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY)
17
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
18
endif()
19
20
#
21
# Install relative directories
22
#
23
if(NOT DEFINED INSTALL_LIB_DIR)
24
set(INSTALL_LIB_DIR lib)
25
endif()
26
if(NOT DEFINED INSTALL_BIN_DIR)
27
set(INSTALL_BIN_DIR bin)
28
endif()
29
if(NOT DEFINED INSTALL_INCLUDE_DIR)
30
set(INSTALL_INCLUDE_DIR include)
31
endif()
32
if(NOT DEFINED INSTALL_CMAKE_DIR)
33
set(INSTALL_CMAKE_DIR cmake)
34
endif()
35
36
#
37
# Build library
38
#
39
set(SRCS
40
src/api.c
41
src/dumper.c
42
src/emitter.c
43
src/loader.c
44
src/parser.c
45
src/reader.c
46
src/scanner.c
47
src/writer.c
48
)
49
50
set(config_h ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
51
configure_file(
52
cmake/config.h.in
53
${config_h}
54
)
55
56
add_library(yaml ${SRCS})
57
58
if(NOT BUILD_SHARED_LIBS)
59
set_target_properties(yaml
60
PROPERTIES OUTPUT_NAME ${YAML_STATIC_LIB_NAME}
61
)
62
endif()
63
64
set_target_properties(yaml
65
PROPERTIES DEFINE_SYMBOL YAML_DECLARE_EXPORT
66
)
67
68
target_compile_definitions(yaml
69
PRIVATE HAVE_CONFIG_H
70
PUBLIC
71
$<$<NOT:$<BOOL:${BUILD_SHARED_LIBS}>>:YAML_DECLARE_STATIC>
72
$<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>
73
)
74
75
target_include_directories(yaml PUBLIC
76
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
77
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
78
$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>
79
)
80
81
#
82
# Install rules
83
#
84
install(
85
FILES
86
include/yaml.h
87
DESTINATION include COMPONENT Development
88
)
89
90
install(
91
TARGETS yaml
92
EXPORT yamlTargets
93
RUNTIME DESTINATION "${INSTALL_BIN_DIR}" COMPONENT Runtime
94
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" COMPONENT Development
95
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" COMPONENT Development
96
)
97
98
#
99
# Add tests
100
#
101
include(CTest) # This module defines BUILD_TESTING option
102
if(BUILD_TESTING)
103
add_subdirectory(tests)
104
endif()
105
106
#
107
# Generate 'yamlConfig.cmake', 'yamlConfigVersion.cmake' and 'yamlTargets.cmake'
108
#
109
include(CMakePackageConfigHelpers)
110
111
# Configure 'yamlConfig.cmake' for a build tree
112
set(CONFIG_DIR_CONFIG ${PROJECT_BINARY_DIR})
113
set(config_file ${PROJECT_BINARY_DIR}/yamlConfig.cmake)
114
configure_package_config_file(
115
yamlConfig.cmake.in
116
${config_file}
117
INSTALL_DESTINATION ${PROJECT_BINARY_DIR}
118
PATH_VARS CONFIG_DIR_CONFIG
119
NO_CHECK_REQUIRED_COMPONENTS_MACRO
120
)
121
122
# Configure 'yamlTargets.cmake' for a build tree
123
export(TARGETS yaml
124
FILE ${PROJECT_BINARY_DIR}/yamlTargets.cmake
125
)
126
127
# Configure and install 'yamlConfig.cmake' for an install tree
128
set(CONFIG_DIR_CONFIG ${INSTALL_CMAKE_DIR})
129
set(install_config_file ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yamlConfig.cmake )
130
configure_package_config_file(
131
yamlConfig.cmake.in
132
${install_config_file}
133
INSTALL_DESTINATION ${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}
134
PATH_VARS CONFIG_DIR_CONFIG
135
NO_CHECK_REQUIRED_COMPONENTS_MACRO
136
)
137
install(
138
FILES ${install_config_file}
139
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT Development
140
)
141
142
# Configure and install 'yamlTargets.cmake' for an install tree
143
install(EXPORT yamlTargets
144
FILE yamlTargets.cmake
145
DESTINATION ${INSTALL_CMAKE_DIR}
146
COMPONENT Development
147
)
148
149
# Configure 'yamlConfigVersion.cmake' for a build tree
150
set(config_version_file ${PROJECT_BINARY_DIR}/yamlConfigVersion.cmake)
151
write_basic_package_version_file(
152
${config_version_file}
153
VERSION ${YAML_VERSION_STRING}
154
COMPATIBILITY AnyNewerVersion
155
)
156
# ... and install for an install tree
157
install(
158
FILES ${config_version_file}
159
DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT Development
160
)
161
162