blob: 7f3d1bbb46011b7c46ff7c85bf6188145dc604e4 [file] [log] [blame]
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -03001# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
2#
3# SPDX-License-Identifier: Apache-2.0
4
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +05305cmake_minimum_required(VERSION 3.13)
6
7project(hal)
8
Almir Okato54ef4842023-03-07 17:56:53 -03009set(esp_hal_dir ${ESP_HAL_PATH})
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030010set(src_dir ${CMAKE_CURRENT_LIST_DIR}/src)
11set(include_dirs
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053012 ${CMAKE_CURRENT_LIST_DIR}/include
Almir Okatod5320292021-06-18 02:00:40 -030013 ${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}
14 )
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053015
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030016list(APPEND include_dirs
Almir Okato54ef4842023-03-07 17:56:53 -030017 ${esp_hal_dir}/components/bootloader_support/include
18 ${esp_hal_dir}/components/bootloader_support/private_include
19 ${esp_hal_dir}/components/bootloader_support/bootloader_flash/include
20 ${esp_hal_dir}/components/spi_flash/include
21 ${esp_hal_dir}/components/spi_flash/include/spi_flash
22 ${esp_hal_dir}/components/esp_app_format/include
23 ${esp_hal_dir}/components/newlib/platform_include
24 ${esp_hal_dir}/components/esp_common/include
25 ${esp_hal_dir}/components/${MCUBOOT_ARCH}/include
26 ${esp_hal_dir}/components/esp_rom/include
27 ${esp_hal_dir}/components/esp_rom/include/${MCUBOOT_TARGET}
28 ${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}
29 ${esp_hal_dir}/components/soc/include
30 ${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}
31 ${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}/include
32 ${esp_hal_dir}/components/efuse/include
33 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/include
34 ${esp_hal_dir}/components/efuse/private_include
35 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/private_include
36 ${esp_hal_dir}/components/esp_hw_support/include
37 ${esp_hal_dir}/components/esp_hw_support/include/soc
38 ${esp_hal_dir}/components/esp_hw_support/include/soc/${MCUBOOT_TARGET}
39 ${esp_hal_dir}/components/esp_hw_support/port/include
40 ${esp_hal_dir}/components/esp_hw_support/include/esp_private
41 ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}
42 ${esp_hal_dir}/components/hal/${MCUBOOT_TARGET}/include
43 ${esp_hal_dir}/components/hal/include
44 ${esp_hal_dir}/components/hal/platform_port/include
45 ${esp_hal_dir}/components/esp_system/include
46 ${esp_hal_dir}/components/log/include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053047 )
Almir Okato712fdb52021-08-06 10:22:56 -030048
49if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030050 list(APPEND include_dirs
Almir Okato54ef4842023-03-07 17:56:53 -030051 ${esp_hal_dir}/components/${MCUBOOT_ARCH}/${MCUBOOT_TARGET}/include
52 ${esp_hal_dir}/components/${MCUBOOT_ARCH}/include
Almir Okato712fdb52021-08-06 10:22:56 -030053 )
54endif()
55
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053056set(hal_srcs
Almir Okato54ef4842023-03-07 17:56:53 -030057 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_${MCUBOOT_TARGET}.c
58 ${esp_hal_dir}/components/bootloader_support/src/bootloader_init.c
59 ${esp_hal_dir}/components/bootloader_support/src/bootloader_common.c
60 ${esp_hal_dir}/components/bootloader_support/src/bootloader_common_loader.c
61 ${esp_hal_dir}/components/bootloader_support/src/bootloader_console.c
62 ${esp_hal_dir}/components/bootloader_support/src/bootloader_console_loader.c
63 ${esp_hal_dir}/components/bootloader_support/bootloader_flash/src/bootloader_flash.c
64 ${esp_hal_dir}/components/bootloader_support/bootloader_flash/src/bootloader_flash_config_${MCUBOOT_TARGET}.c
65 ${esp_hal_dir}/components/bootloader_support/src/bootloader_clock_init.c
66 ${esp_hal_dir}/components/bootloader_support/src/bootloader_clock_loader.c
67 ${esp_hal_dir}/components/bootloader_support/src/bootloader_efuse.c
68 ${esp_hal_dir}/components/bootloader_support/src/bootloader_panic.c
69 ${esp_hal_dir}/components/bootloader_support/src/bootloader_mem.c
70 ${esp_hal_dir}/components/bootloader_support/src/bootloader_random.c
71 ${esp_hal_dir}/components/bootloader_support/src/bootloader_random_${MCUBOOT_TARGET}.c
72 ${esp_hal_dir}/components/bootloader_support/src/bootloader_utility.c
73 ${esp_hal_dir}/components/bootloader_support/src/esp_image_format.c
74 ${esp_hal_dir}/components/bootloader_support/src/secure_boot_v2/secure_boot_signatures_bootloader.c
75 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_soc.c
76 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_sha.c
77 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/secure_boot_secure_features.c
78 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/flash_encryption_secure_features.c
79 ${esp_hal_dir}/components/hal/mpu_hal.c
80 ${esp_hal_dir}/components/hal/efuse_hal.c
81 ${esp_hal_dir}/components/hal/mmu_hal.c
82 ${esp_hal_dir}/components/hal/wdt_hal_iram.c
83 ${esp_hal_dir}/components/hal/${MCUBOOT_TARGET}/efuse_hal.c
84 ${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}/uart_periph.c
85 ${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}/gpio_periph.c
86 ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
87 ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
88 ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
89 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_uart.c
90 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_sys.c
91 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_spiflash.c
92 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_table.c
93 ${esp_hal_dir}/components/efuse/src/esp_efuse_fields.c
94 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_fields.c
95 ${esp_hal_dir}/components/efuse/src/esp_efuse_api.c
96 ${esp_hal_dir}/components/efuse/src/esp_efuse_utility.c
97 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_utility.c
98 ${esp_hal_dir}/components/log/log_noos.c
99 ${src_dir}/bootloader_banner.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300100 ${src_dir}/bootloader_wdt.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530101 )
102
Almir Okato54ef4842023-03-07 17:56:53 -0300103if(DEFINED CONFIG_SECURE_BOOT_V2_ENABLED)
104 list(APPEND hal_srcs
105 ${src_dir}/secure_boot.c
106 )
107endif()
108
109if(DEFINED CONFIG_SECURE_FLASH_ENC_ENABLED)
110 list(APPEND hal_srcs
111 ${src_dir}/flash_encrypt.c
112 )
113endif()
114
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300115if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
116 list(APPEND hal_srcs
Almir Okato54ef4842023-03-07 17:56:53 -0300117 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_longjmp.S
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300118 )
119endif()
120
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530121set(CFLAGS
122 "-nostdlib"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530123 "-Wno-frame-address"
124 "-Wall"
125 "-Wextra"
126 "-W"
127 "-Wwrite-strings"
128 "-Wlogical-op"
129 "-Wshadow"
130 "-ffunction-sections"
131 "-fdata-sections"
132 "-fstrict-volatile-bitfields"
133 "-Werror=all"
134 "-Wno-error=unused-function"
135 "-Wno-error=unused-but-set-variable"
136 "-Wno-error=unused-variable"
137 "-Wno-error=deprecated-declarations"
138 "-Wno-unused-parameter"
139 "-Wno-sign-compare"
140 "-ggdb"
141 "-Os"
142 "-D_GNU_SOURCE"
Almir Okato54ef4842023-03-07 17:56:53 -0300143 "-std=gnu17"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530144 "-Wno-old-style-declaration"
145 "-Wno-implicit-int"
146 )
147
148set(LDFLAGS
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530149 "-Wno-frame-address"
150 "-Wl,--cref"
151 "-Wl,--Map=${APP_NAME}.map"
152 "-fno-rtti"
153 "-fno-lto"
154 "-Wl,--gc-sections"
155 "-Wl,--undefined=uxTopUsedPriority"
156 "-lm"
157 "-lgcc"
158 "-lgcov"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530159 )
160
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300161if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Almir Okato712fdb52021-08-06 10:22:56 -0300162 list(APPEND CFLAGS
163 "-mlongcalls"
164 )
165 list(APPEND LDFLAGS
166 "-mlongcalls"
167 )
168endif()
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530169
Almir Okato712fdb52021-08-06 10:22:56 -0300170set(LINKER_SCRIPTS
Almir Okato54ef4842023-03-07 17:56:53 -0300171 -T${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.ld
172 -T${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.libgcc.ld
173 -T${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.api.ld
174 -T${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.peripherals.ld
Almir Okato712fdb52021-08-06 10:22:56 -0300175 )
176
177include(${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}/${MCUBOOT_TARGET}.cmake)
178
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300179add_library(hal STATIC ${hal_srcs} ${include_dirs})
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530180
Almir Okato54ef4842023-03-07 17:56:53 -0300181# Wrap for overriding the print banner function from bootloader_support
182add_definitions(-DIDF_VER=0)
183target_link_libraries(
184 hal
185 INTERFACE
186 "-Wl,--wrap=bootloader_print_banner")
187
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530188target_include_directories(
189 hal
190 PUBLIC
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300191 ${include_dirs}
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530192 )
193
194target_compile_options(
195 hal
196 PUBLIC
197 ${CFLAGS}
198 )
199
Almir Okatod5320292021-06-18 02:00:40 -0300200target_link_libraries(
201 hal
202 PUBLIC
203 ${LDFLAGS}
204 ${LINKER_SCRIPTS}
205 )