Skip to content

Enable pico_lwip library in common and not only in rp2_common #2604

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ new_git_repository(
# TODO: Provide lwip as a proper Bazel module.
new_git_repository(
name = "lwip",
build_file = "//src/rp2_common/pico_lwip:lwip.BUILD",
build_file = "//src/common/pico_lwip:lwip.BUILD",
commit = "77dcd25a72509eb83f72b033d219b1d40cd8eb95", # keep-in-sync-with-submodule: lib/lwip
remote = "https://github.com/lwip-tcpip/lwip.git",
)
Expand Down
4 changes: 2 additions & 2 deletions src/cmake/rp2_common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@ pico_add_subdirectory(common/pico_usb_reset_interface_headers)

# PICO_CMAKE_CONFIG: PICO_BARE_METAL, Flag to exclude anything except base headers from the build, type=bool, default=0, group=build
if (NOT PICO_BARE_METAL)
pico_add_subdirectory(common/pico_async_context)
pico_add_subdirectory(common/pico_bit_ops_headers)
pico_add_subdirectory(common/pico_binary_info)
pico_add_subdirectory(common/pico_divider_headers)
pico_add_subdirectory(common/pico_lwip)
pico_add_subdirectory(common/pico_sync)
pico_add_subdirectory(common/pico_time)
pico_add_subdirectory(common/pico_util)
Expand Down Expand Up @@ -124,11 +126,9 @@ if (NOT PICO_BARE_METAL)
pico_add_subdirectory(rp2_common/pico_i2c_slave)

# networking libraries - note dependency order is important
pico_add_subdirectory(rp2_common/pico_async_context)
pico_add_subdirectory(rp2_common/pico_btstack)
pico_add_subdirectory(rp2_common/pico_cyw43_driver)
pico_add_subdirectory(rp2_common/pico_mbedtls)
pico_add_subdirectory(rp2_common/pico_lwip)
pico_add_subdirectory(rp2_common/pico_cyw43_arch)

pico_add_subdirectory(rp2_common/pico_time_adapter)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,57 +20,81 @@ cc_library(
"include/pico/async_context_base.h",
],
includes = ["include"],
target_compatible_with = compatible_with_rp2(),
deps = [
"//src/common/pico_time",
"//src/rp2_common:pico_platform",
],
] + select({
"//bazel/constraint:host": [
"//src/host/pico_platform",
],
"//conditions:default": [
"//src/rp2_common:pico_platform",
],
}),
)

cc_library(
name = "pico_async_context_freertos",
srcs = ["async_context_freertos.c"],
hdrs = ["include/pico/async_context_freertos.h"],
includes = ["include"],
target_compatible_with = compatible_with_rp2() + incompatible_with_config(
target_compatible_with = incompatible_with_config(
"//bazel/constraint:pico_freertos_unset",
),
deps = [
":pico_async_context_base",
"//bazel/config:PICO_FREERTOS_LIB",
"//src/common/pico_sync",
"//src/common/pico_time",
"//src/rp2_common:pico_platform",
"//src/rp2_common/hardware_irq",
],
] + select({
"//bazel/constraint:host": [
"//src/host/pico_platform",
"//src/host/hardware_irq",
],
"//conditions:default": [
"//src/rp2_common:pico_platform",
"//src/rp2_common/hardware_irq",
],
}),
)

cc_library(
name = "pico_async_context_poll",
srcs = ["async_context_poll.c"],
hdrs = ["include/pico/async_context_poll.h"],
includes = ["include"],
target_compatible_with = compatible_with_rp2(),
deps = [
":pico_async_context_base",
"//src/common/pico_sync",
"//src/common/pico_time",
"//src/rp2_common:pico_platform",
],
] + select({
"//bazel/constraint:host": [
"//src/host/pico_platform",
],
"//conditions:default": [
"//src/rp2_common:pico_platform",
],
}),
)

