1if (PICO_CYW43_SUPPORTED) # set by BOARD=pico-w
2    if (TARGET cyw43_driver_picow)
3        pico_add_library(pico_cyw43_arch)
4        target_sources(pico_cyw43_arch INTERFACE
5                ${CMAKE_CURRENT_LIST_DIR}/cyw43_arch.c
6                ${CMAKE_CURRENT_LIST_DIR}/cyw43_arch_poll.c
7                ${CMAKE_CURRENT_LIST_DIR}/cyw43_arch_threadsafe_background.c
8                ${CMAKE_CURRENT_LIST_DIR}/cyw43_arch_freertos.c
9                )
10
11        target_include_directories(pico_cyw43_arch_headers SYSTEM INTERFACE
12                ${CMAKE_CURRENT_LIST_DIR}/include)
13
14        pico_mirrored_target_link_libraries(pico_cyw43_arch INTERFACE
15                pico_unique_id
16                cyw43_driver_picow # driver for pico w
17                pico_cyw43_driver # integration with async_context
18                )
19
20        if (NOT TARGET pico_lwip)
21            message(WARNING "lwIP is not available; Full Pico W wireless support will be unavailable")
22        else()
23            message("Pico W Wi-Fi build support available.")
24            pico_add_library(pico_cyw43_arch_poll NOFLAG)
25            target_compile_definitions(pico_cyw43_arch_poll_headers INTERFACE
26                    PICO_CYW43_ARCH_POLL=1
27                    )
28            pico_mirrored_target_link_libraries(pico_cyw43_arch_poll INTERFACE
29                    pico_cyw43_arch
30                    pico_async_context_poll)
31
32            pico_add_library(pico_cyw43_arch_lwip_poll NOFLAG)
33            pico_mirrored_target_link_libraries(pico_cyw43_arch_lwip_poll INTERFACE
34                    pico_lwip_nosys
35                    pico_cyw43_arch_poll)
36            target_compile_definitions(pico_cyw43_arch_lwip_poll_headers INTERFACE
37                    CYW43_LWIP=1
38                    )
39
40            pico_add_library(pico_cyw43_arch_threadsafe_background NOFLAG)
41            pico_mirrored_target_link_libraries(pico_cyw43_arch_threadsafe_background INTERFACE
42                    pico_cyw43_arch
43                    pico_async_context_threadsafe_background)
44            target_compile_definitions(pico_cyw43_arch_threadsafe_background_headers INTERFACE
45                    PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1
46                    )
47
48            pico_add_library(pico_cyw43_arch_lwip_threadsafe_background NOFLAG)
49            pico_mirrored_target_link_libraries(pico_cyw43_arch_lwip_threadsafe_background INTERFACE
50                    pico_lwip_nosys
51                    pico_cyw43_arch_threadsafe_background)
52            target_compile_definitions(pico_cyw43_arch_lwip_threadsafe_background_headers INTERFACE
53                    CYW43_LWIP=1
54                    )
55
56            pico_add_library(pico_cyw43_arch_sys_freertos NOFLAG)
57            pico_mirrored_target_link_libraries(pico_cyw43_arch_sys_freertos INTERFACE
58                    pico_cyw43_arch
59                    pico_async_context_freertos)
60            target_compile_definitions(pico_cyw43_arch_sys_freertos_headers INTERFACE
61                    PICO_CYW43_ARCH_FREERTOS=1
62                    )
63
64            pico_add_library(pico_cyw43_arch_lwip_sys_freertos NOFLAG)
65            pico_mirrored_target_link_libraries(pico_cyw43_arch_lwip_sys_freertos INTERFACE
66                    pico_lwip_freertos
67                    pico_cyw43_arch_sys_freertos)
68            target_compile_definitions(pico_cyw43_arch_lwip_sys_freertos_headers INTERFACE
69                    CYW43_LWIP=1
70                    LWIP_PROVIDE_ERRNO=1
71                    # now the default
72                    #PICO_LWIP_CUSTOM_LOCK_TCPIP_CORE=1 # we want to override the lwip locking mechanism to use our mutex
73                    )
74        endif()
75
76        pico_add_library(pico_cyw43_arch_none NOFLAG)
77        pico_mirrored_target_link_libraries(pico_cyw43_arch_none INTERFACE
78                pico_cyw43_arch
79                pico_async_context_threadsafe_background)
80        target_compile_definitions(pico_cyw43_arch_none_headers INTERFACE
81                CYW43_LWIP=0
82                PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1 # none still uses threadsafe_background to make gpio use easy
83                )
84    endif()
85endif()
86
87if (PICO_CYW43_DRIVER_PATH AND EXISTS "${PICO_CYW43_DRIVER_PATH}")
88    pico_add_doxygen(${PICO_CYW43_DRIVER_PATH}/src)
89endif()