Compare commits
	
		
			59 commits
		
	
	
		
			6aa03cc05b
			...
			ccf503f44b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ccf503f44b | |||
| 3a7b42445e | |||
| 742dcd044d | |||
| 5fc73f60ab | |||
| 2fd02ce929 | |||
| 4475375e28 | |||
| fcbf6a277c | |||
| d7c1567d3e | |||
| 326f7bf833 | |||
| 514a27a789 | |||
| 46cdcb6874 | |||
| 9762138730 | |||
| 25bdfac834 | |||
| fa87648986 | |||
| 4eecb0bef2 | |||
| a599e65bae | |||
| 6065ab1636 | |||
| baff796eb8 | |||
| ba6a4a0342 | |||
| b6acc19ac8 | |||
| 197e10c0cf | |||
| 1ab514be71 | |||
| 26727a63e0 | |||
| 2ffecd9aae | |||
| 79e22cec0e | |||
| cf6eea6638 | |||
| 93eb4eb61a | |||
| 7cc8bbd3e5 | |||
| c80419e2ba | |||
| 5020941711 | |||
| 775211e9f3 | |||
| ddc44735d8 | |||
| 897acfe149 | |||
| 9597e33f3c | |||
| 6be011f75f | |||
| 05c4757338 | |||
| 39b68e7654 | |||
| 2fdaabdb07 | |||
| e4dd1711b2 | |||
| 6171c7ddb4 | |||
| ef10b77b1a | |||
| ec032439e1 | |||
| 4cf28095db | |||
| b1b9d6ce85 | |||
| f312f68b9e | |||
| 4fea22239c | |||
| f7c7e75185 | |||
| 073c3bb60f | |||
| 136b26e918 | |||
| b0a31d9633 | |||
| 6675e4c3cb | |||
| b17e165fd6 | |||
| b2609e4808 | |||
| 513acf0d30 | |||
| 24d772c2d8 | |||
| f7f6aa20ab | |||
| 4ef760baa0 | |||
| 48cb615051 | |||
| 3fed6aa4f2 | 
					 35 changed files with 584 additions and 671 deletions
				
			
		
							
								
								
									
										271
									
								
								.drone.yml
									
										
									
									
									
								
							
							
						
						
									
										271
									
								
								.drone.yml
									
										
									
									
									
								
							|  | @ -1,42 +1,42 @@ | |||
| --- | ||||
| kind: pipeline | ||||
| type: exec | ||||
| name: amd64 — msvc | ||||
| trigger: | ||||
|   branch: | ||||
|   - main | ||||
| platform: | ||||
|   os: windows | ||||
|   arch: amd64 | ||||
| 
 | ||||
| steps: | ||||
| - name: unit tests | ||||
|   shell: powershell | ||||
|   commands:  | ||||
|     - ./tools/ci/amd64/msvc/unit_tests.ps1 | ||||
| 
 | ||||
| --- | ||||
| kind: pipeline | ||||
| type: docker | ||||
| name: amd64 — gcc | ||||
| trigger: | ||||
|   branch: | ||||
|   - main | ||||
| 
 | ||||
| steps: | ||||
| - name: unit tests | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/amd64/gcc/unit_tests.sh | ||||
| 
 | ||||
| - name: valgrind | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/amd64/gcc/valgrind.sh | ||||
| 
 | ||||
| --- | ||||
| # --- | ||||
| # kind: pipeline | ||||
| # type: exec | ||||
| # name: amd64 — msvc | ||||
| # trigger: | ||||
| #   branch: | ||||
| #   - main | ||||
| # platform: | ||||
| #   os: windows | ||||
| #   arch: amd64 | ||||
| # | ||||
| # steps: | ||||
| # - name: unit tests | ||||
| #   shell: powershell | ||||
| #   commands:  | ||||
| #     - ./tools/ci/amd64/msvc/unit_tests.ps1 | ||||
| # | ||||
| # --- | ||||
| # kind: pipeline | ||||
| # type: docker | ||||
| # name: amd64 — gcc | ||||
| # trigger: | ||||
| #   branch: | ||||
| #   - main | ||||
| # | ||||
| # steps: | ||||
| # - name: unit tests | ||||
| #   image: ci:latest | ||||
| #   pull: if-not-exists | ||||
| #   commands: | ||||
| #     - ./tools/ci/amd64/gcc/unit_tests.sh | ||||
| # | ||||
| # - name: valgrind | ||||
| #   image: ci:latest  | ||||
| #   pull: if-not-exists | ||||
| #   commands: | ||||
| #     - ./tools/ci/amd64/gcc/valgrind.sh | ||||
| # | ||||
| # --- | ||||
| kind: pipeline | ||||
| type: docker | ||||
| name: amd64 — clang | ||||
|  | @ -45,114 +45,95 @@ trigger: | |||
|   - main | ||||
| 
 | ||||
| steps: | ||||
| - name: code coverage | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   environment: | ||||
|     CODECOV_TOKEN: | ||||
|       from_secret: CODECOV_TOKEN  | ||||
|   commands: | ||||
|     - ./tools/ci/amd64/clang/coverage.sh | ||||
| 
 | ||||
| - name: leak sanitizer | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/amd64/clang/lsan.sh | ||||
| 
 | ||||
| # - name: code coverage | ||||
| #   image: ci:latest | ||||
| #   pull: if-not-exists | ||||
| #   environment: | ||||
| #     CODECOV_TOKEN: | ||||
| #       from_secret: CODECOV_TOKEN  | ||||
| #   commands: | ||||
| #     - ./tools/ci/amd64/clang/coverage.sh | ||||
| # | ||||
| # - name: leak sanitizer | ||||
| #   image: ci:latest  | ||||
| #   pull: if-not-exists | ||||
| #   commands: | ||||
| #     - ./tools/ci/amd64/clang/lsan.sh | ||||
| # | ||||
| - name: memory sanitizer | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/amd64/clang/msan.sh | ||||
| 
 | ||||
| --- | ||||
| kind: pipeline | ||||
| type: docker | ||||
| name: static analysis | ||||
| trigger: | ||||
|   branch: | ||||
|   - main | ||||
| 
 | ||||
| steps: | ||||
| - name: clang tidy | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   privileged: true | ||||
|   commands: | ||||
|     - ./tools/ci/static_analysis/clang_tidy.sh | ||||
| 
 | ||||
| - name: shell check | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/static_analysis/shell_check.sh | ||||
| 
 | ||||
| - name: clang format | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/static_analysis/clang_format.sh | ||||
| 
 | ||||
| - name: cmake format | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/static_analysis/cmake_format.sh | ||||
| 
 | ||||
| - name: shell format | ||||
|   image: ci:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - ./tools/ci/static_analysis/shell_format.sh | ||||
| 
 | ||||
| --- | ||||
| kind: pipeline | ||||
| type: docker  | ||||
| name: documentation — development | ||||
| node: | ||||
|   environment: ryali | ||||
| trigger: | ||||
|   branch: | ||||
|   - main | ||||
| 
 | ||||
| steps: | ||||
| - name: build and deploy | ||||
|   image: documentation:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - pwd | ||||
|     - cd docs | ||||
|     - mkdir generated | ||||
|     - touch generated/changelogs.rst | ||||
|     - touch generated/api.rst | ||||
|     - sphinx-build -M html . . | ||||
| 
 | ||||