cc_library(
name = "pico_async_context_threadsafe_background",
srcs = ["async_context_threadsafe_background.c"],
hdrs = ["include/pico/async_context_threadsafe_background.h"],
includes = ["include"],
target_compatible_with = compatible_with_rp2(),
deps = [
":pico_async_context_base",
"//src/common/pico_sync",
"//src/common/pico_time",
"//src/rp2_common:pico_platform",
"//src/rp2_common/hardware_irq",
"//src/rp2_common/pico_multicore",
],
] + select({
"//bazel/constraint:host": [
"//src/host/pico_platform",
"//src/host/hardware_irq",
"//src/host/pico_multicore",
],
"//conditions:default": [
"//src/rp2_common:pico_platform",
"//src/rp2_common/hardware_irq",
"//src/rp2_common/pico_multicore",
],
}),
)
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ pico_add_library(pico_async_context_threadsafe_background)
target_sources(pico_async_context_threadsafe_background INTERFACE
${CMAKE_CURRENT_LIST_DIR}/async_context_threadsafe_background.c
)
pico_mirrored_target_link_libraries(pico_async_context_threadsafe_background INTERFACE pico_async_context_base)
pico_mirrored_target_link_libraries(pico_async_context_threadsafe_background INTERFACE pico_async_context_base hardware_claim hardware_irq pico_multicore)

pico_add_library(pico_async_context_freertos)
target_sources(pico_async_context_freertos INTERFACE
${CMAKE_CURRENT_LIST_DIR}/async_context_freertos.c
)
pico_mirrored_target_link_libraries(pico_async_context_freertos INTERFACE pico_async_context_base)
pico_mirrored_target_link_libraries(pico_async_context_freertos INTERFACE pico_async_context_base hardware_claim hardware_irq)
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ typedef struct async_context_freertos async_context_freertos_t;
#endif
#endif

// On PICO_PLATFORM=host don't have ISR.
#if !PICO_ON_DEVICE
#ifndef portCHECK_IF_IN_ISR
#define portCHECK_IF_IN_ISR() (0)
#endif
#endif

