Fix compatibility issues in compile.sh

* Use '/usr/bin/env bash', because not all distros put bash in /bin
  (some in /usr/bin), and with NixOS it's even more complicated. This
  should make it compatible across all distros.
* The 'set -euo pipefail' makes the script exit immediately on error,
  otherwise it tries to continue e.g. running make when the CMake
  configuration failed.
* Change to the directory the script sits in, in case it is ever called
  from another directory.
* With CMake 4.x, declaring compatibility with version 3.5 straight up
  errors. Passing the environment variable fixes this issue. See
  https://gitlab.kitware.com/cmake/cmake/-/issues/26613 and
  https://gitlab.kitware.com/cmake/cmake/-/issues/26698 for more info.
* CMake doesn't always emit Makefiles by default, so use `cmake --build'
  to build using whatever method CMake will choose.
* Compile using all available cores, instead of only using a single CPU
  core.
This commit is contained in:
PoroCYon
2025-11-27 12:38:09 +01:00
parent 4511cab6d1
commit 8e5e43f44e

25
compile.sh Normal file → Executable file
View File

@@ -1,4 +1,4 @@
#!/bin/bash
#!/usr/bin/env bash
###############################################################
# File: compile.sh
# Creation Date: 10/11/2022 (DD/MM/YYYY)
@@ -9,26 +9,33 @@
# Copyright: LNH team (c) 2022, all rights reserved
################################################################
set -euo pipefail
# change directory to the one containing the source code project
cd "$(dirname "$(realpath "$0")")"
# check available CMake version
echo "[>] Configuring project with CMake.."
# Clean previous build/ folders if they exist
rm -rf build/
mkdir build
# Export the SDK Path before running CMAKE
export PICO_SDK_PATH=../pico-sdk
rm -rf build/ || true
mkdir -p build
# Specify CMAKE where we want the build tree to be at.
# In our case, the build/ directory.
# The source directory will be . (the current directory,
# where the CMakeLists.txt is located).
cmake -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo -B build/ .
PICO_SDK_PATH=../pico-sdk \
CMAKE_POLICY_VERSION_MINIMUM=3.5 \
cmake -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-B build/ .
echo "[>] Building FIRMWARE: "
# Go and build the firmware
cd build
make
PICO_SDK_PATH=../pico-sdk \
CMAKE_POLICY_VERSION_MINIMUM=3.5 \
CMAKE_BUILD_PARALLEL_LEVEL="$(nproc)" \
cmake --build build
echo "[>] Build completed. Find the DSpico.uf2 file inside build/ folder"