11#! /bin/bash
22
3- LIBS_DIR=" tools/esp32-arduino-libs"
3+ if [ -d " $ARDUINO_ESP32_PATH /tools/esp32-arduino-libs" ]; then
4+ SDKCONFIG_DIR=" $ARDUINO_ESP32_PATH /tools/esp32-arduino-libs"
5+ elif [ -d " $GITHUB_WORKSPACE /tools/esp32-arduino-libs" ]; then
6+ SDKCONFIG_DIR=" $GITHUB_WORKSPACE /tools/esp32-arduino-libs"
7+ else
8+ SDKCONFIG_DIR=" tools/esp32-arduino-libs"
9+ fi
410
511function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [extra-options]
612 while [ ! -z " $1 " ]; do
@@ -83,15 +89,22 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
8389
8490 len=1
8591
92+ if [ -f $sketchdir /ci.json ]; then
93+ fqbn_append=` jq -r ' .fqbn_append' $sketchdir /ci.json`
94+ if [ $fqbn_append == " null" ]; then
95+ fqbn_append=" "
96+ fi
97+ fi
98+
8699 # Default FQBN options if none were passed in the command line.
87100
88- esp32_opts=" PSRAM=enabled,PartitionScheme=huge_app, FlashMode=dio"
89- esp32s2_opts=" PSRAM=enabled,PartitionScheme=huge_app, FlashMode=dio"
90- esp32s3_opts=" PSRAM=opi,USBMode=default,PartitionScheme=huge_app, FlashMode=dio"
91- esp32c3_opts=" PartitionScheme=huge_app, FlashMode=dio"
92- esp32c6_opts=" PartitionScheme=huge_app, FlashMode=dio"
93- esp32h2_opts=" PartitionScheme=huge_app, FlashMode=dio"
94- esp32p4_opts=" PartitionScheme=huge_app, FlashMode=dio,USBMode=default"
101+ esp32_opts=" PSRAM=enabled,FlashMode=dio${fqbn_append : +, $fqbn_append } "
102+ esp32s2_opts=" PSRAM=enabled,FlashMode=dio${fqbn_append : +, $fqbn_append } "
103+ esp32s3_opts=" PSRAM=opi,USBMode=default,FlashMode=dio${fqbn_append : +, $fqbn_append } "
104+ esp32c3_opts=" FlashMode=dio${fqbn_append : +, $fqbn_append } "
105+ esp32c6_opts=" FlashMode=dio${fqbn_append : +, $fqbn_append } "
106+ esp32h2_opts=" FlashMode=dio${fqbn_append : +, $fqbn_append } "
107+ esp32p4_opts=" FlashMode=dio,USBMode=default${fqbn_append : +, $fqbn_append } "
95108
96109 # Select the common part of the FQBN based on the target. The rest will be
97110 # appended depending on the passed options.
@@ -158,7 +171,8 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
158171 requirements=$( jq -r ' .requires[]? // empty' $sketchdir /ci.json)
159172 if [[ " $requirements " != " null" ]] || [[ " $requirements " != " " ]]; then
160173 for requirement in $requirements ; do
161- found_line=$( grep -E " ^$requirement " $LIBS_DIR /$target /sdkconfig)
174+ requirement=$( echo $requirement | xargs)
175+ found_line=$( grep -E " ^$requirement " " $SDKCONFIG_DIR /$target /sdkconfig" )
162176 if [[ " $found_line " == " " ]]; then
163177 echo " Target $target does not meet the requirement $requirement for $sketchname . Skipping."
164178 exit 0
@@ -274,10 +288,11 @@ function build_sketch(){ # build_sketch <ide_path> <user_path> <path-to-ino> [ex
274288 unset options
275289}
276290
277- function count_sketches(){ # count_sketches <path> [target] [file]
291+ function count_sketches(){ # count_sketches <path> [target] [file] [ignore-requirements]
278292 local path=$1
279293 local target=$2
280- local file=$3
294+ local ignore_requirements=$3
295+ local file=$4
281296
282297 if [ $# -lt 1 ]; then
283298 echo " ERROR: Illegal number of parameters"
@@ -290,7 +305,7 @@ function count_sketches(){ # count_sketches <path> [target] [file]
290305 return 0
291306 fi
292307
293- if [ -n " $file " ]; then
308+ if [ -f " $file " ]; then
294309 local sketches=$( cat $file )
295310 else
296311 local sketches=$( find $path -name * .ino | sort)
@@ -310,15 +325,18 @@ function count_sketches(){ # count_sketches <path> [target] [file]
310325 continue
311326 fi
312327
313- # Check if the sketch requires any configuration options
314- requirements=$( jq -r ' .requires[]? // empty' $sketchdir /ci.json)
315- if [[ " $requirements " != " null" ]] || [[ " $requirements " != " " ]]; then
316- for requirement in $requirements ; do
317- found_line=$( grep -E " ^$requirement " $LIBS_DIR /$target /sdkconfig)
318- if [[ " $found_line " == " " ]]; then
319- continue 2
320- fi
321- done
328+ if [ " $ignore_requirements " != " 1" ]; then
329+ # Check if the sketch requires any configuration options
330+ requirements=$( jq -r ' .requires[]? // empty' $sketchdir /ci.json)
331+ if [[ " $requirements " != " null" ]] || [[ " $requirements " != " " ]]; then
332+ for requirement in $requirements ; do
333+ requirement=$( echo $requirement | xargs)
334+ found_line=$( grep -E " ^$requirement " $SDKCONFIG_DIR /$target /sdkconfig)
335+ if [[ " $found_line " == " " ]]; then
336+ continue 2
337+ fi
338+ done
339+ fi
322340 fi
323341 fi
324342 echo $sketch >> sketches.txt
@@ -396,7 +414,7 @@ function build_sketches(){ # build_sketches <ide_path> <user_path> <target> <pat
396414
397415 set +e
398416 if [ -n " $sketches_file " ]; then
399- count_sketches " $path " " $target " " $sketches_file "
417+ count_sketches " $path " " $target " " 0 " " $sketches_file "
400418 local sketchcount=$?
401419 else
402420 count_sketches " $path " " $target "
0 commit comments