From 43ea796a0288a752a616b2fdc506d80b1a2150bd Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Fri, 29 Nov 2019 23:32:01 +0100 Subject: [PATCH] Added an "add LTO if enabled" function to all targets currently in the library --- clients/CMakeLists.txt | 4 +++- cmake/CheckIPO.cmake | 7 +++++++ src/CMakeLists.txt | 6 ++---- tests/CMakeLists.txt | 1 + 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 784064f7..f643a4c1 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -3,8 +3,10 @@ project(sfizz) ############################### add_executable(sfzprint sfzprint.cpp) target_link_libraries(sfzprint sfizz::parser absl::flags_parse) +sfizz_enable_lto_if_needed(sfzprint) # install(TARGETS sfzprint DESTINATION . OPTIONAL) add_executable(sfizz_jack jack_client.cpp) target_link_libraries(sfizz_jack sfizz::sfizz jack absl::flags_parse) -# install(TARGETS sfizz_jack DESTINATION . OPTIONAL) \ No newline at end of file +sfizz_enable_lto_if_needed(sfizz_jack) +# install(TARGETS sfizz_jack DESTINATION . OPTIONAL) diff --git a/cmake/CheckIPO.cmake b/cmake/CheckIPO.cmake index 5213cbda..38c1dad1 100644 --- a/cmake/CheckIPO.cmake +++ b/cmake/CheckIPO.cmake @@ -12,3 +12,10 @@ else() endif() set (ENABLE_LTO OFF) endif() + +function(SFIZZ_ENABLE_LTO_IF_NEEDED TARGET) + if (ENABLE_LTO) + message(STATUS "Enabling LTO on ${TARGET}") + set_property (TARGET ${TARGET} PROPERTY INTERPROCEDURAL_OPTIMIZATION True) + endif() +endfunction() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 98d6ed36..1e53c471 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -32,10 +32,8 @@ if (UNIX) target_link_libraries (sfizz PUBLIC atomic) endif() -if (ENABLE_LTO) - set_property (TARGET sfizz_parser PROPERTY INTERPROCEDURAL_OPTIMIZATION True) - set_property (TARGET sfizz PROPERTY INTERPROCEDURAL_OPTIMIZATION True) -endif() +sfizz_enable_lto_if_needed(sfizz_parser) +sfizz_enable_lto_if_needed(sfizz) add_library (sfizz::parser ALIAS sfizz_parser) add_library (sfizz::sfizz ALIAS sfizz) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ab383ecd..28f99915 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -37,5 +37,6 @@ if(UNIX) endif(UNIX) target_link_libraries(sfizz_tests PRIVATE absl::strings absl::str_format absl::flat_hash_map sndfile cnpy absl::span absl::algorithm) target_include_directories(sfizz_tests SYSTEM PRIVATE sources) +sfizz_enable_lto_if_needed(sfizz_tests) file(COPY "." DESTINATION ${CMAKE_BINARY_DIR}/tests) \ No newline at end of file