diff --git a/CMakeLists.txt b/CMakeLists.txt index 3b6ea9a5a53bb322fc6f5f0e776ea864f9181abc..9dc92e3a030510ec24d9b75ab565b10854a46a3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -122,6 +122,7 @@ set(KLEIDIAI_FILES_SME2 ) add_library(kleidiai) +set_target_properties(kleidiai PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION 0) target_sources(kleidiai PRIVATE ${KLEIDIAI_FILES_SCALAR}) # Selectively enable architecture features. @@ -155,6 +156,12 @@ target_compile_options(kleidiai PRIVATE ${KLEIDIAI_WARNING_FLAGS} ) +include(GNUInstallDirs) +install(TARGETS kleidiai + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + if(KLEIDIAI_BUILD_TESTS) include(FetchGTest) enable_testing() @@ -207,6 +214,11 @@ if(KLEIDIAI_BUILD_TESTS) PRIVATE GTest::gtest_main ) + install(TARGETS kleidiai_test + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + # Cross-compiling is a common use case which creates a conflict if DISCOVERY_MODE is set to POST_BUILD (by default) # since the host platform does not match the target. Setting the mode to PRE_TEST avoids this conflict. gtest_discover_tests(kleidiai_test DISCOVERY_MODE PRE_TEST) @@ -237,6 +249,11 @@ if(KLEIDIAI_BUILD_BENCHMARK) kleidiai benchmark::benchmark) + install(TARGETS kleidiai_benchmark + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + set(KLEIDIAI_BENCHMARK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(kleidiai_benchmark PRIVATE KLEIDIAI_BENCHMARK_INCLUDE_DIR) diff --git a/cmake/FetchGBench.cmake b/cmake/FetchGBench.cmake index b32c76a7f5e36ea87bce4061dca8bc025aebf9a7..fa12e43771da409d46b0c9fdf07f79adb619368c 100644 --- a/cmake/FetchGBench.cmake +++ b/cmake/FetchGBench.cmake @@ -13,6 +13,7 @@ endif() fetchcontent_declare(googlebench GIT_REPOSITORY https://github.com/google/benchmark.git GIT_TAG v1.8.4 + FIND_PACKAGE_ARGS NAMES benchmark ) fetchcontent_makeavailable(googlebench) diff --git a/cmake/FetchGTest.cmake b/cmake/FetchGTest.cmake index 0ca9441275c32f4096344b5fb514e5fe97d3ce09..ad1bddc556c8b995d70e90a5cf2c5f939fff7d6f 100644 --- a/cmake/FetchGTest.cmake +++ b/cmake/FetchGTest.cmake @@ -13,6 +13,7 @@ endif() fetchcontent_declare(googletest GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG v1.14.0 + FIND_PACKAGE_ARGS NAMES GTest ) set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)