-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
78 lines (71 loc) · 2.67 KB
/
Copy pathCMakeLists.txt
File metadata and controls
78 lines (71 loc) · 2.67 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
cmake_minimum_required(VERSION 3.10)
project(avb_verify C)
# Try system-installed libavb first, fall back to submodule
find_package(PkgConfig QUIET)
if(PKG_CONFIG_FOUND)
pkg_check_modules(LIBAVB QUIET libavb)
endif()
add_executable(avb_verify avb_verify.c)
target_compile_options(avb_verify PRIVATE
-Wall -Wextra
-D_FORTIFY_SOURCE=2
-fstack-protector-strong
-fPIE
-Wformat -Wformat-security
-Werror=format-security
)
target_link_options(avb_verify PRIVATE
-pie
-Wl,-z,relro
-Wl,-z,now
-Wl,-z,noexecstack
)
if(LIBAVB_FOUND)
message(STATUS "Using system libavb: ${LIBAVB_LINK_LIBRARIES}")
target_include_directories(avb_verify PRIVATE ${LIBAVB_INCLUDE_DIRS})
target_link_libraries(avb_verify PRIVATE ${LIBAVB_LINK_LIBRARIES})
else()
message(STATUS "System libavb not found, using avb submodule")
set(LIBAVB_DIR avb/libavb)
target_sources(avb_verify PRIVATE
${LIBAVB_DIR}/avb_chain_partition_descriptor.c
${LIBAVB_DIR}/avb_cmdline.c
${LIBAVB_DIR}/avb_crc32.c
${LIBAVB_DIR}/avb_crypto.c
${LIBAVB_DIR}/avb_descriptor.c
${LIBAVB_DIR}/avb_footer.c
${LIBAVB_DIR}/avb_hash_descriptor.c
${LIBAVB_DIR}/avb_hashtree_descriptor.c
${LIBAVB_DIR}/avb_kernel_cmdline_descriptor.c
${LIBAVB_DIR}/avb_mldsa.c
${LIBAVB_DIR}/avb_property_descriptor.c
${LIBAVB_DIR}/avb_rsa.c
${LIBAVB_DIR}/avb_slot_verify.c
${LIBAVB_DIR}/avb_sysdeps_posix.c
${LIBAVB_DIR}/avb_util.c
${LIBAVB_DIR}/avb_vbmeta_image.c
${LIBAVB_DIR}/avb_version.c
${LIBAVB_DIR}/crypto/sha256_impl.c
${LIBAVB_DIR}/crypto/sha512_impl.c
${LIBAVB_DIR}/crypto/mldsa_impl.c
)
target_compile_definitions(avb_verify PRIVATE AVB_COMPILATION)
target_include_directories(avb_verify PRIVATE ${CMAKE_SOURCE_DIR}/avb ${LIBAVB_DIR}/crypto)
endif()
install(TARGETS avb_verify RUNTIME DESTINATION bin)
option(INSTALL_AVB_SIGN "Install avb_sign.py host signing script and avbtool" OFF)
if(INSTALL_AVB_SIGN)
install(PROGRAMS avb_sign.py DESTINATION bin RENAME avb_sign)
if(EXISTS ${CMAKE_SOURCE_DIR}/avb/avbtool.py)
install(PROGRAMS avb/avbtool.py DESTINATION bin RENAME avbtool)
endif()
endif()
enable_testing()
add_test(NAME integration COMMAND ${CMAKE_SOURCE_DIR}/avb_verify_test.sh
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
set_tests_properties(integration PROPERTIES
ENVIRONMENT "avb_verify=$<TARGET_FILE:avb_verify>")
add_test(NAME avb_sign COMMAND ${CMAKE_SOURCE_DIR}/avb_sign_test.sh
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
set_tests_properties(avb_sign PROPERTIES
ENVIRONMENT "avb_verify=$<TARGET_FILE:avb_verify>")