blob: d248c26700254a7d4f0e04e234542e4a3970ab72 [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
Almir Okato54ef4842023-03-07 17:56:53 -030074 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_soc.c
75 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_sha.c
Almir Okato54ef4842023-03-07 17:56:53 -030076 ${esp_hal_dir}/components/hal/mpu_hal.c
77 ${esp_hal_dir}/components/hal/efuse_hal.c
78 ${esp_hal_dir}/components/hal/mmu_hal.c
79 ${esp_hal_dir}/components/hal/wdt_hal_iram.c
80 ${esp_hal_dir}/components/hal/${MCUBOOT_TARGET}/efuse_hal.c
81 ${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}/uart_periph.c
82 ${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}/gpio_periph.c
83 ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
84 ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
85 ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
86 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_uart.c
87 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_sys.c
88 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_spiflash.c
89 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_table.c
90 ${esp_hal_dir}/components/efuse/src/esp_efuse_fields.c
91 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_fields.c
92 ${esp_hal_dir}/components/efuse/src/esp_efuse_api.c
93 ${esp_hal_dir}/components/efuse/src/esp_efuse_utility.c
94 ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_utility.c
95 ${esp_hal_dir}/components/log/log_noos.c
96 ${src_dir}/bootloader_banner.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030097 ${src_dir}/bootloader_wdt.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053098 )
99
Almir Okato54ef4842023-03-07 17:56:53 -0300100if(DEFINED CONFIG_SECURE_BOOT_V2_ENABLED)
101 list(APPEND hal_srcs
102 ${src_dir}/secure_boot.c
Almir Okatodb2024e2023-08-24 15:40:26 -0300103 ${esp_hal_dir}/components/bootloader_support/src/secure_boot_v2/secure_boot_signatures_bootloader.c
104 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/secure_boot_secure_features.c
105 )
106 list(APPEND include_dirs
107 ${esp_hal_dir}/components/bootloader_support/src/secure_boot_v2
Almir Okato54ef4842023-03-07 17:56:53 -0300108 )
109endif()
110
111if(DEFINED CONFIG_SECURE_FLASH_ENC_ENABLED)
112 list(APPEND hal_srcs
113 ${src_dir}/flash_encrypt.c
Almir Okatodb2024e2023-08-24 15:40:26 -0300114 ${esp_hal_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/flash_encryption_secure_features.c
115 )
116 set_source_files_properties(
117 ${src_dir}/flash_encrypt.c
118 PROPERTIES COMPILE_FLAGS
119 "-Wno-unused-variable"
Almir Okato54ef4842023-03-07 17:56:53 -0300120 )
121endif()
122
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300123if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
124 list(APPEND hal_srcs
Almir Okato54ef4842023-03-07 17:56:53 -0300125 ${esp_hal_dir}/components/esp_rom/patches/esp_rom_longjmp.S
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300126 )
127endif()
128
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530129set(CFLAGS
130 "-nostdlib"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530131 "-Wno-frame-address"
132 "-Wall"
133 "-Wextra"
134 "-W"
135 "-Wwrite-strings"
136 "-Wlogical-op"
137 "-Wshadow"
138 "-ffunction-sections"
139 "-fdata-sections"
140 "-fstrict-volatile-bitfields"
141 "-Werror=all"
142 "-Wno-error=unused-function"
143 "-Wno-error=unused-but-set-variable"
144 "-Wno-error=unused-variable"
145 "-Wno-error=deprecated-declarations"
146 "-Wno-unused-parameter"
147 "-Wno-sign-compare"
148 "-ggdb"
149 "-Os"
150 "-D_GNU_SOURCE"
Almir Okato54ef4842023-03-07 17:56:53 -0300151 "-std=gnu17"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530152 "-Wno-old-style-declaration"
153 "-Wno-implicit-int"
154 )
155
156set(LDFLAGS
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530157 "-Wno-frame-address"
158 "-Wl,--cref"
159 "-Wl,--Map=${APP_NAME}.map"
160 "-fno-rtti"
161 "-fno-lto"
162 "-Wl,--gc-sections"
163 "-Wl,--undefined=uxTopUsedPriority"
164 "-lm"
165 "-lgcc"
166 "-lgcov"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530167 )
168
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300169if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Almir Okato712fdb52021-08-06 10:22:56 -0300170 list(APPEND CFLAGS
171 "-mlongcalls"
172 )
173 list(APPEND LDFLAGS
174 "-mlongcalls"
175 )
176endif()
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530177
Almir Okato712fdb52021-08-06 10:22:56 -0300178set(LINKER_SCRIPTS
Almir Okato54ef4842023-03-07 17:56:53 -0300179 -T${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.ld
180 -T${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.libgcc.ld
181 -T${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.api.ld
182 -T${esp_hal_dir}/components/soc/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.peripherals.ld
Almir Okato712fdb52021-08-06 10:22:56 -0300183 )
184
185include(${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}/${MCUBOOT_TARGET}.cmake)
186
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300187add_library(hal STATIC ${hal_srcs} ${include_dirs})
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530188
Almir Okato54ef4842023-03-07 17:56:53 -0300189# Wrap for overriding the print banner function from bootloader_support
190add_definitions(-DIDF_VER=0)
191target_link_libraries(
192 hal
193 INTERFACE
194 "-Wl,--wrap=bootloader_print_banner")
195
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530196target_include_directories(
197 hal
198 PUBLIC
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300199 ${include_dirs}
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530200 )
201
202target_compile_options(
203 hal
204 PUBLIC
205 ${CFLAGS}
206 )
207
Almir Okatod5320292021-06-18 02:00:40 -0300208target_link_libraries(
209 hal
210 PUBLIC
211 ${LDFLAGS}
212 ${LINKER_SCRIPTS}
213 )