#
# Marlin Firmware
# PlatformIO Configuration File
#

#################################
#                               #
#     Features Dependencies     #
#                               #
#################################

[features]
YHCB2004                = red-scorp/LiquidCrystal_AIP31068@^1.0.4, red-scorp/SoftSPIB@^1.1.1
HAS_TFT_LVGL_UI         = lvgl=https://github.com/makerbase-mks/LVGL-6.1.1-MKS/archive/master.zip
                          src_filter=+<src/lcd/extui/lib/mks_ui>
                          extra_scripts=download_mks_assets.py
POSTMORTEM_DEBUGGING    = src_filter=+<src/HAL/shared/cpu_exception> +<src/HAL/shared/backtrace>
                          build_flags=-funwind-tables
MKS_WIFI_MODULE         = QRCode=https://github.com/makerbase-mks/QRCode/archive/master.zip
HAS_TRINAMIC_CONFIG     = TMCStepper@~0.7.1
                          src_filter=+<src/feature/tmc_util.cpp> +<src/module/stepper/trinamic.cpp> +<src/gcode/feature/trinamic/M122.cpp> +<src/gcode/feature/trinamic/M906.cpp> +<src/gcode/feature/trinamic/M911-M914.cpp>
HAS_STEALTHCHOP         = src_filter=+<src/gcode/feature/trinamic/M569.cpp>
SR_LCD_3W_NL            = SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip
HAS_MOTOR_CURRENT_I2C   = SlowSoftI2CMaster
                          src_filter=+<src/feature/digipot>
HAS_TMC26X              = TMC26XStepper=https://github.com/trinamic/TMC26XStepper/archive/master.zip
                          src_filter=+<src/module/TMC26X.cpp>
HAS_L64XX               = Arduino-L6470@0.8.0
                          src_filter=+<src/libs/L64XX> +<src/module/stepper/L64xx.cpp> +<src/gcode/feature/L6470> +<src/HAL/shared/HAL_spi_L6470.cpp>
NEOPIXEL_LED            = Adafruit NeoPixel@1.5.0
                          src_filter=+<src/feature/leds/neopixel.cpp>
TEMP_.+_IS_MAX31865     = Adafruit MAX31865 library@~1.1.0
USES_LIQUIDCRYSTAL      = bitbucket-fmalpartida/LiquidCrystal@1.5.0
USES_LIQUIDCRYSTAL_I2C  = marcoschwartz/LiquidCrystal_I2C@1.1.4
USES_LIQUIDTWI2         = LiquidTWI2@1.2.7
HAS_WIRED_LCD           = src_filter=+<src/lcd/lcdprint.cpp>
HAS_MARLINUI_HD44780    = src_filter=+<src/lcd/HD44780>
HAS_MARLINUI_U8GLIB     = U8glib-HAL@~0.4.1
                          src_filter=+<src/lcd/dogm>
