From b8c14b482fc937fe921fcf633f83e291109619de Mon Sep 17 00:00:00 2001 From: NikitaZotov Date: Sat, 12 Oct 2024 00:01:32 +0300 Subject: [PATCH] [cmake][wip] Separate libraries and extensions --- CMakeLists.txt | 13 ++++++++----- cmake/install.cmake | 2 +- sc-kpm/sc-search/CMakeLists.txt | 1 + sc-kpm/sc-ui/CMakeLists.txt | 1 + sc-kpm/sc-utils/CMakeLists.txt | 1 + sc-machine.ini | 2 +- sc-memory/sc-memory/tests/scs/CMakeLists.txt | 4 ++++ sc-tools/sc-server/CMakeLists.txt | 1 + 8 files changed, 18 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7df1e69f4f..1587449fd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,20 @@ cmake_minimum_required(VERSION 3.24) set(CMAKE_CXX_STANDARD 17) project(sc-machine VERSION "0.9.0" LANGUAGES C CXX) -message(STATUS "Current Project Version: ${CMAKE_PROJECT_VERSION}") +message(STATUS "Current project version: ${CMAKE_PROJECT_VERSION}") site_name(www.ostis.net) cmake_policy(SET CMP0048 NEW) set(SC_MACHINE_ROOT ${CMAKE_CURRENT_SOURCE_DIR}) set(CMAKE_MODULE_PATH "${SC_MACHINE_ROOT}/cmake") -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -message(STATUS "Libary output directory: ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(SC_EXTENSIONS_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/extensions) +make_directory(${SC_EXTENSIONS_DIRECTORY}) + message(STATUS "Binary output directory: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}") +message(STATUS "Libary output directory: ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") set(SC_MACHINE_THIRDPARTY_PATH "${SC_MACHINE_ROOT}/thirdparty") option(SC_BUILD_TESTS "Flag to build unit tests" OFF) @@ -99,9 +102,9 @@ message("Compiler: ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}, path: # Set up dynamic linking paths for our own libraries # For macOS, use @loader_path instead of $ORIGIN if(APPLE) - set(CMAKE_INSTALL_RPATH "@loader_path;@loader_path/../lib") + set(CMAKE_INSTALL_RPATH "@loader_path;@loader_path/../lib;@loader_path/../lib/extensions") else() - set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/../lib") + set(CMAKE_INSTALL_RPATH "$ORIGIN:$ORIGIN/../lib;$ORIGIN/../lib/extensions") endif() # Always use full RPATH diff --git a/cmake/install.cmake b/cmake/install.cmake index 78dd25f0ee..2264c2c534 100644 --- a/cmake/install.cmake +++ b/cmake/install.cmake @@ -11,7 +11,7 @@ install(TARGETS ) # a target set for things we don't want to export to the consumers -install(TARGETS sc-server-lib EXPORT privateExport LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +install(TARGETS sc-kpm-search sc-kpm-utils sc-kpm-ui sc-server-lib EXPORT privateExport LIBRARY DESTINATION lib/extensions) install(EXPORT sc-machineExport FILE sc-machineTargets.cmake diff --git a/sc-kpm/sc-search/CMakeLists.txt b/sc-kpm/sc-search/CMakeLists.txt index 372f1ebcab..1560de1b0a 100644 --- a/sc-kpm/sc-search/CMakeLists.txt +++ b/sc-kpm/sc-search/CMakeLists.txt @@ -6,6 +6,7 @@ file(GLOB SOURCES CONFIGURE_DEPENDS add_library(sc-kpm-search SHARED ${SOURCES}) target_link_libraries(sc-kpm-search LINK_PUBLIC sc-kpm-common) target_include_directories(sc-kpm-search PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) +set_target_properties(sc-kpm-search PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${SC_EXTENSIONS_DIRECTORY}) if(${SC_CLANG_FORMAT_CODE}) target_clangformat_setup(sc-kpm-search) diff --git a/sc-kpm/sc-ui/CMakeLists.txt b/sc-kpm/sc-ui/CMakeLists.txt index cfd555a0c8..7270880586 100644 --- a/sc-kpm/sc-ui/CMakeLists.txt +++ b/sc-kpm/sc-ui/CMakeLists.txt @@ -12,6 +12,7 @@ target_link_libraries(sc-kpm-ui LINK_PUBLIC nlohmann_json::nlohmann_json ) target_include_directories(sc-kpm-ui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) +set_target_properties(sc-kpm-ui PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${SC_EXTENSIONS_DIRECTORY}) if(${SC_CLANG_FORMAT_CODE}) target_clangformat_setup(sc-kpm-ui) diff --git a/sc-kpm/sc-utils/CMakeLists.txt b/sc-kpm/sc-utils/CMakeLists.txt index 67d93f11d5..451fff0920 100644 --- a/sc-kpm/sc-utils/CMakeLists.txt +++ b/sc-kpm/sc-utils/CMakeLists.txt @@ -5,6 +5,7 @@ file(GLOB SOURCES CONFIGURE_DEPENDS add_library(sc-kpm-utils SHARED ${SOURCES}) target_link_libraries(sc-kpm-utils LINK_PUBLIC sc-kpm-common) target_include_directories(sc-kpm-utils PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src) +set_target_properties(sc-kpm-utils PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${SC_EXTENSIONS_DIRECTORY}) if(${SC_CLANG_FORMAT_CODE}) target_clangformat_setup(sc-kpm-utils) diff --git a/sc-machine.ini b/sc-machine.ini index 833f1e8c1b..7e59d01cef 100644 --- a/sc-machine.ini +++ b/sc-machine.ini @@ -10,7 +10,7 @@ dump_memory_statistics = false dump_memory_statistics_period = 1800 repo_path = ./kb.bin -extensions_path = ./bin/extensions +extensions_path = ./build/lib/extensions log_type = Console log_file = ./sc-memory.log diff --git a/sc-memory/sc-memory/tests/scs/CMakeLists.txt b/sc-memory/sc-memory/tests/scs/CMakeLists.txt index 588309ac3f..9615545f6f 100644 --- a/sc-memory/sc-memory/tests/scs/CMakeLists.txt +++ b/sc-memory/sc-memory/tests/scs/CMakeLists.txt @@ -2,3 +2,7 @@ make_tests_from_folder(${CMAKE_CURRENT_SOURCE_DIR}/units NAME scs-tests DEPENDS sc-memory ) + +if(${SC_CLANG_FORMAT_CODE}) + target_clangformat_setup(scs-tests) +endif() diff --git a/sc-tools/sc-server/CMakeLists.txt b/sc-tools/sc-server/CMakeLists.txt index 7f70cbac55..976458f4eb 100644 --- a/sc-tools/sc-server/CMakeLists.txt +++ b/sc-tools/sc-server/CMakeLists.txt @@ -26,6 +26,7 @@ target_include_directories(sc-server-lib PUBLIC $ PUBLIC $ ) +set_target_properties(sc-server-lib PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${SC_EXTENSIONS_DIRECTORY}) install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/src/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}