Compare commits
	
		
			13 commits
		
	
	
		
			ccf503f44b
			...
			6aa03cc05b
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6aa03cc05b | |||
| ec5483d13f | |||
| 598e1b232d | |||
| 3f5a85197a | |||
| 479a15bfd0 | |||
| 30548ea4db | |||
| 9de1bc7ba7 | |||
| 4b5d380a0e | |||
| 2612a19f3c | |||
| bd8a111607 | |||
| 3066153d6c | |||
| d5dc37d081 | |||
| b393cbb31c | 
					 35 changed files with 671 additions and 584 deletions
				
			
		
							
								
								
									
										271
									
								
								.drone.yml
									
										
									
									
									
								
							
							
						
						
									
										271
									
								
								.drone.yml
									
										
									
									
									
								
							|  | @ -1,42 +1,42 @@ | ||||||
| # --- | --- | ||||||
| # kind: pipeline | kind: pipeline | ||||||
| # type: exec | type: exec | ||||||
| # name: amd64 — msvc | name: amd64 — msvc | ||||||
| # trigger: | trigger: | ||||||
| #   branch: |   branch: | ||||||
| #   - main |   - main | ||||||
| # platform: | platform: | ||||||
| #   os: windows |   os: windows | ||||||
| #   arch: amd64 |   arch: amd64 | ||||||
| # | 
 | ||||||
| # steps: | steps: | ||||||
| # - name: unit tests | - name: unit tests | ||||||
| #   shell: powershell |   shell: powershell | ||||||
| #   commands:  |   commands:  | ||||||
| #     - ./tools/ci/amd64/msvc/unit_tests.ps1 |     - ./tools/ci/amd64/msvc/unit_tests.ps1 | ||||||
| # | 
 | ||||||
| # --- | --- | ||||||
| # kind: pipeline | kind: pipeline | ||||||
| # type: docker | type: docker | ||||||
| # name: amd64 — gcc | name: amd64 — gcc | ||||||
| # trigger: | trigger: | ||||||
| #   branch: |   branch: | ||||||
| #   - main |   - main | ||||||
| # | 
 | ||||||
| # steps: | steps: | ||||||
| # - name: unit tests | - name: unit tests | ||||||
| #   image: ci:latest |   image: ci:latest | ||||||
| #   pull: if-not-exists |   pull: if-not-exists | ||||||
| #   commands: |   commands: | ||||||
| #     - ./tools/ci/amd64/gcc/unit_tests.sh |     - ./tools/ci/amd64/gcc/unit_tests.sh | ||||||
| # | 
 | ||||||
| # - name: valgrind | - name: valgrind | ||||||
| #   image: ci:latest  |   image: ci:latest | ||||||
| #   pull: if-not-exists |   pull: if-not-exists | ||||||
| #   commands: |   commands: | ||||||
| #     - ./tools/ci/amd64/gcc/valgrind.sh |     - ./tools/ci/amd64/gcc/valgrind.sh | ||||||
| # | 
 | ||||||
| # --- | --- | ||||||
| kind: pipeline | kind: pipeline | ||||||
| type: docker | type: docker | ||||||
| name: amd64 — clang | name: amd64 — clang | ||||||
|  | @ -45,95 +45,114 @@ trigger: | ||||||
|   - main |   - main | ||||||
| 
 | 
 | ||||||
| steps: | steps: | ||||||
| # - name: code coverage | - name: code coverage | ||||||
| #   image: ci:latest |   image: ci:latest | ||||||
| #   pull: if-not-exists |   pull: if-not-exists | ||||||
| #   environment: |   environment: | ||||||
| #     CODECOV_TOKEN: |     CODECOV_TOKEN: | ||||||
| #       from_secret: CODECOV_TOKEN  |       from_secret: CODECOV_TOKEN  | ||||||
| #   commands: |   commands: | ||||||
| #     - ./tools/ci/amd64/clang/coverage.sh |     - ./tools/ci/amd64/clang/coverage.sh | ||||||
| # | 
 | ||||||
| # - name: leak sanitizer | - name: leak sanitizer | ||||||
| #   image: ci:latest  |   image: ci:latest | ||||||
| #   pull: if-not-exists |   pull: if-not-exists | ||||||
| #   commands: |   commands: | ||||||
| #     - ./tools/ci/amd64/clang/lsan.sh |     - ./tools/ci/amd64/clang/lsan.sh | ||||||
| # | 
 | ||||||
| - name: memory sanitizer | - name: memory sanitizer | ||||||
|   image: ci:latest |   image: ci:latest | ||||||
|   pull: if-not-exists |   pull: if-not-exists | ||||||
|   commands: |   commands: | ||||||
|     - ./tools/ci/amd64/clang/msan.sh |     - ./tools/ci/amd64/clang/msan.sh | ||||||
| # | 
 | ||||||
| # --- | --- | ||||||
| # kind: pipeline | kind: pipeline | ||||||
| # type: docker | type: docker | ||||||
| # name: static analysis | name: static analysis | ||||||
| # trigger: | trigger: | ||||||
| #   branch: |   branch: | ||||||
| #   - main |   - main | ||||||
| # | 
 | ||||||
| # steps: | steps: | ||||||
| # - name: clang tidy | - name: clang tidy | ||||||
| #   image: ci:latest  |   image: ci:latest | ||||||
| #   pull: if-not-exists |   pull: if-not-exists | ||||||
| #   privileged: true |   privileged: true | ||||||
| #   commands: |   commands: | ||||||
| #     - ./tools/ci/static_analysis/clang_tidy.sh |     - ./tools/ci/static_analysis/clang_tidy.sh | ||||||
| # | 
 | ||||||
| # - name: clang format | - name: shell check | ||||||
| #   image: ci:latest  |   image: ci:latest | ||||||
| #   pull: if-not-exists |   pull: if-not-exists | ||||||
| #   commands: |   commands: | ||||||
| #     - ./tools/ci/static_analysis/clang_format.sh |     - ./tools/ci/static_analysis/shell_check.sh | ||||||
| # | 
 | ||||||
| # --- | - name: clang format | ||||||
| # kind: pipeline |   image: ci:latest | ||||||
| # type: docker  |   pull: if-not-exists | ||||||
| # name: documentation — development |   commands: | ||||||
| # node: |     - ./tools/ci/static_analysis/clang_format.sh | ||||||
| #   environment: ryali | 
 | ||||||
| # trigger: | - name: cmake format | ||||||
| #   branch: |   image: ci:latest | ||||||
| #   - main |   pull: if-not-exists | ||||||
| # |   commands: | ||||||
| # steps: |     - ./tools/ci/static_analysis/cmake_format.sh | ||||||
| # - name: build and deploy | 
 | ||||||
| #   image: documentation:latest | - name: shell format | ||||||
| #   pull: if-not-exists |   image: ci:latest | ||||||
| #   commands: |   pull: if-not-exists | ||||||
| #     - pwd |   commands: | ||||||
| #     - cd docs |     - ./tools/ci/static_analysis/shell_format.sh | ||||||
| #     - mkdir generated | 
 | ||||||