|     - rm -rf /light_docs_dev/* | ||||
|     - mv ./html/* /light_docs_dev/ | ||||
| 
 | ||||
| --- | ||||
| 
 | ||||
| kind: pipeline | ||||
| type: docker | ||||
| name: documentation — production | ||||
| node: | ||||
|   environment: ryali | ||||
| trigger: | ||||
|   event: | ||||
|   - tag | ||||
| 
 | ||||
| steps: | ||||
| - name: build and deploy | ||||
|   image: documentation:latest | ||||
|   pull: if-not-exists | ||||
|   commands: | ||||
|     - cd docs | ||||
|     - mkdir generated | ||||
|     - touch generated/changelogs.rst | ||||
|     - touch generated/api.rst | ||||
|     - sphinx-build -M html . . | ||||
| 
 | ||||
|     - rm -rf /light_docs/* | ||||
|     - mv ./html/* /light_docs/ | ||||
| 
 | ||||
| # | ||||
| # --- | ||||
| # kind: pipeline | ||||
| # type: docker | ||||
| # name: static analysis | ||||
| # trigger: | ||||
| #   branch: | ||||
| #   - main | ||||
| # | ||||
| # steps: | ||||
| # - name: clang tidy | ||||
| #   image: ci:latest  | ||||
| #   pull: if-not-exists | ||||
| #   privileged: true | ||||
| #   commands: | ||||
| #     - ./tools/ci/static_analysis/clang_tidy.sh | ||||
| # | ||||
| # - name: clang format | ||||
| #   image: ci:latest  | ||||
| #   pull: if-not-exists | ||||
| #   commands: | ||||
| #     - ./tools/ci/static_analysis/clang_format.sh | ||||
| # | ||||
| # --- | ||||
| # kind: pipeline | ||||
| # type: docker  | ||||
| # name: documentation — development | ||||
| # node: | ||||
| #   environment: ryali | ||||
| # trigger: | ||||
| #   branch: | ||||
| #   - main | ||||
| # | ||||
| # steps: | ||||
| # - name: build and deploy | ||||
| #   image: documentation:latest | ||||
| #   pull: if-not-exists | ||||
| #   commands: | ||||
| #     - pwd | ||||
| #     - cd docs | ||||
| #     - mkdir generated | ||||
| #     - touch generated/changelogs.rst | ||||
| #     - touch generated/api.rst | ||||
| #     - sphinx-build -M html . . | ||||
| # | ||||
| #     - rm -rf /light_docs_dev/* | ||||
| #     - mv ./html/* /light_docs_dev/ | ||||
| # | ||||
| # --- | ||||
| # | ||||
| # kind: pipeline | ||||
| # type: docker | ||||
| # name: documentation — production | ||||
| # node: | ||||
| #   environment: ryali | ||||
| # trigger: | ||||
| #   event: | ||||
| #   - tag | ||||
| # | ||||
| # steps: | ||||
| # - name: build and deploy | ||||
| #   image: documentation:latest | ||||
| #   pull: if-not-exists | ||||
| #   commands: | ||||
| #     - cd docs | ||||
| #     - mkdir generated | ||||
| #     - touch generated/changelogs.rst | ||||
| #     - touch generated/api.rst | ||||
| #     - sphinx-build -M html . . | ||||
| # | ||||
| #     - rm -rf /light_docs/* | ||||
| #     - mv ./html/* /light_docs/ | ||||
|  |  | |||
|  | @ -1,5 +1,2 @@ | |||
| add_library_module(app application.cpp) | ||||
| target_link_libraries( | ||||
|     app | ||||
|     PUBLIC memory | ||||
|     PRIVATE lt_debug) | ||||
| target_link_libraries(app PUBLIC memory PRIVATE lt_debug) | ||||
|  |  | |||
|  | @ -1,6 +1,18 @@ | |||
| add_library_module(libasset_baker bakers.cpp) | ||||
| target_link_libraries(libasset_baker PUBLIC assets logger lt_debug tbb) | ||||
| add_test_module(libasset_baker bakers.test.cpp) | ||||
| add_library_module(libasset_baker | ||||
|     bakers.cpp | ||||
| ) | ||||
| target_link_libraries(libasset_baker | ||||
| PUBLIC | ||||
|     assets | ||||
|     logger | ||||
|     lt_debug | ||||
|     tbb | ||||
| ) | ||||
| add_test_module(libasset_baker  | ||||
|     bakers.test.cpp | ||||
| ) | ||||
| 
 | ||||
| add_executable_module(asset_baker entrypoint/baker.cpp) | ||||
| add_executable_module(asset_baker | ||||
|     entrypoint/baker.cpp | ||||
| ) | ||||
| target_link_libraries(asset_baker PRIVATE libasset_baker) | ||||
|  |  | |||
|  | @ -1,2 +1,7 @@ | |||
| #include <asset_baker/bakers.hpp> | ||||
| #include <test/test.hpp> | ||||
| 
 | ||||
| using ::lt::test::Case; | ||||
| using ::lt::test::Suite; | ||||
| 
 | ||||
| // TODO(Light): add asset baking tests!
 | ||||
|  |  | |||
|  | @ -1,5 +1,14 @@ | |||
| add_library_module(assets shader.cpp) | ||||
| add_library_module(assets  | ||||
|     shader.cpp | ||||
| ) | ||||
| 
 | ||||
| target_link_libraries(assets PUBLIC logger lt_debug) | ||||
| target_link_libraries( | ||||
| assets  | ||||
| PUBLIC | ||||
| logger  | ||||
| lt_debug | ||||
| ) | ||||
| 
 | ||||
| add_test_module(assets shader.test.cpp) | ||||
| add_test_module(assets | ||||
|     shader.test.cpp | ||||
| ) | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| add_library_module(lt_debug instrumentor.cpp) | ||||
| target_link_libraries(lt_debug PUBLIC logger) | ||||
| target_precompile_headers(lt_debug PUBLIC | ||||
|                           ${CMAKE_CURRENT_SOURCE_DIR}/private/pch.hpp) | ||||
| target_precompile_headers(lt_debug PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/private/pch.hpp) | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ using lt::test::expect_unreachable; | |||
| using lt::test::Suite; | ||||
| 
 | ||||
| using lt::test::expect_eq; | ||||
| using lt::test::expect_ne; | ||||
| 
 | ||||
| using lt::test::expect_false; | ||||
| using lt::test::expect_true; | ||||
|  |  | |||
|  | @ -1,9 +1,21 @@ | |||
| add_library_module(libmirror) | ||||
| target_link_libraries(libmirror INTERFACE app time input surface renderer) | ||||
| add_library_module(libmirror  | ||||
| ) | ||||
| target_link_libraries( | ||||
|   libmirror | ||||
|   INTERFACE | ||||
|   app | ||||
|   time | ||||
|   input  | ||||
|   surface | ||||
|   renderer | ||||
| ) | ||||
| 
 | ||||
| add_test_module( | ||||
|     libmirror layers/editor_layer.test.cpp panels/asset_browser.test.cpp | ||||
|     panels/properties.test.cpp panels/scene_hierarchy.test.cpp) | ||||
| add_test_module(libmirror  | ||||
|     layers/editor_layer.test.cpp | ||||
|     panels/asset_browser.test.cpp | ||||
|     panels/properties.test.cpp | ||||
|     panels/scene_hierarchy.test.cpp | ||||
| ) | ||||
| 
 | ||||
| add_executable_module(mirror entrypoint/mirror.cpp) | ||||
| target_link_libraries(mirror PRIVATE libmirror input) | ||||
|  |  | |||
|  | @ -24,10 +24,6 @@ void renderer_callback( | |||
|     std::any &user_data | ||||
| ) | ||||
| { | ||||
| 	std::ignore = message_severity; | ||||
| 	std::ignore = message_type; | ||||
| 	std::ignore = user_data; | ||||
| 
 | ||||
| 	log_dbg("RENDERER CALLBACK: {}", data.message); | ||||
| } | ||||
| 
 | ||||
|  | @ -208,6 +204,7 @@ public: | |||
| 		); | ||||
| 
 | ||||
| 		auto entity = ecs::Entity { m_editor_registry, m_window }; | ||||
| 		memory::Ref<app::SystemStats> system_stats = nullptr; | ||||
| 
 | ||||
| 		m_renderer_system = std::make_shared<renderer::System>(renderer::System::CreateInfo { | ||||
| 		    .config = { .target_api = renderer::Api::vulkan, .max_frames_in_flight = 3u }, | ||||
|  |  | |||
|  | @ -1,6 +1,6 @@ | |||
| add_library_module( | ||||
|     renderer | ||||
| add_library_module(renderer | ||||
|     system.cpp | ||||
| 
 | ||||
|     # Vulkan - backend | ||||
|     backend/vk/messenger.cpp | ||||
|     backend/vk/context/device.cpp | ||||
|  | @ -18,17 +18,27 @@ add_library_module( | |||
|     frontend/context/surface.cpp | ||||
|     frontend/context/swapchain.cpp | ||||
|     frontend/renderer/renderer.cpp | ||||
|     frontend/renderer/pass.cpp) | ||||
|     frontend/renderer/pass.cpp | ||||
| ) | ||||
| 
 | ||||
| target_link_libraries( | ||||
|     renderer | ||||
|     PUBLIC app ecs memory assets time bitwise | ||||
|     PRIVATE surface pthread) | ||||
| target_link_libraries(renderer | ||||
| PUBLIC  | ||||
|     app  | ||||
|     ecs | ||||
|     memory | ||||
|     assets | ||||
|     time | ||||
|     bitwise | ||||
| PRIVATE | ||||
|     surface | ||||
|     pthread | ||||
| ) | ||||
| 
 | ||||
| add_test_module( | ||||
|     renderer | ||||
| add_test_module(renderer  | ||||
|     test/utils.cpp | ||||
| 
 | ||||
|     system.test.cpp | ||||
| 
 | ||||
|     # general backend tests through the frontend | ||||
|     frontend/messenger.test.cpp | ||||
|     frontend/context/surface.test.cpp | ||||
|  | @ -36,9 +46,17 @@ add_test_module( | |||
|     frontend/context/swapchain.test.cpp | ||||
|     frontend/renderer/pass.test.cpp | ||||
|     frontend/renderer/renderer.test.cpp | ||||
| 
 | ||||
|     # backend specific tests -- vk | ||||
|     backend/vk/context/instance.test.cpp | ||||
|     # backend specific tests -- dx backend specific tests -- mt | ||||
| 
 | ||||
|     # backend specific tests -- dx | ||||
| 
 | ||||
|     # backend specific tests -- mt | ||||
| )  | ||||
| 
 | ||||
| target_link_libraries(renderer_tests PRIVATE surface pthread) | ||||
| target_link_libraries(renderer_tests | ||||
| PRIVATE | ||||
|     surface | ||||
|     pthread | ||||
| ) | ||||
|  |  | |||
|  | @ -1,3 +1,2 @@ | |||
| add_library(std INTERFACE) | ||||
| target_precompile_headers(std INTERFACE | ||||
|                           ${CMAKE_CURRENT_SOURCE_DIR}/public/pch.hpp) | ||||
| target_precompile_headers(std INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/public/pch.hpp) | ||||
|  |  | |||
|  | @ -14,6 +14,7 @@ | |||
| #include <cfenv> | ||||
| #include <cfloat> | ||||
| #include <cinttypes> | ||||
| #include <ciso646> | ||||
| #include <climits> | ||||
| #include <clocale> | ||||
| #include <cmath> | ||||
|  |  | |||
|  | @ -7,10 +7,17 @@ else(WIN32) | |||
| 
 | ||||
| endif() | ||||
| 
 | ||||
| target_link_libraries( | ||||
|     surface | ||||
|     PUBLIC ecs app math memory tbb | ||||
|     PRIVATE logger lt_debug time) | ||||
| target_link_libraries(surface PUBLIC  | ||||
|     ecs | ||||
|     app | ||||
|     math | ||||
|     memory | ||||
|     tbb | ||||
|     PRIVATE | ||||
|     logger  | ||||
|     lt_debug | ||||
|     time | ||||
| ) | ||||
| 
 | ||||
| add_test_module(surface system.test.cpp) | ||||
| add_fuzz_module(surface system.fuzz.cpp) | ||||
|  |  | |||
							
								
								
									
										38
									
								
								modules/test.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										38
									
								
								modules/test.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,38 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| find . -type f \( -name "*.cpp" -o -name "*.hpp" \) -print0 | while IFS= read -r -d '' file; do | ||||
|   scope=false | ||||
|   ref=false | ||||
|   if grep -Eq "Scope\s*<" "$file"; then | ||||
|     scope=true | ||||
|     sed -i -E 's/(Scope)(\s*<)/memory::\1\2/g' "$file" | ||||
|   fi | ||||
|   if grep -Eq "Ref\s*<" "$file"; then | ||||
|     ref=true | ||||
|     sed -i -E 's/(Ref)(\s*<)/memory::\1\2/g' "$file" | ||||
|   fi | ||||
|   if grep -Eq "\bcreate_scope\b" "$file"; then | ||||
|     scope=true | ||||
|     sed -i -E 's/\b(create_scope)\b/memory::\1/g' "$file" | ||||
|   fi | ||||
|   if grep -Eq "\bcreate_ref\b" "$file"; then | ||||
|     ref=true | ||||
|     sed -i -E 's/\b(create_ref)\b/memory::\1/g' "$file" | ||||
|   fi | ||||
|   if $scope || $ref; then | ||||
|     includes="" | ||||
|     $scope && includes+="#include <memory/scope.hpp>\n" | ||||
|     $ref && includes+="#include <memory/reference.hpp>\n" | ||||
|     tmp=$(mktemp) | ||||
|     if [[ "$file" =~ \.hpp$ ]] && pragma_line=$(grep -En -m1 '^#pragma once' "$file" | cut -d: -f1); then | ||||
|       insert_line=$((pragma_line + 2)) | ||||
|     else | ||||
|       insert_line=1 | ||||
|     fi | ||||
|     head -n $((insert_line - 1)) "$file" > "$tmp" | ||||
|     echo -e "$includes" >> "$tmp" | ||||
|     tail -n +$insert_line "$file" >> "$tmp" | ||||
|     mv "$tmp" "$file" | ||||
|     clang-format -i "$file" | ||||
|   fi | ||||
| done | ||||
|  | @ -1,7 +1,7 @@ | |||
| add_library_module(test test.cpp entrypoint.cpp) | ||||
| add_library_module(fuzz_test test.cpp fuzz.cpp) | ||||
| 
 | ||||
| target_link_libraries(test PUBLIC tbb logger) | ||||
| target_link_libraries(fuzz_test PUBLIC tbb logger) | ||||
| target_link_libraries(test PUBLIC tbb) | ||||
| target_link_libraries(fuzz_test PUBLIC tbb) | ||||
| 
 | ||||
| add_test_module(test test.test.cpp) | ||||
|  |  | |||
|  | @ -1,4 +1,3 @@ | |||
| #include <logger/logger.hpp> | ||||
| #include <test/test.hpp> | ||||
| 
 | ||||
| using namespace ::lt::test; | ||||
|  | @ -85,14 +84,14 @@ try | |||
| } | ||||
| catch (const std::exception &exp) | ||||
| { | ||||
| 	log_crt("Terminated due to uncaught exception:"); | ||||
| 	log_crt("\twhat: {}", exp.what()); | ||||
| 	std::println("Terminated due to uncaught exception:"); | ||||
| 	std::println("\twhat: {}", exp.what()); | ||||
| 
 | ||||
| 	return EXIT_FAILURE; | ||||
| } | ||||
| catch (...) | ||||
| { | ||||
| 	log_crt("Terminated due to uncaught non-std exception!"); | ||||
| 	std::println("Terminated due to uncaught non-std exception!"); | ||||
| 
 | ||||
| 	return EXIT_FAILURE; | ||||
| } | ||||
|  |  | |||
|  | @ -1,3 +1,4 @@ | |||
| add_library_module(time timer.cpp) | ||||
| target_link_libraries(time PUBLIC tbb) | ||||
| add_test_module(time timer.test.cpp) | ||||
| 
 | ||||
|  |  | |||
|  | @ -4,6 +4,7 @@ | |||
| #include <ui/ui.hpp> | ||||
| 
 | ||||
| #ifdef LIGHT_PLATFORM_WINDOWS | ||||
| 	#include <renderer/dx/shared_context.hpp> | ||||
| 	#include <renderer/dx/user_interface.hpp> | ||||
| #endif | ||||
| 
 | ||||
|  | @ -13,6 +14,7 @@ | |||
| #include <input/events/keyboard.hpp> | ||||
| #include <input/events/mouse.hpp> | ||||
| #include <input/key_codes.hpp> | ||||
| #include <renderer/graphics_context.hpp> | ||||
| #include <utility> | ||||
| 
 | ||||
| 
 | ||||
|  | @ -25,7 +27,8 @@ namespace lt { | |||
| 
 | ||||
| UserInterface *UserInterface::s_context = nullptr; | ||||
| 
 | ||||
| auto UserInterface::create(memory::Ref<SharedContext> sharedContext) -> memory::Scope<UserInterface> | ||||
| auto UserInterface::create(memory::Ref<SharedContext> sharedContext) | ||||
|     -> memory::Scope<UserInterface> | ||||
| { | ||||
| 	auto scopeUserInterface = memory::Scope<UserInterface> { nullptr }; | ||||
| 
 | ||||
|  |  | |||
|  | @ -11,7 +11,8 @@ class SharedContext; | |||
| class UserInterface | ||||
| { | ||||
| public: | ||||
| 	static auto create(memory::Ref<SharedContext> sharedContext) -> memory::Scope<UserInterface>; | ||||
| 	static auto create(memory::Ref<SharedContext> sharedContext) | ||||
| 	    -> memory::Scope<UserInterface>; | ||||
| 
 | ||||
| 	static void dockspace_begin(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,37 +1,29 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| 
 | ||||
| CC=$(which clang) | ||||
| export CC | ||||
| 
 | ||||
| CXX=$(which clang++) | ||||
| export CXX | ||||
| 
 | ||||
| DISPLAY=:99 | ||||
| export DISPLAY | ||||
| set -e | ||||
| cd $(git rev-parse --show-toplevel)/ | ||||
| rm -rf ./build && mkdir build/ | ||||
| 
 | ||||
| Xvfb :99 -screen 0 1024x768x16 & | ||||
| export CXX=$(which clang++) | ||||
| export CC=$(which clang) | ||||
| export DISPLAY=:99 | ||||
| 
 | ||||
| cmake \ | ||||
|     -S . \ | ||||
| cmake . \ | ||||
| -Bbuild \ | ||||
| -GNinja \ | ||||
| -DCMAKE_LINKER_TYPE=MOLD \ | ||||
| -DENABLE_UNIT_TESTS=ON \ | ||||
| -DENABLE_LLVM_COVERAGE=ON \ | ||||
| -DCMAKE_BUILD_TYPE=Release \ | ||||
|     -D CMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++ -g -fno-omit-frame-pointer" | ||||
| 
 | ||||
| cmake --build ./build -j"$(nproc)" | ||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++ -g -fno-omit-frame-pointer" \ | ||||
| && cmake --build ./build -j `nproc` | ||||
| 
 | ||||
| mkdir -p ./build/coverage/  | ||||
| while IFS= read -r -d '' test; do | ||||
|     LLVM_PROFILE_FILE="./build/coverage/$(basename "$(dirname "$test")").profraw" | ||||
|     export LLVM_PROFILE_FILE | ||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | ||||
|     export LLVM_PROFILE_FILE="./build/coverage/$(basename "$(dirname "$test")").profraw"; | ||||
|     echo ${LLVM_PROFILE_FILE} >> ./build/coverage/list; | ||||
| 
 | ||||
|     echo "${LLVM_PROFILE_FILE}" >>./build/coverage/list | ||||
|     gdb \ | ||||
|     --return-child-result \ | ||||
|     -ex='set confirm off' \ | ||||
|  | @ -41,16 +33,15 @@ while IFS= read -r -d '' test; do | |||
|     -ex='quit' \ | ||||
|     -q \ | ||||
|     "$test" | ||||
| done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||
| done | ||||
| 
 | ||||
| llvm-profdata merge --input-files './build/coverage/list' -o "./build/coverage/merged.profdata"  | ||||
| find ./build/modules -type f -name "*.profraw" -exec rm -fv {} + | ||||
| 
 | ||||
| LLVM_COV_SHOW=$( | ||||
|     llvm-cov show \ | ||||
| LLVM_COV_SHOW=$(llvm-cov show \ | ||||
|         -instr-profile='./build/coverage/merged.profdata' \ | ||||
|         "$(find ./build -type f -name '*_tests' -executable -exec printf -- '-object %s ' {} \;)" \ | ||||
|         "$(find ./build -type f -name '*\.a' -exec printf -- '-object %s ' {} \;)" \ | ||||
|         $(find ./build -type f -name '*_tests' -executable -exec printf -- '-object %s ' {} \;) \ | ||||
|         $(find ./build -type f -name '*\.a' -exec printf -- '-object %s ' {} \;) \ | ||||
|         -ignore-filename-regex='\.test\.cpp$' \ | ||||
|         -ignore-filename-regex='\.fuzz\.cpp$' | ||||
| ) | ||||
|  |  | |||
|  | @ -1,37 +1,25 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| 
 | ||||
| CC=$(which clang) | ||||
| export CC | ||||
| 
 | ||||
| CXX=$(which clang++) | ||||
| export CXX | ||||
| 
 | ||||
| DISPLAY=:99 | ||||
| export DISPLAY | ||||
| 
 | ||||
| LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp:fast_unwind_on_malloc=0:verbosity=1:report_objects=1" | ||||
| export LSAN_OPTIONS | ||||
| 
 | ||||
| LSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" | ||||
| export LSAN_SYMBOLIZER_PATH | ||||
| set -e | ||||
| cd $(git rev-parse --show-toplevel)/ | ||||
| rm -rf ./build && mkdir build/ | ||||
| 
 | ||||
| Xvfb :99 -screen 0 1024x768x16 & | ||||
| export CXX=$(which clang++) | ||||
| export CC=$(which clang) | ||||
| export DISPLAY=:99 | ||||
| 
 | ||||
| cmake \ | ||||
|     -S . \ | ||||
| cmake . \ | ||||
| -Bbuild \ | ||||
| -GNinja \ | ||||
| -DCMAKE_LINKER_TYPE=MOLD \ | ||||
| -DENABLE_UNIT_TESTS=ON \ | ||||
|     -D CMAKE_BUILD_TYPE=Release \ | ||||
| -DCMAKE_BUILD_TYPE=Debug \ | ||||
| -DCMAKE_CXX_FLAGS=" \ | ||||
| -fsanitize=leak \ | ||||
| -fno-omit-frame-pointer \ | ||||
| -fno-common \ | ||||
| -g \ | ||||
| -fno-omit-frame-pointer \ | ||||
| -std=c++23 \ | ||||
| -nostdinc++ \ | ||||
| -isystem /libcxx_lsan/include/c++/v1/" \ | ||||
|  | @ -40,11 +28,12 @@ cmake \ | |||
| -L/libcxx_lsan/lib \ | ||||
| -lc++ \ | ||||
| -lc++abi \ | ||||
| -Wl,-rpath,/libcxx_lsan/lib" | ||||
| -Wl,-rpath,/libcxx_lsan/lib" \ | ||||
| && cmake --build ./build -j`nproc` | ||||
| 
 | ||||
| cmake --build ./build --target='renderer_tests' -j"$(nproc)" | ||||
| 
 | ||||
| while IFS= read -r -d '' test; do | ||||
| export LSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/lsan.supp:fast_unwind_on_malloc=0:verbosity=1:report_objects=1" | ||||
| export LSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" | ||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | ||||
|     echo "Running $test" | ||||
|     "$test" | ||||
| done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||
| done | ||||
|  |  | |||
|  | @ -1,45 +1,61 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| 
 | ||||
| CC=$(which clang) | ||||
| export CC | ||||
| 
 | ||||
| CXX=$(which clang++) | ||||
| export CXX | ||||
| 
 | ||||
| DISPLAY=:99 | ||||
| export DISPLAY | ||||
| set -e | ||||
| cd $(git rev-parse --show-toplevel)/ | ||||
| rm -rf ./build && mkdir build/ | ||||
| 
 | ||||
| Xvfb :99 -screen 0 1024x768x16 & | ||||
| export CXX=$(which clang++) | ||||
| export CC=$(which clang) | ||||
| export DISPLAY=:99 | ||||
| 
 | ||||
| cmake \ | ||||
|     -S . \ | ||||
| export PKG_CONFIG_PATH=/msan/lib/pkgconfig:${PKG_CONFIG_PATH} | ||||
| 
 | ||||
| source '/1.4.328.1/setup-env.sh' | ||||
| 
 | ||||
| echo "REVPARSE: $(git rev-parse --show-toplevel)" | ||||
| 
 | ||||
| cat "$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp" | ||||
| 
 | ||||
| cmake . \ | ||||
| -Bbuild \ | ||||
| -GNinja \ | ||||
| -DCMAKE_INCLUDE_PATH=/msan/include \ | ||||
| -DCMAKE_LIBRARY_PATH=/msan/lib \ | ||||
| -DCMAKE_PREFIX_PATH=/msan \ | ||||
| -DCMAKE_LINKER_TYPE=MOLD \ | ||||
| -DENABLE_UNIT_TESTS=ON \ | ||||
| -DCMAKE_BUILD_TYPE=Release \ | ||||
| -DCMAKE_C_FLAGS=" \ | ||||
| -fsanitize=memory \ | ||||
| -fsanitize-memory-track-origins \ | ||||
| -fsanitize-ignorelist=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp \ | ||||
| -fno-omit-frame-pointer \ | ||||
| -g" \ | ||||
| -DCMAKE_CXX_FLAGS=" \ | ||||
| -fsanitize=memory \ | ||||
| -fsanitize-memory-track-origins \ | ||||
| -g \ | ||||
| -fsanitize-ignorelist=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp \ | ||||
| -fno-omit-frame-pointer \ | ||||
| -g \ | ||||
| -std=c++23 \ | ||||
| -nostdinc++ \ | ||||
| -isystem /libcxx_msan/include/c++/v1/" \ | ||||
| -DCMAKE_EXE_LINKER_FLAGS=" \ | ||||
| -fsanitize=memory \ | ||||
| -fsanitize-memory-track-origins \ | ||||
| -L/libcxx_msan/lib \ | ||||
| -fsanitize-ignorelist=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp \ | ||||
| -g \ | ||||
| -std=c++23 \ | ||||
| -L/msan/lib -Wl,-rpath,/msan/lib \ | ||||
| -L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib \ | ||||
| -lc++ \ | ||||
| -lc++abi \ | ||||
| -Wl,-rpath,/libcxx_msan/lib" | ||||
| -lc++abi" \ | ||||
| && cmake --build ./build --target='renderer_tests' -j`nproc` | ||||
| 
 | ||||
| cmake --build ./build -j"$(nproc)" | ||||
| 
 | ||||
| while IFS= read -r -d '' test; do | ||||
| export MSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" | ||||
| export MSAN_OPTIONS="suppressions=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp:fast_unwind_on_malloc=0:verbosity=1:report_umrs=1" | ||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | ||||
|   echo "Running $test" | ||||
|   "$test" | ||||
| done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||
| done | ||||
|  |  | |||
|  | @ -1,32 +1,25 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| 
 | ||||
| CC=$(which gcc) | ||||
| export CC | ||||
| 
 | ||||
| CXX=$(which g++) | ||||
| export CXX | ||||
| 
 | ||||
| DISPLAY=:99 | ||||
| export DISPLAY | ||||
| set -e | ||||
| cd $(git rev-parse --show-toplevel)/ | ||||
| rm -rf ./build && mkdir build/ | ||||
| 
 | ||||
| Xvfb :99 -screen 0 1024x768x16 & | ||||
| export CXX=$(which g++) | ||||
| export CC=$(which gcc) | ||||
| export DISPLAY=:99 | ||||
| 
 | ||||
| # gcc uses libstdc++ by default | ||||
| cmake \ | ||||
|     -S . \ | ||||
| cmake . \ | ||||
| -Bbuild \ | ||||
| -GNinja \ | ||||
| -DCMAKE_LINKER_TYPE=MOLD \ | ||||
| -DENABLE_UNIT_TESTS=ON \ | ||||
| -DCMAKE_BUILD_TYPE=Release \ | ||||
|     -D CMAKE_CXX_FLAGS="-std=c++23 -g -fno-omit-frame-pointer" | ||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -g -fno-omit-frame-pointer" \ | ||||
| && cmake --build ./build -j `nproc` | ||||
| 
 | ||||
| cmake --build ./build -j"$(nproc)" | ||||
| 
 | ||||
| while IFS= read -r -d '' test; do | ||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | ||||
|     echo "Running $test" | ||||
|     gdb \ | ||||
|     --return-child-result \ | ||||
|  | @ -37,5 +30,4 @@ while IFS= read -r -d '' test; do | |||
|     -ex='quit' \ | ||||
|     -q \ | ||||
|     "$test" | ||||
| 
 | ||||
| done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||
| done | ||||
|  |  | |||
|  | @ -1,37 +1,28 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| export DEBUGINFOD_URLS="https://debuginfod.archlinux.org/" | ||||
| 
 | ||||
| CC=$(which gcc) | ||||
| export CC | ||||
| 
 | ||||
| CXX=$(which g++) | ||||
| export CXX | ||||
| 
 | ||||
| DISPLAY=:99 | ||||
| export DISPLAY | ||||
| 
 | ||||
| DEBUGINFOD_URLS="https://debuginfod.archlinux.org/" | ||||
| export DEBUGINFOD_URLS | ||||
| set -e | ||||
| cd $(git rev-parse --show-toplevel)/ | ||||
| rm -rf ./build && mkdir build/ | ||||
| 
 | ||||
| Xvfb :99 -screen 0 1024x768x16 & | ||||
| export CXX=$(which g++) | ||||
| export CC=$(which gcc) | ||||
| export DISPLAY=:99 | ||||
| 
 | ||||
| # gcc uses libstdc++ by default | ||||
| cmake \ | ||||
|     -S . \ | ||||
| cmake . \ | ||||
| -Bbuild \ | ||||
| -GNinja \ | ||||
| -DCMAKE_LINKER_TYPE=MOLD \ | ||||
| -DENABLE_UNIT_TESTS=ON \ | ||||
| -DCMAKE_BUILD_TYPE=Release \ | ||||
|     -D CMAKE_CXX_FLAGS="-std=c++23 -fno-omit-frame-pointer -fno-common -g" | ||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -g -fno-omit-frame-pointer" \ | ||||
| && cmake --build ./build -j `nproc` | ||||
| 
 | ||||
| cmake --build ./build -j"$(nproc)" | ||||
| 
 | ||||
| while IFS= read -r -d '' test; do | ||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | ||||
|     echo "Running $test" | ||||
| 
 | ||||
|     valgrind \ | ||||
|     --leak-check=full \ | ||||
|     --show-leak-kinds=all \ | ||||
|  | @ -40,6 +31,5 @@ while IFS= read -r -d '' test; do | |||
|     --num-callers=50 \ | ||||
|     --gen-suppressions=all \ | ||||
|     --suppressions='./tools/ci/amd64/gcc/valgrind.supp' \ | ||||
|         --error-exitcode=255 "${test}" || exit 1 | ||||
| 
 | ||||
| done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||
|     --error-exitcode=255 ${test} || exit 1 | ||||
| done | ||||
|  |  | |||
|  | @ -1,130 +1,3 @@ | |||
| { | ||||
|    <insert_a_suppression_name_here> | ||||
|    Memcheck:Leak | ||||
|    match-leak-kinds: indirect | ||||
|    fun:calloc | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    fun:_ZNK2lt8renderer2vk6Device17destroy_swapchainEP16VkSwapchainKHR_T | ||||
| } | ||||
| { | ||||
|    <insert_a_suppression_name_here> | ||||
|    Memcheck:Leak | ||||
|    match-leak-kinds: definite | ||||
|    fun:malloc | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    fun:_ZNK2lt8renderer2vk6Device17destroy_swapchainEP16VkSwapchainKHR_T | ||||
| } | ||||
| { | ||||
|    <insert_a_suppression_name_here> | ||||
|    Memcheck:Leak | ||||
|    match-leak-kinds: reachable | ||||
|    fun:malloc | ||||
|    fun:_dbus_strdup | ||||
|    fun:UnknownInlinedFun | ||||
|    fun:UnknownInlinedFun | ||||
|    fun:internal_bus_get | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    fun:UnknownInlinedFun | ||||
|    fun:UnknownInlinedFun | ||||
|    fun:loader_icd_scan | ||||
|    fun:UnknownInlinedFun | ||||
|    fun:UnknownInlinedFun | ||||
|    fun:terminator_EnumerateInstanceExtensionProperties | ||||
|    fun:vkEnumerateInstanceExtensionProperties | ||||
| } | ||||
| { | ||||
|    <insert_a_suppression_name_here> | ||||
|    Memcheck:Cond | ||||
|    obj:/usr/lib/libnvidia-glvkspirv.so.580.95.05 | ||||
|    obj:/usr/lib/libnvidia-glvkspirv.so.580.95.05 | ||||
|    obj:/usr/lib/libnvidia-glvkspirv.so.580.95.05 | ||||
|    fun:_nv002nvvm | ||||
| } | ||||
| { | ||||
|    <insert_a_suppression_name_here> | ||||
|    Memcheck:Leak | ||||
|    match-leak-kinds: reachable | ||||
|    fun:malloc | ||||
|    fun:malloc | ||||
|    fun:_dl_close_worker | ||||
|    fun:_dl_close | ||||
|    fun:_dl_catch_exception | ||||
|    fun:_dl_catch_error | ||||
|    fun:_dlerror_run | ||||
| } | ||||
| { | ||||
|    <insert_a_suppression_name_here> | ||||
|    Memcheck:Leak | ||||
|    match-leak-kinds: definite | ||||
|    fun:malloc | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    fun:~Swapchain | ||||
| } | ||||
| { | ||||
|    <insert_a_suppression_name_here> | ||||
|    Memcheck:Leak | ||||
|    match-leak-kinds: indirect | ||||
|    fun:calloc | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    obj:* | ||||
|    fun:~Swapchain | ||||
| } | ||||
| { | ||||
|     <insert_a_suppression_name_here> | ||||
|     Memcheck:Param | ||||
|  |  | |||
|  | @ -1,19 +1,19 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| set -e | ||||
| cd $(git rev-parse --show-toplevel)/ | ||||
| 
 | ||||
| has_fomatting_issues=0 | ||||
| while IFS= read -r -d '' file; do | ||||
| for file in $(find ./modules -name '*.?pp'); do | ||||
|   echo "Checking format for $file" | ||||
| 
 | ||||
|   if ! clang-format --dry-run --Werror "$file"; then | ||||
|     echo "❌ Formatting issue detected in $file" | ||||
|     has_fomatting_issues=1 | ||||
|   fi | ||||
| done < <(find ./modules -name '*.?pp' -print0) | ||||
| done | ||||
| 
 | ||||
| if [ "$has_fomatting_issues" -eq 0 ]; then | ||||
|   echo "✅ All files are properly formatted! Well done! ^~^" | ||||
| fi | ||||
| 
 | ||||
| exit ${has_fomatting_issues} | ||||
|  |  | |||
|  | @ -1,22 +1,17 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| set -e | ||||
| cd $(git rev-parse --show-toplevel)/ | ||||
| rm -rf ./build && mkdir build/ && cd build | ||||
| 
 | ||||
| CC=$(which clang) | ||||
| export CC | ||||
| export CC=$(which clang) | ||||
| export CXX=$(which clang++) | ||||
| 
 | ||||
| CXX=$(which clang++) | ||||
| export CXX | ||||
| 
 | ||||
| cmake \ | ||||
|     -S . \ | ||||
|     -B build \ | ||||
| cmake .. \ | ||||
| -G Ninja \ | ||||
| -DCMAKE_LINKER_TYPE=MOLD \ | ||||
| -DENABLE_UNIT_TESTS=ON \ | ||||
| -DENABLE_STATIC_ANALYSIS=ON \ | ||||
| -DCMAKE_BUILD_TYPE=Release \ | ||||
|     -D CMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++" | ||||
| 
 | ||||
| cmake --build . -j"$(nproc)" | ||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++" \ | ||||
| && cmake --build . -j `nproc` | ||||
|  |  | |||
|  | @ -1,19 +0,0 @@ | |||
| #!/usr/bin/env bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| 
 | ||||
| has_formatting_issues=0 | ||||
| while IFS= read -r -d '' file; do | ||||
|     echo "Checking format for $file" | ||||
| 
 | ||||
|     if ! cmake-format --check "$file"; then | ||||
|         echo "❌ Formatting issue detected in $file" | ||||
|         has_formatting_issues=1 | ||||
|     fi | ||||
| done < <(find ./modules ./tools/cmake -type f \( -name 'CMakeLists.txt' -o -name '*.cmake' \) -print0) | ||||
| 
 | ||||
| if [ "$has_formatting_issues" -ne 0 ]; then | ||||
|     echo "✅ All files are properly formatted! Well done! ^~^" | ||||
| fi | ||||
| exit ${has_formatting_issues} | ||||
|  | @ -1,19 +0,0 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| 
 | ||||
| has_shellcheck_issues=0 | ||||
| while IFS= read -r -d '' file; do | ||||
|     echo "Checking shell script $file" | ||||
| 
 | ||||
|     if ! shellcheck "$file"; then | ||||
|         echo "❌ Shellcheck issue detected in $file" | ||||
|         has_shellcheck_issues=1 | ||||
|     fi | ||||
| done < <(find ./modules ./tools -name '*.sh' -print0) | ||||
| 
 | ||||
| if [ "$has_shellcheck_issues" -eq 0 ]; then | ||||
|     echo "✅ All files are properly shellchecked! Well done! ^~^" | ||||
| fi | ||||
| exit ${has_shellcheck_issues} | ||||
|  | @ -1,19 +0,0 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -euo pipefail | ||||
| cd "$(git rev-parse --show-toplevel)/" | ||||
| 
 | ||||
| has_fomatting_issues=0 | ||||
| while IFS= read -r -d '' file; do | ||||
|     echo "Checking format for $file" | ||||
| 
 | ||||
|     if ! shfmt -i 4 -ci -d "$file"; then | ||||
|         echo "❌ Formatting issue detected in $file" | ||||
|         has_fomatting_issues=1 | ||||
|     fi | ||||
| done < <(find ./modules ./tools -name '*.sh' -print0) | ||||
| 
 | ||||
| if [ "$has_fomatting_issues" -eq 0 ]; then | ||||
|     echo "✅ All files are properly formatted! Well done! ^~^" | ||||
| fi | ||||
| exit ${has_fomatting_issues} | ||||
|  | @ -1,8 +1,11 @@ | |||
| function (add_library_module libname) | ||||
|     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||
|     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|          "${PUBLIC_INCLUDE_DIR}/${libname}" SYMBOLIC) | ||||
|     file(CREATE_LINK | ||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|         "${PUBLIC_INCLUDE_DIR}/${libname}" | ||||
|         SYMBOLIC | ||||
|     ) | ||||
| 
 | ||||
|     if ("${ARGN}" STREQUAL "") # Header only library | ||||
|         message("Adding INTERFACE library ${libname}") | ||||
|  | @ -23,13 +26,16 @@ function(add_library_module libname) | |||
| 
 | ||||
|         set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||
|         file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||
|         file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|              "${PRIVATE_INCLUDE_DIR}/${libname}" SYMBOLIC) | ||||
|         file(CREATE_LINK | ||||
|             "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|             "${PRIVATE_INCLUDE_DIR}/${libname}" | ||||
|             SYMBOLIC | ||||
|         ) | ||||
| 
 | ||||
|         target_include_directories( | ||||
|             ${libname} | ||||
|         target_include_directories(${libname}  | ||||
|             PUBLIC ${PUBLIC_INCLUDE_DIR} | ||||
|             PRIVATE ${PRIVATE_INCLUDE_DIR}) | ||||
|             PRIVATE ${PRIVATE_INCLUDE_DIR} | ||||
|         ) | ||||
| 
 | ||||
|         target_link_libraries(${libname} PUBLIC std) | ||||
|     endif () | ||||
|  | @ -47,17 +53,22 @@ function(add_executable_module exename) | |||
| 
 | ||||
|     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||
|     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|          "${PUBLIC_INCLUDE_DIR}/${exename}" SYMBOLIC) | ||||
|     file(CREATE_LINK | ||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|         "${PUBLIC_INCLUDE_DIR}/${exename}" | ||||
|         SYMBOLIC | ||||
|     ) | ||||
|     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||
|     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||
|     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|          "${PRIVATE_INCLUDE_DIR}${exename}" SYMBOLIC) | ||||
|     file(CREATE_LINK | ||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|         "${PRIVATE_INCLUDE_DIR}${exename}" | ||||
|         SYMBOLIC | ||||
|     ) | ||||
| 
 | ||||
|     add_executable(${exename} ${source_files}) | ||||
|     target_link_libraries(${exename} PRIVATE std) | ||||
|     target_include_directories(${exename} PRIVATE ${PUBLIC_INCLUDE_DIR} | ||||
|                                                   ${PRIVATE_INCLUDE_DIR}) | ||||
|     target_include_directories(${exename} PRIVATE ${PUBLIC_INCLUDE_DIR} ${PRIVATE_INCLUDE_DIR}) | ||||
| endfunction () | ||||
| 
 | ||||
| function (add_test_module target_lib_name) | ||||
|  | @ -71,26 +82,29 @@ function(add_test_module target_lib_name) | |||
|         list(APPEND source_files "${source_directory}/${source_file}") | ||||
|     endforeach () | ||||
| 
 | ||||
|     message( | ||||
|         "Adding test executable ${target_lib_name}_tests with source files: ${source_files}" | ||||
|     ) | ||||
|     message("Adding test executable ${target_lib_name}_tests with source files: ${source_files}") | ||||
| 
 | ||||
|     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||
|     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|          "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||
|     file(CREATE_LINK | ||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|         "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" | ||||
|         SYMBOLIC | ||||
|     ) | ||||
|     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||
|     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||
|     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|          "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||
|     file(CREATE_LINK | ||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|         "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" | ||||
|         SYMBOLIC | ||||
|     ) | ||||
| 
 | ||||
|     add_executable(${target_lib_name}_tests ${source_files}) | ||||
|     target_link_libraries(${target_lib_name}_tests PRIVATE ${target_lib_name} | ||||
|                                                            std test) | ||||
|     target_include_directories( | ||||
|         ${target_lib_name}_tests | ||||
|     target_link_libraries(${target_lib_name}_tests PRIVATE ${target_lib_name} std test) | ||||
|     target_include_directories(${target_lib_name}_tests | ||||
|         PRIVATE ${PUBLIC_INCLUDE_DIR} | ||||
|         PRIVATE ${PRIVATE_INCLUDE_DIR}) | ||||
|         PRIVATE ${PRIVATE_INCLUDE_DIR} | ||||
|     ) | ||||
| endfunction () | ||||
| 
 | ||||
| function (add_fuzz_module target_lib_name) | ||||
|  | @ -104,28 +118,31 @@ function(add_fuzz_module target_lib_name) | |||
|         list(APPEND source_files "${source_directory}/${source_file}") | ||||
|     endforeach () | ||||
| 
 | ||||
|     message( | ||||
|         "Adding fuzz executable ${target_lib_name}_fuzz with source files: ${source_files}" | ||||
|     ) | ||||
|     message("Adding fuzz executable ${target_lib_name}_fuzz with source files: ${source_files}") | ||||
| 
 | ||||
|     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||
|     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|          "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||
|     file(CREATE_LINK | ||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||
|         "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" | ||||
|         SYMBOLIC | ||||
|     ) | ||||
|     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||
|     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||
|     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|          "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||
|     file(CREATE_LINK | ||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||
|         "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" | ||||
|         SYMBOLIC | ||||
|     ) | ||||
| 
 | ||||
|     add_executable(${target_lib_name}_fuzz ${source_files}) | ||||
|     target_link_libraries(${target_lib_name}_fuzz PRIVATE ${target_lib_name} | ||||
|                                                           std fuzz_test) | ||||
|     target_link_libraries(${target_lib_name}_fuzz PRIVATE ${target_lib_name} std fuzz_test) | ||||
|     target_link_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer) | ||||
|     target_compile_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer) | ||||
|     target_include_directories( | ||||
|         ${target_lib_name}_fuzz | ||||
|     target_include_directories(${target_lib_name}_fuzz | ||||
|         PRIVATE ${PUBLIC_INCLUDE_DIR} | ||||
|         PRIVATE ${PRIVATE_INCLUDE_DIR}) | ||||
|         PRIVATE ${PRIVATE_INCLUDE_DIR} | ||||
|     ) | ||||
| endfunction () | ||||
| 
 | ||||
| function (add_option option help) | ||||
|  |  | |||
|  | @ -1,39 +1,30 @@ | |||
| add_option(ENABLE_UNIT_TESTS "Enables the building of the unit test modules") | ||||
| add_option(ENABLE_FUZZ_TESTS "Enables the building of the fuzz test modules") | ||||
| add_option(ENABLE_STATIC_ANALYSIS | ||||
|            "Makes the clang-tidy checks mandatory for compilation") | ||||
| add_option(ENABLE_LLVM_COVERAGE | ||||
|            "Enables the code coverage instrumentation for clang") | ||||
| add_option(ENABLE_STATIC_ANALYSIS "Makes the clang-tidy checks mandatory for compilation") | ||||
| add_option(ENABLE_LLVM_COVERAGE "Enables the code coverage instrumentation for clang") | ||||
| 
 | ||||
| if (ENABLE_STATIC_ANALYSIS) | ||||
|     set(CMAKE_CXX_CLANG_TIDY | ||||
|         "clang-tidy;--warnings-as-errors=*;--allow-no-checks") | ||||
|     set(CMAKE_CXX_CLANG_TIDY "clang-tidy;--warnings-as-errors=*;--allow-no-checks") | ||||
| endif () | ||||
| 
 | ||||
| if(ENABLE_LLVM_COVERAGE) | ||||
|     include(CheckCXXSourceCompiles) | ||||
| 
 | ||||
|     if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") | ||||
|         message( | ||||
|             FATAL_ERROR "ENABLE_LLVM_COVERAGE only supports the clang compiler") | ||||
|         message(FATAL_ERROR "ENABLE_LLVM_COVERAGE only supports the clang compiler") | ||||
|     endif () | ||||
| 
 | ||||
|     # Check for libc++ | ||||
|     check_cxx_source_compiles( | ||||
|         " | ||||
|     check_cxx_source_compiles(" | ||||
|         #include <string> | ||||
|         #ifdef _LIBCPP_VERSION | ||||
|         int main() { return 0; } | ||||
|         #else | ||||
|         #error Not using libc++ | ||||
|         #endif | ||||
|     " | ||||
|         USING_LIBCXX) | ||||
|     " USING_LIBCXX) | ||||
|     if(NOT USING_LIBCXX) | ||||
|         message( | ||||
|             FATAL_ERROR | ||||
|                 "ENABLE_LLVM_COVERAGE requires libc++, please compile with -stdlib=libc++" | ||||
|         ) | ||||
|         message(FATAL_ERROR "ENABLE_LLVM_COVERAGE requires libc++, please compile with -stdlib=libc++") | ||||
|     endif() | ||||
| 
 | ||||
|     add_compile_options(-fprofile-instr-generate -fcoverage-mapping) | ||||
|  |  | |||
							
								
								
									
										36
									
								
								tools/scripts/build_ci_images.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										36
									
								
								tools/scripts/build_ci_images.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,36 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| set -e | ||||
| CI_DIR="$(git rev-parse --show-toplevel)/tools/ci/" | ||||
| 
 | ||||
| echo "===========[ amd64_clang ]==========="] | ||||
| echo "==> Building amd64_clang_coverage..." | ||||
| docker build -t amd64_clang_coverage -f $CI_DIR/amd64/clang/coverage.dockerfile . | ||||
| echo "...DONE <==" | ||||
| 
 | ||||
| echo "==> Building amd64_clang_lsan..." | ||||
| docker build -t amd64_clang_lsan -f $CI_DIR/amd64/clang/lsan.dockerfile . | ||||
| echo "...DONE <==" | ||||
| 
 | ||||
| echo "==> Building image: amd64_clang_msan" | ||||
| docker build -t amd64_clang_msan -f $CI_DIR/amd64/clang/msan.dockerfile . | ||||
| echo "...DONE <==" | ||||
| 
 | ||||
| echo "==> Building image: clang_format" | ||||
| docker build -t clang_format -f $CI_DIR/static_analysis/clang_format.dockerfile . | ||||
| echo "...DONE <==" | ||||
| 
 | ||||
| echo "==> Building image: static_analysis" | ||||
| docker build -t clang_tidy -f $CI_DIR/static_analysis/clang_tidy.dockerfile . | ||||
| echo "...DONE <==" | ||||
| 
 | ||||
| echo "===========[ amd64_gcc ]==========="] | ||||
| echo "==> Building image: amd64_gcc_unit_tests" | ||||
| docker build -t amd64_gcc_unit_tests -f $CI_DIR/amd64/gcc/unit_tests.dockerfile . | ||||
| echo "...DONE <==" | ||||
| 
 | ||||
| echo "==> Building image: amd64_gcc_valgrind" | ||||
| docker build -t amd64_gcc_valgrind -f $CI_DIR/amd64/gcc/valgrind.dockerfile . | ||||
| echo "...DONE <==" | ||||
| 
 | ||||
| echo "WOOOOOOOOOOOOOOOOH!!! DONE :D" | ||||
		Loading…
	
	Add table
		
		Reference in a new issue