blob: 3b767a9e879a3361298ef7ba70cf80a3e3500283 [file] [log] [blame]
Roman Okhrimenkodc0ca082023-06-21 20:49:51 +03001# SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD
2#
3# SPDX-License-Identifier: Apache-2.0
4
5cmake_minimum_required(VERSION 3.13)
6
7project(hal)
8
9set(esp_idf_dir ${IDF_PATH})
10
11set(src_dir ${CMAKE_CURRENT_LIST_DIR}/src)
12set(include_dirs
13 ${CMAKE_CURRENT_LIST_DIR}/include
14 ${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}
15 )
16
17list(APPEND include_dirs
18 ${esp_idf_dir}/components/${MCUBOOT_ARCH}/include
19 ${esp_idf_dir}/components/esp_common/include
20 ${esp_idf_dir}/components/esp_rom/include
21 ${esp_idf_dir}/components/esp_rom/include/${MCUBOOT_TARGET}
22 ${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}
23 ${esp_idf_dir}/components/spi_flash/include
24 ${esp_idf_dir}/components/spi_flash/include/spi_flash
25 ${esp_idf_dir}/components/esp_hw_support/include
26 ${esp_idf_dir}/components/esp_hw_support/include/soc
27 ${esp_idf_dir}/components/esp_hw_support/include/soc/${MCUBOOT_TARGET}
28 ${esp_idf_dir}/components/esp_hw_support/port/include
29 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}
30 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/private_include
31 ${esp_idf_dir}/components/soc/include
32 ${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/include
33 ${esp_idf_dir}/components/bootloader_support/include
34 ${esp_idf_dir}/components/bootloader_support/include_bootloader
35 ${esp_idf_dir}/components/hal/include
36 ${esp_idf_dir}/components/hal/platform_port/include
37 ${esp_idf_dir}/components/hal/${MCUBOOT_TARGET}/include
38 ${esp_idf_dir}/components/hal/${MCUBOOT_TARGET}/include/hal
39 ${esp_idf_dir}/components/heap/include
40 ${esp_idf_dir}/components/efuse/include
41 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/include
42 ${esp_idf_dir}/components/efuse/private_include
43 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/private_include
44 ${esp_idf_dir}/components/newlib/platform_include
45 )
46
47if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
48 list(APPEND include_dirs
49 ${esp_idf_dir}/components/${MCUBOOT_ARCH}/${MCUBOOT_TARGET}/include
50 )
51endif()
52
53set(hal_srcs
54 ${src_dir}/bootloader_wdt.c
55 ${src_dir}/secure_boot.c
56 ${src_dir}/flash_encrypt.c
57 ${src_dir}/${MCUBOOT_TARGET}/bootloader_init.c
58 ${esp_idf_dir}/components/hal/mpu_hal.c
59 ${esp_idf_dir}/components/bootloader_support/src/bootloader_common_loader.c
60 ${esp_idf_dir}/components/bootloader_support/src/bootloader_console_loader.c
61 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash.c
62 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash_config_${MCUBOOT_TARGET}.c
63 ${esp_idf_dir}/components/bootloader_support/src/bootloader_clock_init.c
64 ${esp_idf_dir}/components/bootloader_support/src/bootloader_efuse_${MCUBOOT_TARGET}.c
65 ${esp_idf_dir}/components/bootloader_support/src/bootloader_panic.c
66 ${esp_idf_dir}/components/bootloader_support/src/bootloader_mem.c
67 ${esp_idf_dir}/components/bootloader_support/src/bootloader_random.c
68 ${esp_idf_dir}/components/bootloader_support/src/bootloader_random_${MCUBOOT_TARGET}.c
69 ${esp_idf_dir}/components/bootloader_support/src/bootloader_utility.c
70 ${esp_idf_dir}/components/bootloader_support/src/esp_image_format.c
71 ${esp_idf_dir}/components/bootloader_support/src/secure_boot_v2/secure_boot_signatures_bootloader.c
72 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_soc.c
73 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_sha.c
74 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/secure_boot_secure_features.c
75 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/flash_encryption_secure_features.c
76 ${esp_idf_dir}/components/spi_flash/${MCUBOOT_TARGET}/spi_flash_rom_patch.c
77 ${esp_idf_dir}/components/esp_hw_support/esp_clk.c
78 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_init.c
79 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
80 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
81 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
82 ${esp_idf_dir}/components/hal/wdt_hal_iram.c
83 ${esp_idf_dir}/components/esp_hw_support/cpu_util.c
84 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_uart.c
85 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_sys.c
86 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_table.c
87 ${esp_idf_dir}/components/efuse/src/esp_efuse_fields.c
88 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_fields.c
89 ${esp_idf_dir}/components/efuse/src/esp_efuse_api.c
90 ${esp_idf_dir}/components/efuse/src/esp_efuse_utility.c
91 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_utility.c
92 )
93
94if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
95 list(APPEND hal_srcs
96 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_longjmp.S
97 )
98endif()
99
100set(CFLAGS
101 "-nostdlib"
102 "-Wno-frame-address"
103 "-Wall"
104 "-Wextra"
105 "-W"
106 "-Wwrite-strings"
107 "-Wlogical-op"
108 "-Wshadow"
109 "-ffunction-sections"
110 "-fdata-sections"
111 "-fstrict-volatile-bitfields"
112 "-Werror=all"
113 "-Wno-error=unused-function"
114 "-Wno-error=unused-but-set-variable"
115 "-Wno-error=unused-variable"
116 "-Wno-error=deprecated-declarations"
117 "-Wno-unused-parameter"
118 "-Wno-sign-compare"
119 "-ggdb"
120 "-Os"
121 "-D_GNU_SOURCE"
122 "-std=gnu99"
123 "-Wno-old-style-declaration"
124 "-Wno-implicit-int"
125 )
126
127set(LDFLAGS
128 "-Wno-frame-address"
129 "-Wl,--cref"
130 "-Wl,--Map=${APP_NAME}.map"
131 "-fno-rtti"
132 "-fno-lto"
133 "-Wl,--gc-sections"
134 "-Wl,--undefined=uxTopUsedPriority"
135 "-lm"
136 "-lgcc"
137 "-lgcov"
138 )
139
140if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
141 list(APPEND CFLAGS
142 "-mlongcalls"
143 )
144 list(APPEND LDFLAGS
145 "-mlongcalls"
146 )
147endif()
148
149set(LINKER_SCRIPTS
150 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.ld
151 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.libgcc.ld
152 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.api.ld
153 -T${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.peripherals.ld
154 )
155
156include(${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}/${MCUBOOT_TARGET}.cmake)
157
158add_library(hal STATIC ${hal_srcs} ${include_dirs})
159
160target_include_directories(
161 hal
162 PUBLIC
163 ${include_dirs}
164 )
165
166target_compile_options(
167 hal
168 PUBLIC
169 ${CFLAGS}
170 )
171
172target_link_libraries(
173 hal
174 PUBLIC
175 ${LDFLAGS}
176 ${LINKER_SCRIPTS}
177 )