andrey
94084fb351
Merge branch 'master' into webasm
...
Переработка ветки под систему фиче-флагов master:
- CMake-секция PIP_WASM (платформа, аналог PICO/FREERTOS): принудительный
OFF PIP_HAS_SOCKET/PROCESS/DYNLIB/SERIAL и PIP_BUILD_CONSOLE/USB/OPENCL/
FFTW/LUA/MQTT_CLIENT/HTTP_SERVER/HTTP_CLIENT до pip_resolve_feature_flags();
таблица зависимостей довыключает client_server/cloud/introspection
- Файлы, покрытые фиче-флагами master (piethernet/piserial/pican/pilibrary/
piprocess): взята master-версия, EMSCRIPTEN-стубы webasm удалены как
мёртвый код (нет флага — нет класса)
- Сохранены EMSCRIPTEN-гварды там, где флаги не покрывают поведение:
pihidevice (компилируется под wasm), piinit (initSignals/initLocale/
initUsername/initOSname/initHWInfo), pisysteminfo (instance/machineKey),
pithread (gettid-фоллбэк), picout (EM_ASM console.log),
pibase_macros (PIP_MIN_MSLEEP), pipiplatform.h (EMSCRIPTEN/ARCH_BITS)
- Исправлен AUTO-merge в PISystemInfo::machineKey() (семантический баг:
пустой результат при PIP_HAS_FILESYSTEM=OFF)
Проверено: нативный ctest 364/364 (build-verify), wasm-сборка (build_wasm,
лишь libpip.a + libpip_io_utils.a + pcre2), node-смоук-тест PICout/PISystemInfo
2026-09-19 11:01:39 +03:00
andrey
8828aa3f81
fix: build PIP on Pico and arbitrary flag combinations
...
- guard console subsystem (PIScreen/PIScreenTile/tiles/PITerminal/
PIKbdListener) by PIP_HAS_THREADS plus a TTY or Windows console
(new PIP_HAS_TTY platform macro) - termios is not available on
bare-metal newlib
- guard cloud subsystem (PICloudBase/Client/Server/TCP) by
PIP_HAS_SOCKET and PIP_HAS_THREADS
- add PIP_BUILD_CONSOLE/PIP_BUILD_CLOUD to the auto-disable flag
dependencies in CMake
- PIP_CAN (SocketCAN) is Linux-only, exclude other platforms
- on Pico keep sockets/MQTT off by default: pico-sdk lwip provides
only a partial POSIX socket layer (no netinet/in.h, poll.h)
- PITranslator: inline no-op definitions when PIP_HAS_FILESYSTEM is
off so the _tr literal links
- PIIODevice: guard read_func/write_func EVENT_HANDLERs (no-threads)
- piwaitevent_p.cpp: drop unused sys/ioctl.h include (missing on
arm-none-eabi, broke Pico builds)
2026-08-22 15:49:05 +03:00
andrey
5fd63cc7dc
clean: remove dead feature-flag code
...
- pifile.cpp: drop '|| !defined(PIP_HAS_FILESYSTEM)' from the
_fopen_call_ condition and the redundant inner
'#ifdef PIP_HAS_FILESYSTEM' - the whole file is already inside
PIP_HAS_FILESYSTEM
- remove PISERIAL_NO_PINS (piplatform.h, piserial.cpp): the whole
piserial.cpp is inside PIP_HAS_SERIAL which is forced OFF for
Pico/FREERTOS, so the macro could never be active where it mattered;
keep the Windows/POSIX branches as-is
2026-08-22 14:08:41 +03:00
andrey
75cfdd2e4c
small fix
2026-08-12 18:54:25 +03:00
andrey
75bab5a4b9
feat: add WebAssembly (Emscripten) build support
...
- Platform detection: EMSCRIPTEN/WASM macros in piplatform.h
- CMake: PIP_WASM option, auto-detect, STATIC lib, pthread flags,
disable incompatible modules (console, usb, fftw, opencl, lua,
http_server, http_client, mqtt_client)
- Macros: environ, SHUT_RDWR, HAS_LOCALE off, PIP_MIN_MSLEEP=10ms
- System stubs: process, signals, library, systeminfo, hidevice
- IO stubs: serial, ethernet, can, sharedmemory
- Thread: gettid() fallback via pthread_self()
- Core: locale/init adjustments, console.log routing via EM_ASM
- Fix: toDecimal precision loss, unreachable code in createPipe
2026-08-11 18:19:54 +03:00
andrey
4d8b743075
refactor: migrate MICRO_PIP to fine-grained feature flags
...
Replace monolithic MICRO_PIP/PIP_MICRO with granular flags:
Feature flags (CMake options + platform auto-detection):
- PIP_NO_FILESYSTEM, PIP_NO_THREADS, PIP_NO_SOCKET
- PIP_NO_PROCESS, PIP_NO_DYNLIB, PIP_NO_FFT, PIP_NO_SERIAL
Embedded optimization flag:
- PIP_EMBEDDED (auto-set for Pico SDK and FreeRTOS)
Controls buffer sizes, time stubs, terminal fallback, init stubs
Platform blocks in CMakeLists.txt:
- Pico SDK: auto-disables FS, PROCESS, DYNLIB, FFT, SERIAL;
conditionally disables THREADS (no FreeRTOS) and SOCKET (no LWIP)
- FreeRTOS: auto-disables FS, PROCESS, DYNLIB, FFT, SERIAL;
conditionally disables SOCKET (no LWIP)
- Android: auto-disables PROCESS, DYNLIB, FFT
Updated 96 files across libs/, utils/, tests/, and CMakeLists.txt.
Builds verified for Linux (547 tests pass) and Pico SDK (100%).
Removed all MICRO_PIP and PIP_MICRO references (0 remaining).
2026-08-11 14:34:59 +03:00
andrey
3ea5af750e
feat: add WebAssembly (Emscripten) build support
...
- Platform detection: EMSCRIPTEN/WASM macros in piplatform.h
- CMake: PIP_WASM option, auto-detect, STATIC lib, pthread flags,
disable incompatible modules (console, usb, fftw, opencl, lua,
http_server, http_client, mqtt_client)
- Macros: environ, SHUT_RDWR, HAS_LOCALE off, PIP_MIN_MSLEEP=10ms
- System stubs: process, signals, library, systeminfo, hidevice
- IO stubs: serial, ethernet, can, sharedmemory
- Thread: gettid() fallback via pthread_self()
- Core: locale/init adjustments, console.log routing via EM_ASM
- Fix: toDecimal precision loss, unreachable code in createPipe
2026-08-11 01:52:14 +03:00
andrey
4e7a5d58aa
Merge branch 'master' into pico_sdk
2026-03-29 12:28:36 +03:00
andrey
a450235743
PIP_NO_FILESYSTEM and PIP_NO_THREADS
2026-03-29 12:22:35 +03:00
peri4
ed13838237
merged AI doc, some new pages
2026-03-12 14:46:57 +03:00
andrey
cf89d77981
pip micro disable piintrospection piwaitevent
...
PIP_NO_SOCET
2025-10-18 11:20:18 +03:00
andrey
4885623492
Add pico sdk define
2025-10-18 08:53:47 +03:00
peri4
c2b8a8d6da
code format
2022-12-14 14:13:52 +03:00
peri4
6e81a419fb
start move to interruption of blocking calls, PIThread and PIEthernet
2022-11-01 00:02:44 +03:00
Andrey
a7df53fbfe
platformio_pre.py
2022-01-14 18:15:56 +03:00
Andrey
0504fa187e
define PIP_MICRO
...
detect AVR_GCC
add library.json
2022-01-14 14:37:51 +03:00
peri4
ccd6a9888f
tree changes
2020-08-19 00:47:05 +03:00