diff --git a/CMakeLists.txt b/CMakeLists.txt index a09c3ba..2a2fe89 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,10 +1,16 @@ cmake_minimum_required(VERSION 3.25) -project(BLT_With_Graphics_Template) + +set(BLT_GRAPHICS_VERSION 0.9.0) +set(BLT_GRAPHICS_TEST_VERSION 0.0.1) + +project(BLT_WITH_GRAPHICS VERSION ${BLT_GRAPHICS_VERSION}) option(ENABLE_ADDRSAN "Enable the address sanitizer" OFF) option(ENABLE_UBSAN "Enable the ub sanitizer" OFF) option(ENABLE_TSAN "Enable the thread data race sanitizer" OFF) +option(BUILD_GRAPHICS_TESTS "Build the BLT Graphics test set" OFF) + set(CMAKE_CXX_STANDARD 17) set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE) set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE) @@ -22,29 +28,66 @@ list(APPEND IMGUI_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/libraries/imgui/back list(APPEND IMGUI_SOURCE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/libraries/imgui/backends/imgui_impl_glfw.cpp") include_directories(${CMAKE_CURRENT_SOURCE_DIR}/libraries/imgui/) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/examples/) include_directories(include/) file(GLOB_RECURSE PROJECT_BUILD_FILES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp") -add_executable(BLT_With_Graphics_Template ${PROJECT_BUILD_FILES} ${IMGUI_SOURCE_FILES}) +add_library(BLT_WITH_GRAPHICS ${PROJECT_BUILD_FILES} ${IMGUI_SOURCE_FILES}) -target_link_libraries(BLT_With_Graphics_Template glfw) -target_link_libraries(BLT_With_Graphics_Template BLT) +target_link_libraries(BLT_WITH_GRAPHICS PUBLIC glfw) +target_link_libraries(BLT_WITH_GRAPHICS PUBLIC BLT) -target_compile_options(BLT_With_Graphics_Template PRIVATE -Wall -Werror -Wpedantic -Wno-comment -Wno-strict-aliasing) -target_link_options(BLT_With_Graphics_Template PRIVATE -Wall -Werror -Wpedantic -Wno-comment -Wno-strict-aliasing) +target_compile_options(BLT_WITH_GRAPHICS PRIVATE -Wall -Werror -Wpedantic -Wno-comment -Wno-strict-aliasing) +target_link_options(BLT_WITH_GRAPHICS PRIVATE -Wall -Werror -Wpedantic -Wno-comment -Wno-strict-aliasing) if (${ENABLE_ADDRSAN} MATCHES ON) - target_compile_options(BLT_With_Graphics_Template PRIVATE -fsanitize=address) - target_link_options(BLT_With_Graphics_Template PRIVATE -fsanitize=address) + target_compile_options(BLT_WITH_GRAPHICS PRIVATE -fsanitize=address) + target_link_options(BLT_WITH_GRAPHICS PRIVATE -fsanitize=address) endif () if (${ENABLE_UBSAN} MATCHES ON) - target_compile_options(BLT_With_Graphics_Template PRIVATE -fsanitize=undefined) - target_link_options(BLT_With_Graphics_Template PRIVATE -fsanitize=undefined) + target_compile_options(BLT_WITH_GRAPHICS PRIVATE -fsanitize=undefined) + target_link_options(BLT_WITH_GRAPHICS PRIVATE -fsanitize=undefined) endif () if (${ENABLE_TSAN} MATCHES ON) - target_compile_options(BLT_With_Graphics_Template PRIVATE -fsanitize=thread) - target_link_options(BLT_With_Graphics_Template PRIVATE -fsanitize=thread) -endif () \ No newline at end of file + target_compile_options(BLT_WITH_GRAPHICS PRIVATE -fsanitize=thread) + target_link_options(BLT_WITH_GRAPHICS PRIVATE -fsanitize=thread) +endif () + +if(${BUILD_GRAPHICS_TESTS}) + message("Building graphics test") + project(BLT_GRAPHICS_TESTS VERSION ${BLT_GRAPHICS_TEST_VERSION}) + + include_directories(tests/include) + + file(GLOB_RECURSE GRAPHICS_TEST_FILES "${CMAKE_CURRENT_SOURCE_DIR}/tests/src/*.cpp") + + message("Using files ${GRAPHICS_TEST_FILES}") + + add_executable(BLT_GRAPHICS_TESTS ${GRAPHICS_TEST_FILES}) + + target_link_libraries(BLT_GRAPHICS_TESTS BLT_WITH_GRAPHICS) + + target_compile_options(BLT_GRAPHICS_TESTS PRIVATE -Wall -Werror -Wpedantic -Wno-comment -Wno-strict-aliasing) + target_link_options(BLT_GRAPHICS_TESTS PRIVATE -Wall -Werror -Wpedantic -Wno-comment -Wno-strict-aliasing) + + if (${ENABLE_ADDRSAN} MATCHES ON) + target_compile_options(BLT_GRAPHICS_TESTS PRIVATE -fsanitize=address) + target_link_options(BLT_GRAPHICS_TESTS PRIVATE -fsanitize=address) + endif () + + if (${ENABLE_UBSAN} MATCHES ON) + target_compile_options(BLT_GRAPHICS_TESTS PRIVATE -fsanitize=undefined) + target_link_options(BLT_GRAPHICS_TESTS PRIVATE -fsanitize=undefined) + endif () + + if (${ENABLE_TSAN} MATCHES ON) + target_compile_options(BLT_GRAPHICS_TESTS PRIVATE -fsanitize=thread) + target_link_options(BLT_GRAPHICS_TESTS PRIVATE -fsanitize=thread) + endif () + message("Built graphics tests") +endif() + +project(BLT) \ No newline at end of file diff --git a/src/blt/gfx/window.cpp b/src/blt/gfx/window.cpp index ba96006..e557732 100644 --- a/src/blt/gfx/window.cpp +++ b/src/blt/gfx/window.cpp @@ -140,7 +140,6 @@ namespace blt::gfx /* -- Setup ImGUI -- */ setup_ImGUI(); - /* -- Call User Provided post-window-init function -- */ data.init(); diff --git a/src/main.cpp b/tests/src/main.cpp similarity index 90% rename from src/main.cpp rename to tests/src/main.cpp index 5698959..f6e0d69 100644 --- a/src/main.cpp +++ b/tests/src/main.cpp @@ -10,7 +10,7 @@ void init() void update(std::int32_t width, std::int32_t height) { - ImGui::ShowDemoWindow(); + } int main()