From 7e9c48e1aec60fa185baf163414d4471d1f42b91 Mon Sep 17 00:00:00 2001 From: abma Date: Wed, 15 Apr 2015 21:06:40 +0200 Subject: [PATCH] add option ASSIMP_HEADERCHECK (defaults to off): when enabled it adds the target "headercheck" to verify if all headers compile --- test/CMakeLists.txt | 2 ++ test/headercheck/.gitignore | 1 + test/headercheck/CMakeLists.txt | 37 +++++++++++++++++++++++++++++ test/headercheck/headercheck.cpp.in | 6 +++++ 4 files changed, 46 insertions(+) create mode 100644 test/headercheck/.gitignore create mode 100644 test/headercheck/CMakeLists.txt create mode 100644 test/headercheck/headercheck.cpp.in diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 3a8bbe82d..00614bb2a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -59,3 +59,5 @@ target_link_libraries( unit assimp debug ${GTEST_DEBUG_LIBRARIES} optimized ${GTEST_RELEASE_LIBRARIES} ) +add_subdirectory(headercheck) + diff --git a/test/headercheck/.gitignore b/test/headercheck/.gitignore new file mode 100644 index 000000000..879a87fd5 --- /dev/null +++ b/test/headercheck/.gitignore @@ -0,0 +1 @@ +src-generated/ diff --git a/test/headercheck/CMakeLists.txt b/test/headercheck/CMakeLists.txt new file mode 100644 index 000000000..273608542 --- /dev/null +++ b/test/headercheck/CMakeLists.txt @@ -0,0 +1,37 @@ +# This file is part of the Spring engine (GPL v2 or later), see LICENSE.html + +OPTION(ASSIMP_HEADERCHECK "adds the target headercheck which compiles every header file, default disabled because it adds many targets" OFF) +if(ASSIMP_HEADERCHECK) +include_directories( + ${Assimp_SOURCE_DIR}/code/BoostWorkaround + ) + +FILE(GLOB_RECURSE headers + ${Assimp_SOURCE_DIR}/code/*.h + ) + +set(headerchecklibs "") + +FOREACH( HEADER ${headers} ) + + #pseudo unique name + string(REPLACE "${Spring_SOURCE_DIR}" "" PLIST "${HEADER}") + string(REPLACE "/" ";" PLIST "${PLIST}") + SET(TEST_NAME "headercheck_") + + foreach(name ${PLIST}) + SET(TEST_NAME "${TEST_NAME}_${name}") + endforeach() + + SET(TEST_FILE ${CMAKE_CURRENT_BINARY_DIR}/src-generated/${TEST_NAME}.cpp) + + # create test file + configure_file( headercheck.cpp.in ${TEST_FILE} ) + # add library + add_library( ${TEST_NAME} EXCLUDE_FROM_ALL ${TEST_FILE} ) + list(APPEND headerchecklibs ${TEST_NAME}) +ENDFOREACH( HEADER ) + +add_custom_target(headercheck DEPENDS ${headerchecklibs}) + +endif() diff --git a/test/headercheck/headercheck.cpp.in b/test/headercheck/headercheck.cpp.in new file mode 100644 index 000000000..af1985617 --- /dev/null +++ b/test/headercheck/headercheck.cpp.in @@ -0,0 +1,6 @@ +#include "@HEADER@" + +int main(int,char**) +{ + return 0; +} \ No newline at end of file