From ddde7baa3a8707a92e935513b9b8e89028a7a009 Mon Sep 17 00:00:00 2001 From: Emil Ohlsson Date: Fri, 29 Nov 2024 09:51:12 +0100 Subject: [PATCH 1/2] Improve developer options for KleidiAI Most developers need to have compilation databases, and different environments might require different linkage. This change makes compilation database default, and adds option for toggling static linkage Signed-off-by: Emil Ohlsson --- CMakeLists.txt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a017d196..bab9708a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,9 +20,17 @@ set(CMAKE_CXX_EXTENSIONS OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") -option(KLEIDIAI_BUILD_TESTS "Build unit tests." ON) option(KLEIDIAI_BUILD_BENCHMARK "Build the benchmark tool." OFF) +option(KLEIDIAI_BUILD_STATIC "Build static binaries." OFF) +option(KLEIDIAI_BUILD_TESTS "Build unit tests." ON) option(KLEIDIAI_ENABLE_CLANG_TIDY "Build with Clang-Tidy checks." OFF) +option(KLEIDIAI_BUILD_COMPILATION_DATABASE "Build compilation database" ON) + +set(CMAKE_EXPORT_COMPILE_COMMANDS ${KLEIDIAI_BUILD_COMPILATION_DATABASE}) + +if(KLEIDIAI_BUILD_STATIC) + set(KLEIDIAI_LINKAGE -static) +endif() if(KLEIDIAI_ENABLE_CLANG_TIDY) set(CMAKE_C_CLANG_TIDY "clang-tidy") @@ -248,6 +256,7 @@ if(KLEIDIAI_BUILD_TESTS) target_link_libraries(kleidiai_test_framework PUBLIC kleidiai + ${KLEIDIAI_LINKAGE} ) add_executable(kleidiai_test @@ -265,6 +274,7 @@ if(KLEIDIAI_BUILD_TESTS) target_link_libraries(kleidiai_test PRIVATE kleidiai_test_framework PRIVATE GTest::gtest_main + ${KLEIDIAI_LINKAGE} ) @@ -299,7 +309,9 @@ if(KLEIDIAI_BUILD_BENCHMARK) target_link_libraries( kleidiai_benchmark kleidiai - benchmark::benchmark) + benchmark::benchmark + ${KLEIDIAI_LINKAGE} + ) set(KLEIDIAI_BENCHMARK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(kleidiai_benchmark -- GitLab From cdda1c1762f724c3882af82c0b2586800c381e48 Mon Sep 17 00:00:00 2001 From: Emil Ohlsson Date: Wed, 4 Dec 2024 16:07:29 +0100 Subject: [PATCH 2/2] Address review comments Signed-off-by: Emil Ohlsson --- CMakeLists.txt | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index bab9708a..0a0667b1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,13 +20,20 @@ set(CMAKE_CXX_EXTENSIONS OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") -option(KLEIDIAI_BUILD_BENCHMARK "Build the benchmark tool." OFF) -option(KLEIDIAI_BUILD_STATIC "Build static binaries." OFF) -option(KLEIDIAI_BUILD_TESTS "Build unit tests." ON) -option(KLEIDIAI_ENABLE_CLANG_TIDY "Build with Clang-Tidy checks." OFF) -option(KLEIDIAI_BUILD_COMPILATION_DATABASE "Build compilation database" ON) +option(KLEIDIAI_BUILD_BENCHMARK "Build the benchmark tool." OFF) +option(KLEIDIAI_BUILD_STATIC "Build static binaries." OFF) +option(KLEIDIAI_BUILD_TESTS "Build unit tests." ON) +option(KLEIDIAI_ENABLE_CLANG_TIDY "Build with Clang-Tidy checks." OFF) -set(CMAKE_EXPORT_COMPILE_COMMANDS ${KLEIDIAI_BUILD_COMPILATION_DATABASE}) +if(CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja") + set(KLEIDIAI_COMPILATION_DB_DEFAULT ON) +else() + set(KLEIDIAI_COMPILATION_DB_DEFAULT OFF) +endif() + +if(CMAKE_EXPORT_COMPILE_COMMANDS STREQUAL "") + set(CMAKE_EXPORT_COMPILE_COMMANDS ${KLEIDIAI_COMPILATION_DB_DEFAULT}) +endif() if(KLEIDIAI_BUILD_STATIC) set(KLEIDIAI_LINKAGE -static) @@ -256,9 +263,11 @@ if(KLEIDIAI_BUILD_TESTS) target_link_libraries(kleidiai_test_framework PUBLIC kleidiai - ${KLEIDIAI_LINKAGE} ) + target_link_options(kleidiai_test_framework + PRIVATE ${KLEIDIAI_LINKAGE}) + add_executable(kleidiai_test test/tests/matmul_test.cpp test/tests/matmul_clamp_f32_f32_f32p_test.cpp @@ -274,9 +283,10 @@ if(KLEIDIAI_BUILD_TESTS) target_link_libraries(kleidiai_test PRIVATE kleidiai_test_framework PRIVATE GTest::gtest_main - ${KLEIDIAI_LINKAGE} ) + target_link_options(kleidiai_test + PRIVATE ${KLEIDIAI_LINKAGE}) # 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. This feature @@ -310,9 +320,11 @@ if(KLEIDIAI_BUILD_BENCHMARK) kleidiai_benchmark kleidiai benchmark::benchmark - ${KLEIDIAI_LINKAGE} ) + target_link_options(kleidiai_benchmark + PRIVATE ${KLEIDIAI_LINKAGE}) + set(KLEIDIAI_BENCHMARK_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(kleidiai_benchmark PRIVATE KLEIDIAI_BENCHMARK_INCLUDE_DIR) -- GitLab