diff --git a/CMakeLists.txt b/CMakeLists.txt index 2369d66..a142b97 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,6 +35,7 @@ option(BGFX_BUILD_TOOLS_SHADER "Build bgfx shader tools." ON) option(BGFX_BUILD_TOOLS_GEOMETRY "Build bgfx geometry tools." ON) option(BGFX_BUILD_TOOLS_TEXTURE "Build bgfx texture tools." ON) option(BGFX_BUILD_EXAMPLES "Build bgfx examples." ON) +option(BGFX_BUILD_TESTS "Build bgfx tests." OFF) option(BGFX_INSTALL "Create installation target." ON) option(BGFX_INSTALL_EXAMPLES "Install examples and their runtimes." OFF) option(BGFX_CUSTOM_TARGETS "Include convenience custom targets." ON) @@ -66,6 +67,10 @@ if(BGFX_LIBRARY_TYPE MATCHES "SHARED") set(CMAKE_POSITION_INDEPENDENT_CODE ON) endif() +if(BGFX_BUILD_TESTS) + enable_testing() +endif() + if(NOT BX_DIR) set(BX_DIR "${CMAKE_CURRENT_SOURCE_DIR}/bx" CACHE STRING "Location of bx.") elseif(NOT IS_ABSOLUTE "${BX_DIR}") diff --git a/cmake/bx/CMakeLists.txt b/cmake/bx/CMakeLists.txt index 8b3933e..fde277d 100644 --- a/cmake/bx/CMakeLists.txt +++ b/cmake/bx/CMakeLists.txt @@ -13,3 +13,31 @@ include(bx.cmake) if(BGFX_BUILD_TOOLS) include(bin2c.cmake) endif() + +if(BGFX_BUILD_TESTS) + add_executable(bx_test) + target_compile_definitions(bx_test PRIVATE CATCH_AMALGAMATED_CUSTOM_MAIN) + file( + GLOB + BX_TEST_SOURCES # + ${BX_DIR}/3rdparty/catch/catch_amalgamated.cpp + ${BX_DIR}/tests/*_test.cpp # + ${BX_DIR}/tests/*.h # + ${BX_DIR}/tests/dbg.* # + ) + target_sources(bx_test PRIVATE ${BX_TEST_SOURCES}) + target_link_libraries(bx_test PRIVATE bx) + add_test(NAME bx.test COMMAND bx_test) + + add_executable(bx_bench) + file( + GLOB + BX_BENCH_SOURCES # + ${BX_DIR}/tests/*_bench.cpp # + ${BX_DIR}/tests/*_bench.h # + ${BX_DIR}/tests/dbg.* # + ) + target_sources(bx_bench PRIVATE ${BX_BENCH_SOURCES}) + target_link_libraries(bx_bench PRIVATE bx) + add_test(NAME bx.bench COMMAND bx_bench) +endif()