blob: 9095e7e0f56859e4d7352607ac06845f2ff56295 [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
9set(esp_idf_dir ${IDF_PATH})
10
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030011set(src_dir ${CMAKE_CURRENT_LIST_DIR}/src)
12set(include_dirs
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053013 ${CMAKE_CURRENT_LIST_DIR}/include
Almir Okatod5320292021-06-18 02:00:40 -030014 ${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}
15 )
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053016
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030017list(APPEND include_dirs
Almir Okato712fdb52021-08-06 10:22:56 -030018 ${esp_idf_dir}/components/${MCUBOOT_ARCH}/include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053019 ${esp_idf_dir}/components/esp_common/include
20 ${esp_idf_dir}/components/esp_rom/include
Almir Okatod5320292021-06-18 02:00:40 -030021 ${esp_idf_dir}/components/esp_rom/include/${MCUBOOT_TARGET}
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053022 ${esp_idf_dir}/components/spi_flash/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030023 ${esp_idf_dir}/components/spi_flash/include/spi_flash
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053024 ${esp_idf_dir}/components/soc/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030025 ${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053026 ${esp_idf_dir}/components/esp_hw_support/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030027 ${esp_idf_dir}/components/esp_hw_support/include/soc
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053028 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}
29 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/private_include
30 ${esp_idf_dir}/components/bootloader_support/include
31 ${esp_idf_dir}/components/bootloader_support/include_bootloader
32 ${esp_idf_dir}/components/hal/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030033 ${esp_idf_dir}/components/hal/platform_port/include
34 ${esp_idf_dir}/components/hal/${MCUBOOT_TARGET}/include
35 ${esp_idf_dir}/components/hal/${MCUBOOT_TARGET}/include/hal
36 ${esp_idf_dir}/components/heap/include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053037 ${esp_idf_dir}/components/efuse/include
38 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/include
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030039 ${esp_idf_dir}/components/efuse/private_include
40 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/private_include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030041 ${esp_idf_dir}/components/newlib/platform_include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053042 )
Almir Okato712fdb52021-08-06 10:22:56 -030043
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030044if("${MCUBOOT_TARGET}" STREQUAL "esp32")
45 list(APPEND include_dirs
46 ${esp_idf_dir}/components/${MCUBOOT_TARGET}/include
47 )
48endif()
49
Almir Okato712fdb52021-08-06 10:22:56 -030050if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030051 list(APPEND include_dirs
Almir Okato712fdb52021-08-06 10:22:56 -030052 ${esp_idf_dir}/components/${MCUBOOT_ARCH}/${MCUBOOT_TARGET}/include
53 )
54endif()
55
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053056set(hal_srcs
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030057 ${src_dir}/bootloader_wdt.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030058 ${src_dir}/secure_boot.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030059 ${src_dir}/${MCUBOOT_TARGET}/bootloader_init.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053060 ${esp_idf_dir}/components/hal/mpu_hal.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030061 ${esp_idf_dir}/components/bootloader_support/src/bootloader_common_loader.c
62 ${esp_idf_dir}/components/bootloader_support/src/bootloader_console_loader.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053063 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash.c
64 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash_config_${MCUBOOT_TARGET}.c
65 ${esp_idf_dir}/components/bootloader_support/src/bootloader_clock_init.c
66 ${esp_idf_dir}/components/bootloader_support/src/bootloader_efuse_${MCUBOOT_TARGET}.c
67 ${esp_idf_dir}/components/bootloader_support/src/bootloader_panic.c
68 ${esp_idf_dir}/components/bootloader_support/src/bootloader_mem.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030069 ${esp_idf_dir}/components/bootloader_support/src/bootloader_random.c
70 ${esp_idf_dir}/components/bootloader_support/src/bootloader_utility.c
71 ${esp_idf_dir}/components/bootloader_support/src/esp_image_format.c
72 ${esp_idf_dir}/components/bootloader_support/src/secure_boot_v2/secure_boot_signatures_bootloader.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
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053075 ${esp_idf_dir}/components/spi_flash/${MCUBOOT_TARGET}/spi_flash_rom_patch.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030076 ${esp_idf_dir}/components/esp_hw_support/esp_clk.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053077 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_init.c
78 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
79 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
80 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
81 ${esp_idf_dir}/components/hal/wdt_hal_iram.c
82 ${esp_idf_dir}/components/esp_hw_support/cpu_util.c
83 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_uart.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030084 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_sys.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030085 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_table.c
86 ${esp_idf_dir}/components/efuse/src/esp_efuse_fields.c
87 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_fields.c
88 ${esp_idf_dir}/components/efuse/src/esp_efuse_api.c
89 ${esp_idf_dir}/components/efuse/src/esp_efuse_utility.c
90 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_utility.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053091 )
92
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030093if("${MCUBOOT_TARGET}" STREQUAL "esp32")
94 list(APPEND hal_srcs
95 ${esp_idf_dir}/components/efuse/src/esp_efuse_api_key_esp32.c
96 )
97else()
98 list(APPEND hal_srcs
99 ${esp_idf_dir}/components/efuse/src/esp_efuse_api_key_esp32xx.c
100 )
101endif()
102
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300103if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
104 list(APPEND hal_srcs
105 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_longjmp.S
106 )
107endif()
108
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530109set(CFLAGS
110 "-nostdlib"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530111 "-Wno-frame-address"
112 "-Wall"
113 "-Wextra"
114 "-W"
115 "-Wwrite-strings"
116 "-Wlogical-op"
117 "-Wshadow"
118 "-ffunction-sections"
119 "-fdata-sections"
120 "-fstrict-volatile-bitfields"
121 "-Werror=all"
122 "-Wno-error=unused-function"
123 "-Wno-error=unused-but-set-variable"
124 "-Wno-error=unused-variable"
125 "-Wno-error=deprecated-declarations"
126 "-Wno-unused-parameter"
127 "-Wno-sign-compare"
128 "-ggdb"
129 "-Os"
130 "-D_GNU_SOURCE"
131 "-std=gnu99"
132 "-Wno-old-style-declaration"
133 "-Wno-implicit-int"
134 )
135
136set(LDFLAGS
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530137 "-Wno-frame-address"
138 "-Wl,--cref"
139 "-Wl,--Map=${APP_NAME}.map"
140 "-fno-rtti"
141 "-fno-lto"
142 "-Wl,--gc-sections"
143 "-Wl,--undefined=uxTopUsedPriority"
144 "-lm"
145 "-lgcc"
146 "-lgcov"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530147 )
148
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300149if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Almir Okato712fdb52021-08-06 10:22:56 -0300150 list(APPEND CFLAGS
151 "-mlongcalls"
152 )
153 list(APPEND LDFLAGS
154 "-mlongcalls"
155 )
156endif()
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530157
158set_source_files_properties(
159 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash.c
160 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
Almir Okatod5320292021-06-18 02:00:40 -0300161 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_init.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530162 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
163 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
164 PROPERTIES COMPILE_FLAGS
Almir Okato712fdb52021-08-06 10:22:56 -0300165 "-Wno-unused-variable"
166 )
167
168set(LINKER_SCRIPTS
169 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.ld
170 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.libgcc.ld
171 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.api.ld
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300172 -T${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.peripherals.ld
Almir Okato712fdb52021-08-06 10:22:56 -0300173 )
174
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -0300175if("${MCUBOOT_TARGET}" STREQUAL "esp32" OR "${MCUBOOT_TARGET}" STREQUAL "esp32c3")
176 list(APPEND LINKER_SCRIPTS
177 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.eco3.ld
178 )
179endif()
180
Almir Okato712fdb52021-08-06 10:22:56 -0300181include(${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}/${MCUBOOT_TARGET}.cmake)
182
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300183add_library(hal STATIC ${hal_srcs} ${include_dirs})
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530184
185target_include_directories(
186 hal
187 PUBLIC
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300188 ${include_dirs}
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530189 )
190
191target_compile_options(
192 hal
193 PUBLIC
194 ${CFLAGS}
195 )
196
Almir Okatod5320292021-06-18 02:00:40 -0300197target_link_libraries(
198 hal
199 PUBLIC
200 ${LDFLAGS}
201 ${LINKER_SCRIPTS}
202 )