emdashes begone (#10847)
This commit is contained in:
@@ -121,7 +121,7 @@ test_testing_command =
|
||||
; ---------------------------------------------------------------------------
|
||||
; Native build for macOS (Darwin / arm64 + x86_64). Headless meshtasticd that
|
||||
; runs in SimRadio mode (`-s`) or against real LoRa hardware via a CH341
|
||||
; USB-SPI bridge. No BlueZ, libgpiod, or Linux I2C — those require Linux.
|
||||
; USB-SPI bridge. No BlueZ, libgpiod, or Linux I2C - those require Linux.
|
||||
;
|
||||
; Prerequisites (Homebrew):
|
||||
; brew install platformio yaml-cpp libuv openssl@3 libusb argp-standalone pkg-config jsoncpp
|
||||
@@ -129,24 +129,24 @@ test_testing_command =
|
||||
; brew install ulfius
|
||||
;
|
||||
; The macOS-side patches now live upstream:
|
||||
; * meshtastic/platform-native — `String.h`-shadow shim, `-Wno-enum-constexpr-conversion`,
|
||||
; * meshtastic/platform-native - `String.h`-shadow shim, `-Wno-enum-constexpr-conversion`,
|
||||
; empty-variant-dir guard. Pulled via `portduino_base.platform` zip pin.
|
||||
; * meshtastic/framework-portduino — LinuxHardwareI2C macOS stubs, AsyncUDP
|
||||
; * meshtastic/framework-portduino - LinuxHardwareI2C macOS stubs, AsyncUDP
|
||||
; SOCK_NONBLOCK fallback, Common.h __APPLE__ guard, WiFiServer.cpp extern-C
|
||||
; fix, package.json URL refresh. Pulled by platform-native at its pinned commit.
|
||||
; This env therefore only carries the firmware-side build flags and src filter.
|
||||
;
|
||||
; Real LoRa hardware on macOS:
|
||||
; The same lib_dep `pine64/libch341-spi-userspace` used on Linux works on
|
||||
; macOS as-is — its `libusb_detach_kernel_driver()` call is `__linux__`-
|
||||
; macOS as-is - its `libusb_detach_kernel_driver()` call is `__linux__`-
|
||||
; guarded, but on macOS the kernel doesn't bind a driver to a CH341A SPI
|
||||
; bridge (PID 0x5512; bDeviceClass=0xff vendor-specific) by default, so
|
||||
; no detach is needed. Apple's bundled CH34x driver targets the CH340
|
||||
; *UART* variant (PID 0x7523) — different product. libusb opens the device
|
||||
; *UART* variant (PID 0x7523) - different product. libusb opens the device
|
||||
; and claims interface 0 directly via IOUSBHostInterface.
|
||||
;
|
||||
; To use, point `meshtasticd` at any of the existing `bin/config.d/lora-*.yaml`
|
||||
; files that specify `spidev: ch341` — they're platform-agnostic. Example:
|
||||
; files that specify `spidev: ch341` - they're platform-agnostic. Example:
|
||||
; pio run -e native-macos
|
||||
; mkdir -p ~/.meshtasticd && cp bin/config-dist.yaml ~/.meshtasticd/config.yaml
|
||||
; # Edit ~/.meshtasticd/config.yaml: ConfigDirectory: ./config.d/
|
||||
@@ -167,7 +167,7 @@ test_testing_command =
|
||||
; claims interface 0, libusb will fail with LIBUSB_ERROR_BUSY.
|
||||
; Workaround: `sudo kmutil unload -b <bundleID>`.
|
||||
; LIBUSB_DEBUG=4 .pio/build/native-macos/meshtasticd
|
||||
; Verbose libusb trace — useful when claim_interface fails.
|
||||
; Verbose libusb trace - useful when claim_interface fails.
|
||||
; ---------------------------------------------------------------------------
|
||||
[env:native-macos]
|
||||
extends = native_base
|
||||
@@ -189,7 +189,7 @@ build_flags = ${portduino_base.build_flags_common}
|
||||
-L/opt/homebrew/opt/yaml-cpp/lib
|
||||
-largp
|
||||
-DPORTDUINO_DARWIN
|
||||
; Headless build — variants/native/portduino/variant.h would otherwise
|
||||
; Headless build - variants/native/portduino/variant.h would otherwise
|
||||
; default HAS_SCREEN to 1 and pull in screen-renderer source that uses
|
||||
; VLA-with-initializer (a GNU/GCC extension Apple Clang rejects).
|
||||
; MESHTASTIC_EXCLUDE_SCREEN gates the optional `screen->setHeading(...)`-
|
||||
@@ -202,7 +202,7 @@ build_flags = ${portduino_base.build_flags_common}
|
||||
; PiWebServer (src/mesh/raspihttp/PiWebServer.cpp) auto-engages when ulfius
|
||||
; headers are reachable via `#if __has_include(<ulfius.h>)`. The `|| :`
|
||||
; tail keeps the build green when the user hasn't run `brew install ulfius`
|
||||
; — they just don't get the HTTP API in that case.
|
||||
; - they just don't get the HTTP API in that case.
|
||||
!pkg-config --cflags --libs liborcania --silence-errors || :
|
||||
!pkg-config --cflags --libs libyder --silence-errors || :
|
||||
!pkg-config --cflags --libs libulfius --silence-errors || :
|
||||
@@ -216,7 +216,7 @@ build_src_filter = ${native_base.build_src_filter}
|
||||
-<graphics/Panel_sdl.cpp>
|
||||
-<graphics/TFTDisplay.cpp>
|
||||
; LovyanGFX includes <malloc.h> (Linux-only) and is only needed by TFT
|
||||
; variants — not relevant for the headless macOS build.
|
||||
; variants - not relevant for the headless macOS build.
|
||||
lib_ignore =
|
||||
${portduino_base.lib_ignore}
|
||||
LovyanGFX
|
||||
@@ -247,15 +247,15 @@ build_src_filter = ${env:native-macos.build_src_filter}
|
||||
lib_ignore = ${env:native-macos.lib_ignore}
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; WASM (Emscripten) — the portduino node compiled to WebAssembly, driving a real
|
||||
; WASM (Emscripten) - the portduino node compiled to WebAssembly, driving a real
|
||||
; LoRa radio over WebUSB through a CH341 (src/platform/portduino/wasm/). The same
|
||||
; setup()/loop() firmware that runs native, but the radio HAL talks WebUSB and
|
||||
; the cooperative loop suspends via Asyncify. Software/CI build target; the radio
|
||||
; path itself is hardware (CH341/WebUSB, Chromium). See the README in that dir.
|
||||
;
|
||||
; Toolchain comes from the meshtastic/platform-wasm PlatformIO platform (emcc/
|
||||
; em++). Prereq: an Emscripten SDK on PATH — `source <emsdk>/emsdk_env.sh` (or
|
||||
; export EMSDK=<path>) — so the platform builder can locate emcc.
|
||||
; em++). Prereq: an Emscripten SDK on PATH - `source <emsdk>/emsdk_env.sh` (or
|
||||
; export EMSDK=<path>) - so the platform builder can locate emcc.
|
||||
;
|
||||
; Build: pio run -e native-wasm -> .pio/build/native-wasm/meshnode.{mjs,wasm}
|
||||
; ---------------------------------------------------------------------------
|
||||
@@ -289,7 +289,7 @@ build_flags = ${arduino_base.build_flags}
|
||||
; firmware uses gettimeofday(); the native toolchain pulls <sys/time.h> in
|
||||
; transitively but emscripten doesn't, so force it.
|
||||
-include sys/time.h
|
||||
; Headless browser node — no screen / GPS / I2C / sensors / host services.
|
||||
; Headless browser node - no screen / GPS / I2C / sensors / host services.
|
||||
; Same exclusions the standalone emcc build used; gate out hardware/host code
|
||||
; the tab can't run (the EXCLUDE_* defines also keep LDF from pulling the libs).
|
||||
-DHAS_SCREEN=0
|
||||
@@ -306,7 +306,7 @@ build_flags = ${arduino_base.build_flags}
|
||||
|
||||
; The firmware-specific emcc *link* settings (exported fns, runtime methods, the
|
||||
; WebUSB Asyncify import seam, the ES-module factory name) can't ride in
|
||||
; build_flags — PlatformIO only feeds those to the compile step — so they're
|
||||
; build_flags - PlatformIO only feeds those to the compile step - so they're
|
||||
; appended to LINKFLAGS by this post script. (The generic Asyncify/MODULARIZE/
|
||||
; memory flags and emsdk auto-location both come from the platform-wasm builder.)
|
||||
extra_scripts =
|
||||
@@ -328,11 +328,11 @@ lib_ignore =
|
||||
LovyanGFX
|
||||
SD
|
||||
|
||||
; Curated source set — the proven standalone emcc build's file list expressed as
|
||||
; Curated source set - the proven standalone emcc build's file list expressed as
|
||||
; a PlatformIO filter. Deny everything, then add exactly what the browser node
|
||||
; links: the wasm cooperative-loop entry, the mesh stack (top-level + generated),
|
||||
; concurrency, the portduino glue, and the non-esp32 modules (the EXCLUDE_*
|
||||
; defines gate the unwanted module bodies). serialization/ stays excluded — the
|
||||
; defines gate the unwanted module bodies). serialization/ stays excluded - the
|
||||
; wasm stub replaces MeshPacketSerializer (jsoncpp is MQTT-only).
|
||||
build_src_filter =
|
||||
-<*>
|
||||
|
||||
Reference in New Issue
Block a user