#
# Marlin Firmware
# PlatformIO Configuration File
#
# For detailed documentation with EXAMPLES:
#
# https://docs.platformio.org/en/latest/projectconf/index.html
#

# Automatic targets - enable auto-uploading
#targets = upload

[platformio]
src_dir      = Marlin
boards_dir   = buildroot/share/PlatformIO/boards
default_envs = mega2560
include_dir  = Marlin
extra_configs =
    Marlin/config.ini
    ini/avr.ini
    ini/due.ini
    ini/esp32.ini
    ini/features.ini
    ini/hc32.ini
    ini/lpc176x.ini
    ini/native.ini
    ini/samd21.ini
    ini/samd51.ini
    ini/stm32-common.ini
    ini/stm32f0.ini
    ini/stm32f1-maple.ini
    ini/stm32f1.ini
    ini/stm32f4.ini
    ini/stm32f7.ini
    ini/stm32h7.ini
    ini/stm32g0.ini
    ini/teensy.ini
    ini/renamed.ini

#
# The 'common' section applies to most Marlin builds.
#
# By default platformio build will abort after 5 errors.
# Remove '-fmax-errors=5' from build_flags below to see all.
#
[common]
build_flags        = -g3 -D__MARLIN_FIRMWARE__ -DNDEBUG
                     -fmax-errors=5
extra_scripts      =
  pre:buildroot/share/PlatformIO/scripts/configuration.py
  pre:buildroot/share/PlatformIO/scripts/common-dependencies.py
  pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py
  pre:buildroot/share/PlatformIO/scripts/preflight-checks.py
  post:buildroot/share/PlatformIO/scripts/common-dependencies-post.py
lib_deps           =
default_src_filter = +<src/*> -<src/config> -<src/tests>
  ; LCDs and Controllers
  -<src/lcd/HD44780> -<src/lcd/dogm> -<src/lcd/TFTGLCD> -<src/lcd/tft> -<src/lcd/tft_io>
  -<src/lcd/e3v2> -<src/lcd/menu> -<src/lcd/extui> -<src/lcd/touch>
  -<src/lcd/lcdprint.cpp>
  ; Marlin HAL
  -<src/HAL>
  +<src/HAL/shared>
  -<src/HAL/shared/backtrace>
  -<src/HAL/shared/cpu_exception>
  -<src/HAL/shared/eeprom_if_i2c.cpp>
  -<src/HAL/shared/eeprom_if_spi.cpp>
  ; Features and G-Codes
  -<src/feature>
  -<src/gcode/bedlevel>
  -<src/gcode/calibrate>
  -<src/gcode/config>
  -<src/gcode/control>
  -<src/gcode/feature>
  -<src/gcode/geometry>
  -<src/gcode/host>
  -<src/gcode/lcd>
  -<src/gcode/motion>
  -<src/gcode/probe>
  -<src/gcode/scara>
  -<src/gcode/sd>
  -<src/gcode/temp>
  -<src/gcode/units>
  ; Library Code
  -<src/libs/heatshrink>
  -<src/libs/BL24CXX.cpp> -<src/libs/W25Qxx.cpp>
  -<src/libs/MAX31865.cpp>
  -<src/libs/hex_print.cpp>
  -<src/libs/least_squares_fit.cpp>
  -<src/libs/nozzle.cpp>
  ; Modules
  -<src/module>
  -<src/module/stepper>
  ; Media Support
  -<src/sd>
  ;
  ; Minimal Requirements
  ;
  +<src/gcode/calibrate/G28.cpp>
  +<src/gcode/config/M92.cpp>
  +<src/gcode/config/M200-M205.cpp>
  +<src/gcode/config/M220.cpp>
  +<src/gcode/control/M17_M18_M84.cpp>
  +<src/gcode/control/M80_M81.cpp>
  +<src/gcode/control/M85.cpp>
  +<src/gcode/control/M108_*.cpp>
  +<src/gcode/control/M111.cpp>
  +<src/gcode/control/M120_M121.cpp>
  +<src/gcode/control/M999.cpp>
  +<src/gcode/control/T.cpp>
  +<src/gcode/geometry/G92.cpp>
  +<src/gcode/host/M110.cpp>
  +<src/gcode/host/M114.cpp>
  +<src/gcode/host/M118.cpp>
  +<src/gcode/host/M119.cpp>
  +<src/gcode/motion/G0_G1.cpp>
  +<src/gcode/motion/G4.cpp>
  +<src/gcode/motion/M400.cpp>
  +<src/gcode/temp/M105.cpp>
  +<src/module/endstops.cpp>
  +<src/module/motion.cpp>
  +<src/module/planner.cpp>
  +<src/module/settings.cpp>
  +<src/module/stepper.cpp>
  +<src/module/temperature.cpp>
  +<src/module/tool_change.cpp>
  +<src/module/stepper/indirection.cpp>

#
# Default values apply to all 'env:' prefixed environments
#
[env]
framework         = arduino
extra_scripts     = ${common.extra_scripts}
build_flags       = ${common.build_flags}
lib_deps          = ${common.lib_deps}
monitor_speed     = 250000
monitor_eol       = LF
monitor_echo      = yes
monitor_filters   = colorize, time, send_on_enter

#
# Just print the dependency tree
#
[env:include_tree]
platform         = atmelavr
board            = megaatmega2560
build_flags      = -c -H -std=gnu++11 -Wall -Os -D__MARLIN_FIRMWARE__
build_src_filter = +<src/MarlinCore.cpp>