diff --git a/CMake/mapMacroCreateModuleTests.cmake b/CMake/mapMacroCreateModuleTests.cmake index 32d567f..745dac3 100644 --- a/CMake/mapMacroCreateModuleTests.cmake +++ b/CMake/mapMacroCreateModuleTests.cmake @@ -1,142 +1,142 @@ ################################################################## # # MAP_CREATE_MODULE_TESTS # #! Creates tests for a module. #! #! USAGE: #! #! \code #! MAP_CREATE_MODULE_TESTS( #! [INCLUDE_DIRS ] #! [INTERNAL_INCLUDE_DIRS ] #! [DEPENDS ] #! [PROVIDES ] #! [PACKAGE_DEPENDS ] #! [HEADER_TEST] #! \endcode #! #! \param MODULE_NAME_IN The name for the new module # ################################################################## SET(MAP_HEADER_TESTS_HEADER "// -----------------------------------------------------------------------\n" "// MatchPoint - DKFZ Registration Platform\n" "//\n" "// (c) Copyright 2007, DKFZ, Heidelberg, Germany\n" "// ALL RIGHTS RESERVED\n" "//\n" "// THIS FILE CONTAINS CONFIDENTIAL AND PROPRIETARY INFORMATION OF DKFZ.\n" "// ANY DUPLICATION, MODIFICATION, DISTRIBUTION, OR\n" "// DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY PROHIBITED\n" "// WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF DKFZ.\n" "//\n" "//------------------------------------------------------------------------\n" "// Automatically generated header test file \n" "#if defined(_MSC_VER)\n" "#pragma warning ( disable : 4786 )\n" "#endif\n" "#include \n") SET(MAP_HEADER_TESTS_FOOTER "\nint main ( int , char** )\n" "{\n" " return EXIT_SUCCESS\;\n" "}\n") MACRO(MAP_CREATE_MODULE_TESTS MODULE_NAME_IN) MACRO_PARSE_ARGUMENTS(MODULE "INCLUDE_DIRS;INTERNAL_INCLUDE_DIRS;DEPENDS;DEPENDS_INTERNAL;PROVIDES;PACKAGE_DEPENDS;ADDITIONAL_LIBS" "HEADER_TESTS" ${ARGN}) SET(MODULE_NAME "test${MODULE_NAME_IN}") #Allways needs his own module for tests SET(MODULE_DEPENDS ${MODULE_DEPENDS} ${MODULE_NAME_IN}) IF(BUILD_TESTING) MESSAGE(STATUS "configuring Tests ${MODULE_NAME}...") # first of all we check for the dependencies MAP_CHECK_MODULE(_MISSING_DEP ${MODULE_DEPENDS}) IF(_MISSING_DEP) MESSAGE("Module ${MODULE_NAME} won't be built, missing dependency: ${_MISSING_DEP}") SET(MODULE_IS_ENABLED 0) ELSE(_MISSING_DEP) SET(MODULE_IS_ENABLED 1) # now check for every package if it is enabled. This overlaps a bit with # MAP_CHECK_MODULE ... FOREACH(_package ${MODULE_PACKAGE_DEPENDS}) IF((DEFINED MAP_USE_${_package}) AND NOT (MAP_USE_${_package})) MESSAGE("Module ${MODULE_NAME} won't be built. Turn on MAP_USE_${_package} if you want to use it.") SET(MODULE_IS_ENABLED 0) ENDIF() ENDFOREACH() SET(DEPENDS "${MODULE_DEPENDS}") SET(DEPENDS_BEFORE "not initialized") SET(PACKAGE_DEPENDS "${MODULE_PACKAGE_DEPENDS}") SET(ALL_INCLUDE_DIRECTORIES "") SET(ALL_LIBRARIES "") SET(ALL_LIBRARY_DIRS "") MAP_USE_MODULE("${MODULE_DEPENDS}") # ok, now create the module itself INCLUDE_DIRECTORIES(. ${ALL_INCLUDE_DIRECTORIES}) INCLUDE(files.cmake) SET(MODULE_TESTS ${CXX_TEST_PATH}/${MODULE_NAME}) INCLUDE(tests.cmake) ORGANIZE_SOURCES(SOURCE ${TEST_CPP_FILES}) IF(ALL_LIBRARY_DIRS) # LINK_DIRECTORIES applies only to targets which are added after the call to LINK_DIRECTORIES LINK_DIRECTORIES(${ALL_LIBRARY_DIRS}) ENDIF(ALL_LIBRARY_DIRS) # Check if we have test source code LIST(LENGTH TEST_CPP_FILES TEST_CPP_COUNT) IF(NOT ${TEST_CPP_COUNT}) MESSAGE("Cannot generate test module ${MODULE_NAME}. No test source code specified in files.cmake (TEST_CPP_FILES).") ENDIF(NOT ${TEST_CPP_COUNT}) ADD_EXECUTABLE(${MODULE_NAME} ${TEST_CPP_FILES}) IF(ALL_LIBRARIES) TARGET_LINK_LIBRARIES(${MODULE_NAME} ${ALL_LIBRARIES}) ENDIF(ALL_LIBRARIES) # Necessary so the build waits for Litmus to build ADD_DEPENDENCIES(${MODULE_NAME} Litmus) IF(MODULE_HEADER_TESTS) MESSAGE(STATUS "generating header tests ${MODULE_NAME}...") SET(HEADER_TEST_CPP "${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}Header.cpp") MESSAGE(STATUS "generating header tests ${HEADER_TEST_CPP}") FILE(WRITE ${HEADER_TEST_CPP} ${MAP_HEADER_TESTS_HEADER}) FOREACH(_h_file ${H_FILES}) FILE(APPEND ${HEADER_TEST_CPP} "#include <${_h_file}>\n") ENDFOREACH() FILE(APPEND ${HEADER_TEST_CPP} ${MAP_HEADER_TESTS_FOOTER}) ADD_EXECUTABLE(${MODULE_NAME}Header ${HEADER_TEST_CPP}) IF(ALL_LIBRARIES) TARGET_LINK_LIBRARIES(${MODULE_NAME}Header ${ALL_LIBRARIES}) ENDIF(ALL_LIBRARIES) ADD_TEST(${MODULE_NAME}Header ${CXX_TEST_PATH}/${MODULE_NAME}Header) # Necessary so the build waits for Litmus to build ADD_DEPENDENCIES(${MODULE_NAME}Header Litmus) ENDIF(MODULE_HEADER_TESTS) ENDIF(_MISSING_DEP) ENDIF(BUILD_TESTING) -ENDMACRO(MAP_CREATE_MODULE_TESTS) \ No newline at end of file +ENDMACRO(MAP_CREATE_MODULE_TESTS) diff --git a/Testing/CMakeLists.txt b/Testing/CMakeLists.txt index 09a39ef..6de705c 100644 --- a/Testing/CMakeLists.txt +++ b/Testing/CMakeLists.txt @@ -1,44 +1,49 @@ MESSAGE (STATUS "processing MatchPoint testing code") # Testing branch PROJECT(MatchPointTesting) MAKE_DIRECTORY(${MatchPointTesting_BINARY_DIR}/Temporary) #ADD_SUBDIRECTORY (Applications) #----------------------------------------------------------------------------- # extract and build Litmus #----------------------------------------------------------------------------- include(ExternalProject) message(STATUS "Litmus will be automatically downloaded and built.") -set(LITMUS_SOURCE_DIR "${CMAKE_BINARY_DIR}/external/Litmus-src" PARENT_SCOPE) -set(LITMUS_BUILD_DIR "${CMAKE_BINARY_DIR}/external/Litmus-build" PARENT_SCOPE) -set(LITMUS_CMAKE_DIR "${CMAKE_BINARY_DIR}/external/Litmus-cmake" PARENT_SCOPE) + +set(LITMUS_SOURCE_DIR "${MatchPoint_BINARY_DIR}/external/Litmus-src" PARENT_SCOPE) +set(LITMUS_BUILD_DIR "${MatchPoint_BINARY_DIR}/external/Litmus-build" PARENT_SCOPE) +set(LITMUS_CMAKE_DIR "${MatchPoint_BINARY_DIR}/external/Litmus-cmake" PARENT_SCOPE) +set(LITMUS_SOURCE_DIR "${MatchPoint_BINARY_DIR}/external/Litmus-src" ) +set(LITMUS_BUILD_DIR "${MatchPoint_BINARY_DIR}/external/Litmus-build" ) +set(LITMUS_CMAKE_DIR "${MatchPoint_BINARY_DIR}/external/Litmus-cmake" ) + set(ENABLE_ITK "-DLIT_ENABLE_ITK_SUPPORT:BOOL=ON") set(ITK_DIRECTORY "-DITK_DIR:PATH=${ITK_DIR}") IF (MAP_USE_SYSTEM_HDF5) set(SYSTEM_HDF5 "-DLIT_USE_SYSTEM_HDF5:BOOL=ON") set(LITMUS_HDF5_DIR "-DHDF5_DIR:PATH=${HDF5_DIR}") ENDIF() #extract and build Litmus ExternalProject_Add( Litmus URL ${MatchPoint_SOURCE_DIR}/Testing/Litmus/Litmus_rev1298.tar.gz URL_HASH SHA1=20CCE03B65826049F49E39A7B66F0802D8D637F8 SOURCE_DIR ${LITMUS_SOURCE_DIR} BINARY_DIR ${LITMUS_BUILD_DIR} PREFIX ${LITMUS_CMAKE_DIR} INSTALL_COMMAND "" UPDATE_COMMAND "" # Don't update SVN on every build CMAKE_ARGS -DBUILD_TESTING:BOOL=OFF -DCMAKE_CXX_STANDARD=${MAP_CXX_STANDARD} ${ENABLE_ITK} ${ITK_DIRECTORY} ${SYSTEM_HDF5} ${LITMUS_HDF5_DIR} )