aboutsummaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-04-11 00:50:38 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-04-11 00:50:38 +0800
commit44ad3c8b36540c6b0b3144a21ac40310e163bb19 (patch)
treeec2b75f68771fcbed8ba7450d30da1f05ebfc52c /etc
downloadrwebbrowser-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.cmake11
-rw-r--r--etc/cflags.cmake13
-rw-r--r--etc/scanners.cmake27
-rw-r--r--etc/tests.cmake19
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)
+