;-----------------------------------------------------------------------
; M5Utility
; For UnitTest
;-----------------------------------------------------------------------
[platformio]
;default_envs = test_Core, test_Core2, test_CoreS3, test_Fire, test_StampS3, test_Dial, test_AtomS3, test_NanoC6, test_StickCPlus, test_Paper

[env]
build_flags =-Wall -Wextra -Wreturn-local-addr -Werror=format -Werror=return-local-addr
lib_ldf_mode = deep
test_framework = googletest
test_build_src = true
lib_deps=m5stack/M5Unified
  google/googletest@1.12.1

; --------------------------------
;Choose device
[m5base]
monitor_speed = 115200
monitor_filters = esp32_exception_decoder, time
upload_speed = 1500000
test_speed = 115200
test_filter= embedded/*
test_ignore= native/*
platform = espressif32 @6.8.1
framework = arduino

[Core]
extends = m5base
board = m5stack-grey
;m5stack-core-esp32-16M ;;6.8.0 or later
;m5stack-core-esp32
lib_deps = ${env.lib_deps}

[Core2]
extends = m5base
board = m5stack-core2
lib_deps = ${env.lib_deps}

[CoreS3]
extends = m5base
board = m5stack-cores3
lib_deps = ${env.lib_deps}

[Fire]
extends = m5base
board = m5stack-fire
lib_deps = ${env.lib_deps}

[StampS3]
;include M5Capsule, DinMeter
extends = m5base
board = m5stack-stamps3
lib_deps = ${env.lib_deps}

[Dial]
extends = m5base
board = m5stack-stamps3
lib_deps = ${env.lib_deps}
  m5stack/M5Dial

[AtomMatrix]
extends = m5base
board = m5stack-atom
lib_deps = ${env.lib_deps}

[AtomS3]
extends = m5base
board = m5stack-atoms3
lib_deps = ${env.lib_deps}

; Using ./boards/m5stack-atoms3r.json
[AtomS3R]
extends = m5base
board = m5stack-atoms3r
lib_deps = ${env.lib_deps}

; Using ./boards/m5stack-nanoc6.json
[NanoC6]
extends = m5base
board = m5stack-nanoc6
platform = https://github.com/platformio/platform-espressif32.git
platform_packages =
	platformio/framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.7
	platformio/framework-arduinoespressif32-libs @ https://github.com/espressif/esp32-arduino-libs.git#idf-release/v5.1
board_build.partitions = default.csv
lib_deps = ${env.lib_deps} 

[StickCPlus]
extends = m5base
board = m5stick-c
lib_deps = ${env.lib_deps}

; Using ./boards/m5stick-cplus2.json
[StickCPlus2]
extends = m5base
board = m5stick-cplus2
lib_deps = ${env.lib_deps}

[Paper]
extends = m5base
board = m5stack-fire
lib_deps = ${env.lib_deps}

[CoreInk]
extends = m5base
board = m5stack-coreink
lib_deps = ${env.lib_deps}

[sdl]
build_flags = -O3 -xc++ -std=c++14 -lSDL2 
  -arch arm64                                ; for arm mac
  -I"/usr/local/include/SDL2"                ; for intel mac homebrew SDL2
  -L"/usr/local/lib"                         ; for intel mac homebrew SDL2
  -I"${sysenv.HOMEBREW_PREFIX}/include/SDL2" ; for arm mac homebrew SDL2
  -L"${sysenv.HOMEBREW_PREFIX}/lib"          ; for arm mac homebrew SDL2
platform = native
test_filter= native/*
test_ignore= embedded/*
lib_deps = ${env.lib_deps}

; --------------------------------
;Choose build options
[option_release]
build_type=release
build_flags = ${env.build_flags}   
  -DCORE_DEBUG_LEVEL=3
  -DLOG_LOCAL_LEVEL=3
  -DAPP_LOG_LEVEL=3
  -DM5_LOG_LEVEL=3

[option_log]
build_type=release
build_flags = ${env.build_flags} 
  -DCORE_DEBUG_LEVEL=5
  -DLOG_LOCAL_LEVEL=5
  -DAPP_LOG_LEVEL=5

[option_debug]
build_type=debug
build_flags = ${env.build_flags} 
  -DCORE_DEBUG_LEVEL=5
  -DLOG_LOCAL_LEVEL=5
  -DAPP_LOG_LEVEL=5
  -DDEBUG

[option_map]
build_type=release
build_flags = ${env.build_flags} 
  -DCORE_DEBUG_LEVEL=3
  -DLOG_LOCAL_LEVEL=3
  -DAPP_LOG_LEVEL=3
  -DM5_LOG_LEVEL=0
  -Wl,-Map,output.map

; --------------------------------
; UnitTest
[env:test_native]
extends = sdl, option_release 
build_flags = ${sdl.build_flags} ${option_release.build_flags}

[env:test_Core]
extends=Core, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_Core2]
extends=Core2, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_CoreS3]
extends=CoreS3, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_Fire]
extends=Fire, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_StampS3]
extends=StampS3, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_Dial]
extends=Dial, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_AtomMatrix]
extends=AtomMatrix, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_AtomS3]
extends=AtomS3, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_AtomS3R]
extends=AtomS3R, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_NanoC6]
extends=NanoC6, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_StickCPlus]
extends=StickCPlus, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_StickCPlus2]
extends=StickCPlus2, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_Paper]
extends=Paper, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}

[env:test_CoreInk]
extends=CoreInk, option_release
build_flags = ${env.build_flags} ${option_release.build_flags}
