Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Utilities/KWIML/CMakeLists.txt
3148 views
1
#
2
# Copyright Kitware, Inc.
3
# Distributed under the OSI-approved BSD 3-Clause License.
4
# See accompanying file Copyright.txt for details.
5
#
6
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
7
cmake_minimum_required(VERSION 3.13..4.0 FATAL_ERROR)
8
set(kwiml_standalone 1)
9
project(KWIML)
10
include(CTest)
11
mark_as_advanced(BUILD_TESTING)
12
if(BUILD_TESTING)
13
set(KWIML_TEST_ENABLE 1)
14
endif()
15
if(NOT DEFINED KWIML_INSTALL_INCLUDE_DIR)
16
set(KWIML_INSTALL_INCLUDE_DIR include)
17
endif()
18
set(KWIML_INCLUDE_PREFIX kwiml)
19
else()
20
set(kwiml_standalone 0)
21
if(KWIML_INSTALL_INCLUDE_DIR AND NOT DEFINED KWIML_INCLUDE_PREFIX)
22
message(FATAL_ERROR "Host project must set KWIML_INCLUDE_PREFIX")
23
endif()
24
endif()
25
26
get_property(KWIML_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
27
foreach(lang ${KWIML_LANGUAGES})
28
set(KWIML_LANGUAGE_${lang} 1)
29
endforeach()
30
if(NOT KWIML_LANGUAGE_C AND NOT KWIML_LANGUAGE_CXX)
31
set(BUILD_TESTING OFF)
32
endif()
33
34
if(KWIML_INSTALL_INCLUDE_DIR)
35
install(FILES
36
include/kwiml/abi.h
37
include/kwiml/int.h
38
DESTINATION ${KWIML_INSTALL_INCLUDE_DIR}/${KWIML_INCLUDE_PREFIX}
39
${KWIML_INSTALL_INCLUDE_OPTIONS}
40
)
41
endif()
42
43
if(KWIML_TEST_ENABLE)
44
add_subdirectory(test)
45
endif()
46
47
if(NOT kwiml_standalone)
48
return()
49
endif()
50
51
#----------------------------------------------------------------------------
52
set(KWIML_VERSION 1.0.0)
53
if(KWIML_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
54
set(KWIML_VERSION_MAJOR "${CMAKE_MATCH_1}")
55
set(KWIML_VERSION_MINOR "${CMAKE_MATCH_2}")
56
set(KWIML_VERSION_PATCH "${CMAKE_MATCH_3}")
57
math(EXPR KWIML_VERSION_DECIMAL
58
"${KWIML_VERSION_MAJOR}*1000000 + ${KWIML_VERSION_MINOR}*1000 + ${KWIML_VERSION_PATCH}")
59
else()
60
message(FATAL_ERROR "Failed to parse KWIML_VERSION='${KWIML_VERSION}'")
61
endif()
62
63
configure_file(src/version.h.in include/kwiml/version.h @ONLY)
64
install(FILES
65
${CMAKE_CURRENT_BINARY_DIR}/include/kwiml/version.h
66
DESTINATION ${KWIML_INSTALL_INCLUDE_DIR}/kwiml
67
)
68
69
if(NOT KWIML_INSTALL_PACKAGE_DIR)
70
set(KWIML_INSTALL_PACKAGE_DIR share/cmake/kwiml-${KWIML_VERSION_MAJOR}.${KWIML_VERSION_MINOR})
71
endif()
72
73
add_library(kwiml INTERFACE)
74
target_include_directories(kwiml INTERFACE
75
$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${KWIML_INSTALL_INCLUDE_DIR}>
76
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
77
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
78
)
79
export(TARGETS kwiml
80
NAMESPACE kwiml::
81
FILE kwiml-targets.cmake
82
)
83
install(TARGETS kwiml
84
DESTINATION lib
85
EXPORT kwiml-targets
86
)
87
install(EXPORT kwiml-targets
88
NAMESPACE kwiml::
89
DESTINATION ${KWIML_INSTALL_PACKAGE_DIR}
90
)
91
92
configure_file(src/kwiml-config.cmake.in kwiml-config.cmake @ONLY)
93
include(CMakePackageConfigHelpers)
94
write_basic_package_version_file(
95
"${CMAKE_CURRENT_BINARY_DIR}/kwiml-config-version.cmake"
96
VERSION ${KWIML_VERSION}
97
COMPATIBILITY AnyNewerVersion
98
)
99
install(FILES
100
${CMAKE_CURRENT_BINARY_DIR}/kwiml-config.cmake
101
${CMAKE_CURRENT_BINARY_DIR}/kwiml-config-version.cmake
102
DESTINATION ${KWIML_INSTALL_PACKAGE_DIR}
103
)
104
105