|
| 1 | +# Set this to one of the following: aes_gcm, ed25519, inflate, sha256, sha512 |
| 2 | +set(measure_algorithm aes_gcm) |
| 3 | + |
| 4 | +####################################### |
| 5 | +# General |
| 6 | +cmake_minimum_required(VERSION 3.20.0) |
| 7 | + |
| 8 | +find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) |
| 9 | +project(nrf52-libmicrofido C) |
| 10 | + |
| 11 | +target_sources(app PRIVATE "src/${measure_algorithm}_measure.c" src/gpio.c) |
| 12 | +target_include_directories(app PRIVATE src/) |
| 13 | + |
| 14 | +####################################### |
| 15 | +# libmicrofido2 |
| 16 | + |
| 17 | +# Necessary for building libmicrofido2 |
| 18 | +include(ExternalProject) |
| 19 | + |
| 20 | +# Extract the Zephyr compilation settings. |
| 21 | +zephyr_get_include_directories_for_lang_as_string( C includes) |
| 22 | +zephyr_get_system_include_directories_for_lang_as_string(C system_includes) |
| 23 | +zephyr_get_compile_definitions_for_lang_as_string( C definitions) |
| 24 | +zephyr_get_compile_options_for_lang_as_string( C options) |
| 25 | + |
| 26 | +set(external_project_cflags |
| 27 | +"${includes} ${definitions} ${options} ${system_includes} --specs=nosys.specs" |
| 28 | +) |
| 29 | + |
| 30 | +# Directory settings. |
| 31 | +set(libmicrofido2_src_dir ${CMAKE_CURRENT_SOURCE_DIR}/../../../) |
| 32 | +set(libmicrofido2_build_dir ${CMAKE_CURRENT_BINARY_DIR}/libmicrofido2) |
| 33 | + |
| 34 | +set(LIBMICROFIDO2_LIB_DIR ${libmicrofido2_build_dir}) |
| 35 | +set(LIBMICROFIDO2_INCLUDE_DIR ${libmicrofido2_src_dir}/include) |
| 36 | + |
| 37 | +ExternalProject_Add( |
| 38 | +libmicrofido2_project # Name for custom target |
| 39 | +PREFIX ${libmicrofido2_build_dir} # Root directory for the lib. |
| 40 | +SOURCE_DIR ${libmicrofido2_src_dir} |
| 41 | +BINARY_DIR ${libmicrofido2_build_dir} |
| 42 | +CMAKE_ARGS # Pass the necessary build flags. |
| 43 | +-DCMAKE_C_FLAGS=${external_project_cflags} |
| 44 | +-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} |
| 45 | +-DCMAKE_AR=${CMAKE_AR} |
| 46 | +-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} |
| 47 | +INSTALL_COMMAND "" # No installation necessary, just build it. |
| 48 | +BUILD_BYPRODUCTS ${LIBMICROFIDO2_LIB_DIR}/libmicrofido2.a |
| 49 | +) |
| 50 | + |
| 51 | +# Create a wrapper CMake library that our app can link with. |
| 52 | +add_library(libmicrofido2_lib STATIC IMPORTED GLOBAL) |
| 53 | +add_dependencies( |
| 54 | +libmicrofido2_lib |
| 55 | +libmicrofido2_project |
| 56 | +) |
| 57 | +set_target_properties(libmicrofido2_lib PROPERTIES IMPORTED_LOCATION ${LIBMICROFIDO2_LIB_DIR}/libmicrofido2.a) |
| 58 | +file(MAKE_DIRECTORY ${LIBMICROFIDO2_INCLUDE_DIR}) # Hack to make the line below work on the first download. |
| 59 | +set_target_properties(libmicrofido2_lib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${LIBMICROFIDO2_INCLUDE_DIR} ) |
| 60 | +target_include_directories(libmicrofido2_lib INTERFACE ${libmicrofido2_src_dir}/external/tinf/include) |
| 61 | + |
| 62 | +# Link with libmicrofido2 |
| 63 | +target_link_libraries(app PUBLIC libmicrofido2_lib) |
0 commit comments