From b96371b00d36c9bb5b93200b1d598045ec413f4e Mon Sep 17 00:00:00 2001 From: Guillaume Roche Date: Wed, 23 Oct 2019 22:50:50 +0200 Subject: [PATCH] Refactor OpenDingux build scripts (#372) * Refactor OpenDingux build scripts Created a common build.sh script that takes the target architecture as a command line argument. Updated existing build scripts, now they call build.sh with the matching target. This avoids code duplication and should help maintaining the build script. * Split the buildroot prepare and build steps If the buildroot compilation fails, it will be run again the next time the script is called. This was not the case before, as the buildroot step was skipped when the buildroot folder existed. * minor fixes --- Packaging/OpenDingux/build-retrofw.sh | 55 +--------- Packaging/OpenDingux/build-rg350.sh | 46 +------- Packaging/OpenDingux/build-rs90.sh | 47 +------- Packaging/OpenDingux/build.sh | 103 ++++++++++++++++++ .../OpenDingux/buildroot_rg350_defconfig | 1 + 5 files changed, 107 insertions(+), 145 deletions(-) create mode 100755 Packaging/OpenDingux/build.sh diff --git a/Packaging/OpenDingux/build-retrofw.sh b/Packaging/OpenDingux/build-retrofw.sh index 7c869df64..cc8d9f948 100755 --- a/Packaging/OpenDingux/build-retrofw.sh +++ b/Packaging/OpenDingux/build-retrofw.sh @@ -1,55 +1,2 @@ #!/usr/bin/env bash - -set -euo pipefail - -declare -r DIR="$(dirname "${BASH_SOURCE[0]}")" -cd "$DIR" -declare -r ABSDIR="$(pwd)" - -declare -r BUILDROOT_VER=buildroot-2018.02.9 -BUILDROOT="${BUILDROOT:-$HOME/${BUILDROOT_VER}-retrofw}" - -declare -r BUILDROOT_ARCHIVE="$HOME/${BUILDROOT_VER}.tar.gz" - -set -x - -main() { - set -x - prepare_buildroot - build - package -} - -prepare_buildroot() { - if [[ -d $BUILDROOT ]]; then - return - fi - if [[ ! -f $BUILDROOT_ARCHIVE ]]; then - \curl https://buildroot.org/downloads/${BUILDROOT_VER}.tar.gz -o "$BUILDROOT_ARCHIVE" - fi - - tar xf "$BUILDROOT_ARCHIVE" -C "$(dirname "$BUILDROOT_ARCHIVE")" - mv "${BUILDROOT_ARCHIVE%.tar.gz}" "$BUILDROOT" - cp buildroot_retrofw_defconfig "$BUILDROOT/configs/retrofw_defconfig" - cd "$BUILDROOT" - echo 'LIBSODIUM_CONF_OPTS += --enable-static' >> package/libsodium/libsodium.mk - make retrofw_defconfig - BR2_JLEVEL=0 make toolchain libsodium libzip sdl sdl_mixer sdl_ttf - cd - -} - -build() { - mkdir -p ../../build - cd ../../build - rm -f CMakeCache.txt - cmake .. -DDINGUX=ON -DRETROFW=ON -DUSE_SDL1=ON -DBINARY_RELEASE=ON \ - -DCMAKE_TOOLCHAIN_FILE="$BUILDROOT/output/host/share/buildroot/toolchainfile.cmake" - make -j $(nproc) - cd - -} - -package() { - ./package-ipk.sh ../../build/devilutionx-retrofw.ipk -} - -main +./build.sh retrofw diff --git a/Packaging/OpenDingux/build-rg350.sh b/Packaging/OpenDingux/build-rg350.sh index 75233e0e4..bd5cc8eac 100755 --- a/Packaging/OpenDingux/build-rg350.sh +++ b/Packaging/OpenDingux/build-rg350.sh @@ -1,46 +1,2 @@ #!/usr/bin/env bash - -set -euo pipefail - -declare -r DIR="$(dirname "${BASH_SOURCE[0]}")" -cd "$DIR" -declare -r ABSDIR="$(pwd)" - -BUILDROOT="${BUILDROOT:-$HOME/buildroot-rg350-devilutionx}" - -set -x - -main() { - set -x - prepare_buildroot - build - package -} - -prepare_buildroot() { - if [[ -d $BUILDROOT ]]; then - return - fi - git clone --depth=1 https://github.com/tonyjih/RG350_buildroot.git "$BUILDROOT" - cp buildroot_rg350_defconfig "$BUILDROOT/configs/rg350_devilutionx_defconfig" - cd "$BUILDROOT" - make rg350_devilutionx_defconfig - BR2_JLEVEL=0 make - cd - -} - -build() { - mkdir -p ../../build - cd ../../build - rm -f CMakeCache.txt - cmake .. -DDINGUX=ON -DBINARY_RELEASE=ON -DNONET=ON \ - -DCMAKE_TOOLCHAIN_FILE="$BUILDROOT/output/host/usr/share/buildroot/toolchainfile.cmake" - make -j $(nproc) - cd - -} - -package() { - ./package-opk.sh ../../build/devilutionx-rg350.opk -} - -main +./build.sh rg350 diff --git a/Packaging/OpenDingux/build-rs90.sh b/Packaging/OpenDingux/build-rs90.sh index b70661562..b288649bd 100755 --- a/Packaging/OpenDingux/build-rs90.sh +++ b/Packaging/OpenDingux/build-rs90.sh @@ -1,47 +1,2 @@ #!/usr/bin/env bash - -set -euo pipefail - -declare -r DIR="$(dirname "${BASH_SOURCE[0]}")" -cd "$DIR" -declare -r ABSDIR="$(pwd)" - -BUILDROOT="${BUILDROOT:-$HOME/buildroot-rs90-devilutionx}" - -set -x - -main() { - set -x - prepare_buildroot - build - package -} - -prepare_buildroot() { - if [[ -d $BUILDROOT ]]; then - return - fi - git clone --depth=1 -b od-rs90 https://github.com/OpenDingux/buildroot.git "$BUILDROOT" - cp buildroot_rs90_defconfig "$BUILDROOT/configs/rs90_devilutionx_defconfig" - cd "$BUILDROOT" - echo 'LIBSODIUM_CONF_OPTS += --enable-static' >> package/libsodium/libsodium.mk - make rs90_devilutionx_defconfig - BR2_JLEVEL=0 make toolchain libsodium libzip sdl sdl_mixer sdl_ttf - cd - -} - -build() { - mkdir -p ../../build - cd ../../build - rm -f CMakeCache.txt - cmake .. -DDINGUX=ON -DUSE_SDL1=ON -DBINARY_RELEASE=ON \ - -DCMAKE_TOOLCHAIN_FILE="$BUILDROOT/output/host/share/buildroot/toolchainfile.cmake" - make -j $(nproc) - cd - -} - -package() { - ./package-opk.sh ../../build/devilutionx-rs90.opk -} - -main +./build.sh rs90 diff --git a/Packaging/OpenDingux/build.sh b/Packaging/OpenDingux/build.sh new file mode 100755 index 000000000..0f682b606 --- /dev/null +++ b/Packaging/OpenDingux/build.sh @@ -0,0 +1,103 @@ +#!/usr/bin/env bash + +set -euo pipefail + +usage() { + echo "Usage: build.sh [target]" + echo " target: target architecture. Either rs90, rg350 or retrofw" +} + +if [[ $# -ne 1 ]]; then + echo "Error: target is missing" + usage + exit 1 +fi + +if [[ "$1" != "rs90" ]] && [[ "$1" != "rg350" ]] && [[ "$1" != "retrofw" ]]; then + echo "Error: invalid target" + usage + exit 1 +fi + +declare -r TARGET="${1}" +echo "Building for target: ${TARGET}" + +declare -r DIR="$(dirname "${BASH_SOURCE[0]}")" +cd "$DIR" +declare -r ABSDIR="$(pwd)" + +if [[ "$TARGET" == "retrofw" ]]; then + declare -r BUILDROOT_VER=buildroot-2018.02.9 + declare -r BUILDROOT_ARCHIVE="$HOME/${BUILDROOT_VER}.tar.gz" +fi + +BUILDROOT="${BUILDROOT:-$HOME/buildroot-${TARGET}-devilutionx}" + +set -x + +main() { + set -x + prepare_buildroot + make_buildroot + build + package +} + +prepare_buildroot() { + if [[ -d $BUILDROOT ]]; then + return + fi + if [[ "$TARGET" == "rg350" ]]; then + git clone --depth=1 https://github.com/tonyjih/RG350_buildroot.git "$BUILDROOT" + elif [[ "$TARGET" == "rs90" ]]; then + git clone --depth=1 -b od-rs90 https://github.com/OpenDingux/buildroot.git "$BUILDROOT" + else + if [[ ! -f $BUILDROOT_ARCHIVE ]]; then + \curl https://buildroot.org/downloads/${BUILDROOT_VER}.tar.gz -o "$BUILDROOT_ARCHIVE" + fi + tar xf "$BUILDROOT_ARCHIVE" -C "$(dirname "$BUILDROOT_ARCHIVE")" + mv "${BUILDROOT_ARCHIVE%.tar.gz}" "$BUILDROOT" + fi + cp buildroot_${TARGET}_defconfig "$BUILDROOT/configs/${TARGET}_devilutionx_defconfig" +} + +make_buildroot() { + cd "$BUILDROOT" + if [[ "$TARGET" != "rg350" ]]; then + echo 'LIBSODIUM_CONF_OPTS += --enable-static' >> package/libsodium/libsodium.mk + fi + make ${TARGET}_devilutionx_defconfig + if [[ "$TARGET" == "rg350" ]]; then + BR2_JLEVEL=0 make + else + BR2_JLEVEL=0 make toolchain libsodium libzip sdl sdl_mixer sdl_ttf + fi + cd - +} + +build() { + mkdir -p ../../build + cd ../../build + rm -f CMakeCache.txt + if [[ "$TARGET" == "rg350" ]]; then + TARGET_DEFINES="-DNONET=ON" + elif [[ "$TARGET" == "rs90" ]]; then + TARGET_DEFINES="-DUSE_SDL1=ON" + else + TARGET_DEFINES="-DRETROFW=ON -DUSE_SDL1=ON" + fi + cmake .. -DDINGUX=ON -DBINARY_RELEASE=ON ${TARGET_DEFINES} \ + -DCMAKE_TOOLCHAIN_FILE="$BUILDROOT/output/host/usr/share/buildroot/toolchainfile.cmake" + make -j $(nproc) + cd - +} + +package() { + if [[ "$TARGET" == "retrofw" ]]; then + ./package-ipk.sh ../../build/devilutionx-retrofw.ipk + else + ./package-opk.sh ../../build/devilutionx-${TARGET}.opk + fi +} + +main diff --git a/Packaging/OpenDingux/buildroot_rg350_defconfig b/Packaging/OpenDingux/buildroot_rg350_defconfig index 403658289..34c06b8f4 100644 --- a/Packaging/OpenDingux/buildroot_rg350_defconfig +++ b/Packaging/OpenDingux/buildroot_rg350_defconfig @@ -10,6 +10,7 @@ BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="--enable-lto" BR2_GCC_VERSION_4_9_X=y BR2_EXTRA_GCC_CONFIG_OPTIONS="--enable-lto" BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_PACKAGE_SDL2=y BR2_PACKAGE_SDL2_IMAGE=y BR2_PACKAGE_SDL2_IMAGE_PNG=y BR2_PACKAGE_SDL2_MIXER=y