/**
* \brief Configuration object for async_context_freertos instances.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ cc_library(
":pico_lwip",
"//src/common/pico_time",
"//src/rp2_common:pico_platform",
"//src/rp2_common/pico_async_context",
"//src/common/pico_async_context",
"//src/rp2_common/pico_rand",
],
alwayslink = True,
Expand All @@ -38,7 +38,7 @@ cc_library(
":pico_lwip",
"//src/common/pico_time",
"//src/rp2_common:pico_platform",
"//src/rp2_common/pico_async_context",
"//src/common/pico_async_context",
"//src/rp2_common/pico_rand",
],
alwayslink = True,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,12 @@ if (EXISTS ${PICO_LWIP_PATH}/${LWIP_TEST_PATH})
${PICO_LWIP_PATH}/src/netif/ethernet.c
${PICO_LWIP_PATH}/src/netif/bridgeif.c
${PICO_LWIP_PATH}/src/netif/bridgeif_fdb.c
)
if (PICO_ON_DEVICE)
target_sources(pico_lwip_netif INTERFACE
${PICO_LWIP_PATH}/src/netif/slipif.c
)
endif()

# 6LoWPAN
pico_add_library(pico_lwip_sixlowpan NOFLAG)
Expand Down
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ cc_library(
"src/include",
],
visibility = [
"@pico-sdk//src/rp2_common/pico_lwip:__pkg__",
"@pico-sdk//src/common/pico_lwip:__pkg__",
],
deps = [
"@pico-sdk//src/rp2_common/pico_lwip:pico_lwip_config",
"@pico-sdk//src/common/pico_lwip:pico_lwip_config",
],
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function(pico_set_lwip_httpd_content TARGET_LIB TARGET_TYPE)
set(HTTPD_CONTENT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated")
set(HTTPD_CONTENT_TARGET "${TARGET_LIB}_pico_set_lwip_httpd_content")
set(HTTPD_CONTENT_OUTPUT_NAME "pico_fsdata.inc")
set(HTTPD_CONTENT_TOOL "${PICO_SDK_PATH}/src/rp2_common/pico_lwip/tools/makefsdata.py")
set(HTTPD_CONTENT_TOOL "${PICO_SDK_PATH}/src/common/pico_lwip/tools/makefsdata.py")
add_custom_target(${HTTPD_CONTENT_TARGET} DEPENDS ${HTTPD_CONTENT_BINARY_DIR}/${HTTPD_CONTENT_OUTPUT_NAME})
add_custom_command(
OUTPUT ${HTTPD_CONTENT_BINARY_DIR}/${HTTPD_CONTENT_OUTPUT_NAME}
Expand Down
4 changes: 3 additions & 1 deletion src/host.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ include (${CMAKE_DIR}/no_hardware.cmake)
pico_add_subdirectory(${COMMON_DIR}/boot_picobin_headers)
pico_add_subdirectory(${COMMON_DIR}/boot_picoboot_headers)
pico_add_subdirectory(${COMMON_DIR}/boot_uf2_headers)
pico_add_subdirectory(${COMMON_DIR}/hardware_claim)
pico_add_subdirectory(${COMMON_DIR}/hardware_claim)
pico_add_subdirectory(${COMMON_DIR}/pico_async_context)
pico_add_subdirectory(${COMMON_DIR}/pico_base_headers)
pico_add_subdirectory(${COMMON_DIR}/pico_usb_reset_interface_headers)
pico_add_subdirectory(${COMMON_DIR}/pico_bit_ops_headers)
pico_add_subdirectory(${COMMON_DIR}/pico_binary_info)
pico_add_subdirectory(${COMMON_DIR}/pico_divider_headers)
pico_add_subdirectory(${COMMON_DIR}/pico_lwip)
pico_add_subdirectory(${COMMON_DIR}/pico_sync)
pico_add_subdirectory(${COMMON_DIR}/pico_time)
pico_add_subdirectory(${COMMON_DIR}/pico_util)
Expand Down
2 changes: 1 addition & 1 deletion src/host/hardware_irq/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ cc_library(
tags = ["manual"], # TODO: No hardware/regs/intctrl.h for host yet.
target_compatible_with = ["//bazel/constraint:host"],
deps = [
"//src/host/hardware_claim",
"//src/common/hardware_claim",
"//src/host/pico_platform",
],
)
1 change: 1 addition & 0 deletions src/host/pico_multicore/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package(default_visibility = ["//visibility:public"])
cc_library(
name = "pico_multicore",
hdrs = ["include/pico/multicore.h"],
defines = ["LIB_PICO_MULTICORE=1"],
includes = ["include"],
target_compatible_with = ["//bazel/constraint:host"],
deps = ["//src/host/pico_platform"],
Expand Down
1 change: 1 addition & 0 deletions src/host/pico_platform/include/hardware/platform_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#define NUM_USER_IRQS 6u
#define FIRST_USER_IRQ (NUM_IRQS - NUM_USER_IRQS)
#define VTABLE_FIRST_IRQ 16
#define PICO_NUM_VTABLE_IRQS NUM_IRQS

#define NUM_SPIN_LOCKS 32u

Expand Down
6 changes: 6 additions & 0 deletions src/host/pico_platform/include/pico/platform.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,12 @@ void __noreturn panic_unsupported();

void __noreturn panic(const char *fmt, ...);

#ifdef NDEBUG
#define panic_compact(...) panic(__VA_ARGS__)
#else
#define panic_compact(...) panic("")
#endif

// arggggghhhh there is a weak function called sem_init used by SDL
#define sem_init sem_init_alternative

Expand Down
2 changes: 1 addition & 1 deletion src/rp2_common/pico_btstack/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ cc_library(
target_compatible_with = compatible_with_pico_w(),
deps = [
"//src/rp2_common/hardware_sync",
"//src/rp2_common/pico_async_context",
"//src/common/pico_async_context",
"@btstack//:pico_btstack_base",
],
)
Expand Down
4 changes: 2 additions & 2 deletions src/rp2_common/pico_btstack/btstack.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ cc_library(
includes = ["platform/lwip"],
deps = [
":pico_btstack_base_headers",
"@pico-sdk//src/rp2_common/pico_lwip:pico_lwip_nosys",
"@pico-sdk//src/common/pico_lwip:pico_lwip_nosys",
],
)

Expand All @@ -315,7 +315,7 @@ cc_library(
],
deps = [
":pico_btstack_base_headers",
"@pico-sdk//src/rp2_common/pico_lwip:pico_lwip_freertos",
"@pico-sdk//src/common/pico_lwip:pico_lwip_freertos",
],
)

Expand Down
8 changes: 4 additions & 4 deletions src/rp2_common/pico_cyw43_arch/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -75,15 +75,15 @@ _CONFIGURATIONS = [
),
deps = [
"//src/rp2_common:pico_platform",
"//src/rp2_common/pico_async_context:pico_async_context_{}".format(kind),
"//src/common/pico_async_context:pico_async_context_{}".format(kind),
"//src/rp2_common/pico_cyw43_driver",
"//src/rp2_common/pico_unique_id",
] + (
["//src/rp2_common/pico_lwip:pico_lwip_freertos"] if kind == "freertos" and use_lwip else []
["//src/common/pico_lwip:pico_lwip_freertos"] if kind == "freertos" and use_lwip else []
) + (
["//src/rp2_common/pico_lwip:pico_lwip_nosys"] if kind != "freertos" and use_lwip else []
["//src/common/pico_lwip:pico_lwip_nosys"] if kind != "freertos" and use_lwip else []
) + (
["//src/rp2_common/pico_lwip"] if use_lwip else []
["//src/common/pico_lwip"] if use_lwip else []
),
)
for kind, use_lwip in _CONFIGURATIONS
Expand Down
2 changes: 1 addition & 1 deletion src/rp2_common/pico_cyw43_driver/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ cc_library(
"//src/rp2_common/hardware_irq",
"//src/rp2_common/hardware_pio",
"//src/rp2_common/hardware_sync",
"//src/rp2_common/pico_async_context",
"//src/common/pico_async_context",
"//src/rp2_common/pico_unique_id",
"@cyw43-driver//:cyw43_driver",
] + select({
Expand Down
2 changes: 1 addition & 1 deletion src/rp2_common/pico_cyw43_driver/cyw43-driver.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ cc_library(
] + select({
"@pico-sdk//bazel/constraint:pico_lwip_config_unset": [],
"//conditions:default": [
"@pico-sdk//src/rp2_common/pico_lwip",
"@pico-sdk//src/common/pico_lwip",
],
}),
)
4 changes: 2 additions & 2 deletions test/kitchen_sink/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ cc_binary(
":kitchen_sink_common",
"//src/rp2_common/pico_cyw43_arch:pico_cyw43_arch_lwip_poll",
"//src/rp2_common/pico_btstack:pico_btstack",
"//src/rp2_common/pico_lwip:pico_lwip_mbedtls",
"//src/common/pico_lwip:pico_lwip_mbedtls",
"//src/rp2_common/pico_mbedtls",
],
)
Expand All @@ -129,7 +129,7 @@ cc_binary(
":kitchen_sink_common",
"//src/rp2_common/pico_cyw43_arch:pico_cyw43_arch_lwip_threadsafe_background",
"//src/rp2_common/pico_btstack:pico_btstack",
"//src/rp2_common/pico_lwip:pico_lwip_mbedtls",
"//src/common/pico_lwip:pico_lwip_mbedtls",
"//src/rp2_common/pico_mbedtls",
],
)
Expand Down
4 changes: 2 additions & 2 deletions tools/build_all_headers.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@
IGNORE_DIRS = set(['host', 'boards'])
IGNORE_DIRS.add('common/boot_picoboot')
IGNORE_DIRS.add('common/boot_uf2')
IGNORE_DIRS.add('common/pico_async_context')
IGNORE_DIRS.add('common/pico_lwip')
IGNORE_DIRS.add('common/pico_usb_reset_interface')
IGNORE_DIRS.add('rp2_common/cmsis')
IGNORE_DIRS.add('rp2_common/pico_async_context')
IGNORE_DIRS.add('rp2_common/pico_btstack')
#IGNORE_DIRS.add('rp2_common/pico_cyw43_arch')
IGNORE_DIRS.add('rp2_common/pico_cyw43_driver')
IGNORE_DIRS.add('rp2_common/pico_lwip')
IGNORE_DIRS.add('rp2_common/pico_stdio_semihosting')
IGNORE_DIRS.add('rp2_common/pico_stdio_usb')
IGNORE_DIRS.add('rp2_common/pico_clib_interface')
Expand Down