| #     - touch generated/changelogs.rst | --- | ||||||
| #     - touch generated/api.rst | kind: pipeline | ||||||
| #     - sphinx-build -M html . . | type: docker  | ||||||
| # | name: documentation — development | ||||||
| #     - rm -rf /light_docs_dev/* | node: | ||||||
| #     - mv ./html/* /light_docs_dev/ |   environment: ryali | ||||||
| # | trigger: | ||||||
| # --- |   branch: | ||||||
| # |   - main | ||||||
| # kind: pipeline | 
 | ||||||
| # type: docker | steps: | ||||||
| # name: documentation — production | - name: build and deploy | ||||||
| # node: |   image: documentation:latest | ||||||
| #   environment: ryali |   pull: if-not-exists | ||||||
| # trigger: |   commands: | ||||||
| #   event: |     - pwd | ||||||
| #   - tag |     - cd docs | ||||||
| # |     - mkdir generated | ||||||
| # steps: |     - touch generated/changelogs.rst | ||||||
| # - name: build and deploy |     - touch generated/api.rst | ||||||
| #   image: documentation:latest |     - sphinx-build -M html . . | ||||||
| #   pull: if-not-exists | 
 | ||||||
| #   commands: |     - rm -rf /light_docs_dev/* | ||||||
| #     - cd docs |     - mv ./html/* /light_docs_dev/ | ||||||
| #     - mkdir generated | 
 | ||||||
| #     - touch generated/changelogs.rst | --- | ||||||
| #     - touch generated/api.rst | 
 | ||||||
| #     - sphinx-build -M html . . | kind: pipeline | ||||||
| # | type: docker | ||||||
| #     - rm -rf /light_docs/* | name: documentation — production | ||||||
| #     - mv ./html/* /light_docs/ | 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,2 +1,5 @@ | ||||||
| add_library_module(app application.cpp) | 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,18 +1,6 @@ | ||||||
| add_library_module(libasset_baker | add_library_module(libasset_baker bakers.cpp) | ||||||
|     bakers.cpp | target_link_libraries(libasset_baker PUBLIC assets logger lt_debug tbb) | ||||||
| ) | add_test_module(libasset_baker bakers.test.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 | add_executable_module(asset_baker entrypoint/baker.cpp) | ||||||
|     entrypoint/baker.cpp |  | ||||||
| ) |  | ||||||
| target_link_libraries(asset_baker PRIVATE libasset_baker) | target_link_libraries(asset_baker PRIVATE libasset_baker) | ||||||
|  |  | ||||||
|  | @ -1,7 +1,2 @@ | ||||||
| #include <asset_baker/bakers.hpp> | #include <asset_baker/bakers.hpp> | ||||||
| #include <test/test.hpp> | #include <test/test.hpp> | ||||||
| 
 |  | ||||||
| using ::lt::test::Case; |  | ||||||
| using ::lt::test::Suite; |  | ||||||
| 
 |  | ||||||
| // TODO(Light): add asset baking tests!
 |  | ||||||
