Document migration plan from CrossPoint's lib/Epub to FreeInkBook, a memory-efficient clean-room EPUB engine. Covers advantages (O(paragraph+page) memory via SAX parsing, arena allocation, host-testable, full UAX#14 typography, runtime TTF/OTF support), 9-step migration strategy, ESP32-C3 constraints, and integration approach preserving existing UI layer while replacing parsing/layout stack.
110 lines
3.4 KiB
INI
110 lines
3.4 KiB
INI
[platformio]
|
|
default_envs = default
|
|
build_cache_dir = .cache
|
|
extra_configs = platformio.local.ini
|
|
|
|
[crosspoint]
|
|
version = 1.4.1
|
|
|
|
[base]
|
|
platform = https://github.com/pioarduino/platform-espressif32/releases/download/55.03.37/platform-espressif32.zip
|
|
board = esp32-c3-devkitm-1
|
|
framework = arduino
|
|
monitor_speed = 115200
|
|
upload_speed = 921600
|
|
check_tool = cppcheck
|
|
check_flags = --enable=all --suppress=missingIncludeSystem --suppress=unusedFunction --suppress=unmatchedSuppression --suppress=*:*/.pio/* --inline-suppr
|
|
check_skip_packages = yes
|
|
|
|
board_upload.flash_size = 16MB
|
|
board_upload.maximum_size = 16777216
|
|
board_upload.offset_address = 0x10000
|
|
|
|
build_flags =
|
|
-DARDUINO_USB_MODE=1
|
|
-DARDUINO_USB_CDC_ON_BOOT=1
|
|
-DEINK_DISPLAY_SINGLE_BUFFER_MODE=1
|
|
-DDISABLE_FS_H_WARNING=1
|
|
-DDESTRUCTOR_CLOSES_FILE=1
|
|
-std=gnu++2a
|
|
# Enable UTF-8 long file names in SdFat
|
|
-DUSE_UTF8_LONG_NAMES=1
|
|
# Increase PNG scanline buffer to support up to 2048px wide images
|
|
# Default is (320*4+1)*2=2562, we need more for larger images
|
|
-DPNG_MAX_BUFFERED_PIXELS=16416
|
|
-DFREEINK_DEVICE_X4=1
|
|
-DFREEINK_DEVICE_X3=1
|
|
# FreeInkBook memory profile for PSRAM-less ESP32-C3 (see BookProfile.h).
|
|
# The firmware's only expat is FreeInkBook's vendored copy (configured by its
|
|
# expat_config.h); consumers include <epub/Expat.h>.
|
|
-DFREEINK_BOOK_SMALL=1
|
|
-Wno-bidi-chars
|
|
-Wl,--wrap=panic_print_backtrace,--wrap=panic_abort,--wrap=bootloader_common_check_efuse_blk_validity
|
|
-fno-exceptions
|
|
|
|
build_unflags =
|
|
-std=gnu++11
|
|
-fexceptions
|
|
|
|
; Board configuration
|
|
board_build.flash_mode = dio
|
|
board_build.flash_size = 16MB
|
|
board_build.partitions = partitions.csv
|
|
|
|
extra_scripts =
|
|
pre:scripts/build_html.py
|
|
pre:scripts/gen_i18n.py
|
|
pre:scripts/git_branch.py
|
|
pre:scripts/patch_jpegdec.py
|
|
post:scripts/register_unit_tests_target.py
|
|
|
|
; Libraries
|
|
lib_deps =
|
|
BatteryMonitor=symlink://freeink-sdk/libs/hardware/BatteryMonitor
|
|
InputManager=symlink://freeink-sdk/libs/hardware/InputManager
|
|
EInkDisplay=symlink://freeink-sdk/libs/display/FreeInkDisplay
|
|
SDCardManager=symlink://freeink-sdk/libs/hardware/SDCardManager
|
|
BoardConfig=symlink://freeink-sdk/libs/hardware/BoardConfig
|
|
PowerManager=symlink://freeink-sdk/libs/hardware/PowerManager
|
|
FreeInkUI=symlink://freeink-sdk/libs/ui/FreeInkUI
|
|
Icons=symlink://freeink-sdk/libs/assets/Icons
|
|
FreeInkBook=symlink://freeink-sdk/libs/book/FreeInkBook
|
|
bblanchon/ArduinoJson @ 7.4.2
|
|
ricmoo/QRCode @ 0.0.1
|
|
bitbank2/PNGdec @ 1.1.6
|
|
https://github.com/bitbank2/JPEGDEC.git#86282979224c8a32fd51e091ed5a35b0c699a52b
|
|
links2004/WebSockets @ 2.7.3
|
|
|
|
[env:default]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
; CROSSPOINT_VERSION is set by scripts/git_branch.py (includes branch + short SHA)
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=2 ; Set log level to debug for development builds
|
|
|
|
|
|
[env:gh_release]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}\"
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=1 ; Set log level to info for release builds
|
|
|
|
[env:gh_release_rc]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}-rc+${sysenv.CROSSPOINT_RC_HASH}\"
|
|
-DENABLE_SERIAL_LOG
|
|
-DLOG_LEVEL=1 ; Set log level to info for release candidate builds
|
|
|
|
[env:slim]
|
|
extends = base
|
|
build_flags =
|
|
${base.build_flags}
|
|
-DCROSSPOINT_VERSION=\"${crosspoint.version}-slim\"
|
|
; serial output is disabled in slim builds to save space
|
|
-UENABLE_SERIAL_LOG
|