diff --git a/.gitignore b/.gitignore index 21cf0379..daff60d9 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ build-asan build-release build-reldeb build-debug +docs .vscode perf.data perf.data.old diff --git a/CMakeLists.txt b/CMakeLists.txt index 27db597e..d0c26f74 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,9 @@ if (NOT CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD LESS 14) set(CMAKE_CXX_STANDARD 14) endif() +# Skip installing all dependencies +set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY true) + # Enable LTO set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) # To override the policy in abseil and benchmark set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE) diff --git a/clients/CMakeLists.txt b/clients/CMakeLists.txt index 0e7f525d..2dbefa05 100644 --- a/clients/CMakeLists.txt +++ b/clients/CMakeLists.txt @@ -3,6 +3,7 @@ project(sfizz) ############################### add_executable(sfzprint sfzprint.cpp) target_link_libraries(sfzprint sfizz::parser absl::flags_parse) +install(TARGETS sfzprint DESTINATION . OPTIONAL) ############################### # Basic command line program @@ -17,3 +18,4 @@ endif() add_executable(sfizz_jack jack_client.cpp) target_link_libraries(sfizz_jack sfizz::sfizz jack absl::flags_parse) +install(TARGETS sfizz_jack DESTINATION . OPTIONAL) diff --git a/sfizz/CMakeLists.txt b/sfizz/CMakeLists.txt index 7444d9ee..5ac68e9e 100644 --- a/sfizz/CMakeLists.txt +++ b/sfizz/CMakeLists.txt @@ -65,17 +65,33 @@ target_include_directories(sfizz PUBLIC .) find_package(Threads REQUIRED) target_link_libraries(sfizz PRIVATE Threads::Threads) if(UNIX) - target_link_libraries(sfizz PUBLIC atomic) +target_link_libraries(sfizz PUBLIC atomic) endif(UNIX) target_link_libraries(sfizz PUBLIC absl::strings) target_link_libraries(sfizz PRIVATE sndfile absl::flat_hash_map) +install(TARGETS sfizz_parser DESTINATION . EXCLUDE_FROM_ALL) +install(TARGETS sfizz DESTINATION . EXCLUDE_FROM_ALL) + add_library(sfizz::parser ALIAS sfizz_parser) add_library(sfizz::sfizz ALIAS sfizz) add_library(sfizz_shared SHARED) -set_target_properties(sfizz_shared PROPERTIES OUTPUT_NAME sfizz) +set_target_properties(sfizz_shared PROPERTIES + OUTPUT_NAME sfizz + PUBLIC_HEADER sfizz.h) # set_target_properties(sfizz_shared PROPERTIES POSITION_INDEPENDENT_CODE ON) target_sources(sfizz_shared PRIVATE sfizz.cpp) -target_link_libraries(sfizz_shared sfizz::sfizz) \ No newline at end of file +target_link_libraries(sfizz_shared sfizz::sfizz) +configure_file(sfizz.pc.in sfizz.pc @ONLY) + +if(UNIX) + include(GNUInstallDirs) + install(TARGETS sfizz_shared + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/static + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + install(FILES + ${CMAKE_BINARY_DIR}/sfizz/sfizz.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) +endif() \ No newline at end of file diff --git a/sfizz/sfizz.h b/sfizz/sfizz.h index 32ae9baf..5bb3374d 100644 --- a/sfizz/sfizz.h +++ b/sfizz/sfizz.h @@ -22,7 +22,7 @@ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #pragma once - +#include #ifdef __cplusplus extern "C" { #endif diff --git a/sfizz/sfizz.pc.in b/sfizz/sfizz.pc.in new file mode 100644 index 00000000..0a0f3296 --- /dev/null +++ b/sfizz/sfizz.pc.in @@ -0,0 +1,12 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ +includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + +Name: @PROJECT_NAME@ +Description: @PROJECT_DESCRIPTION@ +Version: @PROJECT_VERSION@ + +Requires: +Libs: -L${libdir} -lmylib +Cflags: -I${includedir} \ No newline at end of file