Commit 9c64790b authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Refactoring CMakeLists.txt: use foreach to avoid repetition

parent 11f01ea7
Loading
Loading
Loading
Loading
+9 −23
Original line number Diff line number Diff line
@@ -32,33 +32,19 @@ endif()

find_package( ZLIB )
if( ZLIB_FOUND )
   target_compile_definitions(tnl-view PUBLIC "-DHAVE_ZLIB")
   target_include_directories(tnl-view PUBLIC ${ZLIB_INCLUDE_DIRS})
   target_link_libraries(tnl-view ${ZLIB_LIBRARIES})

   target_compile_definitions(tnl-mesh-converter PUBLIC "-DHAVE_ZLIB")
   target_include_directories(tnl-mesh-converter PUBLIC ${ZLIB_INCLUDE_DIRS})
   target_link_libraries(tnl-mesh-converter ${ZLIB_LIBRARIES})

   target_compile_definitions(tnl-game-of-life PUBLIC "-DHAVE_ZLIB")
   target_include_directories(tnl-game-of-life PUBLIC ${ZLIB_INCLUDE_DIRS})
   target_link_libraries(tnl-game-of-life ${ZLIB_LIBRARIES})

   target_compile_definitions(tnl-test-distributed-mesh PUBLIC "-DHAVE_ZLIB")
   target_include_directories(tnl-test-distributed-mesh PUBLIC ${ZLIB_INCLUDE_DIRS})
   target_link_libraries(tnl-test-distributed-mesh ${ZLIB_LIBRARIES})
   foreach( target IN ITEMS tnl-view tnl-mesh-converter tnl-game-of-life tnl-test-distributed-mesh )
      target_compile_definitions(${target} PUBLIC "-DHAVE_ZLIB")
      target_include_directories(${target} PUBLIC ${ZLIB_INCLUDE_DIRS})
      target_link_libraries(${target} ${ZLIB_LIBRARIES})
   endforeach()
endif()

find_package( tinyxml2 QUIET )
if( tinyxml2_FOUND )
   target_compile_definitions(tnl-mesh-converter PUBLIC "-DHAVE_TINYXML2")
   target_link_libraries(tnl-mesh-converter tinyxml2::tinyxml2)

   target_compile_definitions(tnl-game-of-life PUBLIC "-DHAVE_TINYXML2")
   target_link_libraries(tnl-game-of-life tinyxml2::tinyxml2)

   target_compile_definitions(tnl-test-distributed-mesh PUBLIC "-DHAVE_TINYXML2")
   target_link_libraries(tnl-test-distributed-mesh tinyxml2::tinyxml2)
   foreach( target IN ITEMS tnl-mesh-converter tnl-game-of-life tnl-test-distributed-mesh )
      target_compile_definitions(${target} PUBLIC "-DHAVE_TINYXML2")
      target_link_libraries(${target} tinyxml2::tinyxml2)
   endforeach()
endif()

