blob: 56056d20e576dba06456ea3f7bd0186a2d5ebf4f [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 Nihei6a6b8912021-11-12 11:43:10 -030039 ${esp_idf_dir}/components/newlib/platform_include
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053040 )
Almir Okato712fdb52021-08-06 10:22:56 -030041
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030042if("${MCUBOOT_TARGET}" STREQUAL "esp32")
43 list(APPEND include_dirs
44 ${esp_idf_dir}/components/${MCUBOOT_TARGET}/include
45 )
46endif()
47
Almir Okato712fdb52021-08-06 10:22:56 -030048if("${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
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030055 ${src_dir}/bootloader_wdt.c
56 ${src_dir}/${MCUBOOT_TARGET}/bootloader_init.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053057 ${esp_idf_dir}/components/hal/mpu_hal.c
58 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash.c
59 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash_config_${MCUBOOT_TARGET}.c
60 ${esp_idf_dir}/components/bootloader_support/src/bootloader_clock_init.c
61 ${esp_idf_dir}/components/bootloader_support/src/bootloader_efuse_${MCUBOOT_TARGET}.c
62 ${esp_idf_dir}/components/bootloader_support/src/bootloader_panic.c
63 ${esp_idf_dir}/components/bootloader_support/src/bootloader_mem.c
64 ${esp_idf_dir}/components/spi_flash/${MCUBOOT_TARGET}/spi_flash_rom_patch.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030065 ${esp_idf_dir}/components/esp_hw_support/esp_clk.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053066 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_init.c
67 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
68 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
69 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
70 ${esp_idf_dir}/components/hal/wdt_hal_iram.c
71 ${esp_idf_dir}/components/esp_hw_support/cpu_util.c
72 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_uart.c
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030073 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_sys.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053074 )
75
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -030076if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
77 list(APPEND hal_srcs
78 ${esp_idf_dir}/components/esp_rom/patches/esp_rom_longjmp.S
79 )
80endif()
81
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053082set(CFLAGS
83 "-nostdlib"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +053084 "-Wno-frame-address"
85 "-Wall"
86 "-Wextra"
87 "-W"
88 "-Wwrite-strings"
89 "-Wlogical-op"
90 "-Wshadow"
91 "-ffunction-sections"
92 "-fdata-sections"
93 "-fstrict-volatile-bitfields"
94 "-Werror=all"
95 "-Wno-error=unused-function"
96 "-Wno-error=unused-but-set-variable"
97 "-Wno-error=unused-variable"
98 "-Wno-error=deprecated-declarations"
99 "-Wno-unused-parameter"
100 "-Wno-sign-compare"
101 "-ggdb"
102 "-Os"
103 "-D_GNU_SOURCE"
104 "-std=gnu99"
105 "-Wno-old-style-declaration"
106 "-Wno-implicit-int"
107 )
108
109set(LDFLAGS
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530110 "-Wno-frame-address"
111 "-Wl,--cref"
112 "-Wl,--Map=${APP_NAME}.map"
113 "-fno-rtti"
114 "-fno-lto"
115 "-Wl,--gc-sections"
116 "-Wl,--undefined=uxTopUsedPriority"
117 "-lm"
118 "-lgcc"
119 "-lgcov"
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530120 )
121
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300122if("${MCUBOOT_ARCH}" STREQUAL "xtensa")
Almir Okato712fdb52021-08-06 10:22:56 -0300123 list(APPEND CFLAGS
124 "-mlongcalls"
125 )
126 list(APPEND LDFLAGS
127 "-mlongcalls"
128 )
129endif()
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530130
131set_source_files_properties(
132 ${esp_idf_dir}/components/bootloader_support/src/bootloader_flash.c
133 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk_init.c
Almir Okatod5320292021-06-18 02:00:40 -0300134 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_init.c
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530135 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_clk.c
136 ${esp_idf_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_time.c
137 PROPERTIES COMPILE_FLAGS
Almir Okato712fdb52021-08-06 10:22:56 -0300138 "-Wno-unused-variable"
139 )
140
141set(LINKER_SCRIPTS
142 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.ld
143 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.libgcc.ld
144 -T${esp_idf_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.api.ld
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300145 -T${esp_idf_dir}/components/soc/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.peripherals.ld
Almir Okato712fdb52021-08-06 10:22:56 -0300146 )
147
148include(${CMAKE_CURRENT_LIST_DIR}/include/${MCUBOOT_TARGET}/${MCUBOOT_TARGET}.cmake)
149
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300150add_library(hal STATIC ${hal_srcs} ${include_dirs})
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530151
152target_include_directories(
153 hal
154 PUBLIC
Gustavo Henrique Nihei6a6b8912021-11-12 11:43:10 -0300155 ${include_dirs}
Shubham Kulkarnic75b3c72021-07-20 11:43:28 +0530156 )
157
158target_compile_options(
159 hal
160 PUBLIC
161 ${CFLAGS}
162 )
163
Almir Okatod5320292021-06-18 02:00:40 -0300164target_link_libraries(
165 hal
166 PUBLIC
167 ${LDFLAGS}
168 ${LINKER_SCRIPTS}
169 )