From 84c6b42e65899b9915a4383c7a35ba4d9775280c Mon Sep 17 00:00:00 2001 From: Andy Maloney Date: Thu, 5 Jan 2023 14:22:48 -0500 Subject: [PATCH] cmake : update to 3.19 (#351) - update from 3.0 (from 2014) to 3.19 (from 2020) - move some global setting onto the targets (through a cmake include) --- CMakeLists.txt | 16 +++++++--------- cmake/DefaultTargetOptions.cmake | 17 +++++++++++++++++ examples/bench.wasm/CMakeLists.txt | 2 ++ examples/bench/CMakeLists.txt | 3 +++ examples/command.wasm/CMakeLists.txt | 2 ++ examples/command/CMakeLists.txt | 3 +++ examples/main/CMakeLists.txt | 3 +++ examples/stream.wasm/CMakeLists.txt | 2 ++ examples/stream/CMakeLists.txt | 3 +++ examples/talk.wasm/CMakeLists.txt | 2 ++ examples/talk/CMakeLists.txt | 3 +++ examples/whisper.wasm/CMakeLists.txt | 2 ++ 12 files changed, 49 insertions(+), 9 deletions(-) create mode 100644 cmake/DefaultTargetOptions.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 49056df..d20a32d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,15 +1,14 @@ -cmake_minimum_required (VERSION 3.0) +cmake_minimum_required (VERSION 3.19) project(whisper.cpp VERSION 1.0.4) -set(CMAKE_EXPORT_COMPILE_COMMANDS "on") -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib") +# Add path to modules +list( APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" ) if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) set(WHISPER_STANDALONE ON) - include(cmake/GitVars.cmake) - include(cmake/BuildTypes.cmake) + include(GitVars) + include(BuildTypes) # configure project version if (EXISTS "${CMAKE_SOURCE_DIR}/bindings/ios/Makefile-tmpl") @@ -82,9 +81,6 @@ endif() # dependencies -set(CMAKE_C_STANDARD 11) -set(CMAKE_CXX_STANDARD 11) - find_package(Threads REQUIRED) # on APPLE - include Accelerate framework @@ -190,6 +186,8 @@ add_library(${TARGET} whisper.cpp ) +include(DefaultTargetOptions) + target_include_directories(${TARGET} PUBLIC . ) diff --git a/cmake/DefaultTargetOptions.cmake b/cmake/DefaultTargetOptions.cmake new file mode 100644 index 0000000..b4e93e3 --- /dev/null +++ b/cmake/DefaultTargetOptions.cmake @@ -0,0 +1,17 @@ +# Set the default compile features and properties for a target. + +if (NOT TARGET) + message(FATAL_ERROR "TARGET not set before including DefaultTargetOptions") +endif() + +target_compile_features(${TARGET} + PRIVATE + cxx_std_11 + ) + +set_target_properties(${TARGET} + PROPERTIES + EXPORT_COMPILE_COMMANDS ON + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" + INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib" +) diff --git a/examples/bench.wasm/CMakeLists.txt b/examples/bench.wasm/CMakeLists.txt index 04f2ee8..cbcc303 100644 --- a/examples/bench.wasm/CMakeLists.txt +++ b/examples/bench.wasm/CMakeLists.txt @@ -8,6 +8,8 @@ add_executable(${TARGET} emscripten.cpp ) +include(DefaultTargetOptions) + target_link_libraries(${TARGET} PRIVATE whisper ) diff --git a/examples/bench/CMakeLists.txt b/examples/bench/CMakeLists.txt index 7dd9175..f8a72ff 100644 --- a/examples/bench/CMakeLists.txt +++ b/examples/bench/CMakeLists.txt @@ -1,3 +1,6 @@ set(TARGET bench) add_executable(${TARGET} bench.cpp) + +include(DefaultTargetOptions) + target_link_libraries(${TARGET} PRIVATE whisper ${CMAKE_THREAD_LIBS_INIT}) diff --git a/examples/command.wasm/CMakeLists.txt b/examples/command.wasm/CMakeLists.txt index 27fd0ab..29ee6d9 100644 --- a/examples/command.wasm/CMakeLists.txt +++ b/examples/command.wasm/CMakeLists.txt @@ -8,6 +8,8 @@ add_executable(${TARGET} emscripten.cpp ) +include(DefaultTargetOptions) + target_link_libraries(${TARGET} PRIVATE whisper ) diff --git a/examples/command/CMakeLists.txt b/examples/command/CMakeLists.txt index 0fe5ad5..0980b8c 100644 --- a/examples/command/CMakeLists.txt +++ b/examples/command/CMakeLists.txt @@ -2,6 +2,9 @@ if (WHISPER_SUPPORT_SDL2) # command set(TARGET command) add_executable(${TARGET} command.cpp) + + include(DefaultTargetOptions) + target_include_directories(${TARGET} PRIVATE ${SDL2_INCLUDE_DIRS}) target_link_libraries(${TARGET} PRIVATE whisper ${SDL2_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) endif () diff --git a/examples/main/CMakeLists.txt b/examples/main/CMakeLists.txt index d683507..c551100 100644 --- a/examples/main/CMakeLists.txt +++ b/examples/main/CMakeLists.txt @@ -1,3 +1,6 @@ set(TARGET main) add_executable(${TARGET} main.cpp) + +include(DefaultTargetOptions) + target_link_libraries(${TARGET} PRIVATE whisper ${CMAKE_THREAD_LIBS_INIT}) diff --git a/examples/stream.wasm/CMakeLists.txt b/examples/stream.wasm/CMakeLists.txt index a69b4cb..9774062 100644 --- a/examples/stream.wasm/CMakeLists.txt +++ b/examples/stream.wasm/CMakeLists.txt @@ -8,6 +8,8 @@ add_executable(${TARGET} emscripten.cpp ) +include(DefaultTargetOptions) + target_link_libraries(${TARGET} PRIVATE whisper ) diff --git a/examples/stream/CMakeLists.txt b/examples/stream/CMakeLists.txt index d41ee46..aeba327 100644 --- a/examples/stream/CMakeLists.txt +++ b/examples/stream/CMakeLists.txt @@ -2,6 +2,9 @@ if (WHISPER_SUPPORT_SDL2) # stream set(TARGET stream) add_executable(${TARGET} stream.cpp) + + include(DefaultTargetOptions) + target_include_directories(${TARGET} PRIVATE ${SDL2_INCLUDE_DIRS}) target_link_libraries(${TARGET} PRIVATE whisper ${SDL2_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) endif () diff --git a/examples/talk.wasm/CMakeLists.txt b/examples/talk.wasm/CMakeLists.txt index 567bc74..0810ed6 100644 --- a/examples/talk.wasm/CMakeLists.txt +++ b/examples/talk.wasm/CMakeLists.txt @@ -9,6 +9,8 @@ add_executable(${TARGET} gpt-2.cpp ) +include(DefaultTargetOptions) + target_link_libraries(${TARGET} PRIVATE whisper ) diff --git a/examples/talk/CMakeLists.txt b/examples/talk/CMakeLists.txt index 5838ceb..6dbc2dc 100644 --- a/examples/talk/CMakeLists.txt +++ b/examples/talk/CMakeLists.txt @@ -8,6 +8,9 @@ if (WHISPER_SUPPORT_SDL2) # TODO: this is temporary # need to export ggml symbols for MSVC, but too lazy .. add_executable(${TARGET} talk.cpp gpt-2.cpp ../../ggml.c ../../whisper.cpp) + + include(DefaultTargetOptions) + target_include_directories(${TARGET} PRIVATE ${SDL2_INCLUDE_DIRS} ../../) target_link_libraries(${TARGET} PRIVATE ${SDL2_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) endif () diff --git a/examples/whisper.wasm/CMakeLists.txt b/examples/whisper.wasm/CMakeLists.txt index decb161..293f6ad 100644 --- a/examples/whisper.wasm/CMakeLists.txt +++ b/examples/whisper.wasm/CMakeLists.txt @@ -8,6 +8,8 @@ add_executable(${TARGET} emscripten.cpp ) +include(DefaultTargetOptions) + target_link_libraries(${TARGET} PRIVATE whisper )