From 5dd7c22a7484495c8e29f7e7c86ec9024f0afb2b Mon Sep 17 00:00:00 2001 From: Derek Christ Date: Fri, 28 Jun 2024 09:04:34 +0200 Subject: [PATCH] Refactor CMakeLists and GitLab CI/CD pipeline - Remove nested minimum required to supress warnings. - Declare SystemC as system library to supress warnings in headers. - Add a BUILD_SHARED_LIBS option - Remove hardcoded STATIC in various add_library calls to honor the BUILD_SHARED_LIBS option - Remove _deps/ directory from the build directory in GitLab pipeline - Remove *.tdb files after test stage in pipeline - Set Ninja as the default generator for the dev preset and re-enable colored diagnostics --- .gitlab-ci.yml | 3 +++ CMakeLists.txt | 5 +++++ CMakePresets.json | 6 +++--- benches/CMakeLists.txt | 2 -- src/configuration/CMakeLists.txt | 4 ++-- src/libdramsys/CMakeLists.txt | 2 +- src/simulator/CMakeLists.txt | 2 +- src/util/CMakeLists.txt | 2 +- tests/tests_configuration/CMakeLists.txt | 2 -- tests/tests_dramsys/CMakeLists.txt | 2 -- tests/tests_regression/CMakeLists.txt | 2 -- tests/tests_simulator/CMakeLists.txt | 2 -- tests/tests_util/CMakeLists.txt | 4 +--- 13 files changed, 17 insertions(+), 21 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index fa9494be..fcca29ef 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,6 +14,7 @@ build: after_script: - find . -name "*.o" -type f -delete - find . -name "*.a" -type f -delete + - rm -r build/coverage/_deps artifacts: paths: - build/coverage @@ -26,6 +27,8 @@ test: script: - cd build/coverage - ctest --output-on-failure -j$(nproc) + after_script: + - find . -name "*.tdb" -type f -delete artifacts: paths: - build/coverage diff --git a/CMakeLists.txt b/CMakeLists.txt index 05ff2ae8..d966f05c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,8 @@ set(DRAMSYS_RESOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/configs") set(DRAMSYS_EXTENSIONS_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extensions") ### Build options ### +option(BUILD_SHARED_LIBS "Build shared libraries" OFF) + option(DRAMSYS_BUILD_TESTS "Build DRAMSys unit tests" OFF) option(DRAMSYS_BUILD_BENCHMARKS "Build DRAMSys benchmarks" OFF) option(DRAMSYS_VERBOSE_CMAKE_OUTPUT "Show detailed CMake output" OFF) @@ -156,6 +158,9 @@ if (NOT TARGET SystemC::systemc) FetchContent_MakeAvailable(systemc) endif() +# Set include directories to SYSTEM to suppress warnings +set_target_properties(systemc PROPERTIES SYSTEM TRUE) + ### DRAMPower ### if (DRAMSYS_WITH_DRAMPOWER) FetchContent_Declare( diff --git a/CMakePresets.json b/CMakePresets.json index 3bd3c6fc..565ab0b9 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -62,7 +62,7 @@ }, { "name": "dev", - "generator": "Unix Makefiles", + "generator": "Ninja", "binaryDir": "${sourceDir}/build", "inherits": [ "dev-mode", @@ -70,8 +70,8 @@ ], "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic" + "CMAKE_CXX_FLAGS": "-Wall -Wextra -Wpedantic -fdiagnostics-color=always" } } ] -} \ No newline at end of file +} diff --git a/benches/CMakeLists.txt b/benches/CMakeLists.txt index 3c6ed571..23e7b1c8 100644 --- a/benches/CMakeLists.txt +++ b/benches/CMakeLists.txt @@ -35,8 +35,6 @@ ### benches_dramsys ### ############################################### -cmake_minimum_required(VERSION 3.1.0) - project(benches_dramsys) add_executable(${PROJECT_NAME} diff --git a/src/configuration/CMakeLists.txt b/src/configuration/CMakeLists.txt index d64f76a0..62c90967 100644 --- a/src/configuration/CMakeLists.txt +++ b/src/configuration/CMakeLists.txt @@ -41,7 +41,7 @@ project(DRAMSys_Configuration) file(GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS *.cpp) file(GLOB_RECURSE HEADER_FILES CONFIGURE_DEPENDS *.h;*.hpp) -add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES} ${HEADER_FILES}) +add_library(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) @@ -57,4 +57,4 @@ target_compile_definitions(${PROJECT_NAME} add_library(DRAMSys::config ALIAS ${PROJECT_NAME}) -build_source_group() \ No newline at end of file +build_source_group() diff --git a/src/libdramsys/CMakeLists.txt b/src/libdramsys/CMakeLists.txt index 685a604b..ed088348 100644 --- a/src/libdramsys/CMakeLists.txt +++ b/src/libdramsys/CMakeLists.txt @@ -41,7 +41,7 @@ project(DRAMSys_libdramsys) file(GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS *.cpp) file(GLOB_RECURSE HEADER_FILES CONFIGURE_DEPENDS *.h;*.hpp) -add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES} ${HEADER_FILES}) +add_library(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/src/simulator/CMakeLists.txt b/src/simulator/CMakeLists.txt index 91a9fc47..2af018a2 100644 --- a/src/simulator/CMakeLists.txt +++ b/src/simulator/CMakeLists.txt @@ -45,7 +45,7 @@ file(GLOB_RECURSE HEADER_FILES CONFIGURE_DEPENDS *.h;*.hpp) list(FILTER SOURCE_FILES EXCLUDE REGEX "main.cpp") -add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES} ${HEADER_FILES}) +add_library(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index b9ee220d..11da2de1 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -41,7 +41,7 @@ project(DRAMSys_Util) file(GLOB_RECURSE SOURCE_FILES CONFIGURE_DEPENDS *.cpp) file(GLOB_RECURSE HEADER_FILES CONFIGURE_DEPENDS *.h;*.hpp) -add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES} ${HEADER_FILES}) +add_library(${PROJECT_NAME} ${SOURCE_FILES} ${HEADER_FILES}) target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/tests/tests_configuration/CMakeLists.txt b/tests/tests_configuration/CMakeLists.txt index cf0d7e06..28db25bc 100644 --- a/tests/tests_configuration/CMakeLists.txt +++ b/tests/tests_configuration/CMakeLists.txt @@ -2,8 +2,6 @@ ### tests_configuration ### ############################################### -cmake_minimum_required(VERSION 3.1.0) - project(tests_configuration) add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/test_configuration.cpp) diff --git a/tests/tests_dramsys/CMakeLists.txt b/tests/tests_dramsys/CMakeLists.txt index 8c8d48aa..ed845693 100644 --- a/tests/tests_dramsys/CMakeLists.txt +++ b/tests/tests_dramsys/CMakeLists.txt @@ -2,8 +2,6 @@ ### tests_dramsys ### ############################################### -cmake_minimum_required(VERSION 3.1.0) - project(tests_dramsys) file(GLOB_RECURSE SOURCE_FILES *.cpp) diff --git a/tests/tests_regression/CMakeLists.txt b/tests/tests_regression/CMakeLists.txt index e1d97ebf..f16d332a 100644 --- a/tests/tests_regression/CMakeLists.txt +++ b/tests/tests_regression/CMakeLists.txt @@ -35,8 +35,6 @@ ### tests_regression ### ############################################### -cmake_minimum_required(VERSION 3.1.0) - project(tests_regression) find_program(SqlDiff sqldiff) diff --git a/tests/tests_simulator/CMakeLists.txt b/tests/tests_simulator/CMakeLists.txt index 03f5e401..b08874f4 100644 --- a/tests/tests_simulator/CMakeLists.txt +++ b/tests/tests_simulator/CMakeLists.txt @@ -2,8 +2,6 @@ ### tests_simulator ### ############################################### -cmake_minimum_required(VERSION 3.1.0) - project(tests_simulator) add_executable(${PROJECT_NAME} diff --git a/tests/tests_util/CMakeLists.txt b/tests/tests_util/CMakeLists.txt index 65542c88..560caf76 100644 --- a/tests/tests_util/CMakeLists.txt +++ b/tests/tests_util/CMakeLists.txt @@ -2,8 +2,6 @@ ### tests_util ### ############################################### -cmake_minimum_required(VERSION 3.1.0) - project(tests_util) file(GLOB_RECURSE SOURCE_FILES *.cpp) @@ -20,4 +18,4 @@ target_link_libraries(${PROJECT_NAME} gtest_discover_tests(${PROJECT_NAME}) -build_source_group() \ No newline at end of file +build_source_group()