-
Notifications
You must be signed in to change notification settings - Fork 61
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
184 lines (154 loc) · 6.56 KB
/
Copy pathCMakeLists.txt
File metadata and controls
184 lines (154 loc) · 6.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
if(CONFIG_ESP_HOSTED_ENABLED)
message(STATUS "Using Hosted Wi-Fi")
set(FG_root_dir ".")
set(host_dir "${FG_root_dir}/host")
set(srcs
"${host_dir}/api/src/esp_wifi_weak.c"
"${host_dir}/api/src/esp_hosted_api.c"
"${host_dir}/api/src/esp_hosted_transport_config.c"
"${host_dir}/api/src/esp_hosted_ota_api.c"
"${host_dir}/drivers/transport/transport_drv.c"
"${host_dir}/drivers/transport/transport_util.c"
"${host_dir}/drivers/serial/serial_ll_if.c"
"${host_dir}/utils/stats.c"
"${host_dir}/drivers/serial/serial_drv.c")
# only these directories are public. Others are private
set(pub_include
"${host_dir}"
"${host_dir}/api/include")
set(priv_include
"${host_dir}/drivers/transport"
"${host_dir}/drivers/transport/spi"
"${host_dir}/drivers/transport/sdio"
"${host_dir}/drivers/serial"
"${host_dir}/utils"
"${host_dir}/api/priv")
# rpc files - wrap -> slaveif -> core
set(rpc_dir "${host_dir}/drivers/rpc")
set(rpc_core_dir "${rpc_dir}/core")
set(rpc_slaveif_dir "${rpc_dir}/slaveif")
set(rpc_wrap_dir "${rpc_dir}/wrap")
list(APPEND srcs
"${rpc_core_dir}/rpc_core.c"
"${rpc_core_dir}/rpc_req.c"
"${rpc_core_dir}/rpc_rsp.c"
"${rpc_core_dir}/rpc_evt.c"
"${rpc_core_dir}/rpc_utils.c"
"${rpc_slaveif_dir}/rpc_slave_if.c"
"${rpc_wrap_dir}/rpc_wrap.c")
list(APPEND priv_include
"${rpc_core_dir}"
"${rpc_slaveif_dir}"
"${rpc_wrap_dir}")
# virtual serial
set(virt_serial_dir "${host_dir}/drivers/virtual_serial_if")
list(APPEND srcs "${virt_serial_dir}/serial_if.c")
list(APPEND priv_include "${virt_serial_dir}")
# slave and host common files
set(common_dir "${FG_root_dir}/common")
list(APPEND srcs
"${common_dir}/protobuf-c/protobuf-c/protobuf-c.c"
"${common_dir}/proto/esp_hosted_rpc.pb-c.c" )
list(APPEND priv_include
"${common_dir}"
"${common_dir}/log"
"${common_dir}/rpc"
"${common_dir}/transport"
"${common_dir}/protobuf-c"
"${common_dir}/proto" )
# mempool
if (CONFIG_ESP_HOSTED_USE_MEMPOOL)
list(APPEND srcs "${common_dir}/mempool/mempool_ll.c"
"${common_dir}/mempool/mempool.c")
endif()
list(APPEND priv_include "${common_dir}/mempool/include" )
# cli
list(APPEND srcs "${common_dir}/utils/esp_hosted_cli.c")
list(APPEND priv_include "${common_dir}/utils")
# bt (NimBLE)
### TODO config for HCI over UART
list(APPEND priv_include "${host_dir}/drivers/bt")
if(CONFIG_ESP_HOSTED_NIMBLE_HCI_VHCI OR CONFIG_ESP_HOSTED_BLUEDROID_HCI_VHCI)
list(APPEND srcs "${host_dir}/drivers/bt/vhci_drv.c")
else()
list(APPEND srcs "${host_dir}/drivers/bt/hci_stub_drv.c")
endif()
# power save
list(APPEND priv_include "${host_dir}/drivers/power_save")
list(APPEND srcs "${host_dir}/drivers/power_save/power_save_drv.c")
# transport files
if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/drivers/transport/sdio/sdio_drv.c")
elseif(CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/drivers/transport/spi_hd/spi_hd_drv.c")
elseif(CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/drivers/transport/spi/spi_drv.c")
elseif(CONFIG_ESP_HOSTED_UART_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/drivers/transport/uart/uart_drv.c")
endif()
# port files
list(APPEND priv_include "${host_dir}/port/esp/freertos/include")
list(APPEND srcs
"${host_dir}/port/esp/freertos/src/port_esp_hosted_host_init.c"
"${host_dir}/port/esp/freertos/src/port_esp_hosted_host_os.c"
#"${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ota.c"
"${host_dir}/port/esp/freertos/src/port_esp_hosted_host_transport_defaults.c"
)
if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_sdio.c")
elseif(CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_spi_hd.c")
elseif(CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_spi.c")
elseif(CONFIG_ESP_HOSTED_UART_HOST_INTERFACE)
list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_uart.c")
endif()
# OpenThread utility functions
if(CONFIG_ESP_HOSTED_HOST_OT_ENABLE)
list(APPEND srcs "${host_dir}/port/esp/freertos/src/port_esp_hosted_host_ot_util.c")
endif()
endif()
if(EXISTS "${IDF_PATH}/components/esp_driver_sdio")
message(STATUS "Using new driver components (IDF >= 5.0)")
list(APPEND driver_requires esp_driver_sdmmc esp_driver_spi esp_driver_uart esp_driver_gpio)
else()
message(STATUS "Using legacy driver component (IDF <= 4.4)")
list(APPEND driver_requires driver)
endif()
### to support ESP-Hosted events, make esp_event a public requirement
list(APPEND driver_requires esp_event)
idf_component_register(SRCS ${srcs}
PRIV_REQUIRES soc esp_netif esp_timer driver esp_wifi bt esp_http_client console wpa_supplicant openthread
REQUIRES ${driver_requires}
INCLUDE_DIRS ${pub_include}
PRIV_INCLUDE_DIRS ${priv_include})
idf_component_set_property(${COMPONENT_NAME} WHOLE_ARCHIVE TRUE)
if(DEFINED ENV{ESP_HOSTED_CI_PEDANTIC})
target_compile_options(${COMPONENT_LIB} PRIVATE
-Werror -Werror=deprecated-declarations -Werror=unused-variable
-Werror=unused-but-set-variable -Werror=unused-function
$<$<COMPILE_LANGUAGE:C>:-Wstrict-prototypes>)
endif()
if(CONFIG_ESP_HOSTED_SDIO_HOST_INTERFACE)
idf_component_optional_requires(PRIVATE sdmmc)
endif()
# Required if using ESP-IDF without commit 6b6065de509b5de39e4655fd425bf96f43b365f7:
# fix(driver_spi): fix p4 cache auto writeback during spi(dma) rx
# if(CONFIG_IDF_TARGET_ESP32P4 AND (CONFIG_ESP_HOSTED_SPI_HOST_INTERFACE OR CONFIG_ESP_HOSTED_SPI_HD_HOST_INTERFACE))
# # used to workaround SPI transfer issue
# idf_component_optional_requires(PRIVATE esp_mm)
# endif()
if(CONFIG_ESP_HOSTED_NETWORK_SPLIT_ENABLED)
idf_component_get_property(lwip lwip COMPONENT_LIB)
if(TARGET ${lwip})
# Use generator expressions to only apply to non-INTERFACE targets
get_target_property(lwip_type ${lwip} TYPE)
if(NOT lwip_type STREQUAL "INTERFACE_LIBRARY")
#target_include_directories(${lwip} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/common")
#target_compile_definitions(${lwip} PRIVATE "-DESP_IDF_LWIP_HOOK_FILENAME=\"${CMAKE_CURRENT_SOURCE_DIR}/common/esp_hosted_lwip_src_port_hook.h\"")
# Some IDF release/v5.4 commits fail to attach hook file for udp.c, so mandate attach for every file in lwip build
message(STATUS "********** Configuring LWIP for network split port configs **********")
target_compile_options(${lwip} PRIVATE "-include" "${CMAKE_CURRENT_SOURCE_DIR}/common/esp_hosted_lwip_src_port_hook.h")
endif()
endif()
endif()