diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-11-19 12:59:28 +0100 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-11-19 12:59:28 +0100 |
commit | 8d2f7d53aa28af09fb86324504056789fe753b4b (patch) | |
tree | 6893a871e02b7bf961f7ad9e206f84d86bab8e85 | |
parent | 7a54494577ccee401b63cfa82688661fc66f59a4 (diff) |
Added a library with common tuner sources to speed-up compilation
-rw-r--r-- | CMakeLists.txt | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index f051e441..d7f30906 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -384,26 +384,33 @@ if(TUNERS) src/utilities/utilities.hpp src/tuning/configurations.hpp src/tuning/tuning.hpp) + set(TUNERS_COMMON ${TUNERS_COMMON} ${TUNERS_HEADERS}) + + # Creates a library with common sources for all tuners + if(MSVC) + # Visual Studio requires the sources of non-exported objects/libraries + else() + # Creates the common performance-tests objects (requires CMake 2.8.8) + add_library(tuners_common_library OBJECT ${TUNERS_COMMON}) + + # Adds CLBlast's interface include paths because we can't link to CLBlast here + target_include_directories(tuners_common_library PRIVATE + $<TARGET_PROPERTY:clblast,INTERFACE_INCLUDE_DIRECTORIES> + ${clblast_SOURCE_DIR} ${API_INCLUDE_DIRS}) + set(TUNERS_COMMON $<TARGET_OBJECTS:tuners_common_library>) + endif() # Adds tuning executables foreach(KERNEL ${KERNELS}) - add_executable(clblast_tuner_${KERNEL} ${TUNERS_COMMON} ${TUNERS_HEADERS} - src/tuning/kernels/${KERNEL}.cpp) - target_include_directories(clblast_tuner_${KERNEL} PUBLIC - $<BUILD_INTERFACE:${clblast_SOURCE_DIR}/include> - $<BUILD_INTERFACE:${clblast_SOURCE_DIR}/src> - ${API_INCLUDE_DIRS}) + add_executable(clblast_tuner_${KERNEL} ${TUNERS_COMMON} src/tuning/kernels/${KERNEL}.cpp) target_link_libraries(clblast_tuner_${KERNEL} ${API_LIBRARIES}) + target_include_directories(clblast_tuner_${KERNEL} PUBLIC $<TARGET_PROPERTY:clblast,INTERFACE_INCLUDE_DIRECTORIES> ${API_INCLUDE_DIRS}) install(TARGETS clblast_tuner_${KERNEL} DESTINATION bin) endforeach() foreach(ROUTINE_TUNER ${ROUTINE_TUNERS}) - add_executable(clblast_tuner_routine_${ROUTINE_TUNER} ${TUNERS_COMMON} ${TUNERS_HEADERS} - src/tuning/routines/${ROUTINE_TUNER}.cpp) - target_include_directories(clblast_tuner_routine_${ROUTINE_TUNER} PUBLIC - $<BUILD_INTERFACE:${clblast_SOURCE_DIR}/include> - $<BUILD_INTERFACE:${clblast_SOURCE_DIR}/src> - ${API_INCLUDE_DIRS}) - target_link_libraries(clblast_tuner_routine_${ROUTINE_TUNER} ${API_LIBRARIES}) + add_executable(clblast_tuner_routine_${ROUTINE_TUNER} ${TUNERS_COMMON} src/tuning/routines/${ROUTINE_TUNER}.cpp) + target_link_libraries(clblast_tuner_routine_${ROUTINE_TUNER} clblast) + target_include_directories(clblast_tuner_routine_${ROUTINE_TUNER} PUBLIC $<TARGET_PROPERTY:clblast,INTERFACE_INCLUDE_DIRECTORIES> ${API_INCLUDE_DIRS}) install(TARGETS clblast_tuner_routine_${ROUTINE_TUNER} DESTINATION bin) endforeach() |