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