find_package( METIS QUIET )
+25 −26
Original line number Diff line number Diff line
IF( BUILD_CUDA )
   CUDA_ADD_EXECUTABLE( MemoryOperationsTest MemoryOperationsTest.cu
                        OPTIONS ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( MemoryOperationsTest ${GTEST_BOTH_LIBRARIES} )
set( COMMON_TESTS
         MemoryOperationsTest
         MultireductionTest
         ParallelForTest
)

   CUDA_ADD_EXECUTABLE( MultireductionTest MultireductionTest.cu
                        OPTIONS ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( MultireductionTest ${GTEST_BOTH_LIBRARIES} )
set( CPP_TESTS )
set( CUDA_TESTS )
if( BUILD_CUDA )
   set( CUDA_TESTS  ${CUDA_TESTS} ${COMMON_TESTS} )
else()
   set( CPP_TESTS  ${CPP_TESTS} ${COMMON_TESTS} )
endif()

   CUDA_ADD_EXECUTABLE( ParallelForTest ParallelForTest.cu OPTIONS ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( ParallelForTest ${GTEST_BOTH_LIBRARIES} )
ELSE( BUILD_CUDA )
   ADD_EXECUTABLE( MemoryOperationsTest MemoryOperationsTest.cpp )
   TARGET_COMPILE_OPTIONS( MemoryOperationsTest PRIVATE ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( MemoryOperationsTest ${GTEST_BOTH_LIBRARIES} )
foreach( target IN ITEMS ${CPP_TESTS} )
   add_executable( ${target} ${target}.cpp )
   target_compile_options( ${target} PRIVATE ${CXX_TESTS_FLAGS} )
   target_link_libraries( ${target} ${GTEST_BOTH_LIBRARIES} )
   add_test( ${target} ${EXECUTABLE_OUTPUT_PATH}/${target}${CMAKE_EXECUTABLE_SUFFIX} )
endforeach()

   ADD_EXECUTABLE( MultireductionTest MultireductionTest.cpp )
   TARGET_COMPILE_OPTIONS( MultireductionTest PRIVATE ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( MultireductionTest ${GTEST_BOTH_LIBRARIES} )

   ADD_EXECUTABLE( ParallelForTest ParallelForTest.cpp )
   TARGET_COMPILE_OPTIONS( ParallelForTest PRIVATE ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( ParallelForTest ${GTEST_BOTH_LIBRARIES} )
ENDIF( BUILD_CUDA )


ADD_TEST( MemoryOperationsTest ${EXECUTABLE_OUTPUT_PATH}/MemoryOperationsTest${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( MultireductionTest ${EXECUTABLE_OUTPUT_PATH}/MultireductionTest${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( ParallelForTest ${EXECUTABLE_OUTPUT_PATH}/ParallelForTest${CMAKE_EXECUTABLE_SUFFIX} )
if( BUILD_CUDA )
   foreach( target IN ITEMS ${CUDA_TESTS} )
      cuda_add_executable( ${target} ${target}.cu OPTIONS ${CXX_TESTS_FLAGS} )
      target_link_libraries( ${target} ${GTEST_BOTH_LIBRARIES} )
      add_test( ${target} ${EXECUTABLE_OUTPUT_PATH}/${target}${CMAKE_EXECUTABLE_SUFFIX} )
   endforeach()
endif()
+15 −50
Original line number Diff line number Diff line
@@ -5,60 +5,25 @@ ADD_SUBDIRECTORY( Functions )
ADD_SUBDIRECTORY( Meshes )
ADD_SUBDIRECTORY( Pointers )

ADD_EXECUTABLE( AssertTest AssertTest.cpp )
TARGET_COMPILE_OPTIONS( AssertTest PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( AssertTest ${GTEST_BOTH_LIBRARIES} )

if( BUILD_CUDA )
   CUDA_ADD_EXECUTABLE( AssertCudaTest AssertCudaTest.cu OPTIONS ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( AssertCudaTest ${GTEST_BOTH_LIBRARIES} )
endif()

if( BUILD_CUDA )
   CUDA_ADD_EXECUTABLE( AllocatorsTest AllocatorsTest.cu OPTIONS ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( AllocatorsTest ${GTEST_BOTH_LIBRARIES} )
else()
   ADD_EXECUTABLE( AllocatorsTest AllocatorsTest.cpp )
   TARGET_COMPILE_OPTIONS( AllocatorsTest PRIVATE ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( AllocatorsTest ${GTEST_BOTH_LIBRARIES} )
endif()

set( CPP_TESTS  AssertTest FileNameTest StringTest ObjectTest TimerTest TypeInfoTest )
set( CUDA_TESTS  AssertCudaTest )
if( BUILD_CUDA )
   CUDA_ADD_EXECUTABLE( FileTest FileTest.cu OPTIONS ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( FileTest ${GTEST_BOTH_LIBRARIES} )
   set( CUDA_TESTS  ${CUDA_TESTS} AllocatorsTest FileTest )
else()
   ADD_EXECUTABLE( FileTest FileTest.cpp )
   TARGET_COMPILE_OPTIONS( FileTest PRIVATE ${CXX_TESTS_FLAGS} )
   TARGET_LINK_LIBRARIES( FileTest ${GTEST_BOTH_LIBRARIES} )
   set( CPP_TESTS  ${CPP_TESTS} AllocatorsTest FileTest )
endif()

ADD_EXECUTABLE( FileNameTest FileNameTest.cpp )
TARGET_COMPILE_OPTIONS( FileNameTest PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( FileNameTest ${GTEST_BOTH_LIBRARIES} )

ADD_EXECUTABLE( StringTest StringTest.cpp )
TARGET_COMPILE_OPTIONS( StringTest PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( StringTest ${GTEST_BOTH_LIBRARIES} )

ADD_EXECUTABLE( ObjectTest ObjectTest.cpp )
TARGET_COMPILE_OPTIONS( ObjectTest PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( ObjectTest ${GTEST_BOTH_LIBRARIES} )

ADD_EXECUTABLE( TimerTest TimerTest.cpp )
TARGET_COMPILE_OPTIONS( TimerTest PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( TimerTest ${GTEST_BOTH_LIBRARIES} )

ADD_EXECUTABLE( TypeInfoTest TypeInfoTest.cpp )
TARGET_COMPILE_OPTIONS( TypeInfoTest PRIVATE ${CXX_TESTS_FLAGS} )
TARGET_LINK_LIBRARIES( TypeInfoTest ${GTEST_BOTH_LIBRARIES} )
foreach( target IN ITEMS ${CPP_TESTS} )
   add_executable( ${target} ${target}.cpp )
   target_compile_options( ${target} PRIVATE ${CXX_TESTS_FLAGS} )
   target_link_libraries( ${target} ${GTEST_BOTH_LIBRARIES} )
   add_test( ${target} ${EXECUTABLE_OUTPUT_PATH}/${target}${CMAKE_EXECUTABLE_SUFFIX} )
endforeach()

ADD_TEST( AssertTest ${EXECUTABLE_OUTPUT_PATH}/AssertTest${CMAKE_EXECUTABLE_SUFFIX} )
if( BUILD_CUDA )
   ADD_TEST( AssertCudaTest ${EXECUTABLE_OUTPUT_PATH}/AssertCudaTest${CMAKE_EXECUTABLE_SUFFIX} )
   foreach( target IN ITEMS ${CUDA_TESTS} )
      cuda_add_executable( ${target} ${target}.cu OPTIONS ${CXX_TESTS_FLAGS} )
      target_link_libraries( ${target} ${GTEST_BOTH_LIBRARIES} )
      add_test( ${target} ${EXECUTABLE_OUTPUT_PATH}/${target}${CMAKE_EXECUTABLE_SUFFIX} )
   endforeach()
endif()
ADD_TEST( AllocatorsTest ${EXECUTABLE_OUTPUT_PATH}/AllocatorsTest${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( FileTest ${EXECUTABLE_OUTPUT_PATH}/FileTest${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( StringTest ${EXECUTABLE_OUTPUT_PATH}/StringTest${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( ObjectTest ${EXECUTABLE_OUTPUT_PATH}/ObjectTest${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( TimerTest ${EXECUTABLE_OUTPUT_PATH}/TimerTest${CMAKE_EXECUTABLE_SUFFIX} )
ADD_TEST( TypeInfoTest ${EXECUTABLE_OUTPUT_PATH}/TypeInfoTest${CMAKE_EXECUTABLE_SUFFIX} )
Loading