blob: c838bc3e80d1b20254fe6d62890d33e0fc79ec07 [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}
Almir Okato42e679d2022-01-18 00:16:58 -030022 ${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053023 ${esp_idf_dir}/components/spi_flash/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030024 ${esp_idf_dir}/components/spi_flash/include/spi_flash
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053025 ${esp_idf_dir}/components/esp_hw_support/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030026 ${esp_idf_dir}/components/esp_hw_support/include/soc
Almir Okato42e679d2022-01-18 00:16:58 -030027 ${esp_idf_dir}/components/esp_hw_support/include/soc/${MCUBOOT_TARGET}
28 ${esp_idf_dir}/components/esp_hw_support/port/include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053029 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}
30 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/private_include
Almir Okato42e679d2022-01-18 00:16:58 -030031 ${esp_idf_dir}/components/soc/include
32 ${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053033 ${esp_idf_dir}/components/bootloader_support/include
34 ${esp_idf_dir}/components/bootloader_support/include_bootloader
35 ${esp_idf_dir}/components/hal/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030036 ${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
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053040 ${esp_idf_dir}/components/efuse/include
41 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/include
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030042 ${esp_idf_dir}/components/efuse/private_include
43 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/private_include
Almir Okato0dcdbab2022-09-23 15:02:17 -030044 ${esp_idf_dir}/components/esp_system/include
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030045 ${esp_idf_dir}/components/newlib/platform_include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053046 )
Almir Okato712fdb52021-08-06 10:22:56 -030047
48if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030049 list(APPEND include_dirs
Almir Okato712fdb52021-08-06 10:22:56 -030050 ${esp_idf_dir}/components/${MCUBOOT_ARCH}/${MCUBOOT_TARGET}/include
51 )
52endif()
53
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053054set(hal_srcs
Almir Okato1dc71362022-04-14 01:18:07 -030055 ${src_dir}/bootloader_init_common.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030056 ${src_dir}/bootloader_wdt.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030057 ${src_dir}/secure_boot.c
Almir Okato14763b12021-11-25 00:45:26 -030058 ${src_dir}/flash_encrypt.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
Almir Okatoa1d641d2022-02-21 19:31:46 -030061 ${esp_idf_dir}/components/hal/soc_hal.c
Almir Okatoe8cbc0d2022-06-13 10:45:39 -030062 ${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/uart_periph.c
63 ${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/gpio_periph.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030064 ${esp_idf_dir}/components/bootloader_support/src/bootloader_common_loader.c
Almir Okatoe8cbc0d2022-06-13 10:45:39 -030065 ${esp_idf_dir}/components/bootloader_support/src/bootloader_console.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030066 ${esp_idf_dir}/components/bootloader_support/src/bootloader_console_loader.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053067 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash.c
68 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash_config_${MCUBOOT_TARGET}.c
69 ${esp_idf_dir}/components/bootloader_support/src/bootloader_clock_init.c
70 ${esp_idf_dir}/components/bootloader_support/src/bootloader_efuse_${MCUBOOT_TARGET}.c
71 ${esp_idf_dir}/components/bootloader_support/src/bootloader_panic.c
72 ${esp_idf_dir}/components/bootloader_support/src/bootloader_mem.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030073 ${esp_idf_dir}/components/bootloader_support/src/bootloader_random.c
Almir Okato14763b12021-11-25 00:45:26 -030074 ${esp_idf_dir}/components/bootloader_support/src/bootloader_random_${MCUBOOT_TARGET}.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030075 ${esp_idf_dir}/components/bootloader_support/src/bootloader_utility.c
76 ${esp_idf_dir}/components/bootloader_support/src/esp_image_format.c
77 ${esp_idf_dir}/components/bootloader_support/src/secure_boot_v2/secure_boot_signatures_bootloader.c
Almir Okato42e679d2022-01-18 00:16:58 -030078 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_soc.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030079 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/bootloader_sha.c
80 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/secure_boot_secure_features.c
Almir Okato14763b12021-11-25 00:45:26 -030081 ${esp_idf_dir}/components/bootloader_support/src/${MCUBOOT_TARGET}/flash_encryption_secure_features.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053082 ${esp_idf_dir}/components/spi_flash/${MCUBOOT_TARGET}/spi_flash_rom_patch.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030083 ${esp_idf_dir}/components/esp_hw_support/esp_clk.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053084 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_init.c
85 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
86 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
87 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
88 ${esp_idf_dir}/components/hal/wdt_hal_iram.c
89 ${esp_idf_dir}/components/esp_hw_support/cpu_util.c
90 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_uart.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030091 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_sys.c
Gustavo Henrique Nihei523ef3f2021-11-12 17:53:18 -030092 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_table.c
93 ${esp_idf_dir}/components/efuse/src/esp_efuse_fields.c
94 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_fields.c
95 ${esp_idf_dir}/components/efuse/src/esp_efuse_api.c
96 ${esp_idf_dir}/components/efuse/src/esp_efuse_utility.c
97 ${esp_idf_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_utility.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053098 )
99
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300100if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
101 list(APPEND hal_srcs
102 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_longjmp.S
103 )
104endif()
105
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530106set(CFLAGS
107 "-nostdlib"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530108 "-Wno-frame-address"
109 "-Wall"
110 "-Wextra"
111 "-W"
112 "-Wwrite-strings"
113 "-Wlogical-op"
114 "-Wshadow"
115 "-ffunction-sections"
116 "-fdata-sections"
117 "-fstrict-volatile-bitfields"
118 "-Werror=all"
119 "-Wno-error=unused-function"
120 "-Wno-error=unused-but-set-variable"
121 "-Wno-error=unused-variable"
122 "-Wno-error=deprecated-declarations"
123 "-Wno-unused-parameter"
124 "-Wno-sign-compare"
125 "-ggdb"
126 "-Os"
127 "-D_GNU_SOURCE"
128 "-std=gnu99"
129 "-Wno-old-style-declaration"
130 "-Wno-implicit-int"
131 )
132
133set(LDFLAGS
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530134 "-Wno-frame-address"
135 "-Wl,--cref"
136 "-Wl,--Map=${APP_NAME}.map"
137 "-fno-rtti"
138 "-fno-lto"
139 "-Wl,--gc-sections"
140 "-Wl,--undefined=uxTopUsedPriority"
141 "-lm"
142 "-lgcc"
143 "-lgcov"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530144 )
145
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300146if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Almir Okato712fdb52021-08-06 10:22:56 -0300147 list(APPEND CFLAGS
148 "-mlongcalls"
149 )
150 list(APPEND LDFLAGS
151 "-mlongcalls"
152 )
153endif()
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530154
Almir Okato712fdb52021-08-06 10:22:56 -0300155set(LINKER_SCRIPTS
156 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.ld
157 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.libgcc.ld
158 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.api.ld
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300159 -T${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.peripherals.ld
Almir Okato712fdb52021-08-06 10:22:56 -0300160 )
161
162include(${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}/${MCUBOOT_TARGET}.cmake)
163
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300164add_library(hal STATIC ${hal_srcs} ${include_dirs})
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530165
166target_include_directories(
167 hal
168 PUBLIC
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300169 ${include_dirs}
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530170 )
171
172target_compile_options(
173 hal
174 PUBLIC
175 ${CFLAGS}
176 )
177
Almir Okatod5320292021-06-18 02:00:40 -0300178target_link_libraries(
179 hal
180 PUBLIC
181 ${LDFLAGS}
182 ${LINKER_SCRIPTS}
183 )