diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-10-30 02:24:12 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-10-30 02:24:12 +0800 |
| commit | 464313d02b76385d3a2e8809a4595afabca88dae (patch) | |
| tree | 6cbf81416b856ff15fdc4239de5e3624ef10b2cc /ricochet/etc | |
| parent | cf58b3b4dfa0dbbd0ca492484ca241b320c4ba9e (diff) | |
| parent | bdefdb301db843e87aee8c6c35808d295bb66ee5 (diff) | |
| download | rcc-project-464313d02b76385d3a2e8809a4595afabca88dae.tar.gz rcc-project-464313d02b76385d3a2e8809a4595afabca88dae.tar.xz | |
Diffstat (limited to 'ricochet/etc')
| -rw-r--r-- | ricochet/etc/build_type.cmake | 11 | ||||
| -rw-r--r-- | ricochet/etc/cflags.cmake | 13 | ||||
| -rw-r--r-- | ricochet/etc/cmake_uninstall.cmake.in | 21 | ||||
| -rw-r--r-- | ricochet/etc/scanners.cmake | 27 | ||||
| -rw-r--r-- | ricochet/etc/tests.cmake | 19 |
5 files changed, 91 insertions, 0 deletions
diff --git a/ricochet/etc/build_type.cmake b/ricochet/etc/build_type.cmake new file mode 100644 index 0000000..69d019f --- /dev/null +++ b/ricochet/etc/build_type.cmake @@ -0,0 +1,11 @@ +set(default_build_type "Debug") + +if (NOT (CMAKE_BUILD_TYPE_SHADOW STREQUAL CMAKE_BUILD_TYPE)) + if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + message (STATUS "Setting build type to '${default_build_type}'") + set (CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE) + endif () + set (CMAKE_BUILD_TYPE_SHADOW ${CMAKE_BUILD_TYPE} CACHE STRING "used to detect changes in build type" FORCE) +endif () + +message (STATUS "Building in '${CMAKE_BUILD_TYPE}' mode.") diff --git a/ricochet/etc/cflags.cmake b/ricochet/etc/cflags.cmake new file mode 100644 index 0000000..cf60dd7 --- /dev/null +++ b/ricochet/etc/cflags.cmake @@ -0,0 +1,13 @@ +set (CMAKE_CXX_STANDARD 23) +set (CMAKE_EXPORT_COMPILE_COMMANDS ON) +set (CMAKE_CXX_STANDARD_REQUIRED ON) +set (CMAKE_CXX_EXTENSIONS OFF) + +set(SANITIZING_FLAGS "-fno-sanitize-recover=all -fsanitize=undefined -fsanitize=address") + +# ask for more warnings from the compiler +set (CMAKE_BASE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") +set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wpedantic -Wextra -Weffc++ -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wformat=2 -Wno-unqualified-std-cast-call -Wno-non-virtual-dtor") + +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${SANITIZING_FLAGS}") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native")
\ No newline at end of file diff --git a/ricochet/etc/cmake_uninstall.cmake.in b/ricochet/etc/cmake_uninstall.cmake.in new file mode 100644 index 0000000..33ae281 --- /dev/null +++ b/ricochet/etc/cmake_uninstall.cmake.in @@ -0,0 +1,21 @@ +if(NOT EXISTS "@CMAKE_BINARY_DIR@/install_manifest.txt") + message(FATAL_ERROR "Cannot find install manifest: @CMAKE_BINARY_DIR@/install_manifest.txt") +endif() + +file(STRINGS "@CMAKE_BINARY_DIR@/install_manifest.txt" files) + +foreach(file ${files}) + message(STATUS "Uninstalling $ENV{DESTDIR}${file}") + if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") + execute_process( + COMMAND "@CMAKE_COMMAND@" "-E" "rm" "-f" "$ENV{DESTDIR}${file}" + OUTPUT_VARIABLE rm_out + RESULT_VARIABLE rm_retval + ) + if(NOT "${rm_retval}" STREQUAL 0) + message(FATAL_ERROR "Problem uninstalling $ENV{DESTDIR}${file}") + endif() + else() + message(STATUS "File $ENV{DESTDIR}${file} does not exist.") + endif() +endforeach()
\ No newline at end of file diff --git a/ricochet/etc/scanners.cmake b/ricochet/etc/scanners.cmake new file mode 100644 index 0000000..2dd9da0 --- /dev/null +++ b/ricochet/etc/scanners.cmake @@ -0,0 +1,27 @@ +file (GLOB_RECURSE RICOCHET_CC_FILES ${CMAKE_SOURCE_DIR}/src/*.cc) + +file(GLOB_RECURSE ALL_SRC_FILES + ${CMAKE_SOURCE_DIR}/src/*.cc + ${CMAKE_SOURCE_DIR}/src/*.hh + ${CMAKE_SOURCE_DIR}/include/*.hh +) + +add_custom_target (format "clang-format" -i ${ALL_SRC_FILES} COMMENT "Formatting source code...") + +foreach (tidy_target ${ALL_SRC_FILES}) + get_filename_component (basename ${tidy_target} NAME) + get_filename_component (dirname ${tidy_target} DIRECTORY) + get_filename_component (basedir ${dirname} NAME) + set (tidy_target_name "${basedir}__${basename}") + set (tidy_command clang-tidy --quiet -header-filter=.* -p=${PROJECT_BINARY_DIR} ${tidy_target}) + add_custom_target (tidy_${tidy_target_name} ${tidy_command}) + list (APPEND ALL_TIDY_TARGETS tidy_${tidy_target_name}) + + if (${tidy_target} IN_LIST RICOCHET_CC_FILES) + list (APPEND RICOCHET_TIDY_TARGETS tidy_${tidy_target_name}) + endif () +endforeach (tidy_target) + +add_custom_target (tidy DEPENDS ${RICOCHET_TIDY_TARGETS}) + +add_custom_target (tidy-all DEPENDS ${ALL_TIDY_TARGETS}) diff --git a/ricochet/etc/tests.cmake b/ricochet/etc/tests.cmake new file mode 100644 index 0000000..f32724e --- /dev/null +++ b/ricochet/etc/tests.cmake @@ -0,0 +1,19 @@ +include(CTest) + +# list(APPEND CMAKE_CTEST_ARGUMENTS --output-on-failure --stop-on-failure --timeout 15 -E 'speed_test|optimization|webget') + +# set(compile_name "compile with bug-checkers") +# add_test(NAME ${compile_name} +# COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_BINARY_DIR}" -t functionality_testing webget) + +# macro (ttest name) +# add_test(NAME ${name} COMMAND "${name}_sanitized") +# set_property(TEST ${name} PROPERTY FIXTURES_REQUIRED compile) +# endmacro (ttest) + +# set_property(TEST ${compile_name} PROPERTY TIMEOUT 0) +# set_tests_properties(${compile_name} PROPERTIES FIXTURES_SETUP compile) + +# add_test(NAME t_webget COMMAND "${PROJECT_SOURCE_DIR}/tests/webget_t.sh" "${PROJECT_BINARY_DIR}") +# set_property(TEST t_webget PROPERTY FIXTURES_REQUIRED compile) + |
