; see https://docs.platformio.org/en/latest/projectconf/index.html
[platformio]
src_dir = .
include_dir = .

[env]
platform = https://github.com/Community-PIO-CH32V/platform-ch32v.git
; or genericCH32V003A4M6 or whatever, see platform link
board = ch32v003f4p6_evt_r0
monitor_speed = 115200
; all environments use ch32v003 fun as base, no more ch32v003evt
extends = fun_base
; use a source filter to only build certain folders / files in later environments

; for examples that use ch32v003fun as their base
[fun_base]
board_build.ldscript = ch32v003fun/ch32v003fun.ld
build_flags = -flto -Ich32v003fun -I/usr/include/newlib -lgcc -Iextralibs
; dynamically add "examples/$PIOENV" to the include path
extra_scripts = .github/add_include.py
build_src_filter = +<ch32v003fun>
extra_libs_srcs = +<extralibs>

; If creating a new example:
; 1. Add new [env:name]
; 2. Add build_src_filter with fun base files + example folder (+ extra libraries if used) for source files
; 3. Add additional build flags as needed (see uartdemo)
; 4. Switch to new environment in VSCode bottom taskbar (https://docs.platformio.org/en/latest/integration/ide/vscode.html#project-tasks)
[env:adc_dma_opamp]
build_src_filter = ${fun_base.build_src_filter} +<examples/adc_dma_opamp>

[env:adc_fixed_fs]
build_src_filter = ${fun_base.build_src_filter} +<examples/adc_fixed_fs>

[env:adc_polled]
build_src_filter = ${fun_base.build_src_filter} +<examples/adc_polled>

[env:blink]
build_src_filter = ${fun_base.build_src_filter} +<examples/blink>

[env:bootload]
build_src_filter = ${fun_base.build_src_filter} +<examples/bootload>

[env:cap_touch_adc]
build_src_filter = ${fun_base.build_src_filter} +<examples/cap_touch_adc>

[env:cap_touch_exti]
build_src_filter = ${fun_base.build_src_filter} +<examples/cap_touch_exti>

[env:cpp_virtual_methods]
build_src_filter = ${fun_base.build_src_filter} +<examples/cpp_virtual_methods>

[env:debugprintfdemo]
build_src_filter = ${fun_base.build_src_filter} +<examples/debugprintfdemo>

[env:direct_gpio]
build_src_filter = ${fun_base.build_src_filter} +<examples/direct_gpio>

[env:dma_gpio]
build_src_filter = ${fun_base.build_src_filter} +<examples/dma_gpio>

[env:external_crystal]
build_src_filter = ${fun_base.build_src_filter} +<examples/external_crystal>

[env:exti_pin_change_isr]
build_src_filter = ${fun_base.build_src_filter} +<examples/exti_pin_change_isr>

[env:flashtest]
build_src_filter = ${fun_base.build_src_filter} +<examples/flashtest>

[env:GPIO]
build_src_filter = ${fun_base.build_src_filter} ${fun_base.extra_libs_srcs} +<examples/GPIO>

[env:i2c_oled]
build_src_filter = ${fun_base.build_src_filter}  +<examples/i2c_oled>

[env:i2c_slave]
build_src_filter = ${fun_base.build_src_filter}  +<examples/i2c_slave>

[env:input_capture]
build_src_filter = ${fun_base.build_src_filter}  +<examples/input_capture>

[env:iwdg]
build_src_filter = ${fun_base.build_src_filter} +<examples/iwdg>

[env:hsitrim]
build_src_filter = ${fun_base.build_src_filter}  +<examples/hsitrim>

[env:MCOtest]
build_src_filter = ${fun_base.build_src_filter}  +<examples/MCOtest>

[env:optionbytes]
build_src_filter = ${fun_base.build_src_filter} +<examples/optionbytes>

[env:optiondata]
build_src_filter = ${fun_base.build_src_filter} +<examples/optiondata>

[env:run_from_ram]
build_src_filter = ${fun_base.build_src_filter} +<examples/run_from_ram>

[env:self_modify_code]
build_src_filter = ${fun_base.build_src_filter} +<examples/self_modify_code>

[env:spi_24L01_rx]
build_src_filter = ${fun_base.build_src_filter} +<examples/spi_24L01_rx>

[env:spi_24L01_tx]
build_src_filter = ${fun_base.build_src_filter} +<examples/spi_24L01_tx>

[env:spi_dac]
build_src_filter = ${fun_base.build_src_filter} +<examples/spi_dac>

[env:spi_oled]
build_src_filter = ${fun_base.build_src_filter} ${fun_base.extra_libs_srcs} +<examples/spi_oled>

[env:standby_autowake]
build_src_filter = ${fun_base.build_src_filter} +<examples/standby_autowake>

[env:standby_btn]
build_src_filter = ${fun_base.build_src_filter} +<examples/standby_btn>

[env:struct_direct_gpio]
build_src_filter = ${fun_base.build_src_filter} +<examples/struct_direct_gpio>

[env:struct_gpio]
build_src_filter = ${fun_base.build_src_filter} +<examples/struct_gpio>

[env:sysclk_config]
build_src_filter = ${fun_base.build_src_filter} +<examples/sysclk_config>

[env:systick_irq]
build_src_filter = ${fun_base.build_src_filter} +<examples/systick_irq>

[env:template]
build_src_filter = ${fun_base.build_src_filter} +<examples/template>

[env:tim1_pwm]
build_src_filter = ${fun_base.build_src_filter} +<examples/tim1_pwm>

[env:tim2_encoder]
build_src_filter = ${fun_base.build_src_filter} +<examples/tim2_encoder>

[env:tim2_pwm]
build_src_filter = ${fun_base.build_src_filter} +<examples/tim2_pwm>

[env:tim2_pwm_remap]
build_src_filter = ${fun_base.build_src_filter} +<examples/tim2_pwm_remap>

[env:uartdemo]
build_flags = ${fun_base.build_flags} -DSTDOUT_UART
build_src_filter = ${fun_base.build_src_filter} +<examples/uartdemo>

[env:ws2812bdemo]
build_src_filter = ${fun_base.build_src_filter} +<examples/ws2812bdemo>