aboutsummaryrefslogtreecommitdiff
path: root/rcc/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 /rcc/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 'rcc/cmake')
-rw-r--r--rcc/cmake/modules/CMakeLists.txt47
-rw-r--r--rcc/cmake/modules/RCCConfig.cmake.in27
-rw-r--r--rcc/cmake/modules/RCCConfigVersion.cmake.in13
3 files changed, 87 insertions, 0 deletions
diff --git a/rcc/cmake/modules/CMakeLists.txt b/rcc/cmake/modules/CMakeLists.txt
new file mode 100644
index 0000000..39b6d97
--- /dev/null
+++ b/rcc/cmake/modules/CMakeLists.txt
@@ -0,0 +1,47 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+include(CMakePackageConfigHelpers)
+
+get_directory_property(RCC_DEFINITIONS DIRECTORY "${RCC_SOURCE_DIR}" COMPILE_DEFINITIONS)
+set(RCC_PACKAGE_MSVC_RUNTIME_LIBRARY "${CMAKE_MSVC_RUNTIME_LIBRARY}")
+if(NOT DEFINED CMAKE_MSVC_RUNTIME_LIBRARY)
+ set(RCC_PACKAGE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
+endif()
+set(rccPackageDir "${RCC_BINARY_DIR}/lib/cmake/RCC")
+set(rccInstallPackageDir "${CMAKE_INSTALL_LIBDIR}/cmake/RCC")
+set(RCC_PACKAGE_MODULE_DIR "${RCC_CMAKE_DIR}")
+set(RCC_PACKAGE_INCLUDE_DIRS "${RCC_INCLUDE_DIRS}")
+set(RCC_PACKAGE_LIBRARY_DIR "${RCC_LIBRARY_DIR}")
+set(RCC_PACKAGE_BUILD_LIBRARY_DIR "${RCC_LIBRARY_DIR}")
+set(RCC_PACKAGE_INSTALL_PREFIX "")
+configure_package_config_file(RCCConfig.cmake.in "${rccPackageDir}/RCCConfig.cmake"
+ INSTALL_DESTINATION "${rccPackageDir}"
+ NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+export(EXPORT RCCTargets FILE "${rccPackageDir}/RCCTargets.cmake")
+
+set(RCC_PACKAGE_MODULE_DIR "\${CMAKE_CURRENT_LIST_DIR}")
+if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
+ set(RCC_PACKAGE_INCLUDE_DIRS "${CMAKE_INSTALL_INCLUDEDIR}")
+else()
+ set(RCC_PACKAGE_INCLUDE_DIRS "\${PACKAGE_PREFIX_DIR}/${CMAKE_INSTALL_INCLUDEDIR}")
+endif()
+if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
+ set(RCC_PACKAGE_LIBRARY_DIR "${CMAKE_INSTALL_LIBDIR}")
+else()
+ set(RCC_PACKAGE_LIBRARY_DIR "\${PACKAGE_PREFIX_DIR}/${CMAKE_INSTALL_LIBDIR}")
+endif()
+set(RCC_PACKAGE_BUILD_LIBRARY_DIR "")
+set(RCC_PACKAGE_INSTALL_PREFIX "\${PACKAGE_PREFIX_DIR}")
+configure_package_config_file(RCCConfig.cmake.in RCCConfig.install.cmake
+ INSTALL_DESTINATION "${rccInstallPackageDir}"
+ NO_SET_AND_CHECK_MACRO NO_CHECK_REQUIRED_COMPONENTS_MACRO)
+configure_file(RCCConfigVersion.cmake.in
+ "${rccPackageDir}/RCCConfigVersion.cmake" @ONLY)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/RCCConfig.install.cmake"
+ DESTINATION "${rccInstallPackageDir}" RENAME RCCConfig.cmake)
+install(FILES
+ "${rccPackageDir}/RCCConfigVersion.cmake"
+ AddRCC.cmake HandleRCCOptions.cmake
+ DESTINATION "${rccInstallPackageDir}")
+install(EXPORT RCCTargets FILE RCCTargets.cmake
+ DESTINATION "${rccInstallPackageDir}")
diff --git a/rcc/cmake/modules/RCCConfig.cmake.in b/rcc/cmake/modules/RCCConfig.cmake.in
new file mode 100644
index 0000000..3454a58
--- /dev/null
+++ b/rcc/cmake/modules/RCCConfig.cmake.in
@@ -0,0 +1,27 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+@PACKAGE_INIT@
+
+set(RCC_VERSION "@RCC_VERSION@")
+set(RCC_VERSION_MAJOR "@RCC_VERSION_MAJOR@")
+set(RCC_VERSION_MINOR "@RCC_VERSION_MINOR@")
+set(RCC_VERSION_PATCH "@RCC_VERSION_PATCH@")
+set(RCC_CMAKE_DIR "@RCC_PACKAGE_MODULE_DIR@")
+set(RCC_INCLUDE_DIRS "@RCC_PACKAGE_INCLUDE_DIRS@")
+set(RCC_LIBRARY_DIR "@RCC_PACKAGE_LIBRARY_DIR@")
+set(RCC_BUILD_LIBRARY_DIR "@RCC_PACKAGE_BUILD_LIBRARY_DIR@")
+set(RCC_INSTALL_PREFIX "@RCC_PACKAGE_INSTALL_PREFIX@")
+set(RCC_ENABLE_ASSERTIONS "@RCC_ENABLE_ASSERTIONS@")
+set(RCC_ENABLE_EH "@RCC_ENABLE_EH@")
+set(RCC_ENABLE_RTTI "@RCC_ENABLE_RTTI@")
+set(RCC_ENABLE_UNWIND_TABLES "@RCC_ENABLE_UNWIND_TABLES@")
+set(RCC_ENABLE_WARNINGS "@RCC_ENABLE_WARNINGS@")
+set(RCC_ENABLE_WARNING_SUPPRESSIONS "@RCC_ENABLE_WARNING_SUPPRESSIONS@")
+set(RCC_ENABLE_LIBCXX "@RCC_LIBCXX_USED@")
+set(RCC_STATIC_LINK_CXX_STDLIB "@RCC_STATIC_LINK_CXX_STDLIB@")
+set(GLIBCXX_USE_CXX11_ABI "@GLIBCXX_USE_CXX11_ABI@")
+set(RCC_DEFINITIONS "@RCC_DEFINITIONS@")
+if(MSVC)
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "@RCC_PACKAGE_MSVC_RUNTIME_LIBRARY@")
+endif()
+include("${CMAKE_CURRENT_LIST_DIR}/RCCTargets.cmake")
diff --git a/rcc/cmake/modules/RCCConfigVersion.cmake.in b/rcc/cmake/modules/RCCConfigVersion.cmake.in
new file mode 100644
index 0000000..f7d5ea4
--- /dev/null
+++ b/rcc/cmake/modules/RCCConfigVersion.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()