summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
blob: 58277409462d2b9d21ca5f4958961abdc042de1d (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
36
37
38
39
40
# Find Zephyr. This also loads Zephyr's build system.
cmake_minimum_required(VERSION 3.13.1)
find_package(Zephyr)

get_filename_component(ZEPHYR_RUST ${CMAKE_CURRENT_SOURCE_DIR}/zephyr-rust ABSOLUTE)
list(APPEND ZEPHYR_EXTRA_MODULES ${ZEPHYR_RUST})

project(zmk)

# Add your source file to the "app" target. This must come after
# find_package(Zephyr) which defines the target.
target_sources(app PRIVATE src/main.c)

include(ExternalProject)

# Add rust_example as a CMake target
ExternalProject_Add(
    zmk_crate
    DOWNLOAD_COMMAND ""
    CONFIGURE_COMMAND ""
    BUILD_COMMAND cargo build --target thumbv7m-none-eabi COMMAND cargo build --release --target thumbv7m-none-eabi
    BINARY_DIR "${CMAKE_SOURCE_DIR}/zmk"
    INSTALL_COMMAND ""
    BUILD_BYPRODUCTS "${CMAKE_SOURCE_DIR}/zmk/target/thumbv7m-none-eabi/release/libzmk.a"
    LOG_BUILD ON)

# Create a wrapper CMake library that our app can link with
add_library(zmk_lib STATIC IMPORTED GLOBAL)
add_dependencies(
  zmk_lib
  zmk_crate
  )

set_target_properties(zmk_lib PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/zmk/target/thumbv7m-none-eabi/release/libzmk.a)
# target_link_libraries(zmk_lib
# debug "${CMAKE_SOURCE_DIR}/target/debug/zmk.a"
# optimized "${CMAKE_SOURCE_DIR}/target/release/zmk.a")

target_link_libraries(app PUBLIC zmk_lib)