Skip to content

Commit fec31c5

Browse files
authored
Merge pull request #561 from danielinux/build-cmake-test
Fixes for CMake builds
2 parents 574f68b + 0901bb4 commit fec31c5

File tree

3 files changed

+129
-88
lines changed

3 files changed

+129
-88
lines changed
+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Wolfboot CMake Build
2+
on:
3+
pull_request:
4+
branches: [ '*' ]
5+
jobs:
6+
cmake_automated_test:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v4
10+
with:
11+
submodules: true
12+
13+
- name: Install requirements
14+
run: |
15+
sudo sed -i 's|http://azure.archive.ubuntu.com/ubuntu/|http://mirror.arizona.edu/ubuntu/|g' /etc/apt/sources.list
16+
sudo apt-get update
17+
sudo apt-get install -y gcc-arm-none-eabi gcc-powerpc-linux-gnu cmake
18+
19+
- name: Run CMake build for STM32U5
20+
run: |
21+
rm -rf ./build
22+
cmake -B build -DWOLFBOOT_TARGET=stm32u5 -DWOLFBOOT_PARTITION_BOOT_ADDRESS=0x08100000 -DWOLFBOOT_SECTOR_SIZE=0x2000 -DWOLFBOOT_PARTITION_SIZE=0x20000 -DWOLFBOOT_PARTITION_UPDATE_ADDRESS=0x817F000 -DWOLFBOOT_PARTITION_SWAP_ADDRESS=0x81FE000 -DNO_MPU=yes
23+
- name: Build wolfBoot
24+
run: make -C build
25+
26+
- name: Run CMake build for STM32H7
27+
run: |
28+
rm -rf ./build
29+
cmake -B build -DWOLFBOOT_TARGET=stm32h7 -DWOLFBOOT_PARTITION_BOOT_ADDRESS=0x8020000 -DWOLFBOOT_SECTOR_SIZE=0x20000 -DWOLFBOOT_PARTITION_SIZE=0xD0000 -DWOLFBOOT_PARTITION_UPDATE_ADDRESS=0x80F0000 -DWOLFBOOT_PARTITION_SWAP_ADDRESS=0x81C0000
30+
- name: Build wolfBoot
31+
run: make -C build
32+
33+
- name: Run CMake build for STM32F4
34+
run: |
35+
rm -rf ./build
36+
cmake -B build -DWOLFBOOT_TARGET=stm32f4 -DWOLFBOOT_PARTITION_SIZE=0x20000 -DWOLFBOOT_SECTOR_SIZE=0x20000 -DWOLFBOOT_PARTITION_BOOT_ADDRESS=0x08020000 -DWOLFBOOT_PARTITION_UPDATE_ADDRESS=0x08040000 -DWOLFBOOT_PARTITION_SWAP_ADDRESS=0x08060000
37+
- name: Build wolfBoot
38+
run: make -C build
39+
40+
- name: Run CMake build for STM32L0
41+
run: |
42+
rm -rf ./build
43+
cmake -B build -DWOLFBOOT_TARGET=stm32l0 -DWOLFBOOT_PARTITION_BOOT_ADDRESS=0x8000 -DWOLFBOOT_SECTOR_SIZE=0x1000 -DWOLFBOOT_PARTITION_SIZE=0x10000 -DWOLFBOOT_PARTITION_UPDATE_ADDRESS=0x18000 -DWOLFBOOT_PARTITION_SWAP_ADDRESS=0x28000 -DNVM_FLASH_WRITEONCE=yes
44+
- name: Build wolfBoot
45+
run: make -C build
46+
47+
- name: Run Cmake build for Nordic nrf52
48+
run: |
49+
rm -rf ./build
50+
cmake -B build -DWOLFBOOT_TARGET=nrf52 -DWOLFBOOT_PARTITION_SIZE=0x8000 -DWOLFBOOT_SECTOR_SIZE=0x1000 -DWOLFBOOT_PARTITION_BOOT_ADDRESS=0x27000 -DWOLFBOOT_PARTITION_UPDATE_ADDRESS=0x2F000 -DWOLFBOOT_PARTITION_SWAP_ADDRESS=0x37000
51+
- name: Build wolfBoot
52+
run: make -C build

CMakeLists.txt

+76-87
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ if(NOT DEFINED WOLFBOOT_SECTOR_SIZE)
5656
endif()
5757