|  |  | ||||||
|  | @ -1,14 +1,5 @@ | ||||||
| add_library_module(assets  | add_library_module(assets shader.cpp) | ||||||
|     shader.cpp |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| target_link_libraries( | target_link_libraries(assets PUBLIC logger lt_debug) | ||||||
| assets  |  | ||||||
| PUBLIC |  | ||||||
| logger  |  | ||||||
| lt_debug |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| add_test_module(assets | add_test_module(assets shader.test.cpp) | ||||||
|     shader.test.cpp |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
| add_library_module(lt_debug instrumentor.cpp) | add_library_module(lt_debug instrumentor.cpp) | ||||||
| target_link_libraries(lt_debug PUBLIC logger) | 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,7 +8,6 @@ using lt::test::expect_unreachable; | ||||||
| using lt::test::Suite; | using lt::test::Suite; | ||||||
| 
 | 
 | ||||||
| using lt::test::expect_eq; | using lt::test::expect_eq; | ||||||
| using lt::test::expect_ne; |  | ||||||
| 
 | 
 | ||||||
| using lt::test::expect_false; | using lt::test::expect_false; | ||||||
| using lt::test::expect_true; | using lt::test::expect_true; | ||||||
|  |  | ||||||
|  | @ -1,21 +1,9 @@ | ||||||
| add_library_module(libmirror  | add_library_module(libmirror) | ||||||
| ) | target_link_libraries(libmirror INTERFACE app time input surface renderer) | ||||||
| target_link_libraries( |  | ||||||
|   libmirror |  | ||||||
|   INTERFACE |  | ||||||
|   app |  | ||||||
|   time |  | ||||||
|   input  |  | ||||||
|   surface |  | ||||||
|   renderer |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| add_test_module(libmirror  | add_test_module( | ||||||
|     layers/editor_layer.test.cpp |     libmirror layers/editor_layer.test.cpp panels/asset_browser.test.cpp | ||||||
|     panels/asset_browser.test.cpp |     panels/properties.test.cpp panels/scene_hierarchy.test.cpp) | ||||||
|     panels/properties.test.cpp |  | ||||||
|     panels/scene_hierarchy.test.cpp |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| add_executable_module(mirror entrypoint/mirror.cpp) | add_executable_module(mirror entrypoint/mirror.cpp) | ||||||
| target_link_libraries(mirror PRIVATE libmirror input) | target_link_libraries(mirror PRIVATE libmirror input) | ||||||
|  |  | ||||||
|  | @ -24,6 +24,10 @@ void renderer_callback( | ||||||
|     std::any &user_data |     std::any &user_data | ||||||
| ) | ) | ||||||
| { | { | ||||||
|  | 	std::ignore = message_severity; | ||||||
|  | 	std::ignore = message_type; | ||||||
|  | 	std::ignore = user_data; | ||||||
|  | 
 | ||||||
| 	log_dbg("RENDERER CALLBACK: {}", data.message); | 	log_dbg("RENDERER CALLBACK: {}", data.message); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -204,7 +208,6 @@ public: | ||||||
| 		); | 		); | ||||||
| 
 | 
 | ||||||
| 		auto entity = ecs::Entity { m_editor_registry, m_window }; | 		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 { | 		m_renderer_system = std::make_shared<renderer::System>(renderer::System::CreateInfo { | ||||||
| 		    .config = { .target_api = renderer::Api::vulkan, .max_frames_in_flight = 3u }, | 		    .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 |     system.cpp | ||||||
| 
 |  | ||||||
|     # Vulkan - backend |     # Vulkan - backend | ||||||
|     backend/vk/messenger.cpp |     backend/vk/messenger.cpp | ||||||
|     backend/vk/context/device.cpp |     backend/vk/context/device.cpp | ||||||
|  | @ -18,27 +18,17 @@ add_library_module(renderer | ||||||
|     frontend/context/surface.cpp |     frontend/context/surface.cpp | ||||||
|     frontend/context/swapchain.cpp |     frontend/context/swapchain.cpp | ||||||
|     frontend/renderer/renderer.cpp |     frontend/renderer/renderer.cpp | ||||||
|     frontend/renderer/pass.cpp |     frontend/renderer/pass.cpp) | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| target_link_libraries(renderer | target_link_libraries( | ||||||
| PUBLIC  |     renderer | ||||||
|     app  |     PUBLIC app ecs memory assets time bitwise | ||||||
|     ecs |     PRIVATE surface pthread) | ||||||
|     memory |  | ||||||
|     assets |  | ||||||
|     time |  | ||||||
|     bitwise |  | ||||||
| PRIVATE |  | ||||||
|     surface |  | ||||||
|     pthread |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| add_test_module(renderer  | add_test_module( | ||||||
|  |     renderer | ||||||
|     test/utils.cpp |     test/utils.cpp | ||||||
| 
 |  | ||||||
|     system.test.cpp |     system.test.cpp | ||||||
| 
 |  | ||||||
|     # general backend tests through the frontend |     # general backend tests through the frontend | ||||||
|     frontend/messenger.test.cpp |     frontend/messenger.test.cpp | ||||||
|     frontend/context/surface.test.cpp |     frontend/context/surface.test.cpp | ||||||
|  | @ -46,17 +36,9 @@ add_test_module(renderer | ||||||
|     frontend/context/swapchain.test.cpp |     frontend/context/swapchain.test.cpp | ||||||
|     frontend/renderer/pass.test.cpp |     frontend/renderer/pass.test.cpp | ||||||
|     frontend/renderer/renderer.test.cpp |     frontend/renderer/renderer.test.cpp | ||||||
| 
 |  | ||||||
|     # backend specific tests -- vk |     # backend specific tests -- vk | ||||||
|     backend/vk/context/instance.test.cpp |     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 | target_link_libraries(renderer_tests PRIVATE surface pthread) | ||||||
| PRIVATE |  | ||||||
|     surface |  | ||||||
|     pthread |  | ||||||
| ) |  | ||||||
|  |  | ||||||
|  | @ -1,2 +1,3 @@ | ||||||
| add_library(std INTERFACE) | 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,7 +14,6 @@ | ||||||
| #include <cfenv> | #include <cfenv> | ||||||
| #include <cfloat> | #include <cfloat> | ||||||
| #include <cinttypes> | #include <cinttypes> | ||||||
| #include <ciso646> |  | ||||||
| #include <climits> | #include <climits> | ||||||
| #include <clocale> | #include <clocale> | ||||||
| #include <cmath> | #include <cmath> | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| if (NOT WIN32) | if(NOT WIN32) | ||||||
|     add_library_module(surface linux/system.cpp) |     add_library_module(surface linux/system.cpp) | ||||||
|     target_link_libraries(surface PRIVATE X11) |     target_link_libraries(surface PRIVATE X11) | ||||||
| 
 | 
 | ||||||
|  | @ -7,17 +7,10 @@ else(WIN32) | ||||||
| 
 | 
 | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| target_link_libraries(surface PUBLIC  | target_link_libraries( | ||||||
|     ecs |     surface | ||||||
|     app |     PUBLIC ecs app math memory tbb | ||||||
|     math |     PRIVATE logger lt_debug time) | ||||||
|     memory |  | ||||||
|     tbb |  | ||||||
|     PRIVATE |  | ||||||
|     logger  |  | ||||||
|     lt_debug |  | ||||||
|     time |  | ||||||
| ) |  | ||||||
| 
 | 
 | ||||||
| add_test_module(surface system.test.cpp) | add_test_module(surface system.test.cpp) | ||||||
| add_fuzz_module(surface system.fuzz.cpp) | add_fuzz_module(surface system.fuzz.cpp) | ||||||
|  |  | ||||||
|  | @ -1,38 +0,0 @@ | ||||||
| #!/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(test test.cpp entrypoint.cpp) | ||||||
| add_library_module(fuzz_test test.cpp fuzz.cpp) | add_library_module(fuzz_test test.cpp fuzz.cpp) | ||||||
| 
 | 
 | ||||||
| target_link_libraries(test PUBLIC tbb) | target_link_libraries(test PUBLIC tbb logger) | ||||||
| target_link_libraries(fuzz_test PUBLIC tbb) | target_link_libraries(fuzz_test PUBLIC tbb logger) | ||||||
| 
 | 
 | ||||||
| add_test_module(test test.test.cpp) | add_test_module(test test.test.cpp) | ||||||
|  |  | ||||||
|  | @ -1,3 +1,4 @@ | ||||||
|  | #include <logger/logger.hpp> | ||||||
| #include <test/test.hpp> | #include <test/test.hpp> | ||||||
| 
 | 
 | ||||||
| using namespace ::lt::test; | using namespace ::lt::test; | ||||||
|  | @ -84,14 +85,14 @@ try | ||||||
| } | } | ||||||
| catch (const std::exception &exp) | catch (const std::exception &exp) | ||||||
| { | { | ||||||
| 	std::println("Terminated due to uncaught exception:"); | 	log_crt("Terminated due to uncaught exception:"); | ||||||
| 	std::println("\twhat: {}", exp.what()); | 	log_crt("\twhat: {}", exp.what()); | ||||||
| 
 | 
 | ||||||
| 	return EXIT_FAILURE; | 	return EXIT_FAILURE; | ||||||
| } | } | ||||||
| catch (...) | catch (...) | ||||||
| { | { | ||||||
| 	std::println("Terminated due to uncaught non-std exception!"); | 	log_crt("Terminated due to uncaught non-std exception!"); | ||||||
| 
 | 
 | ||||||
| 	return EXIT_FAILURE; | 	return EXIT_FAILURE; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,4 +1,3 @@ | ||||||
| add_library_module(time timer.cpp) | add_library_module(time timer.cpp) | ||||||
| target_link_libraries(time PUBLIC tbb) | target_link_libraries(time PUBLIC tbb) | ||||||
| add_test_module(time timer.test.cpp) | add_test_module(time timer.test.cpp) | ||||||
| 
 |  | ||||||
|  |  | ||||||
|  | @ -4,7 +4,6 @@ | ||||||
| #include <ui/ui.hpp> | #include <ui/ui.hpp> | ||||||
| 
 | 
 | ||||||
| #ifdef LIGHT_PLATFORM_WINDOWS | #ifdef LIGHT_PLATFORM_WINDOWS | ||||||
| 	#include <renderer/dx/shared_context.hpp> |  | ||||||
| 	#include <renderer/dx/user_interface.hpp> | 	#include <renderer/dx/user_interface.hpp> | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | @ -14,7 +13,6 @@ | ||||||
| #include <input/events/keyboard.hpp> | #include <input/events/keyboard.hpp> | ||||||
| #include <input/events/mouse.hpp> | #include <input/events/mouse.hpp> | ||||||
| #include <input/key_codes.hpp> | #include <input/key_codes.hpp> | ||||||
| #include <renderer/graphics_context.hpp> |  | ||||||
| #include <utility> | #include <utility> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | @ -27,8 +25,7 @@ namespace lt { | ||||||
| 
 | 
 | ||||||
| UserInterface *UserInterface::s_context = nullptr; | UserInterface *UserInterface::s_context = nullptr; | ||||||
| 
 | 
 | ||||||
| auto UserInterface::create(memory::Ref<SharedContext> sharedContext) | auto UserInterface::create(memory::Ref<SharedContext> sharedContext) -> memory::Scope<UserInterface> | ||||||
|     -> memory::Scope<UserInterface> |  | ||||||
| { | { | ||||||
| 	auto scopeUserInterface = memory::Scope<UserInterface> { nullptr }; | 	auto scopeUserInterface = memory::Scope<UserInterface> { nullptr }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,8 +11,7 @@ class SharedContext; | ||||||
| class UserInterface | class UserInterface | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	static auto create(memory::Ref<SharedContext> sharedContext) | 	static auto create(memory::Ref<SharedContext> sharedContext) -> memory::Scope<UserInterface>; | ||||||
| 	    -> memory::Scope<UserInterface>; |  | ||||||
| 
 | 
 | ||||||
| 	static void dockspace_begin(); | 	static void dockspace_begin(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,50 +1,59 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| set -e | set -euo pipefail | ||||||
| cd $(git rev-parse --show-toplevel)/ | cd "$(git rev-parse --show-toplevel)/" | ||||||
| rm -rf ./build && mkdir build/ | 
 | ||||||
|  | CC=$(which clang) | ||||||
|  | export CC | ||||||
|  | 
 | ||||||
|  | CXX=$(which clang++) | ||||||
|  | export CXX | ||||||
|  | 
 | ||||||
|  | DISPLAY=:99 | ||||||
|  | export DISPLAY | ||||||
| 
 | 
 | ||||||
| Xvfb :99 -screen 0 1024x768x16 & | Xvfb :99 -screen 0 1024x768x16 & | ||||||
| export CXX=$(which clang++) |  | ||||||
| export CC=$(which clang) |  | ||||||
| export DISPLAY=:99 |  | ||||||
| 
 | 
 | ||||||
| cmake . \ | cmake \ | ||||||
| -Bbuild \ |     -S . \ | ||||||
| -GNinja \ |     -B build \ | ||||||
| -DCMAKE_LINKER_TYPE=MOLD \ |     -G Ninja \ | ||||||
| -DENABLE_UNIT_TESTS=ON \ |     -D CMAKE_LINKER_TYPE=MOLD \ | ||||||
| -DENABLE_LLVM_COVERAGE=ON \ |     -D ENABLE_UNIT_TESTS=ON \ | ||||||
| -DCMAKE_BUILD_TYPE=Release \ |     -D ENABLE_LLVM_COVERAGE=ON \ | ||||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++ -g -fno-omit-frame-pointer" \ |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
| && cmake --build ./build -j `nproc` |     -D CMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++ -g -fno-omit-frame-pointer" | ||||||
|  | 
 | ||||||
|  | cmake --build ./build -j"$(nproc)" | ||||||
| 
 | 
 | ||||||
| mkdir -p ./build/coverage/ | mkdir -p ./build/coverage/ | ||||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | while IFS= read -r -d '' test; do | ||||||
|     export LLVM_PROFILE_FILE="./build/coverage/$(basename "$(dirname "$test")").profraw"; |     LLVM_PROFILE_FILE="./build/coverage/$(basename "$(dirname "$test")").profraw" | ||||||
|     echo ${LLVM_PROFILE_FILE} >> ./build/coverage/list; |     export LLVM_PROFILE_FILE | ||||||
| 
 | 
 | ||||||
|  |     echo "${LLVM_PROFILE_FILE}" >>./build/coverage/list | ||||||
|     gdb \ |     gdb \ | ||||||
|     --return-child-result \ |         --return-child-result \ | ||||||
|     -ex='set confirm off' \ |         -ex='set confirm off' \ | ||||||
|     -ex='set pagination off' \ |         -ex='set pagination off' \ | ||||||
|     -ex='run' \ |         -ex='run' \ | ||||||
|     -ex='bt full' \ |         -ex='bt full' \ | ||||||
|     -ex='quit' \ |         -ex='quit' \ | ||||||
|     -q \ |         -q \ | ||||||
|     "$test" |         "$test" | ||||||
| done | done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||||
| 
 | 
 | ||||||
| llvm-profdata merge --input-files './build/coverage/list' -o "./build/coverage/merged.profdata" | llvm-profdata merge --input-files './build/coverage/list' -o "./build/coverage/merged.profdata" | ||||||
| find ./build/modules -type f -name "*.profraw" -exec rm -fv {} + | 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' \ |         -instr-profile='./build/coverage/merged.profdata' \ | ||||||
|         $(find ./build -type f -name '*_tests' -executable -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 ' {} \;) \ |         "$(find ./build -type f -name '*\.a' -exec printf -- '-object %s ' {} \;)" \ | ||||||
|         -ignore-filename-regex='\.test\.cpp$' \ |         -ignore-filename-regex='\.test\.cpp$' \ | ||||||
|         -ignore-filename-regex='\.fuzz\.cpp$' |         -ignore-filename-regex='\.fuzz\.cpp$' | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| echo "${LLVM_COV_SHOW}" > './build/coverage/coverage.txt' | echo "${LLVM_COV_SHOW}" >'./build/coverage/coverage.txt' | ||||||
| cd ./build/coverage/ && wget -qO- "https://codecov.io/bash" | bash | cd ./build/coverage/ && wget -qO- "https://codecov.io/bash" | bash | ||||||
|  |  | ||||||
|  | @ -1,39 +1,50 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| set -e | set -euo pipefail | ||||||
| cd $(git rev-parse --show-toplevel)/ | cd "$(git rev-parse --show-toplevel)/" | ||||||
| rm -rf ./build && mkdir build/ | 
 | ||||||
|  | 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 | ||||||
| 
 | 
 | ||||||
| Xvfb :99 -screen 0 1024x768x16 & | Xvfb :99 -screen 0 1024x768x16 & | ||||||
| export CXX=$(which clang++) |  | ||||||
| export CC=$(which clang) |  | ||||||
| export DISPLAY=:99 |  | ||||||
| 
 | 
 | ||||||
| cmake . \ | cmake \ | ||||||
| -Bbuild \ |     -S . \ | ||||||
| -GNinja \ |     -B build \ | ||||||
| -DCMAKE_LINKER_TYPE=MOLD \ |     -G Ninja \ | ||||||
| -DENABLE_UNIT_TESTS=ON \ |     -D CMAKE_LINKER_TYPE=MOLD \ | ||||||
| -DCMAKE_BUILD_TYPE=Debug \ |     -D ENABLE_UNIT_TESTS=ON \ | ||||||
| -DCMAKE_CXX_FLAGS=" \ |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
|  |     -D CMAKE_CXX_FLAGS=" \ | ||||||
| -fsanitize=leak \ | -fsanitize=leak \ | ||||||
| -fno-omit-frame-pointer \ |  | ||||||
| -fno-common \ | -fno-common \ | ||||||
| -g \ | -g \ | ||||||
|  | -fno-omit-frame-pointer \ | ||||||
| -std=c++23 \ | -std=c++23 \ | ||||||
| -nostdinc++ \ | -nostdinc++ \ | ||||||
| -isystem /libcxx_lsan/include/c++/v1/" \ | -isystem /libcxx_lsan/include/c++/v1/" \ | ||||||
| -DCMAKE_EXE_LINKER_FLAGS=" \ |     -D CMAKE_EXE_LINKER_FLAGS=" \ | ||||||
| -fsanitize=leak \ | -fsanitize=leak \ | ||||||
| -L/libcxx_lsan/lib \ | -L/libcxx_lsan/lib \ | ||||||
| -lc++ \ | -lc++ \ | ||||||
| -lc++abi \ | -lc++abi \ | ||||||
| -Wl,-rpath,/libcxx_lsan/lib" \ | -Wl,-rpath,/libcxx_lsan/lib" | ||||||
| && cmake --build ./build -j`nproc` |  | ||||||
| 
 | 
 | ||||||
| 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" | cmake --build ./build --target='renderer_tests' -j"$(nproc)" | ||||||
| export LSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" | 
 | ||||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | while IFS= read -r -d '' test; do | ||||||
|     echo "Running $test" |     echo "Running $test" | ||||||
|     "$test" |     "$test" | ||||||
| done | done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||||
|  |  | ||||||
|  | @ -1,61 +1,45 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| set -e | set -euo pipefail | ||||||
| cd $(git rev-parse --show-toplevel)/ | cd "$(git rev-parse --show-toplevel)/" | ||||||
| rm -rf ./build && mkdir build/ | 
 | ||||||
|  | CC=$(which clang) | ||||||
|  | export CC | ||||||
|  | 
 | ||||||
|  | CXX=$(which clang++) | ||||||
|  | export CXX | ||||||
|  | 
 | ||||||
|  | DISPLAY=:99 | ||||||
|  | export DISPLAY | ||||||
| 
 | 
 | ||||||
| Xvfb :99 -screen 0 1024x768x16 & | Xvfb :99 -screen 0 1024x768x16 & | ||||||
| export CXX=$(which clang++) |  | ||||||
| export CC=$(which clang) |  | ||||||
| export DISPLAY=:99 |  | ||||||
| 
 | 
 | ||||||
| export PKG_CONFIG_PATH=/msan/lib/pkgconfig:${PKG_CONFIG_PATH} | cmake \ | ||||||
| 
 |     -S . \ | ||||||
| source '/1.4.328.1/setup-env.sh' |     -B build \ | ||||||
| 
 |     -G Ninja \ | ||||||
| echo "REVPARSE: $(git rev-parse --show-toplevel)" |     -D CMAKE_LINKER_TYPE=MOLD \ | ||||||
| 
 |     -D ENABLE_UNIT_TESTS=ON \ | ||||||
| cat "$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp" |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
| 
 |     -D CMAKE_CXX_FLAGS=" \ | ||||||
| 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 \ | ||||||
| -fsanitize-memory-track-origins \ | -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 \ |  | ||||||
| -fsanitize-ignorelist=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp \ |  | ||||||
| -fno-omit-frame-pointer \ |  | ||||||
| -g \ | -g \ | ||||||
|  | -fno-omit-frame-pointer \ | ||||||
| -std=c++23 \ | -std=c++23 \ | ||||||
| -nostdinc++ \ | -nostdinc++ \ | ||||||
| -isystem /libcxx_msan/include/c++/v1/" \ | -isystem /libcxx_msan/include/c++/v1/" \ | ||||||
| -DCMAKE_EXE_LINKER_FLAGS=" \ |     -D CMAKE_EXE_LINKER_FLAGS=" \ | ||||||
| -fsanitize=memory \ | -fsanitize=memory \ | ||||||
| -fsanitize-memory-track-origins \ | -fsanitize-memory-track-origins \ | ||||||
| -fsanitize-ignorelist=$(git rev-parse --show-toplevel)/tools/ci/amd64/clang/msan.supp \ | -L/libcxx_msan/lib \ | ||||||
| -g \ |  | ||||||
| -std=c++23 \ |  | ||||||
| -L/msan/lib -Wl,-rpath,/msan/lib \ |  | ||||||
| -L/libcxx_msan/lib -Wl,-rpath,/libcxx_msan/lib \ |  | ||||||
| -lc++ \ | -lc++ \ | ||||||
| -lc++abi" \ | -lc++abi \ | ||||||
| && cmake --build ./build --target='renderer_tests' -j`nproc` | -Wl,-rpath,/libcxx_msan/lib" | ||||||
| 
 | 
 | ||||||
| export MSAN_SYMBOLIZER_PATH="$(which llvm-symbolizer)" | cmake --build ./build -j"$(nproc)" | ||||||
| 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 | while IFS= read -r -d '' test; do | ||||||
|   echo "Running $test" |     echo "Running $test" | ||||||
|   "$test" |     "$test" | ||||||
| done | done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||||
|  |  | ||||||
|  | @ -1,33 +1,41 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| set -e | set -euo pipefail | ||||||
| cd $(git rev-parse --show-toplevel)/ | cd "$(git rev-parse --show-toplevel)/" | ||||||
| rm -rf ./build && mkdir build/ | 
 | ||||||
|  | CC=$(which gcc) | ||||||
|  | export CC | ||||||
|  | 
 | ||||||
|  | CXX=$(which g++) | ||||||
|  | export CXX | ||||||
|  | 
 | ||||||
|  | DISPLAY=:99 | ||||||
|  | export DISPLAY | ||||||
| 
 | 
 | ||||||
| Xvfb :99 -screen 0 1024x768x16 & | Xvfb :99 -screen 0 1024x768x16 & | ||||||
| export CXX=$(which g++) |  | ||||||
| export CC=$(which gcc) |  | ||||||
| export DISPLAY=:99 |  | ||||||
| 
 | 
 | ||||||
| # gcc uses libstdc++ by default | # gcc uses libstdc++ by default | ||||||
| cmake . \ | cmake \ | ||||||
| -Bbuild \ |     -S . \ | ||||||
| -GNinja \ |     -B build \ | ||||||
| -DCMAKE_LINKER_TYPE=MOLD \ |     -G Ninja \ | ||||||
| -DENABLE_UNIT_TESTS=ON \ |     -D CMAKE_LINKER_TYPE=MOLD \ | ||||||
| -DCMAKE_BUILD_TYPE=Release \ |     -D ENABLE_UNIT_TESTS=ON \ | ||||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -g -fno-omit-frame-pointer" \ |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
| && cmake --build ./build -j `nproc` |     -D CMAKE_CXX_FLAGS="-std=c++23 -g -fno-omit-frame-pointer" | ||||||
| 
 | 
 | ||||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | cmake --build ./build -j"$(nproc)" | ||||||
|  | 
 | ||||||
|  | while IFS= read -r -d '' test; do | ||||||
|     echo "Running $test" |     echo "Running $test" | ||||||
|     gdb \ |     gdb \ | ||||||
|     --return-child-result \ |         --return-child-result \ | ||||||
|     -ex='set confirm off' \ |         -ex='set confirm off' \ | ||||||
|     -ex='set pagination off' \ |         -ex='set pagination off' \ | ||||||
|     -ex='run' \ |         -ex='run' \ | ||||||
|     -ex='bt full' \ |         -ex='bt full' \ | ||||||
|     -ex='quit' \ |         -ex='quit' \ | ||||||
|     -q \ |         -q \ | ||||||
|     "$test" |         "$test" | ||||||
| done | 
 | ||||||
|  | done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||||
|  |  | ||||||
|  | @ -1,35 +1,45 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| export DEBUGINFOD_URLS="https://debuginfod.archlinux.org/" | set -euo pipefail | ||||||
|  | cd "$(git rev-parse --show-toplevel)/" | ||||||
| 
 | 
 | ||||||
| set -e | CC=$(which gcc) | ||||||
| cd $(git rev-parse --show-toplevel)/ | export CC | ||||||
| rm -rf ./build && mkdir build/ | 
 | ||||||
|  | CXX=$(which g++) | ||||||
|  | export CXX | ||||||
|  | 
 | ||||||
|  | DISPLAY=:99 | ||||||
|  | export DISPLAY | ||||||
|  | 
 | ||||||
|  | DEBUGINFOD_URLS="https://debuginfod.archlinux.org/" | ||||||
|  | export DEBUGINFOD_URLS | ||||||
| 
 | 
 | ||||||
| Xvfb :99 -screen 0 1024x768x16 & | Xvfb :99 -screen 0 1024x768x16 & | ||||||
| export CXX=$(which g++) |  | ||||||
| export CC=$(which gcc) |  | ||||||
| export DISPLAY=:99 |  | ||||||
| 
 | 
 | ||||||
| # gcc uses libstdc++ by default | # gcc uses libstdc++ by default | ||||||
| cmake . \ | cmake \ | ||||||
| -Bbuild \ |     -S . \ | ||||||
| -GNinja \ |     -B build \ | ||||||
| -DCMAKE_LINKER_TYPE=MOLD \ |     -G Ninja \ | ||||||
| -DENABLE_UNIT_TESTS=ON \ |     -D CMAKE_LINKER_TYPE=MOLD \ | ||||||
| -DCMAKE_BUILD_TYPE=Release \ |     -D ENABLE_UNIT_TESTS=ON \ | ||||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -g -fno-omit-frame-pointer" \ |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
| && cmake --build ./build -j `nproc` |     -D CMAKE_CXX_FLAGS="-std=c++23 -fno-omit-frame-pointer -fno-common -g" | ||||||
| 
 | 
 | ||||||
| for test in $(find ./build -type f -name '*_tests' -executable); do | cmake --build ./build -j"$(nproc)" | ||||||
|  | 
 | ||||||
|  | while IFS= read -r -d '' test; do | ||||||
|     echo "Running $test" |     echo "Running $test" | ||||||
|  | 
 | ||||||
|     valgrind \ |     valgrind \ | ||||||
|     --leak-check=full \ |         --leak-check=full \ | ||||||
|     --show-leak-kinds=all \ |         --show-leak-kinds=all \ | ||||||
|     --track-origins=yes \ |         --track-origins=yes \ | ||||||
|     --verbose \ |         --verbose \ | ||||||
|     --num-callers=50 \ |         --num-callers=50 \ | ||||||
|     --gen-suppressions=all \ |         --gen-suppressions=all \ | ||||||
|     --suppressions='./tools/ci/amd64/gcc/valgrind.supp' \ |         --suppressions='./tools/ci/amd64/gcc/valgrind.supp' \ | ||||||
|     --error-exitcode=255 ${test} || exit 1 |         --error-exitcode=255 "${test}" || exit 1 | ||||||
| done | 
 | ||||||
|  | done < <(find ./build -type f -name '*_tests' -executable -print0) | ||||||
|  |  | ||||||
|  | @ -1,3 +1,130 @@ | ||||||
|  | { | ||||||
|  |    <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> |     <insert_a_suppression_name_here> | ||||||
|     Memcheck:Param |     Memcheck:Param | ||||||
|  |  | ||||||
|  | @ -1,19 +1,19 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| set -e | set -euo pipefail | ||||||
| cd $(git rev-parse --show-toplevel)/ | cd "$(git rev-parse --show-toplevel)/" | ||||||
| 
 | 
 | ||||||
| has_fomatting_issues=0 | has_fomatting_issues=0 | ||||||
| for file in $(find ./modules -name '*.?pp'); do | while IFS= read -r -d '' file; do | ||||||
|   echo "Checking format for $file" |     echo "Checking format for $file" | ||||||
|   if ! clang-format --dry-run --Werror "$file"; then | 
 | ||||||
|     echo "❌ Formatting issue detected in $file" |     if ! clang-format --dry-run --Werror "$file"; then | ||||||
|     has_fomatting_issues=1 |         echo "❌ Formatting issue detected in $file" | ||||||
|   fi |         has_fomatting_issues=1 | ||||||
| done |     fi | ||||||
|  | done < <(find ./modules -name '*.?pp' -print0) | ||||||
| 
 | 
 | ||||||
| if [ "$has_fomatting_issues" -eq 0 ]; then | if [ "$has_fomatting_issues" -eq 0 ]; then | ||||||
|   echo "✅ All files are properly formatted! Well done! ^~^" |     echo "✅ All files are properly formatted! Well done! ^~^" | ||||||
| fi | fi | ||||||
| 
 |  | ||||||
| exit ${has_fomatting_issues} | exit ${has_fomatting_issues} | ||||||
|  |  | ||||||
|  | @ -1,17 +1,22 @@ | ||||||
| #!/bin/bash | #!/bin/bash | ||||||
| 
 | 
 | ||||||
| set -e | set -euo pipefail | ||||||
| cd $(git rev-parse --show-toplevel)/ | cd "$(git rev-parse --show-toplevel)/" | ||||||
| rm -rf ./build && mkdir build/ && cd build |  | ||||||
| 
 | 
 | ||||||
| export CC=$(which clang) | CC=$(which clang) | ||||||
| export CXX=$(which clang++) | export CC | ||||||
| 
 | 
 | ||||||
| cmake .. \ | CXX=$(which clang++) | ||||||
| -G Ninja \ | export CXX | ||||||
| -DCMAKE_LINKER_TYPE=MOLD \ | 
 | ||||||
| -DENABLE_UNIT_TESTS=ON \ | cmake \ | ||||||
| -DENABLE_STATIC_ANALYSIS=ON \ |     -S . \ | ||||||
| -DCMAKE_BUILD_TYPE=Release \ |     -B build \ | ||||||
| -DCMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++" \ |     -G Ninja \ | ||||||
| && cmake --build . -j `nproc` |     -D CMAKE_LINKER_TYPE=MOLD \ | ||||||
|  |     -D ENABLE_UNIT_TESTS=ON \ | ||||||
|  |     -D ENABLE_STATIC_ANALYSIS=ON \ | ||||||
|  |     -D CMAKE_BUILD_TYPE=Release \ | ||||||
|  |     -D CMAKE_CXX_FLAGS="-std=c++23 -stdlib=libc++" | ||||||
|  | 
 | ||||||
|  | cmake --build . -j"$(nproc)" | ||||||
|  |  | ||||||
							
								
								
									
										19
									
								
								tools/ci/static_analysis/cmake_format.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								tools/ci/static_analysis/cmake_format.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | #!/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} | ||||||
							
								
								
									
										19
									
								
								tools/ci/static_analysis/shell_check.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								tools/ci/static_analysis/shell_check.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | #!/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} | ||||||
							
								
								
									
										19
									
								
								tools/ci/static_analysis/shell_format.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								tools/ci/static_analysis/shell_format.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,19 @@ | ||||||
|  | #!/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,5 +1,5 @@ | ||||||
| if(WIN32) | if(WIN32) | ||||||
|   add_compile_definitions(LIGHT_PLATFORM_WINDOWS) |     add_compile_definitions(LIGHT_PLATFORM_WINDOWS) | ||||||
| elseif(UNIX) | elseif(UNIX) | ||||||
|   add_compile_definitions(LIGHT_PLATFORM_LINUX) |     add_compile_definitions(LIGHT_PLATFORM_LINUX) | ||||||
| endif() | endif() | ||||||
|  |  | ||||||
|  | @ -1,157 +1,140 @@ | ||||||
| function (add_library_module libname) | function(add_library_module libname) | ||||||
|     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") |     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") |     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||||
|     file(CREATE_LINK |     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" |          "${PUBLIC_INCLUDE_DIR}/${libname}" SYMBOLIC) | ||||||
|         "${PUBLIC_INCLUDE_DIR}/${libname}" |  | ||||||
|         SYMBOLIC |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     if ("${ARGN}" STREQUAL "") # Header only library |     if("${ARGN}" STREQUAL "") # Header only library | ||||||
|         message("Adding INTERFACE library ${libname}") |         message("Adding INTERFACE library ${libname}") | ||||||
|         add_library(${libname} INTERFACE) |         add_library(${libname} INTERFACE) | ||||||
|         target_include_directories(${libname} INTERFACE ${PUBLIC_INCLUDE_DIR}) |         target_include_directories(${libname} INTERFACE ${PUBLIC_INCLUDE_DIR}) | ||||||
| 
 | 
 | ||||||
|         target_link_libraries(${libname} INTERFACE std) |         target_link_libraries(${libname} INTERFACE std) | ||||||
| 
 | 
 | ||||||
|     else () # Compiled library |     else() # Compiled library | ||||||
|         set(source_files) |         set(source_files) | ||||||
|         set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") |         set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") | ||||||
|         foreach (source_file ${ARGN}) |         foreach(source_file ${ARGN}) | ||||||
|             list(APPEND source_files "${source_directory}/${source_file}") |             list(APPEND source_files "${source_directory}/${source_file}") | ||||||
|         endforeach () |         endforeach() | ||||||
| 
 | 
 | ||||||
|         message("Adding library ${libname} with source files: ${source_files}") |         message("Adding library ${libname} with source files: ${source_files}") | ||||||
|         add_library(${libname} ${source_files}) |         add_library(${libname} ${source_files}) | ||||||
| 
 | 
 | ||||||
|         set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") |         set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||||
|         file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") |         file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||||
|         file(CREATE_LINK |         file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||||
|             "${CMAKE_CURRENT_SOURCE_DIR}/private/" |              "${PRIVATE_INCLUDE_DIR}/${libname}" SYMBOLIC) | ||||||
|             "${PRIVATE_INCLUDE_DIR}/${libname}" |  | ||||||
|             SYMBOLIC |  | ||||||
|         ) |  | ||||||
| 
 | 
 | ||||||
|         target_include_directories(${libname}  |         target_include_directories( | ||||||
|  |             ${libname} | ||||||
|             PUBLIC ${PUBLIC_INCLUDE_DIR} |             PUBLIC ${PUBLIC_INCLUDE_DIR} | ||||||
|             PRIVATE ${PRIVATE_INCLUDE_DIR} |             PRIVATE ${PRIVATE_INCLUDE_DIR}) | ||||||
|         ) |  | ||||||
| 
 | 
 | ||||||
|         target_link_libraries(${libname} PUBLIC std) |         target_link_libraries(${libname} PUBLIC std) | ||||||
|     endif () |     endif() | ||||||
| 
 | 
 | ||||||
| endfunction () | endfunction() | ||||||
| 
 | 
 | ||||||
| function (add_executable_module exename) | function(add_executable_module exename) | ||||||
|     set(source_files) |     set(source_files) | ||||||
|     set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") |     set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") | ||||||
|     foreach (source_file ${ARGN}) |     foreach(source_file ${ARGN}) | ||||||
|         list(APPEND source_files "${source_directory}/${source_file}") |         list(APPEND source_files "${source_directory}/${source_file}") | ||||||
|     endforeach () |     endforeach() | ||||||
| 
 | 
 | ||||||
|     message("Adding executable ${exename} with source files: ${source_files}") |     message("Adding executable ${exename} with source files: ${source_files}") | ||||||
| 
 | 
 | ||||||
|     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") |     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") |     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||||
|     file(CREATE_LINK |     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" |          "${PUBLIC_INCLUDE_DIR}/${exename}" SYMBOLIC) | ||||||
|         "${PUBLIC_INCLUDE_DIR}/${exename}" |  | ||||||
|         SYMBOLIC |  | ||||||
|     ) |  | ||||||
|     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") |     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||||
|     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") |     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||||
|     file(CREATE_LINK |     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/private/" |          "${PRIVATE_INCLUDE_DIR}${exename}" SYMBOLIC) | ||||||
|         "${PRIVATE_INCLUDE_DIR}${exename}" |  | ||||||
|         SYMBOLIC |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     add_executable(${exename} ${source_files}) |     add_executable(${exename} ${source_files}) | ||||||
|     target_link_libraries(${exename} PRIVATE std) |     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} | ||||||
| endfunction () |                                                   ${PRIVATE_INCLUDE_DIR}) | ||||||
|  | endfunction() | ||||||
| 
 | 
 | ||||||
| function (add_test_module target_lib_name) | function(add_test_module target_lib_name) | ||||||
|     if (NOT ${ENABLE_UNIT_TESTS}) |     if(NOT ${ENABLE_UNIT_TESTS}) | ||||||
|         return() |         return() | ||||||
|     endif () |     endif() | ||||||
| 
 | 
 | ||||||
|     set(source_files) |     set(source_files) | ||||||
|     set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") |     set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") | ||||||
|     foreach (source_file ${ARGN}) |     foreach(source_file ${ARGN}) | ||||||
|         list(APPEND source_files "${source_directory}/${source_file}") |         list(APPEND source_files "${source_directory}/${source_file}") | ||||||
|     endforeach () |     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") |     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") |     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||||
|     file(CREATE_LINK |     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" |          "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||||
|         "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" |  | ||||||
|         SYMBOLIC |  | ||||||
|     ) |  | ||||||
|     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") |     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||||
|     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") |     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||||
|     file(CREATE_LINK |     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/private/" |          "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||||
|         "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" |  | ||||||
|         SYMBOLIC |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     add_executable(${target_lib_name}_tests ${source_files}) |     add_executable(${target_lib_name}_tests ${source_files}) | ||||||
|     target_link_libraries(${target_lib_name}_tests PRIVATE ${target_lib_name} std test) |     target_link_libraries(${target_lib_name}_tests PRIVATE ${target_lib_name} | ||||||
|     target_include_directories(${target_lib_name}_tests |                                                            std test) | ||||||
|  |     target_include_directories( | ||||||
|  |         ${target_lib_name}_tests | ||||||
|         PRIVATE ${PUBLIC_INCLUDE_DIR} |         PRIVATE ${PUBLIC_INCLUDE_DIR} | ||||||
|         PRIVATE ${PRIVATE_INCLUDE_DIR} |         PRIVATE ${PRIVATE_INCLUDE_DIR}) | ||||||
|     ) | endfunction() | ||||||
| endfunction () |  | ||||||
| 
 | 
 | ||||||
| function (add_fuzz_module target_lib_name) | function(add_fuzz_module target_lib_name) | ||||||
|     if (NOT ${ENABLE_FUZZ_TESTS}) |     if(NOT ${ENABLE_FUZZ_TESTS}) | ||||||
|         return() |         return() | ||||||
|     endif () |     endif() | ||||||
| 
 | 
 | ||||||
|     set(source_files) |     set(source_files) | ||||||
|     set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") |     set(source_directory "${CMAKE_CURRENT_SOURCE_DIR}/private") | ||||||
|     foreach (source_file ${ARGN}) |     foreach(source_file ${ARGN}) | ||||||
|         list(APPEND source_files "${source_directory}/${source_file}") |         list(APPEND source_files "${source_directory}/${source_file}") | ||||||
|     endforeach () |     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") |     set(PUBLIC_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/public_includes") | ||||||
|     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") |     file(MAKE_DIRECTORY "${PUBLIC_INCLUDE_DIR}") | ||||||
|     file(CREATE_LINK |     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/public/" | ||||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/public/" |          "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||||
|         "${PUBLIC_INCLUDE_DIR}/${target_lib_name}" |  | ||||||
|         SYMBOLIC |  | ||||||
|     ) |  | ||||||
|     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") |     set(PRIVATE_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/private_includes") | ||||||
|     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") |     file(MAKE_DIRECTORY "${PRIVATE_INCLUDE_DIR}") | ||||||
|     file(CREATE_LINK |     file(CREATE_LINK "${CMAKE_CURRENT_SOURCE_DIR}/private/" | ||||||
|         "${CMAKE_CURRENT_SOURCE_DIR}/private/" |          "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" SYMBOLIC) | ||||||
|         "${PRIVATE_INCLUDE_DIR}/${target_lib_name}" |  | ||||||
|         SYMBOLIC |  | ||||||
|     ) |  | ||||||
| 
 | 
 | ||||||
|     add_executable(${target_lib_name}_fuzz ${source_files}) |     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_link_options(${target_lib_name}_fuzz PRIVATE -fsanitize=fuzzer) | ||||||
|     target_compile_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 ${PUBLIC_INCLUDE_DIR} | ||||||
|         PRIVATE ${PRIVATE_INCLUDE_DIR} |         PRIVATE ${PRIVATE_INCLUDE_DIR}) | ||||||
|     ) | endfunction() | ||||||
| endfunction () |  | ||||||
| 
 | 
 | ||||||
| function (add_option option help) | function(add_option option help) | ||||||
|     option(${option} ${help}) |     option(${option} ${help}) | ||||||
| 
 | 
 | ||||||
|     if (${option}) |     if(${option}) | ||||||
|         message(STATUS "${option}: ON") |         message(STATUS "${option}: ON") | ||||||
|         add_compile_definitions(${option}=1) |         add_compile_definitions(${option}=1) | ||||||
|     else () |     else() | ||||||
|         message(STATUS "${option}: OFF") |         message(STATUS "${option}: OFF") | ||||||
|     endif () |     endif() | ||||||
| endfunction () | endfunction() | ||||||
|  |  | ||||||
|  | @ -1,32 +1,41 @@ | ||||||
| add_option(ENABLE_UNIT_TESTS "Enables the building of the unit test modules") | 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_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_STATIC_ANALYSIS | ||||||
| add_option(ENABLE_LLVM_COVERAGE "Enables the code coverage instrumentation for clang") |            "Makes the clang-tidy checks mandatory for compilation") | ||||||
|  | add_option(ENABLE_LLVM_COVERAGE | ||||||
|  |            "Enables the code coverage instrumentation for clang") | ||||||
| 
 | 
 | ||||||
| if (ENABLE_STATIC_ANALYSIS) | if(ENABLE_STATIC_ANALYSIS) | ||||||
|     set(CMAKE_CXX_CLANG_TIDY "clang-tidy;--warnings-as-errors=*;--allow-no-checks") |     set(CMAKE_CXX_CLANG_TIDY | ||||||
| endif () |         "clang-tidy;--warnings-as-errors=*;--allow-no-checks") | ||||||
|  | endif() | ||||||
| 
 | 
 | ||||||
| if(ENABLE_LLVM_COVERAGE) | if(ENABLE_LLVM_COVERAGE) | ||||||
|     include(CheckCXXSourceCompiles) |     include(CheckCXXSourceCompiles) | ||||||
| 
 | 
 | ||||||
|     if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") |     if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") | ||||||
|         message(FATAL_ERROR "ENABLE_LLVM_COVERAGE only supports the clang compiler") |         message( | ||||||
|     endif () |             FATAL_ERROR "ENABLE_LLVM_COVERAGE only supports the clang compiler") | ||||||
|  |     endif() | ||||||
| 
 | 
 | ||||||
|     # Check for libc++ |     # Check for libc++ | ||||||
|     check_cxx_source_compiles(" |     check_cxx_source_compiles( | ||||||
|  |         " | ||||||
|         #include <string> |         #include <string> | ||||||
|         #ifdef _LIBCPP_VERSION |         #ifdef _LIBCPP_VERSION | ||||||
|         int main() { return 0; } |         int main() { return 0; } | ||||||
|         #else |         #else | ||||||
|         #error Not using libc++ |         #error Not using libc++ | ||||||
|         #endif |         #endif | ||||||
|     " USING_LIBCXX) |     " | ||||||
|  |         USING_LIBCXX) | ||||||
|     if(NOT 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() |     endif() | ||||||
| 
 | 
 | ||||||
|     add_compile_options(-fprofile-instr-generate -fcoverage-mapping) |     add_compile_options(-fprofile-instr-generate -fcoverage-mapping) | ||||||
|     add_link_options(-fprofile-instr-generate -fcoverage-mapping) |     add_link_options(-fprofile-instr-generate -fcoverage-mapping) | ||||||
| endif () | endif() | ||||||
|  |  | ||||||
|  | @ -1,36 +0,0 @@ | ||||||
| #!/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