#
# 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/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                     = 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.4
                                         src_filter=+<src/lcd/dogm>
HAS_(FSMC|SPI|LTDC)_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>
ANYCUBIC_LCD_I3MEGA                    = src_filter=+<src/lcd/extui/anycubic_i3mega>
HAS_DGUS_LCD                           = src_filter=+<src/lcd/extui/dgus>
DGUS_LCD_UI_FYSETC                     = src_filter=+<src/lcd/extui/dgus/fysetc>
DGUS_LCD_UI_HIPRECY                    = src_filter=+<src/lcd/extui/dgus/hiprecy>
DGUS_LCD_UI_MKS                        = src_filter=+<src/lcd/extui/dgus/mks>
DGUS_LCD_UI_ORIGIN                     = src_filter=+<src/lcd/extui/dgus/origin>
EXTUI_EXAMPLE                          = src_filter=+<src/lcd/extui/example>
TOUCH_UI_FTDI_EVE                      = src_filter=+<src/lcd/extui/ftdi_eve_touch_ui>
MALYAN_LCD                             = src_filter=+<src/lcd/extui/malyan>
NEXTION_TFT                            = src_filter=+<src/lcd/extui/nextion>
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>
HAS_DRIVER_SAFE_POWER_PROTECT          = src_filter=+<src/feature/stepper_driver_safety.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>
AIR_EVACUATION                         = src_filter=+<src/gcode/control/M10-M11.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
