Custom PlatformIO platform for ESP32 with pre-compiled Arduino and ESP-IDF libraries.
- Pre-compiled libraries: Arduino framework and user libraries are pre-compiled into static library for faster builds
- ESP32 support: Full support for ESP32 microcontroller
- Arduino framework: Compatible with Arduino framework and libraries
- Board support: Custom board
mod-esp32-v1 - Library dependencies: Includes pre-compiled:
- Adafruit GFX Library
- Adafruit SSD1306
- ESP32Encoder
- Adafruit NeoPixel
- MIDI Library
- Adafruit BusIO
urack-platform/
├── boards/ # Board definitions
│ └── mod-esp32-v1.json
├── builder/ # Build scripts
│ ├── main.py # Main platform builder
│ └── frameworks/ # Framework builders
│ ├── arduino.py # Arduino framework
│ ├── espidf.py # ESP-IDF framework
│ └── pioarduino-build.py
├── prebuilt/ # Pre-compiled libraries and headers
│ ├── liburack_arduino.a # Static library
│ ├── ld/ # Linker scripts
│ └── include/ # All headers (Arduino, ESP-IDF, libraries)
├── platform.json # Platform configuration
├── platform.py # Platform class
└── build_precompiled_libs.py # Script to build prebuilt libraries
## Building Pre-compiled Libraries
To rebuild the pre-compiled libraries:
```bash
cd urack-platform
# Initialize submodules (if cloning fresh)
git submodule update --init --recursive
# Build libraries
python3 build_precompiled_libs.py
This will:
- Create a temporary PlatformIO project
- Compile Arduino core and all dependency libraries
- Archive all object files into
liburack_arduino.a - Copy all necessary headers to
prebuilt/include/ - Copy linker scripts and bootloader files
Note: The original pioarduino platform (v54.03.20) is included as a git submodule for reference during the build process.
In your platformio.ini:
[env:modesp32v1]
platform = https://github.com/USERNAME/urack-esp32-platform/releases/download/v1.0.0/platform-urack-esp32-v1.0.0.zip
board = mod-esp32-v1
framework = arduino
monitor_speed = 115200Replace USERNAME and v1.0.0 with actual values.
[env:modesp32v1]
platform = https://github.com/USERNAME/urack-esp32-platform.git
board = mod-esp32-v1
framework = arduinoNote: First build will take longer as it needs to compile libraries. Run:
cd ~/.platformio/platforms/urack-esp32
python3 build_precompiled_libs.py[env:modesp32v1]
platform = file:///path/to/urack-platform
board = mod-esp32-v1
framework = arduino
monitor_speed = 115200- Pre-compilation: Core libraries are compiled once using the build script
- User code compilation: Only user code (
src/andlib/) is compiled during project builds - Linking: User object files are linked against the pre-compiled static library
- Headers: All necessary headers are provided from
prebuilt/include/
This approach significantly speeds up compilation times as the framework and libraries don't need to be recompiled for each project.
- Traditional build (first time): ~2-3 minutes
- URack platform (after prebuilt): ~12 seconds
- Incremental builds: <5 seconds
- PlatformIO Core >= 6.1.16
- Python 3.6+
- ESP32 toolchain (automatically installed by PlatformIO)
Apache-2.0