#
# 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 = LPC1769
include_dir  = Marlin
extra_configs =
    ini/avr.ini
    ini/due.ini
    ini/esp32.ini
    ini/features.ini
    ini/lpc176x.ini
    ini/native.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

#
# 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/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/HAL> +<src/HAL/shared>
  -<src/lcd/HD44780> -<src/lcd/TFTGLCD> -<src/lcd/dogm> -<src/lcd/tft> -<src/lcd/tft_io>
  -<src/HAL/STM32/tft> -<src/HAL/STM32F1/tft>
  -<src/lcd/e3v2/common> -<src/lcd/e3v2/creality> -<src/lcd/e3v2/enhanced> -<src/lcd/e3v2/jyersui> -<src/lcd/e3v2/marlinui>
  -<src/lcd/menu>
  -<src/lcd/menu/game/game.cpp> -<src/lcd/menu/game/brickout.cpp> -<src/lcd/menu/game/invaders.cpp>
  -<src/lcd/menu/game/maze.cpp> -<src/lcd/menu/game/snake.cpp>
  -<src/lcd/menu/menu_backlash.cpp>
  -<src/lcd/menu/menu_bed_corners.cpp>
  -<src/lcd/menu/menu_bed_leveling.cpp>
  -<src/lcd/menu/menu_cancelobject.cpp>
  -<src/lcd/menu/menu_delta_calibrate.cpp>
  -<src/lcd/menu/menu_filament.cpp>
  -<src/lcd/menu/menu_info.cpp>
  -<src/lcd/menu/menu_job_recovery.cpp>
  -<src/lcd/menu/menu_language.cpp>
  -<src/lcd/menu/menu_led.cpp>
  -<src/lcd/menu/menu_media.cpp>
  -<src/lcd/menu/menu_mmu2.cpp>
  -<src/lcd/menu/menu_password.cpp>
  -<src/lcd/menu/menu_power_monitor.cpp>
  -<src/lcd/menu/menu_spindle_laser.cpp>
  -<src/lcd/menu/menu_temperature.cpp>
  -<src/lcd/menu/menu_tmc.cpp>
  -<src/lcd/menu/menu_touch_screen.cpp>
  -<src/lcd/menu/menu_tramming.cpp>
  -<src/lcd/menu/menu_ubl.cpp>
  -<src/lcd/menu/menu_x_twist.cpp>
  -<src/lcd/extui/anycubic_chiron>
  -<src/lcd/extui/anycubic_i3mega>
  -<src/lcd/extui/dgus> -<src/lcd/extui/dgus/fysetc> -<src/lcd/extui/dgus/hiprecy> -<src/lcd/extui/dgus/mks> -<src/lcd/extui/dgus/origin>
  -<src/lcd/extui/dgus_reloaded>
  -<src/lcd/extui/example>
  -<src/lcd/extui/ftdi_eve_touch_ui>
  -<src/lcd/extui/malyan>
  -<src/lcd/extui/mks_ui>
  -<src/lcd/extui/nextion>
  -<src/lcd/lcdprint.cpp>
  -<src/lcd/touch/touch_buttons.cpp>
  -<src/sd/usb_flashdrive/lib-uhs2> -<src/sd/usb_flashdrive/lib-uhs3>
  -<src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp>
  -<src/sd/cardreader.cpp> -<src/sd/Sd2Card.cpp> -<src/sd/SdBaseFile.cpp> -<src/sd/SdFatUtil.cpp> -<src/sd/SdFile.cpp> -<src/sd/SdVolume.cpp>
  -<src/HAL/shared/backtrace>
  -<src/HAL/shared/cpu_exception>
  -<src/HAL/shared/eeprom_if_i2c.cpp>
  -<src/HAL/shared/eeprom_if_spi.cpp>
  -<src/feature/adc> -<src/gcode/feature/adc>
  -<src/feature/babystep.cpp>
  -<src/feature/backlash.cpp>
  -<src/feature/baricuda.cpp> -<src/gcode/feature/baricuda>
  -<src/feature/bedlevel/abl> -<src/gcode/bedlevel/abl>
  -<src/feature/bedlevel/abl/x_twist.cpp>
  -<src/feature/bedlevel/mbl> -<src/gcode/bedlevel/mbl>
  -<src/feature/bedlevel/ubl> -<src/gcode/bedlevel/ubl>
  -<src/feature/bedlevel/hilbert_curve.cpp>
  -<src/feature/binary_stream.cpp> -<src/libs/heatshrink>
  -<src/feature/bltouch.cpp>
  -<src/feature/cancel_object.cpp> -<src/gcode/feature/cancel>
  -<src/feature/caselight.cpp> -<src/gcode/feature/caselight>
  -<src/feature/closedloop.cpp>
  -<src/feature/controllerfan.cpp> -<src/gcode/feature/controllerfan>
  -<src/feature/cooler.cpp>  -<src/gcode/temp/M143_M193.cpp>
  -<src/feature/dac> -<src/feature/digipot>
  -<src/feature/direct_stepping.cpp> -<src/gcode/motion/G6.cpp>
  -<src/feature/e_parser.cpp>
  -<src/feature/easythreed_ui.cpp>
  -<src/feature/encoder_i2c.cpp>
  -<src/feature/ethernet.cpp> -<src/gcode/feature/network/M552-M554.cpp>
  -<src/feature/fancheck.cpp>
  -<src/feature/fanmux.cpp>
  -<src/feature/filwidth.cpp> -<src/gcode/feature/filwidth>
  -<src/feature/fwretract.cpp> -<src/gcode/feature/fwretract>
  -<src/feature/host_actions.cpp>
  -<src/feature/hotend_idle.cpp>
  -<src/feature/joystick.cpp>
  -<src/feature/leds/blinkm.cpp>
  -<src/feature/leds/leds.cpp>
  -<src/feature/leds/neopixel.cpp>
  -<src/feature/leds/pca9533.cpp>
  -<src/feature/leds/pca9632.cpp>
  -<src/feature/leds/printer_event_leds.cpp>
  -<src/feature/leds/tempstat.cpp>
  -<src/feature/max7219.cpp>
  -<src/feature/meatpack.cpp>
  -<src/feature/mixing.cpp>
  -<src/feature/mmu/mmu.cpp>
  -<src/feature/mmu/mmu2.cpp> -<src/gcode/feature/prusa_MMU2>
  -<src/feature/password> -<src/gcode/feature/password>
  -<src/feature/pause.cpp>
  -<src/feature/power.cpp>
  -<src/feature/power_monitor.cpp> -<src/gcode/feature/power_monitor>
  -<src/feature/powerloss.cpp> -<src/gcode/feature/powerloss>
  -<src/feature/probe_temp_comp.cpp>
  -<src/feature/repeat.cpp>
  -<src/feature/runout.cpp> -<src/gcode/feature/runout>
  -<src/feature/snmm.cpp>
  -<src/feature/solenoid.cpp> -<src/gcode/control/M380_M381.cpp>
  -<src/feature/spindle_laser.cpp> -<src/gcode/control/M3-M5.cpp>
  -<src/feature/stepper_driver_safety.cpp>
  -<src/feature/tmc_util.cpp> -<src/module/stepper/trinamic.cpp>
  -<src/feature/tramming.cpp>
  -<src/feature/twibus.cpp>
  -<src/feature/z_stepper_align.cpp>
  -<src/gcode/bedlevel/G26.cpp>
  -<src/gcode/bedlevel/G35.cpp>
  -<src/gcode/bedlevel/G42.cpp>
  -<src/gcode/bedlevel/M420.cpp> -<src/feature/bedlevel/bedlevel.cpp>
  -<src/gcode/calibrate/G33.cpp>
  -<src/gcode/calibrate/G34.cpp>
  -<src/gcode/calibrate/G34_M422.cpp>
  -<src/gcode/calibrate/G76_M871.cpp>
  -<src/gcode/calibrate/G425.cpp>
  -<src/gcode/calibrate/M12.cpp>
  -<src/gcode/calibrate/M48.cpp>
  -<src/gcode/calibrate/M100.cpp>
  -<src/gcode/calibrate/M425.cpp>
  -<src/gcode/calibrate/M665.cpp>
  -<src/gcode/calibrate/M666.cpp>
  -<src/gcode/calibrate/M852.cpp>
  -<src/gcode/control/M10-M11.cpp>
  -<src/gcode/control/M42.cpp> -<src/gcode/control/M226.cpp>
  -<src/gcode/config/M43.cpp>
  -<src/gcode/config/M217.cpp>
  -<src/gcode/config/M218.cpp>
  -<src/gcode/config/M221.cpp>
  -<src/gcode/config/M301.cpp>
  -<src/gcode/config/M302.cpp>
  -<src/gcode/config/M304.cpp>
  -<src/gcode/config/M305.cpp>
  -<src/gcode/config/M540.cpp>
  -<src/gcode/config/M575.cpp>
  -<src/gcode/config/M672.cpp>
  -<src/gcode/control/M7-M9.cpp>
  -<src/gcode/control/M211.cpp>
  -<src/gcode/control/M350_M351.cpp>
  -<src/gcode/control/M605.cpp>
  -<src/gcode/feature/advance>
  -<src/gcode/feature/camera>
  -<src/gcode/feature/i2c>
  -<src/gcode/feature/L6470>
  -<src/gcode/feature/leds/M150.cpp>
  -<src/gcode/feature/leds/M7219.cpp>
  -<src/gcode/feature/macro>
  -<src/gcode/feature/mixing/M163-M165.cpp>
  -<src/gcode/feature/mixing/M166.cpp>
  -<src/gcode/feature/pause/G27.cpp>
  -<src/gcode/feature/pause/G60.cpp>
  -<src/gcode/feature/pause/G61.cpp>
  -<src/gcode/feature/pause/M125.cpp>
  -<src/gcode/feature/pause/M600.cpp>
  -<src/gcode/feature/pause/M603.cpp>
  -<src/gcode/feature/pause/M701_M702.cpp>
  -<src/gcode/feature/trinamic/M122.cpp>
  -<src/gcode/feature/trinamic/M569.cpp>
  -<src/gcode/feature/trinamic/M906.cpp>
  -<src/gcode/feature/trinamic/M911-M914.cpp>
  -<src/gcode/geometry/G17-G19.cpp>
  -<src/gcode/geometry/G53-G59.cpp>
  -<src/gcode/geometry/M206_M428.cpp>
  -<src/gcode/host/M16.cpp>
  -<src/gcode/host/M113.cpp>
  -<src/gcode/host/M154.cpp>
  -<src/gcode/host/M360.cpp>
  -<src/gcode/host/M876.cpp>
  -<src/gcode/lcd/M0_M1.cpp>
  -<src/gcode/lcd/M117.cpp>
  -<src/gcode/lcd/M250.cpp> -<src/gcode/lcd/M256.cpp>
  -<src/gcode/lcd/M300.cpp>
  -<src/gcode/lcd/M414.cpp>
  -<src/gcode/lcd/M73.cpp>
  -<src/gcode/lcd/M995.cpp>
  -<src/gcode/motion/G2_G3.cpp>
  -<src/gcode/motion/G5.cpp>
  -<src/gcode/motion/G80.cpp>
  -<src/gcode/motion/M290.cpp>
  -<src/gcode/probe/G30.cpp>
  -<src/gcode/probe/G31_G32.cpp>
  -<src/gcode/probe/G38.cpp>
  -<src/gcode/probe/M401_M402.cpp>
  -<src/gcode/probe/M851.cpp>
  -<src/gcode/probe/M951.cpp>
  -<src/gcode/scara>
  -<src/gcode/sd>
  -<src/gcode/sd/M32.cpp>
  -<src/gcode/sd/M808.cpp>
  -<src/gcode/temp/M104_M109.cpp>
  -<src/gcode/temp/M123.cpp>
  -<src/gcode/temp/M155.cpp>
  -<src/gcode/temp/M192.cpp>
  -<src/gcode/units/G20_G21.cpp>
  -<src/gcode/units/M82_M83.cpp>
  -<src/gcode/units/M149.cpp>
  -<src/libs/BL24CXX.cpp> -<src/libs/W25Qxx.cpp>
  -<src/libs/L64XX> -<src/module/stepper/L64xx.cpp> -<src/HAL/shared/HAL_spi_L6470.cpp>
  -<src/libs/MAX31865.cpp>
  -<src/libs/hex_print.cpp>
  -<src/libs/least_squares_fit.cpp>
  -<src/libs/nozzle.cpp> -<src/gcode/feature/clean>
  -<src/module/delta.cpp>
  -<src/module/planner_bezier.cpp>
  -<src/module/polargraph.cpp>
  -<src/module/printcounter.cpp>
  -<src/module/probe.cpp>
  -<src/module/scara.cpp>
  -<src/module/servo.cpp> -<src/gcode/control/M280.cpp> -<src/gcode/config/M281.cpp> -<src/gcode/control/M282.cpp>
  -<src/module/stepper/TMC26X.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_flags =
  --quiet
  --echo
  --eol
    LF
  --filter
    colorize
  --filter
    time

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