5858
if(NOT DEFINED ARM_TARGETS)
59-
list(APPEND ARM_TARGETS stm32h7 stm32l0 stm32f4 stm32u5)
59+
list(APPEND ARM_TARGETS cypsoc6 imx kinetis lpc54606j512 mcxa mcxw nrf52 nrf52840 nrf5340 nrf5340_net rp2350 sama5d3 same51 stm32c0 stm32f1 stm32f4 stm32f7 stm32g0 stm32h5 stm32h7 stm32l0 stm32l5 stm32u5 stm32wb ti zynqmp)
6060
set(ARM_TARGETS
6161
"${ARM_TARGETS}"
6262
CACHE INTERNAL "")
@@ -118,7 +118,7 @@ add_option("OCTOSPI_FLASH" "Use external OCTOSPI flash drivers (default: disable
118118
add_option("SPMATH" "Use SP Math (default: disabled)" "no" "yes;no")
119119
add_option("SPMATHALL" "Use SP Math All (sp_int.c) (default: disabled)" "no" "yes;no")
120120
add_option("WOLFBOOT_TARGET" "Target platform to build for (default: stm32h7)" "stm32h7"
121-
"stm32f4;stm32h7;stm32l0;stm32u5;x86_64_efi;sim")
121+
"${ARM_TARGETS};x86_64_efi;sim")
122122
add_option("UART_FLASH" "Use external UART flash drivers (default: disabled)" "no" "yes;no")
123123
add_option(
124124
"WOLFBOOT_SMALL_STACK"
@@ -128,8 +128,6 @@ add_option(
128128
add_option("DEBUG_UART" "Enable trace debugging over a UART (default: disabled)" "no" "yes;no")
129129
add_option("BUILD_TEST_APPS" "Build the wolfBoot image and test apps (default: disabled)" "no" "yes;no")
130130
add_option("BUILD_IMAGE" "Build the wolfBoot image (default: disabled)" "no" "yes;no")
131-
add_option("PYTHON_KEYTOOLS" "Use wolfCrypt-py for key generation and signing (default: disabled)"
132-
"no" "yes;no")
133131
add_option(
134132
"PULL_LINKER_DEFINES"
135133
"Pull partition addresses from the linker script instead of defining fixed addresses in target.h (default: disabled)"
@@ -633,15 +631,9 @@ target_compile_definitions(wolfboothal PRIVATE ${WOLFBOOT_DEFS})
633631
target_include_directories(wolfboothal PRIVATE ${WOLFBOOT_ROOT} include)
634632
target_compile_options(wolfboothal PRIVATE ${WOLFBOOT_COMPILE_OPTIONS} ${EXTRA_COMPILE_OPTIONS})
635633

636-
if(PYTHON_KEYTOOLS)
637-
message(STATUS "Using Python Keytools")
638-
set(SIGN_TOOL ${WOLFBOOT_ROOT}/tools/keytools/sign.py)
639-
set(KEYGEN_TOOL ${WOLFBOOT_ROOT}/tools/keytools/keygen.py)
640-
else()
641-
message(STATUS "Using C Keytools")
642-
set(SIGN_TOOL ${CMAKE_CURRENT_BINARY_DIR}/sign)
643-
set(KEYGEN_TOOL ${CMAKE_CURRENT_BINARY_DIR}/keygen)
644-
endif()
634+
message(STATUS "Using C Keytools")
635+
set(SIGN_TOOL ${CMAKE_CURRENT_BINARY_DIR}/sign)
636+
set(KEYGEN_TOOL ${CMAKE_CURRENT_BINARY_DIR}/keygen)
645637

646638
list(APPEND WOLFBOOT_INCLUDE_DIRS ${WOLFBOOT_ROOT} ${WOLFBOOT_ROOT}/include)
647639

@@ -711,76 +703,75 @@ target_include_directories(target BEFORE INTERFACE ${CMAKE_CURRENT_BINARY_DIR})
711703

712704
set(KEYSTORE ${CMAKE_CURRENT_BINARY_DIR}/keystore.c)
713705

714-
if(NOT PYTHON_KEYTOOLS)
715-
list(
716-
APPEND
717-
KEYTOOL_SOURCES
718-
src/delta.c
719-
lib/wolfssl/wolfcrypt/src/asn.c
720-
lib/wolfssl/wolfcrypt/src/aes.c
721-
lib/wolfssl/wolfcrypt/src/ecc.c
722-
lib/wolfssl/wolfcrypt/src/coding.c
723-
lib/wolfssl/wolfcrypt/src/chacha.c
724-
lib/wolfssl/wolfcrypt/src/ed25519.c
725-
lib/wolfssl/wolfcrypt/src/ed448.c
726-
lib/wolfssl/wolfcrypt/src/fe_operations.c
727-
lib/wolfssl/wolfcrypt/src/ge_operations.c
728-
lib/wolfssl/wolfcrypt/src/fe_448.c
729-
lib/wolfssl/wolfcrypt/src/ge_448.c
730-
lib/wolfssl/wolfcrypt/src/hash.c
731-
lib/wolfssl/wolfcrypt/src/logging.c
732-
lib/wolfssl/wolfcrypt/src/memory.c
733-
lib/wolfssl/wolfcrypt/src/random.c
734-
lib/wolfssl/wolfcrypt/src/rsa.c
735-
lib/wolfssl/wolfcrypt/src/sp_int.c
736-
lib/wolfssl/wolfcrypt/src/sp_c32.c
737-
lib/wolfssl/wolfcrypt/src/sp_c64.c
738-
lib/wolfssl/wolfcrypt/src/sha3.c
739-
lib/wolfssl/wolfcrypt/src/sha256.c
740-
lib/wolfssl/wolfcrypt/src/sha512.c
741-
lib/wolfssl/wolfcrypt/src/tfm.c
742-
lib/wolfssl/wolfcrypt/src/wc_port.c
743-
lib/wolfssl/wolfcrypt/src/wolfmath.c)
744-
745-
list(
746-
APPEND
747-
KEYTOOL_FLAGS
748-
-Wall
749-
-Wextra
750-
-Werror
751-
-Itools/keytools
752-
-DWOLFSSL_USER_SETTINGS
753-
-Ilib/wolfssl/
754-
-Iinclude
755-
-I${CMAKE_CURRENT_BINARY_DIR}
756-
-DWOLFBOOT_KEYTOOLS
757-
-O2
758-
-DIMAGE_HEADER_SIZE=${IMAGE_HEADER_SIZE}
759-
-DDELTA_UPDATES)
760-
761-
add_custom_command(
762-
OUTPUT ${SIGN_TOOL}
763-
COMMAND gcc -o ${CMAKE_CURRENT_BINARY_DIR}/sign tools/keytools/sign.c ${KEYTOOL_SOURCES}
764-
${KEYTOOL_FLAGS}
765-
WORKING_DIRECTORY ${WOLFBOOT_ROOT}
766-
COMMENT "Building signing tool")
767-
768-
add_custom_command(
769-
OUTPUT ${KEYGEN_TOOL}
770-
COMMAND gcc -o ${CMAKE_CURRENT_BINARY_DIR}/keygen tools/keytools/keygen.c ${KEYTOOL_SOURCES}
771-
${KEYTOOL_FLAGS}
772-
WORKING_DIRECTORY ${WOLFBOOT_ROOT}
773-
COMMENT "Building keygen tool")
774-
775-
add_custom_target(keytools ALL DEPENDS ${SIGN_TOOL} ${KEYGEN_TOOL})
776-
endif()
706+
list(
707+
APPEND
708+
KEYTOOL_SOURCES
709+
src/delta.c
710+
lib/wolfssl/wolfcrypt/src/asn.c
711+
lib/wolfssl/wolfcrypt/src/aes.c
712+
lib/wolfssl/wolfcrypt/src/ecc.c
713+
lib/wolfssl/wolfcrypt/src/coding.c
714+
lib/wolfssl/wolfcrypt/src/chacha.c
715+
lib/wolfssl/wolfcrypt/src/ed25519.c
716+
lib/wolfssl/wolfcrypt/src/ed448.c
717+
lib/wolfssl/wolfcrypt/src/fe_operations.c
718+
lib/wolfssl/wolfcrypt/src/ge_operations.c
719+
lib/wolfssl/wolfcrypt/src/fe_448.c
720+
lib/wolfssl/wolfcrypt/src/ge_448.c
721+
lib/wolfssl/wolfcrypt/src/hash.c
722+
lib/wolfssl/wolfcrypt/src/logging.c
723+
lib/wolfssl/wolfcrypt/src/memory.c
724+
lib/wolfssl/wolfcrypt/src/random.c
725+
lib/wolfssl/wolfcrypt/src/rsa.c
726+
lib/wolfssl/wolfcrypt/src/sp_int.c
727+
lib/wolfssl/wolfcrypt/src/sp_c32.c
728+
lib/wolfssl/wolfcrypt/src/sp_c64.c
729+
lib/wolfssl/wolfcrypt/src/sha3.c
730+
lib/wolfssl/wolfcrypt/src/sha256.c
731+
lib/wolfssl/wolfcrypt/src/sha512.c
732+
lib/wolfssl/wolfcrypt/src/tfm.c
733+
lib/wolfssl/wolfcrypt/src/wc_port.c
734+
lib/wolfssl/wolfcrypt/src/wolfmath.c
735+
lib/wolfssl/wolfcrypt/src/dilithium.c
736+
lib/wolfssl/wolfcrypt/src/wc_lms.c
737+
lib/wolfssl/wolfcrypt/src/wc_lms_impl.c
738+
lib/wolfssl/wolfcrypt/src/wc_xmss.c
739+
lib/wolfssl/wolfcrypt/src/wc_xmss_impl.c
740+
)
741+
742+
list(
743+
APPEND
744+
KEYTOOL_FLAGS
745+
-Wall
746+
-Wextra
747+
-Werror
748+
-Itools/keytools
749+
-DWOLFSSL_USER_SETTINGS
750+
-Ilib/wolfssl/
751+
-Iinclude
752+
-I${CMAKE_CURRENT_BINARY_DIR}
753+
-O2
754+
-DIMAGE_HEADER_SIZE=${IMAGE_HEADER_SIZE}
755+
-DDELTA_UPDATES)
756+
757+
add_custom_command(
758+
OUTPUT ${SIGN_TOOL}
759+
COMMAND gcc -o ${CMAKE_CURRENT_BINARY_DIR}/sign tools/keytools/sign.c ${KEYTOOL_SOURCES}
760+
${KEYTOOL_FLAGS}
761+
WORKING_DIRECTORY ${WOLFBOOT_ROOT}
762+
COMMENT "Building signing tool")
763+
764+
add_custom_command(
765+
OUTPUT ${KEYGEN_TOOL}
766+
COMMAND gcc -o ${CMAKE_CURRENT_BINARY_DIR}/keygen tools/keytools/keygen.c ${KEYTOOL_SOURCES}
767+
${KEYTOOL_FLAGS}
768+
WORKING_DIRECTORY ${WOLFBOOT_ROOT}
769+
COMMENT "Building keygen tool")
770+
771+
add_custom_target(keytools ALL DEPENDS ${SIGN_TOOL} ${KEYGEN_TOOL})
777772

778773
if(NOT SIGN STREQUAL "NONE")
779-
if(PYTHON_KEYTOOLS)
780-
add_custom_target(keystore DEPENDS ${KEYSTORE})
781-
else()
782-
add_custom_target(keystore DEPENDS ${SIGN_TOOL} ${KEYGEN_TOOL} ${KEYSTORE})
783-
endif()
774+
add_custom_target(keystore DEPENDS ${SIGN_TOOL} ${KEYGEN_TOOL} ${KEYSTORE})
784775

785776
# generate keystore if it does not already exist
786777
if(NOT EXISTS ${KEYSTORE})
@@ -791,12 +782,10 @@ if(NOT SIGN STREQUAL "NONE")
791782
WORKING_DIRECTORY ${WOLFBOOT_ROOT}
792783
COMMENT "Generating keystore.c and signing private key")
793784

794-
if(NOT PYTHON_KEYTOOLS)
795-
add_custom_command(
796-
OUTPUT ${KEYSTORE} ${WOLFBOOT_SIGNING_PRIVATE_KEY}
797-
DEPENDS ${KEYGEN_TOOL}
798-
APPEND)
799-
endif()
785+
add_custom_command(
786+
OUTPUT ${KEYSTORE} ${WOLFBOOT_SIGNING_PRIVATE_KEY}
787+
DEPENDS ${KEYGEN_TOOL}
788+
APPEND)
800789
endif()
801790

802791
add_library(public_key)

test-app/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ if(BUILD_TEST_APPS)
120120
target_compile_definitions(image PRIVATE TARGET_${WOLFBOOT_TARGET}
121121
${TEST_APP_COMPILE_DEFINITIONS} ${WOLFBOOT_DEFS})
122122

123-
target_compile_options(image PRIVATE -Wall -Wstack-usage=1024 -ffreestanding -Wno-unused
123+
target_compile_options(image PRIVATE -Wall -Wstack-usage=1024 -ffreestanding -Wno-unused -fomit-frame-pointer
124124
-nostartfiles)
125125

126126
if(WOLFBOOT_TARGET STREQUAL "sim")

0 commit comments

Comments
 (0)