summaryrefslogtreecommitdiff
path: root/Utilities/KWIML/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/KWIML/CMakeLists.txt')
-rw-r--r--Utilities/KWIML/CMakeLists.txt103
1 files changed, 103 insertions, 0 deletions
diff --git a/Utilities/KWIML/CMakeLists.txt b/Utilities/KWIML/CMakeLists.txt
new file mode 100644
index 0000000000..1d158843de
--- /dev/null
+++ b/Utilities/KWIML/CMakeLists.txt
@@ -0,0 +1,103 @@
+#
+# 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()
+ 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}
+ )