diff --git a/.clusterfuzzlite/Dockerfile b/.clusterfuzzlite/Dockerfile index 2fe909a9b..8b7136005 100644 --- a/.clusterfuzzlite/Dockerfile +++ b/.clusterfuzzlite/Dockerfile @@ -43,5 +43,11 @@ COPY ./.clusterfuzzlite/build.sh $SRC/ WORKDIR $SRC/firmware COPY . $SRC/firmware/ -ENV PIO_ENV=buildroot +# https://docs.platformio.org/en/latest/envvars.html +ENV PLATFORMIO_WORKSPACE_DIR=$WORK/pio \ + PLATFORMIO_CORE_DIR=$SRC/pio/core \ + PLATFORMIO_LIBDEPS_DIR=$SRC/pio/libdeps \ + PLATFORMIO_PACKAGES_DIR=$SRC/pio/packages \ + PLATFORMIO_SETTING_ENABLE_CACHE=No \ + PIO_ENV=buildroot RUN platformio pkg install --environment $PIO_ENV diff --git a/.clusterfuzzlite/build.sh b/.clusterfuzzlite/build.sh index 0f2428e76..781ad9ea6 100644 --- a/.clusterfuzzlite/build.sh +++ b/.clusterfuzzlite/build.sh @@ -8,25 +8,25 @@ env cd "$SRC" NPROC=$(nproc || echo 1) -LDFLAGS=-lpthread cmake -S "$SRC/yaml-cpp" -B "$SRC/yaml-cpp/build" \ +LDFLAGS=-lpthread cmake -S "$SRC/yaml-cpp" -B "$WORK/yaml-cpp" \ -DBUILD_SHARED_LIBS=OFF -cmake --build "$SRC/yaml-cpp/build" -j "$NPROC" -cmake --install "$SRC/yaml-cpp/build" --prefix /usr +cmake --build "$WORK/yaml-cpp" -j "$NPROC" +cmake --install "$WORK/yaml-cpp" --prefix /usr -cmake -S "$SRC/orcania" -B "$SRC/orcania/build" \ +cmake -S "$SRC/orcania" -B "$WORK/orcania" \ -DBUILD_STATIC=ON -cmake --build "$SRC/orcania/build" -j "$NPROC" -cmake --install "$SRC/orcania/build" --prefix /usr +cmake --build "$WORK/orcania" -j "$NPROC" +cmake --install "$WORK/orcania" --prefix /usr -cmake -S "$SRC/yder" -B "$SRC/yder/build" \ +cmake -S "$SRC/yder" -B "$WORK/yder" \ -DBUILD_STATIC=ON -DWITH_JOURNALD=OFF -cmake --build "$SRC/yder/build" -j "$NPROC" -cmake --install "$SRC/yder/build" --prefix /usr +cmake --build "$WORK/yder" -j "$NPROC" +cmake --install "$WORK/yder" --prefix /usr -cmake -S "$SRC/ulfius" -B "$SRC/ulfius/build" \ +cmake -S "$SRC/ulfius" -B "$WORK/ulfius" \ -DBUILD_STATIC=ON -DWITH_JANSSON=OFF -DWITH_CURL=OFF -DWITH_WEBSOCKET=OFF -cmake --build "$SRC/ulfius/build" -j "$NPROC" -cmake --install "$SRC/ulfius/build" --prefix /usr +cmake --build "$WORK/ulfius" -j "$NPROC" +cmake --install "$WORK/ulfius" --prefix /usr cd "$SRC/firmware" @@ -50,10 +50,11 @@ for f in .clusterfuzzlite/*_fuzzer.cpp; do fuzzer=$(basename "$f" .cpp) cp -f "$f" src/fuzzer.cpp pio run -vvv --environment "$PIO_ENV" - cp ".pio/build/$PIO_ENV/program" "$OUT/$fuzzer" + program="$PLATFORMIO_WORKSPACE_DIR/build/$PIO_ENV/program" + cp "$program" "$OUT/$fuzzer" # Copy shared libraries used by the fuzzer. - read -ra shared_libs < <(ldd ".pio/build/$PIO_ENV/program" | sed -n 's/[^=]\+=> \([^ ]\+\).*/\1/p') + read -ra shared_libs < <(ldd "$program" | sed -n 's/[^=]\+=> \([^ ]\+\).*/\1/p') cp -f "${shared_libs[@]}" "$OUT/lib/" # Build the initial fuzzer seed corpus. diff --git a/platformio.ini b/platformio.ini index 6a4466c01..259b2ec8c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -20,7 +20,7 @@ extra_scripts = bin/platformio-custom.py build_flags = -Wno-missing-field-initializers -Wno-format - -Isrc -Isrc/mesh -Isrc/mesh/generated -Isrc/gps -Isrc/buzz -Wl,-Map,.pio/build/output.map + -Isrc -Isrc/mesh -Isrc/mesh/generated -Isrc/gps -Isrc/buzz -Wl,-Map,${platformio.build_dir}/output.map -DUSE_THREAD_NAMES -DTINYGPS_OPTION_NO_CUSTOM_FIELDS -DPB_ENABLE_MALLOC=1