aboutsummaryrefslogtreecommitdiff
path: root/libbase/CMakeLists.txt
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-11-02 02:07:38 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-11-02 02:07:38 +0800
commite3c4c7709f65404bcf8ce195a518e7d445e768d2 (patch)
tree48ac475db03a63827f8910acce982fead7612d26 /libbase/CMakeLists.txt
parent02b615c8704aeda9a94cf5457c9c78de847c911a (diff)
downloadrcc-project-e3c4c7709f65404bcf8ce195a518e7d445e768d2.tar.gz
rcc-project-e3c4c7709f65404bcf8ce195a518e7d445e768d2.tar.xz
Restructure libbase and RCCCore build
Diffstat (limited to 'libbase/CMakeLists.txt')
-rw-r--r--libbase/CMakeLists.txt67
1 files changed, 67 insertions, 0 deletions
diff --git a/libbase/CMakeLists.txt b/libbase/CMakeLists.txt
new file mode 100644
index 0000000..798c850
--- /dev/null
+++ b/libbase/CMakeLists.txt
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+include(CheckSymbolExists)
+include(GNUInstallDirs)
+
+if(NOT DEFINED RCC_ENABLE_THREADS)
+ set(RCC_ENABLE_THREADS ON)
+endif()
+
+if(NOT DEFINED LIBBASE_ENABLE_THREADS)
+ set(LIBBASE_ENABLE_THREADS "${RCC_ENABLE_THREADS}")
+endif()
+if(NOT DEFINED LIBBASE_BUILD_SHARED_LIBS)
+ set(LIBBASE_BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS}")
+endif()
+if(NOT DEFINED LIBBASE_BUILD_STATIC)
+ if(BUILD_SHARED_LIBS)
+ set(LIBBASE_BUILD_STATIC OFF)
+ else()
+ set(LIBBASE_BUILD_STATIC ON)
+ endif()
+endif()
+if(NOT DEFINED LIBBASE_BUILD_LIBBASE_DYLIB)
+ set(LIBBASE_BUILD_LIBBASE_DYLIB OFF)
+endif()
+
+set(LIBBASE_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")
+set(LIBBASE_BINARY_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
+file(MAKE_DIRECTORY "${LIBBASE_BINARY_INCLUDE_DIR}/core/config")
+
+check_symbol_exists(strerror_r "string.h" HAVE_STRERROR_R)
+check_symbol_exists(strerror_s "string.h" HAVE_DECL_STRERROR_S)
+
+configure_file(
+ "${LIBBASE_INCLUDE_DIR}/core/config/config.h.cmake"
+ "${LIBBASE_BINARY_INCLUDE_DIR}/core/config/config.h")
+configure_file(
+ "${LIBBASE_INCLUDE_DIR}/core/config/libbase-config.h.cmake"
+ "${LIBBASE_BINARY_INCLUDE_DIR}/core/config/libbase-config.h")
+
+add_library(RCCCore
+ src/core/math/MathExtras.cc
+ src/core/memory/MemAlloc.cpp
+ src/core/error/Errno.cc
+)
+
+target_compile_features(RCCCore PUBLIC cxx_std_23)
+target_compile_definitions(RCCCore PRIVATE LIBBASE_EXPORTS)
+
+target_include_directories(RCCCore
+ PUBLIC
+ "$<BUILD_INTERFACE:${LIBBASE_BINARY_INCLUDE_DIR}>"
+ "$<BUILD_INTERFACE:${LIBBASE_INCLUDE_DIR}>"
+ "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
+
+install(TARGETS RCCCore
+ EXPORT RCCTargets
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")
+
+install(DIRECTORY include/core DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+ FILES_MATCHING PATTERN "*.h" PATTERN "*.inc" PATTERN "*.def")
+install(DIRECTORY "${LIBBASE_BINARY_INCLUDE_DIR}/core"
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+ FILES_MATCHING PATTERN "*.h" PATTERN "*.inc" PATTERN "*.def"
+ PATTERN "config.h" EXCLUDE)