Skip to content

Commit

Permalink
fix(prebuild): made shell script fully posix
Browse files Browse the repository at this point in the history
if called with other shell (example dash),
shebang is ignored and so some syntax was not supported.

Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
  • Loading branch information
fpistm committed Mar 26, 2024
1 parent 081354f commit 79b6bdb
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 11 deletions.
2 changes: 1 addition & 1 deletion system/extras/postbuild.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh -

BUILD_PATH="$1"
BUILD_SERIE="$2"
Expand Down
38 changes: 28 additions & 10 deletions system/extras/prebuild.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh -

BUILD_PATH="$1"
BUILD_SOURCE_PATH="$2"
Expand All @@ -9,20 +9,38 @@ if [ ! -f "$BUILD_PATH/sketch" ]; then
mkdir -p "$BUILD_PATH/sketch"
fi

# Create empty build.opt if build_opt.h does not exists in the original sketch dir
# Then add or append -fmacro-prefix-map option to change __FILE__ absolute path of
# the board platform folder to a relative path by using '.'.
# (i.e. the folder containing boards.txt)
# Create empty build.opt or clear it if build_opt.h does not exists in the original sketch dir
if [ ! -f "$BUILD_SOURCE_PATH/build_opt.h" ]; then
printf '\n-fmacro-prefix-map="%s"=.' "${BOARD_PLATFORM_PATH//\\/\\\\}" > "$BUILD_PATH/sketch/build.opt"
true >"$BUILD_PATH/sketch/build.opt"
else
# Else copy the build_opt.h as build.opt
# Workaround to the header file preprocessing done by arduino-cli
# See https://github.com/arduino/arduino-cli/issues/1338
cp "$BUILD_SOURCE_PATH/build_opt.h" "$BUILD_PATH/sketch/build.opt"
printf '\n-fmacro-prefix-map="%s"=.' "${BOARD_PLATFORM_PATH//\\/\\\\}" >> "$BUILD_PATH/sketch/build.opt"
cp -f "$BUILD_SOURCE_PATH/build_opt.h" "$BUILD_PATH/sketch/build.opt"
fi

# On Windows, need to protect '\' in path
UNAME_OS="$(uname -s)"
case "${UNAME_OS}" in
Windows*)
i=1
prefix=""
while [ "$i" -le "${#BOARD_PLATFORM_PATH}" ]; do
c=$(printf '%s' "$BOARD_PLATFORM_PATH" | cut -c $i)
prefix=${prefix}${c}
if [ "${c}" = "\\" ]; then
prefix=${prefix}"\\"
fi
i="$((i + 1))"
done
;;
*)
prefix=${BOARD_PLATFORM_PATH}
;;
esac
# Then append -fmacro-prefix-map option to change __FILE__ absolute path of
# the board platform folder to a relative path by using '.'.
# (i.e. the folder containing boards.txt)
printf '\n-fmacro-prefix-map="%s"=.' "${prefix}" >>"$BUILD_PATH/sketch/build.opt"

# Force include of SrcWrapper library
echo "#include <SrcWrapper.h>" > "$BUILD_PATH/sketch/SrcWrapper.cpp"
echo "#include <SrcWrapper.h>" >"$BUILD_PATH/sketch/SrcWrapper.cpp"

0 comments on commit 79b6bdb

Please sign in to comment.