diff options
| author | Richard Qin <richard.qin.x@gmail.com> | 2026-04-11 00:50:38 +0800 |
|---|---|---|
| committer | Richard Qin <richard.qin.x@gmail.com> | 2026-04-11 00:50:38 +0800 |
| commit | 44ad3c8b36540c6b0b3144a21ac40310e163bb19 (patch) | |
| tree | ec2b75f68771fcbed8ba7450d30da1f05ebfc52c /etc | |
| download | rwebbrowser-44ad3c8b36540c6b0b3144a21ac40310e163bb19.tar.gz rwebbrowser-44ad3c8b36540c6b0b3144a21ac40310e163bb19.tar.xz | |
feat: initialize project structure with CMake build system, C++23 support, and core browser scaffolding
Diffstat (limited to 'etc')
| -rw-r--r-- | etc/build_type.cmake | 11 | ||||
| -rw-r--r-- | etc/cflags.cmake | 13 | ||||
| -rw-r--r-- | etc/scanners.cmake | 27 | ||||
| -rw-r--r-- | etc/tests.cmake | 19 |
4 files changed, 70 insertions, 0 deletions
diff --git a/etc/build_type.cmake b/etc/build_type.cmake new file mode 100644 index 0000000..69d019f --- /dev/null +++ b/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/etc/cflags.cmake b/etc/cflags.cmake new file mode 100644 index 0000000..cf60dd7 --- /dev/null +++ b/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/etc/scanners.cmake b/etc/scanners.cmake new file mode 100644 index 0000000..2dd9da0 --- /dev/null +++ b/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/etc/tests.cmake b/etc/tests.cmake new file mode 100644 index 0000000..f32724e --- /dev/null +++ b/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) + |
