]> andersk Git - libyaml.git/blob - CMakeLists.txt
build: do not install config.h
[libyaml.git] / CMakeLists.txt
1
2 cmake_minimum_required(VERSION 3.0)
3 project (yaml C)
4
5 set (YAML_VERSION_MAJOR 0)
6 set (YAML_VERSION_MINOR 1)
7 set (YAML_VERSION_PATCH 7)
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
12 #
13 # Output directories for a build tree
14 #
15 if(NOT DEFINED CMAKE_RUNTIME_OUTPUT_DIRECTORY)
16   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
17 endif()
18
19 #
20 # Install relative directories
21 #
22 if(NOT DEFINED INSTALL_LIB_DIR)
23   set(INSTALL_LIB_DIR lib)
24 endif()
25 if(NOT DEFINED INSTALL_BIN_DIR)
26   set(INSTALL_BIN_DIR bin)
27 endif()
28 if(NOT DEFINED INSTALL_INCLUDE_DIR)
29   set(INSTALL_INCLUDE_DIR include)
30 endif()
31 if(NOT DEFINED INSTALL_CMAKE_DIR)
32   set(INSTALL_CMAKE_DIR cmake)
33 endif()
34
35 #
36 # Build library
37 #
38 set(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   )
48
49 set(config_h ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)
50 configure_file(
51   cmake/config.h.in
52   ${config_h}
53   )
54
55 add_library(yaml ${SRCS})
56
57 if(NOT BUILD_SHARED_LIBS)
58   set_target_properties(yaml
59     PROPERTIES OUTPUT_NAME yaml_static
60     )
61 endif()
62
63 set_target_properties(yaml
64   PROPERTIES DEFINE_SYMBOL YAML_DECLARE_EXPORT
65   )
66
67 target_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
74 target_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 #
83 install(
84   FILES
85     include/yaml.h
86   DESTINATION include COMPONENT Development
87   )
88
89 install(
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 #
100 include(CTest) # This module defines BUILD_TESTING option
101 if(BUILD_TESTING)
102   add_subdirectory(tests)
103 endif()
104
105 #
106 # Generate 'yamlConfig.cmake', 'yamlConfigVersion.cmake' and 'yamlTargets.cmake'
107 #
108 include(CMakePackageConfigHelpers)
109
110 # Configure 'yamlConfig.cmake' for a build tree
111 set(CONFIG_DIR_CONFIG ${PROJECT_BINARY_DIR})
112 set(config_file ${PROJECT_BINARY_DIR}/yamlConfig.cmake)
113 configure_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
122 export(TARGETS yaml
123   FILE ${PROJECT_BINARY_DIR}/yamlTargets.cmake
124   )
125
126 # Configure and install 'yamlConfig.cmake' for an install tree
127 set(CONFIG_DIR_CONFIG ${INSTALL_CMAKE_DIR})
128 set(install_config_file ${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/yamlConfig.cmake )
129 configure_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   )
136 install(
137   FILES ${install_config_file}
138   DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT Development
139   )
140
141 # Configure and install 'yamlTargets.cmake' for an install tree
142 install(EXPORT yamlTargets
143   FILE yamlTargets.cmake
144   DESTINATION ${INSTALL_CMAKE_DIR}
145   COMPONENT Development
146   )
147
148 # Configure 'yamlConfigVersion.cmake' for a build tree
149 set(config_version_file ${PROJECT_BINARY_DIR}/yamlConfigVersion.cmake)
150 write_basic_package_version_file(
151     ${config_version_file}
152     VERSION ${YAML_VERSION_STRING}
153     COMPATIBILITY AnyNewerVersion
154 )
155 # ... and install for an install tree
156 install(
157   FILES ${config_version_file}
158   DESTINATION ${INSTALL_CMAKE_DIR} COMPONENT Development
159   )
This page took 0.043125 seconds and 5 git commands to generate.