105 lines
3.0 KiB
CMake
105 lines
3.0 KiB
CMake
|
#
|
||
|
# Copyright Kitware, Inc.
|
||
|
# Distributed under the OSI-approved BSD 3-Clause License.
|
||
|
# See accompanying file Copyright.txt for details.
|
||
|
#
|
||
|
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_SOURCE_DIR}")
|
||
|
cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
|
||
|
set(kwiml_standalone 1)
|
||
|
project(KWIML)
|
||
|
include(CTest)
|
||
|
mark_as_advanced(BUILD_TESTING)
|
||
|
if(BUILD_TESTING)
|
||
|
set(KWIML_TEST_ENABLE 1)
|
||
|
endif()
|
||
|
if(NOT DEFINED KWIML_INSTALL_INCLUDE_DIR)
|
||
|
set(KWIML_INSTALL_INCLUDE_DIR include)
|
||
|
endif()
|
||
|
set(KWIML_INCLUDE_PREFIX kwiml)
|
||
|
else()
|
||
|
cmake_minimum_required(VERSION 2.8.2 FATAL_ERROR)
|
||
|
set(kwiml_standalone 0)
|
||
|
if(KWIML_INSTALL_INCLUDE_DIR AND NOT DEFINED KWIML_INCLUDE_PREFIX)
|
||
|
message(FATAL_ERROR "Host project must set KWIML_INCLUDE_PREFIX")
|
||
|
endif()
|
||
|
endif()
|
||
|
|
||
|
get_property(KWIML_LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||
|
foreach(lang ${KWIML_LANGUAGES})
|
||
|
set(KWIML_LANGUAGE_${lang} 1)
|
||
|
endforeach()
|
||
|
if(NOT KWIML_LANGUAGE_C AND NOT KWIML_LANGUAGE_CXX)
|
||
|
set(BUILD_TESTING OFF)
|
||
|
endif()
|
||
|
|
||
|
if(KWIML_INSTALL_INCLUDE_DIR)
|
||
|
install(FILES
|
||
|
include/kwiml/abi.h
|
||
|
include/kwiml/int.h
|
||
|
DESTINATION ${KWIML_INSTALL_INCLUDE_DIR}/${KWIML_INCLUDE_PREFIX}
|
||
|
${KWIML_INSTALL_INCLUDE_OPTIONS}
|
||
|
)
|
||
|
endif()
|
||
|
|
||
|
if(KWIML_TEST_ENABLE)
|
||
|
add_subdirectory(test)
|
||
|
endif()
|
||
|
|
||
|
if(NOT kwiml_standalone)
|
||
|
return()
|
||
|
endif()
|
||
|
|
||
|
#----------------------------------------------------------------------------
|
||
|
set(KWIML_VERSION 1.0.0)
|
||
|
if(KWIML_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
|
||
|
set(KWIML_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||
|
set(KWIML_VERSION_MINOR "${CMAKE_MATCH_2}")
|
||
|
set(KWIML_VERSION_PATCH "${CMAKE_MATCH_3}")
|
||
|
math(EXPR KWIML_VERSION_DECIMAL
|
||
|
"${KWIML_VERSION_MAJOR}*1000000 + ${KWIML_VERSION_MINOR}*1000 + ${KWIML_VERSION_PATCH}")
|
||
|
else()
|
||
|
message(FATAL_ERROR "Failed to parse KWIML_VERSION='${KWIML_VERSION}'")
|
||
|
endif()
|
||
|
|
||
|
configure_file(src/version.h.in include/kwiml/version.h @ONLY)
|
||
|
install(FILES
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/include/kwiml/version.h
|
||
|
DESTINATION ${KWIML_INSTALL_INCLUDE_DIR}/kwiml
|
||
|
)
|
||
|
|
||
|
if(NOT KWIML_INSTALL_PACKAGE_DIR)
|
||
|
set(KWIML_INSTALL_PACKAGE_DIR share/cmake/kwiml-${KWIML_VERSION_MAJOR}.${KWIML_VERSION_MINOR})
|
||
|
endif()
|
||
|
|
||
|
add_library(kwiml INTERFACE)
|
||
|
target_include_directories(kwiml INTERFACE
|
||
|
$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${KWIML_INSTALL_INCLUDE_DIR}>
|
||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
|
||
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
||
|
)
|
||
|
export(TARGETS kwiml
|
||
|
NAMESPACE kwiml::
|
||
|
FILE kwiml-targets.cmake
|
||
|
)
|
||
|
install(TARGETS kwiml
|
||
|
DESTINATION lib
|
||
|
EXPORT kwiml-targets
|
||
|
)
|
||
|
install(EXPORT kwiml-targets
|
||
|
NAMESPACE kwiml::
|
||
|
DESTINATION ${KWIML_INSTALL_PACKAGE_DIR}
|
||
|
)
|
||
|
|
||
|
configure_file(src/kwiml-config.cmake.in kwiml-config.cmake @ONLY)
|
||
|
include(CMakePackageConfigHelpers)
|
||
|
write_basic_package_version_file(
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/kwiml-config-version.cmake"
|
||
|
VERSION ${KWIML_VERSION}
|
||
|
COMPATIBILITY AnyNewerVersion
|
||
|
)
|
||
|
install(FILES
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/kwiml-config.cmake
|
||
|
${CMAKE_CURRENT_BINARY_DIR}/kwiml-config-version.cmake
|
||
|
DESTINATION ${KWIML_INSTALL_PACKAGE_DIR}
|
||
|
)
|