aboutsummaryrefslogtreecommitdiff
path: root/libs/steam_appinfo_ffi/CMakeLists.txt
blob: 46d117e82f46643a61dab0cec5b4dc1036f0d8df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
cmake_minimum_required(VERSION 3.16)
project(steam_appinfo_ffi)

if(CMAKE_BUILD_TYPE STREQUAL "Debug")
  set(CARGO_BUILD_TYPE "debug")
  set(CARGO_BUILD_FLAGS "")
else()
  set(CARGO_BUILD_TYPE "release")
  set(CARGO_BUILD_FLAGS "--release")
endif()

set(SAI_FFI_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(SAI_FFI_LIB ${SAI_FFI_DIR}/target/${CARGO_BUILD_TYPE}/libsteam_appinfo_ffi.so)

add_custom_command(
  OUTPUT ${SAI_FFI_LIB}
  COMMAND cargo build ${CARGO_BUILD_FLAGS}
  WORKING_DIRECTORY ${SAI_FFI_DIR}
  COMMENT "Building Steam appinfo FFI library (Rust)"
  DEPENDS
    ${SAI_FFI_DIR}/Cargo.toml
    ${SAI_FFI_DIR}/src/lib.rs
    ${SAI_FFI_DIR}/vendor/steam-vdf-parser/src/binary/parser.rs
)

add_custom_target(steam_appinfo_ffi_build DEPENDS ${SAI_FFI_LIB})

add_library(steam_appinfo_ffi_wrapper INTERFACE)
target_link_libraries(steam_appinfo_ffi_wrapper INTERFACE ${SAI_FFI_LIB})
target_include_directories(steam_appinfo_ffi_wrapper INTERFACE ${SAI_FFI_DIR}/include)
add_dependencies(steam_appinfo_ffi_wrapper steam_appinfo_ffi_build)
add_library(mo2::steam_appinfo_ffi ALIAS steam_appinfo_ffi_wrapper)

install(FILES ${SAI_FFI_LIB} DESTINATION lib)
install(DIRECTORY ${SAI_FFI_DIR}/include/ DESTINATION include)