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

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

#
# By default platformio build will abort after 5 errors.
# Remove '-fmax-errors=5' from build_flags below to see all.
#

[platformio]
src_dir = Marlin
build_dir = .pioenvs
lib_dir = .piolib
libdeps_dir = .piolibdeps
env_default = megaatmega2560

[common]
default_src_filter = +<src/*> -<src/config>
build_flags = -fmax-errors=5
  -g
  -ggdb
lib_deps =
  https://github.com/MarlinFirmware/U8glib-HAL/archive/dev.zip
  LiquidCrystal_I2C@1.1.2
  TMC2130Stepper
  https://github.com/teemuatlut/TMC2208Stepper/archive/v0.0.4.zip
  Adafruit NeoPixel@1.1.3
  https://github.com/lincomatic/LiquidTWI2/archive/30aa480.zip
  https://github.com/ameyer/Arduino-L6470/archive/0c5e5de.zip
  https://github.com/trinamic/TMC26XStepper/archive/c1921b4.zip

#################################
#                               #
#   Unique Core Architectures   #
#                               #
#  Add a new "env" below if no  #
# entry has values suitable to  #
#   build for a given board.    #
#                               #
#################################

#
# ATmega2560
#
[env:megaatmega2560]
platform     = atmelavr
framework    = arduino
board        = megaatmega2560
build_flags  = ${common.build_flags}
board_f_cpu  = 16000000L
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# ATmega1280
#
[env:megaatmega1280]
platform     = atmelavr
framework    = arduino
board        = megaatmega1280
build_flags  = ${common.build_flags}
board_f_cpu  = 16000000L
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# Due (Atmel SAM3X8E ARM Cortex-M3)
#
#  - RAMPS4DUE
#  - RADDS
#
[env:DUE]
platform     = atmelsam
framework    = arduino
board        = due
build_flags  = ${common.build_flags}
lib_deps     = ${common.lib_deps}
lib_ignore   = c1921b4
src_filter   = ${common.default_src_filter}
monitor_baud = 250000
[env:DUE_USB]
platform     = atmelsam
framework    = arduino
board        = dueUSB
build_flags  = ${common.build_flags}
lib_deps     = ${common.lib_deps}
lib_ignore   = c1921b4
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# NXP LPC1768 ARM Cortex-M3
#
[env:LPC1768]
platform        = nxplpc
board           = lpc1768
board_f_cpu     = 100000000L
build_flags     = !python Marlin/src/HAL/HAL_LPC1768/lpc1768_flag_script.py
  ${common.build_flags}
  -DU8G_HAL_LINKS
src_build_flags = -Wall
build_unflags   = -Wall
lib_ldf_mode    = off
lib_extra_dirs  = frameworks
lib_deps        = CMSIS-LPC1768
  https://github.com/MarlinFirmware/U8glib-HAL/archive/dev.zip
  TMC2130Stepper@>=2.2.0
extra_scripts   = Marlin/src/HAL/HAL_LPC1768/lpc1768_flag_script.py
src_filter      = ${common.default_src_filter}
monitor_baud    = 250000

#
# LPC1768 (for debugging and development)
#
[env:LPC1768_debug_and_upload]
# Segger JLink
platform       = nxplpc
#framework     = mbed
board          = lpc1768
board_f_cpu    = 100000000L
build_flags    = !python Marlin/src/HAL/HAL_LPC1768/lpc1768_flag_script.py
  ${common.build_flags}
  -DU8G_HAL_LINKS
lib_ldf_mode   = off
lib_extra_dirs = frameworks
lib_deps       = CMSIS-LPC1768
  https://github.com/MarlinFirmware/U8glib-HAL/archive/dev.zip
src_filter     = ${common.default_src_filter}
extra_scripts  =  Marlin/src/HAL/HAL_LPC1768/debug_extra_script.py, Marlin/src/HAL/HAL_LPC1768/lpc1768_flag_script.py
monitor_baud   = 250000
debug_tool     = custom
debug_server   =
  C:\Program Files (x86)\SEGGER\JLink_V618d\JLinkGDBServerCL.exe
  -select
  USB
  -port
  2331
  -device
  LPC1768
  -if
  JTAG
  -speed
  auto
  -noir

#
# Melzi and clones (ATmega1284p)
#
[env:melzi]
platform     = atmelavr
framework    = arduino
board        = sanguino_atmega1284p
build_flags  = ${common.build_flags}
upload_speed = 57600
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# Melzi and clones (Optiboot bootloader)
#
[env:melzi_optiboot]
platform     = atmelavr
framework    = arduino
board        = sanguino_atmega1284p
build_flags  = ${common.build_flags}
upload_speed = 115200
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# RAMBo
#
[env:rambo]
platform     = atmelavr
framework    = arduino
board        = reprap_rambo
build_flags  = ${common.build_flags}
board_f_cpu  = 16000000L
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# Sanguinololu (ATmega644p)
#
[env:sanguino_atmega644p]
platform     = atmelavr
framework    = arduino
board        = sanguino_atmega644p
build_flags  = ${common.build_flags}
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# Sanguinololu (ATmega1284p)
#
[env:sanguino_atmega1284p]
platform     = atmelavr
framework    = arduino
board        = sanguino_atmega1284p
build_flags  = ${common.build_flags}
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

[env:STM32F1]
platform     = ststm32
framework    = arduino
board        = genericSTM32F103RE
build_flags  = !python Marlin/src/HAL/HAL_STM32F1/stm32f1_flag_script.py
  ${common.build_flags}
lib_deps     = ${common.lib_deps}
src_filter   = ${common.default_src_filter}
monitor_baud = 250000

#
# Teensy++ 2.0
#
# - PrintrBoard
# - PrintrBoard Rev.F
# - Brainwave Pro
#
[env:teensy20]
platform      = teensy
framework     = arduino
board         = teensy20pp
build_flags   = ${common.build_flags}
#board_f_cpu  = 20000000L     ; Bug in Arduino framework disallows boards running at 20Mhz
lib_deps      = ${common.lib_deps}
lib_ldf_mode  = deep+
src_filter    = ${common.default_src_filter}
monitor_baud  = 250000

#
# Teensy 3.5 / 3.6 (ARM Cortex-M4)
#
[env:teensy35]
platform     = teensy
framework    = arduino
board        = teensy35
build_flags  = ${common.build_flags}
lib_deps     = ${common.lib_deps}
lib_ignore   = Adafruit NeoPixel
src_filter   = ${common.default_src_filter}
monitor_baud = 250000