diff --git a/CMakeLists.txt b/CMakeLists.txt index 49056df0..d20a32df 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 00000000..b4e93e3c --- /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 04f2ee80..cbcc303e 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 7dd9175c..f8a72ffd 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 27fd0ab0..29ee6d99 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 0fe5ad5d..0980b8cc 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 d6835077..c551100f 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 a69b4cb6..9774062e 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 d41ee461..aeba3273 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 567bc740..0810ed6c 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 5838ceb5..6dbc2dc0 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 decb1617..293f6adf 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 )