#
# Marlin Firmware
# PlatformIO Configuration File
#

#################################
#                               #
#       AVR Architecture        #
#                               #
#################################

#
# AVR (8-bit) Common Environment values
#
[common_avr8]
build_flags       = ${common.build_flags} -Wl,--relax
board_build.f_cpu = 16000000L
src_filter        = ${common.default_src_filter} +<src/HAL/AVR>

#
# ATmega2560
#
[env:mega2560]
platform = atmelavr
extends  = common_avr8
board    = megaatmega2560

#
# ATmega2560 with extended pins 70-85 defined
# BOARD_BQ_ZUM_MEGA_3D
# BOARD_ULTIMAIN_2
# BOARD_MIGHTYBOARD_REVE
# BOARD_EINSTART_S
#
[env:mega2560ext]
platform            = atmelavr
extends             = env:mega2560
board_build.variant = MARLIN_MEGA_EXTENDED
extra_scripts       = ${common.extra_scripts}
                      pre:buildroot/share/PlatformIO/scripts/generic_create_variant.py

#
# ATmega1280
#
[env:mega1280]
platform = atmelavr
extends  = common_avr8
board    = megaatmega1280

#
# MightyBoard AVR with extended pins
#
[mega_extended_optimized]
extends             = common_avr8
board_build.variant = MARLIN_MEGA_EXTENDED
extra_scripts       = ${env:mega2560ext.extra_scripts}
upload_speed        = 57600
build_flags         = ${common.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -Wl,--relax -mcall-prologues

#
# MightyBoard ATmega1280
#
[env:MightyBoard1280]
platform = atmelavr
extends  = mega_extended_optimized
board    = megaatmega1280

#
# MightyBoard ATmega2560
#
[env:MightyBoard2560]
platform = atmelavr
extends  = mega_extended_optimized
board    = megaatmega2560

#
# RAMBo
#
[env:rambo]
platform = atmelavr
extends  = common_avr8
board    = reprap_rambo

#
# FYSETC F6 V1.3 / V1.4
#
[env:FYSETC_F6]
platform = atmelavr
extends  = common_avr8
board    = fysetc_f6_13

#
# Sanguinololu (ATmega644p)
#
[env:sanguino644p]
platform = atmelavr
extends  = common_avr8
board    = sanguino_atmega644p

#
# Sanguinololu (ATmega1284p)
#
[env:sanguino1284p]
platform                  = atmelavr
extends                   = common_avr8
board                     = sanguino_atmega1284p
board_upload.maximum_size = 126976

#
# Melzi and clones (ATmega1284p)
#
[env:melzi]
platform     = atmelavr
extends      = env:sanguino1284p
upload_speed = 57600

#
# Sanguinololu (ATmega1284p stock bootloader with tuned flags)
#

[tuned_1284p]
build_flags = ${common.build_flags} -fno-tree-scev-cprop -fno-split-wide-types -Wl,--relax -mcall-prologues

[env:sanguino1284p_optimized]
platform    = atmelavr
extends     = env:melzi
build_flags = ${tuned_1284p.build_flags}

#
# Melzi and clones (alias for sanguino1284p_optimized)
#
[env:melzi_optimized]
platform = atmelavr
extends  = env:sanguino1284p_optimized

#
# Melzi and clones (Optiboot bootloader)
#
[env:melzi_optiboot]
platform     = atmelavr
extends      = common_avr8
board        = sanguino_atmega1284p
upload_speed = 115200
board_upload.maximum_size = 130048

#
# Melzi and clones (Zonestar Melzi2 with tuned flags)
#
[env:melzi_optiboot_optimized]
platform    = atmelavr
extends     = env:melzi_optiboot
build_flags = ${tuned_1284p.build_flags}

#
# AT90USB1286 boards using CDC bootloader
# - BRAINWAVE
# - BRAINWAVE_PRO
# - SAV_MKI
# - TEENSYLU
#
[env:at90usb1286_cdc]
platform   = teensy
extends    = common_avr8
board      = marlin_at90usb1286
lib_ignore = ${env:common_avr8.lib_ignore}, Teensy_ADC, NativeEthernet

#
# AT90USB1286 boards using DFU bootloader
# - Printrboard
# - Printrboard Rev.F
# - ? 5DPRINT ?
#
[env:at90usb1286_dfu]
platform = teensy
extends  = env:at90usb1286_cdc
