aboutsummaryrefslogtreecommitdiff
path: root/cfront/cmake
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-10-20 01:30:20 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-10-20 01:30:20 +0800
commit3e8d7d1270ace353cce0080a80021dcc7532f2be (patch)
treea8bf9d52c4ce609c5d4d1e9c7249d148e4cb6271 /cfront/cmake
parenta59ba0e3eda5381623a4929486b2f673a883d8d8 (diff)
downloadrcc-project-3e8d7d1270ace353cce0080a80021dcc7532f2be.tar.gz
rcc-project-3e8d7d1270ace353cce0080a80021dcc7532f2be.tar.xz
[CMake] Establish RCC and CFront builds and package exports
Diffstat (limited to 'cfront/cmake')
-rw-r--r--cfront/cmake/modules/CFrontConfig.cmake.in8
-rw-r--r--cfront/cmake/modules/CFrontConfigVersion.cmake.in13
-rw-r--r--cfront/cmake/modules/CMakeLists.txt35
3 files changed, 56 insertions, 0 deletions
diff --git a/cfront/cmake/modules/CFrontConfig.cmake.in b/cfront/cmake/modules/CFrontConfig.cmake.in
new file mode 100644
index 0000000..3b1a800
--- /dev/null
+++ b/cfront/cmake/modules/CFrontConfig.cmake.in
@@ -0,0 +1,8 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+find_dependency(RCC @RCC_VERSION@ EXACT CONFIG HINTS "@CFRONT_PACKAGE_RCC_CMAKE_DIR@")
+set(CFRONT_CMAKE_DIR "@CFRONT_PACKAGE_MODULE_DIR@")
+include("${CMAKE_CURRENT_LIST_DIR}/CFrontTargets.cmake")
diff --git a/cfront/cmake/modules/CFrontConfigVersion.cmake.in b/cfront/cmake/modules/CFrontConfigVersion.cmake.in
new file mode 100644
index 0000000..f7d5ea4
--- /dev/null
+++ b/cfront/cmake/modules/CFrontConfigVersion.cmake.in
@@ -0,0 +1,13 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+set(PACKAGE_VERSION "@PROJECT_VERSION@")
+
+# Match major and minor versions; accept the requested patch version or newer.
+if("@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@" VERSION_EQUAL
+ "${PACKAGE_FIND_VERSION_MAJOR}.${PACKAGE_FIND_VERSION_MINOR}"
+ AND NOT "@PROJECT_VERSION_PATCH@" VERSION_LESS "${PACKAGE_FIND_VERSION_PATCH}")
+ set(PACKAGE_VERSION_COMPATIBLE TRUE)
+ if("@PROJECT_VERSION_PATCH@" VERSION_EQUAL "${PACKAGE_FIND_VERSION_PATCH}")
+ set(PACKAGE_VERSION_EXACT TRUE)
+ endif()
+endif()
diff --git a/cfront/cmake/modules/CMakeLists.txt b/cfront/cmake/modules/CMakeLists.txt
new file mode 100644
index 0000000..634ba34
--- /dev/null
+++ b/cfront/cmake/modules/CMakeLists.txt
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+include(CMakePackageConfigHelpers)
+
+set(cfrontPackageDir "${CFRONT_BINARY_DIR}/lib/cmake/CFront")
+set(cfrontInstallPackageDir "${CMAKE_INSTALL_LIBDIR}/cmake/CFront")
+set(CFRONT_PACKAGE_MODULE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
+if(CFRONT_STANDALONE_BUILD)
+ set(CFRONT_PACKAGE_RCC_CMAKE_DIR "${RCC_DIR}")
+else()
+ set(CFRONT_PACKAGE_RCC_CMAKE_DIR "${RCC_BINARY_DIR}/lib/cmake/RCC")
+endif()
+configure_package_config_file(CFrontConfig.cmake.in
+ "${cfrontPackageDir}/CFrontConfig.cmake"
+ INSTALL_DESTINATION "${cfrontPackageDir}"
+ NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+export(EXPORT CFrontTargets FILE "${cfrontPackageDir}/CFrontTargets.cmake")
+
+set(CFRONT_PACKAGE_MODULE_DIR "\${CMAKE_CURRENT_LIST_DIR}")
+if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+ set(CFRONT_PACKAGE_RCC_CMAKE_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/RCC")
+else()
+ set(CFRONT_PACKAGE_RCC_CMAKE_DIR "\${PACKAGE_PREFIX_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/RCC")
+endif()
+configure_package_config_file(CFrontConfig.cmake.in CFrontConfig.install.cmake
+ INSTALL_DESTINATION "${cfrontInstallPackageDir}"
+ NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+configure_file(CFrontConfigVersion.cmake.in
+ "${cfrontPackageDir}/CFrontConfigVersion.cmake" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/CFrontConfig.install.cmake"
+ DESTINATION "${cfrontInstallPackageDir}" RENAME CFrontConfig.cmake)
+install(FILES "${cfrontPackageDir}/CFrontConfigVersion.cmake" AddCFront.cmake
+ DESTINATION "${cfrontInstallPackageDir}")
+install(EXPORT CFrontTargets FILE CFrontTargets.cmake
+ DESTINATION "${cfrontInstallPackageDir}")