diff --git a/CMakeLists.txt b/CMakeLists.txt index e96e0c6f..29a20e7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -130,11 +130,10 @@ set_target_properties( CXX_STANDARD 23 CXX_STANDARD_REQUIRED ON) -if (OMATH_STATIC_MSVC_RUNTIME_LIBRARY) - set_target_properties(${PROJECT_NAME} PROPERTIES - MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>" - ) -endif () +if(OMATH_STATIC_MSVC_RUNTIME_LIBRARY) + set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY + "MultiThreaded$<$:Debug>") +endif() if(OMATH_USE_AVX2) if(MSVC) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 3e078ced..52dff0e6 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,44 +1,7 @@ -project(examples) - -add_executable(example_projection_matrix_builder example_proj_mat_builder.cpp) -set_target_properties( - example_projection_matrix_builder - PROPERTIES CXX_STANDARD 23 - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") -target_link_libraries(example_projection_matrix_builder PRIVATE omath::omath) - -add_executable(example_signature_scan example_signature_scan.cpp) -set_target_properties( - example_signature_scan - PROPERTIES CXX_STANDARD 23 - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") -target_link_libraries(example_signature_scan PRIVATE omath::omath) - -add_executable(example_glfw3 example_glfw3.cpp) -set_target_properties( - example_glfw3 - PROPERTIES CXX_STANDARD 23 - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") - -add_executable(example_barycentric example_barycentric.cpp) -set_target_properties( - example_barycentric - PROPERTIES CXX_STANDARD 23 - ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") -target_link_libraries(example_barycentric PRIVATE omath::omath GLEW::GLEW glfw OpenGL::GL) - -find_package(OpenGL) -find_package(GLEW REQUIRED) -find_package(glfw3 CONFIG REQUIRED) -target_link_libraries(example_glfw3 PRIVATE omath::omath GLEW::GLEW glfw OpenGL::GL) +add_subdirectory(example_barycentric) +add_subdirectory(example_glfw3) +add_subdirectory(example_proj_mat_builder) +add_subdirectory(example_signature_scan) if(OMATH_ENABLE_VALGRIND) omath_setup_valgrind(example_projection_matrix_builder) diff --git a/examples/example_barycentric/CMakeLists.txt b/examples/example_barycentric/CMakeLists.txt new file mode 100644 index 00000000..317f0ccd --- /dev/null +++ b/examples/example_barycentric/CMakeLists.txt @@ -0,0 +1,14 @@ +project(example_barycentric) + +add_executable(${PROJECT_NAME} example_barycentric.cpp) +set_target_properties( + ${PROJECT_NAME} + PROPERTIES CXX_STANDARD 23 + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") + +find_package(OpenGL) +find_package(GLEW REQUIRED) +find_package(glfw3 CONFIG REQUIRED) +target_link_libraries(${PROJECT_NAME} PRIVATE omath::omath GLEW::GLEW glfw OpenGL::GL) diff --git a/examples/example_barycentric.cpp b/examples/example_barycentric/example_barycentric.cpp similarity index 100% rename from examples/example_barycentric.cpp rename to examples/example_barycentric/example_barycentric.cpp diff --git a/examples/example_glfw3/CMakeLists.txt b/examples/example_glfw3/CMakeLists.txt new file mode 100644 index 00000000..97762d67 --- /dev/null +++ b/examples/example_glfw3/CMakeLists.txt @@ -0,0 +1,14 @@ +project(example_glfw3) + +add_executable(${PROJECT_NAME} example_glfw3.cpp) +set_target_properties( + ${PROJECT_NAME} + PROPERTIES CXX_STANDARD 23 + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") + +find_package(OpenGL) +find_package(GLEW REQUIRED) +find_package(glfw3 CONFIG REQUIRED) +target_link_libraries(${PROJECT_NAME} PRIVATE omath::omath GLEW::GLEW glfw OpenGL::GL) diff --git a/examples/example_glfw3.cpp b/examples/example_glfw3/example_glfw3.cpp similarity index 100% rename from examples/example_glfw3.cpp rename to examples/example_glfw3/example_glfw3.cpp diff --git a/examples/example_proj_mat_builder/CMakeLists.txt b/examples/example_proj_mat_builder/CMakeLists.txt new file mode 100644 index 00000000..fa0936c1 --- /dev/null +++ b/examples/example_proj_mat_builder/CMakeLists.txt @@ -0,0 +1,10 @@ +project(example_projection_matrix_builder) + +add_executable(${PROJECT_NAME} example_proj_mat_builder.cpp) +set_target_properties( + ${PROJECT_NAME} + PROPERTIES CXX_STANDARD 23 + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") +target_link_libraries(${PROJECT_NAME} PRIVATE omath::omath) diff --git a/examples/example_proj_mat_builder.cpp b/examples/example_proj_mat_builder/example_proj_mat_builder.cpp similarity index 100% rename from examples/example_proj_mat_builder.cpp rename to examples/example_proj_mat_builder/example_proj_mat_builder.cpp diff --git a/examples/example_signature_scan/CMakeLists.txt b/examples/example_signature_scan/CMakeLists.txt new file mode 100644 index 00000000..256f50fc --- /dev/null +++ b/examples/example_signature_scan/CMakeLists.txt @@ -0,0 +1,10 @@ +project(example_signature_scan) + +add_executable(${PROJECT_NAME} example_signature_scan.cpp) +set_target_properties( + ${PROJECT_NAME} + PROPERTIES CXX_STANDARD 23 + ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}" + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/out/${CMAKE_BUILD_TYPE}") +target_link_libraries(${PROJECT_NAME} PRIVATE omath::omath) diff --git a/examples/example_signature_scan.cpp b/examples/example_signature_scan/example_signature_scan.cpp similarity index 100% rename from examples/example_signature_scan.cpp rename to examples/example_signature_scan/example_signature_scan.cpp diff --git a/pixi/run.benchmark.cmake b/pixi/run.benchmark.cmake index 643f55b0..32243323 100644 --- a/pixi/run.benchmark.cmake +++ b/pixi/run.benchmark.cmake @@ -15,7 +15,10 @@ endif() set(EXAMPLES_BIN_DIR "${PROJECT_ROOT}/out/${CMAKE_BUILD_TYPE}") if(NOT EXISTS "${EXAMPLES_BIN_DIR}") - message(FATAL_ERROR "Examples binary directory not found: ${EXAMPLES_BIN_DIR}. Please build the project first.") + message( + FATAL_ERROR + "Examples binary directory not found: ${EXAMPLES_BIN_DIR}. Please build the project first." + ) endif() message(STATUS "Looking for benchmark executables in: ${EXAMPLES_BIN_DIR}") @@ -43,16 +46,13 @@ foreach(EXAMPLE_PATH ${EXAMPLE_FILES}) endif() # On Linux/macOS, check permissions or just try to run it. - + message(STATUS "-------------------------------------------------") message(STATUS "Running benchmark: ${FILENAME}") message(STATUS "-------------------------------------------------") - execute_process( - COMMAND "${EXAMPLE_PATH}" - WORKING_DIRECTORY "${PROJECT_ROOT}" - RESULT_VARIABLE EXIT_CODE - ) + execute_process(COMMAND "${EXAMPLE_PATH}" WORKING_DIRECTORY "${PROJECT_ROOT}" + RESULT_VARIABLE EXIT_CODE) if(NOT EXIT_CODE EQUAL 0) message(WARNING "Benchmark ${FILENAME} exited with error code: ${EXIT_CODE}") diff --git a/pixi/run.examples.cmake b/pixi/run.examples.cmake index 39d63088..2586c671 100644 --- a/pixi/run.examples.cmake +++ b/pixi/run.examples.cmake @@ -15,7 +15,10 @@ endif() set(EXAMPLES_BIN_DIR "${PROJECT_ROOT}/out/${CMAKE_BUILD_TYPE}") if(NOT EXISTS "${EXAMPLES_BIN_DIR}") - message(FATAL_ERROR "Examples binary directory not found: ${EXAMPLES_BIN_DIR}. Please build the project first.") + message( + FATAL_ERROR + "Examples binary directory not found: ${EXAMPLES_BIN_DIR}. Please build the project first." + ) endif() message(STATUS "Looking for example executables in: ${EXAMPLES_BIN_DIR}") @@ -43,16 +46,13 @@ foreach(EXAMPLE_PATH ${EXAMPLE_FILES}) endif() # On Linux/macOS, check permissions or just try to run it. - + message(STATUS "-------------------------------------------------") message(STATUS "Running example: ${FILENAME}") message(STATUS "-------------------------------------------------") - execute_process( - COMMAND "${EXAMPLE_PATH}" - WORKING_DIRECTORY "${PROJECT_ROOT}" - RESULT_VARIABLE EXIT_CODE - ) + execute_process(COMMAND "${EXAMPLE_PATH}" WORKING_DIRECTORY "${PROJECT_ROOT}" + RESULT_VARIABLE EXIT_CODE) if(NOT EXIT_CODE EQUAL 0) message(WARNING "Example ${FILENAME} exited with error code: ${EXIT_CODE}") diff --git a/pixi/run.unit.tests.cmake b/pixi/run.unit.tests.cmake index 36e995b3..923df070 100644 --- a/pixi/run.unit.tests.cmake +++ b/pixi/run.unit.tests.cmake @@ -15,7 +15,10 @@ endif() set(EXAMPLES_BIN_DIR "${PROJECT_ROOT}/out/${CMAKE_BUILD_TYPE}") if(NOT EXISTS "${EXAMPLES_BIN_DIR}") - message(FATAL_ERROR "Examples binary directory not found: ${EXAMPLES_BIN_DIR}. Please build the project first.") + message( + FATAL_ERROR + "Examples binary directory not found: ${EXAMPLES_BIN_DIR}. Please build the project first." + ) endif() message(STATUS "Looking for unit test executables in: ${EXAMPLES_BIN_DIR}") @@ -43,16 +46,13 @@ foreach(EXAMPLE_PATH ${EXAMPLE_FILES}) endif() # On Linux/macOS, check permissions or just try to run it. - + message(STATUS "-------------------------------------------------") message(STATUS "Running unit_tests: ${FILENAME}") message(STATUS "-------------------------------------------------") - execute_process( - COMMAND "${EXAMPLE_PATH}" - WORKING_DIRECTORY "${PROJECT_ROOT}" - RESULT_VARIABLE EXIT_CODE - ) + execute_process(COMMAND "${EXAMPLE_PATH}" WORKING_DIRECTORY "${PROJECT_ROOT}" + RESULT_VARIABLE EXIT_CODE) if(NOT EXIT_CODE EQUAL 0) message(WARNING "Example ${FILENAME} exited with error code: ${EXIT_CODE}") diff --git a/scripts/cmake-format.sh b/scripts/cmake-format.sh new file mode 100644 index 00000000..81ed80f3 --- /dev/null +++ b/scripts/cmake-format.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash +set -euo pipefail + +# Format all CMakeLists.txt and *.cmake files in the repo (excluding common build dirs) +REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" + +cd "$REPO_ROOT" + +find . \ + -path "./build" -prune -o \ + -path "./cmake-build*" -prune -o \ + -path "./out" -prune -o \ + -path "./.git" -prune -o \ + \( -name "CMakeLists.txt" -o -name "*.cmake" \) -print0 \ +| xargs -0 cmake-format -i \ No newline at end of file