diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f1d7ed59c19e86e398f2bcee8a354beda5a66af..f752552b6393f2ea3dbafd0c9dd6bd1c051ef08f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,15 +2,6 @@ cmake_minimum_required(VERSION 3.17) set(LKT_VERSION 2.4) -if(CMAKE_BUILD_TYPE STREQUAL "Release") - set(RUST_BUILD_TYPE "release") - set(RUST_BUILD_CMD "${CARGO}" build --release) - set(CMAKE_BUILD_TYPE RelWithDebInfo) -else() - set(RUST_BUILD_TYPE "debug") - set(RUST_BUILD_CMD "${CARGO}" build) -endif() - project(lektor VERSION ${LKT_VERSION} LANGUAGES C CXX) cmake_policy(SET CMP0100 NEW) @@ -26,6 +17,30 @@ include(FindOpenMP) # Test OpenMP support include(GNUInstallDirs) # Needed for installation things include(ExternalProject) # Enable ExternalProject CMake module +### ### +# FIND PROGRAMS # +### ### + +find_program(MKVPROPEDIT mkvpropedit REQUIRED) # To DL karas and apply metadata +find_program(XXD xxd REQUIRED) # To embed the sqlite db schemas into the binary +find_program(CARGO cargo REQUIRED) # For rust things + +if(CMAKE_RUST_COMPILER) + message(STATUS "Override cargo path: ${CMAKE_RUST_COMPILER}") + set(CARGO "${CMAKE_RUST_COMPILER}") +else() + message(STATUS "Using cargo: ${CARGO}") +endif() + +if(CMAKE_BUILD_TYPE STREQUAL "Release") + set(RUST_BUILD_TYPE "release") + set(RUST_BUILD_CMD "${CARGO}" build --release) + set(CMAKE_BUILD_TYPE RelWithDebInfo) +else() + set(RUST_BUILD_TYPE "debug") + set(RUST_BUILD_CMD "${CARGO}" build) +endif() + ### ### # TEST OPENMP # ### ### @@ -107,17 +122,6 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -find_program(MKVPROPEDIT mkvpropedit REQUIRED) # To DL karas and apply metadata -find_program(XXD xxd REQUIRED) # To embed the sqlite db schemas into the binary -find_program(CARGO cargo REQUIRED) # For rust things - -if(CMAKE_RUST_COMPILER) - message(STATUS "Override cargo path: ${CMAKE_RUST_COMPILER}") - set(CARGO "${CMAKE_RUST_COMPILER}") -else() - message(STATUS "Using cargo: ${CARGO}") -endif() - message(STATUS "The installation prefix is ${CMAKE_INSTALL_PREFIX}") TEST_BIG_ENDIAN(IS_BIG_ENDIAN) @@ -341,6 +345,7 @@ set_directory_properties(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/Rust) ExternalProject_Add(amadeus_rs DOWNLOAD_COMMAND "" CONFIGURE_COMMAND "" + INSTALL_COMMAND "" SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/rust/amadeus-rs" BUILD_COMMAND ${RUST_BUILD_CMD} COMMAND ${RUST_BUILD_CMD} @@ -349,17 +354,16 @@ ExternalProject_Add(amadeus_rs BUILD_IN_SOURCE 1 ) -install(PROGRAMS "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/amadeus" TYPE BIN) - ExternalProject_Add(liblektor_rs DOWNLOAD_COMMAND "" CONFIGURE_COMMAND "" + INSTALL_COMMAND "" SOURCE_DIR "${CMAKE_SOURCE_DIR}/src/rust/liblektor-rs" BUILD_COMMAND ${RUST_BUILD_CMD} COMMAND ${RUST_BUILD_CMD} - INSTALL_COMMAND "" BUILD_BYPRODUCTS "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/liblektor_rs.a" BUILD_ALWAYS 1 + BUILD_IN_SOURCE 1 ) add_dependencies(lektord liblektor_rs) @@ -374,6 +378,8 @@ target_link_libraries(lektord # THE INSTALL DIRECTIVES # ### ### +install(PROGRAMS "${CMAKE_SOURCE_DIR}/src/rust/target/${RUST_BUILD_TYPE}/amadeus" TYPE BIN) + install(TARGETS lektord lkt RUNTIME # For lektord RUNTIME # For lkt