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
	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)