HAS_(FSMC|SPI)_TFT      = src_filter=+<src/HAL/STM32/tft> +<src/HAL/STM32F1/tft> +<src/lcd/tft_io>
HAS_FSMC_TFT            = src_filter=+<src/HAL/STM32/tft/tft_fsmc.cpp> +<src/HAL/STM32F1/tft/tft_fsmc.cpp>
HAS_SPI_TFT             = src_filter=+<src/HAL/STM32/tft/tft_spi.cpp> +<src/HAL/STM32F1/tft/tft_spi.cpp>
I2C_EEPROM              = src_filter=+<src/HAL/shared/eeprom_if_i2c.cpp>
SPI_EEPROM              = src_filter=+<src/HAL/shared/eeprom_if_spi.cpp>
HAS_GRAPHICAL_TFT       = src_filter=+<src/lcd/tft>
DWIN_CREALITY_LCD       = src_filter=+<src/lcd/dwin>
IS_TFTGLCD_PANEL        = src_filter=+<src/lcd/TFTGLCD>
HAS_TOUCH_BUTTONS       = src_filter=+<src/lcd/touch/touch_buttons.cpp>
HAS_LCD_MENU            = src_filter=+<src/lcd/menu>
HAS_GAMES               = src_filter=+<src/lcd/menu/game/game.cpp>
MARLIN_BRICKOUT         = src_filter=+<src/lcd/menu/game/brickout.cpp>
MARLIN_INVADERS         = src_filter=+<src/lcd/menu/game/invaders.cpp>
MARLIN_MAZE             = src_filter=+<src/lcd/menu/game/maze.cpp>
MARLIN_SNAKE            = src_filter=+<src/lcd/menu/game/snake.cpp>
HAS_MENU_BACKLASH       = src_filter=+<src/lcd/menu/menu_backlash.cpp>
HAS_MENU_BED_CORNERS    = src_filter=+<src/lcd/menu/menu_bed_corners.cpp>
LCD_BED_LEVELING        = src_filter=+<src/lcd/menu/menu_bed_leveling.cpp>
HAS_MENU_CANCELOBJECT   = src_filter=+<src/lcd/menu/menu_cancelobject.cpp>
HAS_MENU_DELTA_CALIBRATE = src_filter=+<src/lcd/menu/menu_delta_calibrate.cpp>
HAS_MENU_FILAMENT       = src_filter=+<src/lcd/menu/menu_filament.cpp>
LCD_INFO_MENU           = src_filter=+<src/lcd/menu/menu_info.cpp>
HAS_MENU_JOB_RECOVERY   = src_filter=+<src/lcd/menu/menu_job_recovery.cpp>
HAS_MULTI_LANGUAGE      = src_filter=+<src/lcd/menu/menu_language.cpp>
HAS_MENU_LED            = src_filter=+<src/lcd/menu/menu_led.cpp>
HAS_MENU_MEDIA          = src_filter=+<src/lcd/menu/menu_media.cpp>
HAS_MENU_MIXER          = src_filter=+<src/lcd/menu/menu_mixer.cpp>
HAS_MENU_MMU2           = src_filter=+<src/lcd/menu/menu_mmu2.cpp>
HAS_MENU_PASSWORD       = src_filter=+<src/lcd/menu/menu_password.cpp>
HAS_MENU_POWER_MONITOR  = src_filter=+<src/lcd/menu/menu_power_monitor.cpp>
HAS_MENU_CUTTER         = src_filter=+<src/lcd/menu/menu_spindle_laser.cpp>
HAS_MENU_TEMPERATURE    = src_filter=+<src/lcd/menu/menu_temperature.cpp>
HAS_MENU_TMC            = src_filter=+<src/lcd/menu/menu_tmc.cpp>
HAS_MENU_TOUCH_SCREEN   = src_filter=+<src/lcd/menu/menu_touch_screen.cpp>
HAS_MENU_TRAMMING       = src_filter=+<src/lcd/menu/menu_tramming.cpp>
HAS_MENU_UBL            = src_filter=+<src/lcd/menu/menu_ubl.cpp>
ANYCUBIC_LCD_CHIRON     = src_filter=+<src/lcd/extui/anycubic_chiron_lcd.cpp> +<src/lcd/extui/lib/anycubic_chiron>
ANYCUBIC_LCD_I3MEGA     = src_filter=+<src/lcd/extui/anycubic_i3mega_lcd.cpp> +<src/lcd/extui/lib/anycubic_i3mega>
NEXTION_TFT             = src_filter=+<src/lcd/extui/nextion_lcd.cpp> +<src/lcd/extui/lib/nextion>
HAS_DGUS_LCD            = src_filter=+<src/lcd/extui/lib/dgus> +<src/lcd/extui/dgus_lcd.cpp>
DGUS_LCD_UI_FYSETC      = src_filter=+<src/lcd/extui/lib/dgus/fysetc>
DGUS_LCD_UI_HIPRECY     = src_filter=+<src/lcd/extui/lib/dgus/hiprecy>
DGUS_LCD_UI_MKS         = src_filter=+<src/lcd/extui/lib/dgus/mks>
DGUS_LCD_UI_ORIGIN      = src_filter=+<src/lcd/extui/lib/dgus/origin>
TOUCH_UI_FTDI_EVE       = src_filter=+<src/lcd/extui/lib/ftdi_eve_touch_ui>
EXTUI_EXAMPLE           = src_filter=+<src/lcd/extui/example.cpp>
MALYAN_LCD              = src_filter=+<src/lcd/extui/malyan_lcd.cpp>
USE_UHS2_USB            = src_filter=+<src/sd/usb_flashdrive/lib-uhs2>
USE_UHS3_USB            = src_filter=+<src/sd/usb_flashdrive/lib-uhs3>
USB_FLASH_DRIVE_SUPPORT = src_filter=+<src/sd/usb_flashdrive/Sd2Card_FlashDrive.cpp>
AUTO_BED_LEVELING_BILINEAR = src_filter=+<src/feature/bedlevel/abl>
AUTO_BED_LEVELING_(3POINT|(BI)?LINEAR) = src_filter=+<src/gcode/bedlevel/abl>
MESH_BED_LEVELING       = src_filter=+<src/feature/bedlevel/mbl> +<src/gcode/bedlevel/mbl>
AUTO_BED_LEVELING_UBL   = src_filter=+<src/feature/bedlevel/ubl> +<src/gcode/bedlevel/ubl>
UBL_HILBERT_CURVE       = src_filter=+<src/feature/bedlevel/hilbert_curve.cpp>
BACKLASH_COMPENSATION   = src_filter=+<src/feature/backlash.cpp>
BARICUDA                = src_filter=+<src/feature/baricuda.cpp> +<src/gcode/feature/baricuda>
BINARY_FILE_TRANSFER    = src_filter=+<src/feature/binary_stream.cpp> +<src/libs/heatshrink>
BLTOUCH                 = src_filter=+<src/feature/bltouch.cpp>
CANCEL_OBJECTS          = src_filter=+<src/feature/cancel_object.cpp> +<src/gcode/feature/cancel>
CASE_LIGHT_ENABLE       = src_filter=+<src/feature/caselight.cpp> +<src/gcode/feature/caselight>
EXTERNAL_CLOSED_LOOP_CONTROLLER = src_filter=+<src/feature/closedloop.cpp> +<src/gcode/calibrate/M12.cpp>
USE_CONTROLLER_FAN      = src_filter=+<src/feature/controllerfan.cpp>
HAS_MOTOR_CURRENT_DAC   = src_filter=+<src/feature/dac>
DIRECT_STEPPING         = src_filter=+<src/feature/direct_stepping.cpp> +<src/gcode/motion/G6.cpp>
EMERGENCY_PARSER        = src_filter=+<src/feature/e_parser.cpp> -<src/gcode/control/M108_*.cpp>
I2C_POSITION_ENCODERS   = src_filter=+<src/feature/encoder_i2c.cpp>
IIC_BL24CXX_EEPROM      = src_filter=+<src/libs/BL24CXX.cpp>
HAS_SPI_FLASH           = src_filter=+<src/libs/W25Qxx.cpp>
HAS_ETHERNET            = src_filter=+<src/feature/ethernet.cpp> +<src/gcode/feature/network/M552-M554.cpp>
HAS_FANMUX              = src_filter=+<src/feature/fanmux.cpp>
FILAMENT_WIDTH_SENSOR   = src_filter=+<src/feature/filwidth.cpp> +<src/gcode/feature/filwidth>
FWRETRACT               = src_filter=+<src/feature/fwretract.cpp> +<src/gcode/feature/fwretract>
HOST_ACTION_COMMANDS    = src_filter=+<src/feature/host_actions.cpp>
HOTEND_IDLE_TIMEOUT     = src_filter=+<src/feature/hotend_idle.cpp>
JOYSTICK                = src_filter=+<src/feature/joystick.cpp>
BLINKM                  = src_filter=+<src/feature/leds/blinkm.cpp>
HAS_COLOR_LEDS          = src_filter=+<src/feature/leds/leds.cpp> +<src/gcode/feature/leds/M150.cpp>
PCA9533                 = src_filter=+<src/feature/leds/pca9533.cpp>
PCA9632                 = src_filter=+<src/feature/leds/pca9632.cpp>
PRINTER_EVENT_LEDS      = src_filter=+<src/feature/leds/printer_event_leds.cpp>
TEMP_STAT_LEDS          = src_filter=+<src/feature/leds/tempstat.cpp>
MAX7219_DEBUG           = src_filter=+<src/feature/max7219.cpp> +<src/gcode/feature/leds/M7219.cpp>
HAS_MEATPACK            = src_filter=+<src/feature/meatpack.cpp>
MIXING_EXTRUDER         = src_filter=+<src/feature/mixing.cpp> +<src/gcode/feature/mixing/M163-M165.cpp>
HAS_PRUSA_MMU1          = src_filter=+<src/feature/mmu/mmu.cpp>
HAS_PRUSA_MMU2          = src_filter=+<src/feature/mmu/mmu2.cpp> +<src/gcode/feature/prusa_MMU2>
PASSWORD_FEATURE        = src_filter=+<src/feature/password> +<src/gcode/feature/password>
ADVANCED_PAUSE_FEATURE  = src_filter=+<src/feature/pause.cpp> +<src/gcode/feature/pause/M600.cpp> +<src/gcode/feature/pause/M603.cpp>
AUTO_POWER_CONTROL      = src_filter=+<src/feature/power.cpp>
HAS_POWER_MONITOR       = src_filter=+<src/feature/power_monitor.cpp> +<src/gcode/feature/power_monitor>
POWER_LOSS_RECOVERY     = src_filter=+<src/feature/powerloss.cpp> +<src/gcode/feature/powerloss>
PROBE_TEMP_COMPENSATION = src_filter=+<src/feature/probe_temp_comp.cpp> +<src/gcode/calibrate/G76_M192_M871.cpp>
HAS_FILAMENT_SENSOR     = src_filter=+<src/feature/runout.cpp> +<src/gcode/feature/runout>
(EXT|MANUAL)_SOLENOID.* = src_filter=+<src/feature/solenoid.cpp> +<src/gcode/control/M380_M381.cpp>
MK2_MULTIPLEXER         = src_filter=+<src/feature/snmm.cpp>
HAS_CUTTER              = src_filter=+<src/feature/spindle_laser.cpp> +<src/gcode/control/M3-M5.cpp>
EXPERIMENTAL_I2CBUS     = src_filter=+<src/feature/twibus.cpp> +<src/gcode/feature/i2c>
MECHANICAL_GANTRY_CAL.+ = src_filter=+<src/gcode/calibrate/G34.cpp>
Z_MULTI_ENDSTOPS        = src_filter=+<src/gcode/calibrate/G34_M422.cpp>
Z_STEPPER_AUTO_ALIGN    = src_filter=+<src/feature/z_stepper_align.cpp> +<src/gcode/calibrate/G34_M422.cpp>
G26_MESH_VALIDATION     = src_filter=+<src/gcode/bedlevel/G26.cpp>
ASSISTED_TRAMMING       = src_filter=+<src/feature/tramming.cpp> +<src/gcode/bedlevel/G35.cpp>
HAS_MESH                = src_filter=+<src/gcode/bedlevel/G42.cpp>
HAS_LEVELING            = src_filter=+<src/gcode/bedlevel/M420.cpp> +<src/feature/bedlevel/bedlevel.cpp>
DELTA_AUTO_CALIBRATION  = src_filter=+<src/gcode/calibrate/G33.cpp>
CALIBRATION_GCODE       = src_filter=+<src/gcode/calibrate/G425.cpp>
Z_MIN_PROBE_REPEATABILITY_TEST = src_filter=+<src/gcode/calibrate/M48.cpp>
M100_FREE_MEMORY_WATCHER = src_filter=+<src/gcode/calibrate/M100.cpp>
BACKLASH_GCODE          = src_filter=+<src/gcode/calibrate/M425.cpp>
IS_KINEMATIC            = src_filter=+<src/gcode/calibrate/M665.cpp>
HAS_EXTRA_ENDSTOPS      = src_filter=+<src/gcode/calibrate/M666.cpp>
SKEW_CORRECTION_GCODE   = src_filter=+<src/gcode/calibrate/M852.cpp>
DIRECT_PIN_CONTROL      = src_filter=+<src/gcode/control/M42.cpp> +<src/gcode/control/M226.cpp>
PINS_DEBUGGING          = src_filter=+<src/gcode/config/M43.cpp>
NO_VOLUMETRICS          = src_filter=-<src/gcode/config/M200-M205.cpp>
HAS_MULTI_EXTRUDER      = src_filter=+<src/gcode/config/M217.cpp>
HAS_HOTEND_OFFSET       = src_filter=+<src/gcode/config/M218.cpp>
EDITABLE_SERVO_ANGLES   = src_filter=+<src/gcode/config/M281.cpp>
PIDTEMP                 = src_filter=+<src/gcode/config/M301.cpp>
PREVENT_COLD_EXTRUSION  = src_filter=+<src/gcode/config/M302.cpp>
PIDTEMPBED              = src_filter=+<src/gcode/config/M304.cpp>
HAS_USER_THERMISTORS    = src_filter=+<src/gcode/config/M305.cpp>
SD_ABORT_ON_ENDSTOP_HIT = src_filter=+<src/gcode/config/M540.cpp>
BAUD_RATE_GCODE         = src_filter=+<src/gcode/config/M575.cpp>
HAS_SMART_EFF_MOD       = src_filter=+<src/gcode/config/M672.cpp>
COOLANT_CONTROL         = src_filter=+<src/gcode/control/M7-M9.cpp>
HAS_SOFTWARE_ENDSTOPS   = src_filter=+<src/gcode/control/M211.cpp>
HAS_DUPLICATION_MODE    = src_filter=+<src/gcode/control/M605.cpp>
LIN_ADVANCE             = src_filter=+<src/gcode/feature/advance>
PHOTO_GCODE             = src_filter=+<src/gcode/feature/camera>
CONTROLLER_FAN_EDITABLE = src_filter=+<src/gcode/feature/controllerfan>
GCODE_MACROS            = src_filter=+<src/gcode/feature/macro>
GRADIENT_MIX            = src_filter=+<src/gcode/feature/mixing/M166.cpp>
HAS_SAVED_POSITIONS     = src_filter=+<src/gcode/feature/pause/G60.cpp> +<src/gcode/feature/pause/G61.cpp>
PARK_HEAD_ON_PAUSE      = src_filter=+<src/gcode/feature/pause/M125.cpp>
FILAMENT_LOAD_UNLOAD_GCODES = src_filter=+<src/gcode/feature/pause/M701_M702.cpp>
CNC_WORKSPACE_PLANES    = src_filter=+<src/gcode/geometry/G17-G19.cpp>
CNC_COORDINATE_SYSTEMS  = src_filter=+<src/gcode/geometry/G53-G59.cpp>
HAS_M206_COMMAND        = src_filter=+<src/gcode/geometry/M206_M428.cpp>
EXPECTED_PRINTER_CHECK  = src_filter=+<src/gcode/host/M16.cpp>
HOST_KEEPALIVE_FEATURE  = src_filter=+<src/gcode/host/M113.cpp>
REPETIER_GCODE_M360     = src_filter=+<src/gcode/host/M360.cpp>
HAS_GCODE_M876          = src_filter=+<src/gcode/host/M876.cpp>
HAS_RESUME_CONTINUE     = src_filter=+<src/gcode/lcd/M0_M1.cpp>
HAS_LCD_CONTRAST        = src_filter=+<src/gcode/lcd/M250.cpp>
LCD_SET_PROGRESS_MANUALLY = src_filter=+<src/gcode/lcd/M73.cpp>
TOUCH_SCREEN_CALIBRATION = src_filter=+<src/gcode/lcd/M995.cpp>
ARC_SUPPORT             = src_filter=+<src/gcode/motion/G2_G3.cpp>
GCODE_MOTION_MODES      = src_filter=+<src/gcode/motion/G80.cpp>
BABYSTEPPING            = src_filter=+<src/gcode/motion/M290.cpp> +<src/feature/babystep.cpp>
Z_PROBE_SLED            = src_filter=+<src/gcode/probe/G31_G32.cpp>
G38_PROBE_TARGET        = src_filter=+<src/gcode/probe/G38.cpp>
MAGNETIC_PARKING_EXTRUDER = src_filter=+<src/gcode/probe/M951.cpp>
SDSUPPORT               = src_filter=+<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/gcode/sd>
HAS_MEDIA_SUBCALLS      = src_filter=+<src/gcode/sd/M32.cpp>
GCODE_REPEAT_MARKERS    = src_filter=+<src/feature/repeat.cpp> +<src/gcode/sd/M808.cpp>
HAS_EXTRUDERS           = src_filter=+<src/gcode/temp/M104_M109.cpp> +<src/gcode/config/M221.cpp>
HAS_COOLER              = src_filter=+<src/feature/cooler.cpp> +<src/gcode/temp/M143_M193.cpp>
AUTO_REPORT_TEMPERATURES = src_filter=+<src/gcode/temp/M155.cpp>
INCH_MODE_SUPPORT       = src_filter=+<src/gcode/units/G20_G21.cpp>
TEMPERATURE_UNITS_SUPPORT = src_filter=+<src/gcode/units/M149.cpp>
NEED_HEX_PRINT          = src_filter=+<src/libs/hex_print.cpp>
NEED_LSF                = src_filter=+<src/libs/least_squares_fit.cpp>
NOZZLE_PARK_FEATURE     = src_filter=+<src/libs/nozzle.cpp> +<src/gcode/feature/pause/G27.cpp>
NOZZLE_CLEAN_FEATURE    = src_filter=+<src/libs/nozzle.cpp> +<src/gcode/feature/clean>
DELTA                   = src_filter=+<src/module/delta.cpp> +<src/gcode/calibrate/M666.cpp>
BEZIER_CURVE_SUPPORT    = src_filter=+<src/module/planner_bezier.cpp> +<src/gcode/motion/G5.cpp>
PRINTCOUNTER            = src_filter=+<src/module/printcounter.cpp>
HAS_BED_PROBE           = src_filter=+<src/module/probe.cpp> +<src/gcode/probe/G30.cpp> +<src/gcode/probe/M401_M402.cpp> +<src/gcode/probe/M851.cpp>
IS_SCARA                = src_filter=+<src/module/scara.cpp>
HAS_SERVOS              = src_filter=+<src/module/servo.cpp> +<src/gcode/control/M280.cpp>
MORGAN_SCARA            = src_filter=+<src/gcode/scara>
HAS_MICROSTEPS          = src_filter=+<src/gcode/control/M350_M351.cpp>
(ESP3D_)?WIFISUPPORT    = AsyncTCP, ESP Async WebServer
  ESP3DLib=https://github.com/luc-github/ESP3DLib/archive/master.zip
  arduinoWebSockets=links2004/WebSockets@2.3.4
  luc-github/ESP32SSDP@^1.1.1
  lib_ignore=ESPAsyncTCP