cmake_minimum_required(VERSION 3.16) project(deltachat LANGUAGES C) include(GNUInstallDirs) find_program(CARGO cargo) if(APPLE) set(DYNAMIC_EXT "dylib") elseif(UNIX) set(DYNAMIC_EXT "so") else() set(DYNAMIC_EXT "dll") endif() if(DEFINED ENV{CARGO_BUILD_TARGET}) set(ARCH_DIR "$ENV{CARGO_BUILD_TARGET}") else() set(ARCH_DIR "./") endif() add_custom_command( OUTPUT "${CMAKE_BINARY_DIR}/target/release/libdeltachat.a" "${CMAKE_BINARY_DIR}/target/release/libdeltachat.${DYNAMIC_EXT}" "${CMAKE_BINARY_DIR}/target/release/pkgconfig/deltachat.pc" COMMAND PREFIX=${CMAKE_INSTALL_PREFIX} LIBDIR=${CMAKE_INSTALL_FULL_LIBDIR} INCLUDEDIR=${CMAKE_INSTALL_FULL_INCLUDEDIR} ${CARGO} build --target-dir=${CMAKE_BINARY_DIR}/target --release --no-default-features --features jsonrpc WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/deltachat-ffi ) add_custom_target( lib_deltachat ALL DEPENDS "${CMAKE_BINARY_DIR}/target/release/libdeltachat.a" "${CMAKE_BINARY_DIR}/target/release/libdeltachat.${DYNAMIC_EXT}" "${CMAKE_BINARY_DIR}/target/release/pkgconfig/deltachat.pc" ) install(FILES "deltachat-ffi/deltachat.h" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(FILES "${CMAKE_BINARY_DIR}/target/${ARCH_DIR}/release/libdeltachat.a" DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES "${CMAKE_BINARY_DIR}/target/${ARCH_DIR}/release/libdeltachat.${DYNAMIC_EXT}" DESTINATION ${CMAKE_INSTALL_LIBDIR}) install(FILES "${CMAKE_BINARY_DIR}/target/${ARCH_DIR}/release/pkgconfig/deltachat.pc" DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)