-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
51 lines (39 loc) · 1.43 KB
/
CMakeLists.txt
File metadata and controls
51 lines (39 loc) · 1.43 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
cmake_minimum_required(VERSION 3.15)
set(TYPESCRIPT_RUST_OUTDIR "${CMAKE_BINARY_DIR}/typescript")
set(_TYPESCRIPT_DYNAMIC_LIBNAME "libtypescript.so")
if(WIN32)
set(_TYPESCRIPT_DYNAMIC_LIBNAME "typescript.dll")
endif()
set(TYPESCRIPT_INCLUDE "${CMAKE_CURRENT_SOURCE_DIR}/include")
set(TYPESCRIPT_DYNAMIC_LIB "${TYPESCRIPT_RUST_OUTDIR}/release/${_TYPESCRIPT_DYNAMIC_LIBNAME}")
file(GLOB_RECURSE TYPESCRIPT_RUST_SOURCES
"${CMAKE_CURRENT_SOURCE_DIR}/src/lib.rs"
"${CMAKE_CURRENT_SOURCE_DIR}/Cargo.toml"
)
add_custom_command(
USES_TERMINAL
OUTPUT ${TYPESCRIPT_DYNAMIC_LIB}
DEPENDS ${TYPESCRIPT_RUST_SOURCES}
COMMAND ${CMAKE_COMMAND} -E env CC= CXX= cargo build
--release
--target-dir ${TYPESCRIPT_RUST_OUTDIR}
--manifest-path "${CMAKE_CURRENT_SOURCE_DIR}/Cargo.toml"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Building libtypescript"
VERBATIM
)
add_custom_target(typescript_build ALL
DEPENDS ${TYPESCRIPT_DYNAMIC_LIB}
)
add_library(typescript SHARED IMPORTED GLOBAL)
set_target_properties(typescript PROPERTIES
IMPORTED_LOCATION "${TYPESCRIPT_DYNAMIC_LIB}"
INTERFACE_INCLUDE_DIRECTORIES "${TYPESCRIPT_INCLUDE}"
)
if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
set_target_properties(typescript PROPERTIES
IMPORTED_IMPLIB "${TYPESCRIPT_DYNAMIC_LIB}.lib"
)
endif()
add_executable(typescript_test test/main.c)
target_link_libraries(typescript_test typescript)