diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..0863184 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,92 @@ +name: Build bannertool +on: + push: + branches: + - '*' + +jobs: + build-linux: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install Tools + run: | + sudo apt update + sudo apt install -y build-essential make cmake zip \ + gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf \ + gcc-aarch64-linux-gnu g++-aarch64-linux-gnu \ + gcc-x86-64-linux-gnu g++-x86-64-linux-gnu \ + gcc-i686-linux-gnu g++-i686-linux-gnu \ + gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64 + - name: Download Cross-Build + run: git clone https://dev.npid7.de/tobid7/cross-build + - name: Build Targets + run: | + mkdir -p build_artifacts + declare -A TARGETS=( + ["linux-i386"]="-DCMAKE_TOOLCHAIN_FILE=cross-build/cmake/linux-i386.cmake" + ["linux-x86_64"]="-DCMAKE_TOOLCHAIN_FILE=cross-build/cmake/linux-x86_64.cmake" + ["linux-armhf"]="-DCMAKE_TOOLCHAIN_FILE=cross-build/cmake/linux-armhf.cmake" + ["linux-aarch64"]="-DCMAKE_TOOLCHAIN_FILE=cross-build/cmake/linux-aarch64.cmake" + ["windows-x86_64"]="-DCMAKE_TOOLCHAIN_FILE=cross-build/cmake/windows-mingw-x86_64.cmake" + ) + + for name in "${!TARGETS[@]}"; do + cmake ${TARGETS[$name]} -DCMAKE_INSTALL_PREFIX=bin-$name -B build-$name . + cmake --build build-$name --parallel + cmake --install build-$name + zip -r build_artifacts/${name}.zip bin-$name + done + - name: Upload Artifacts + uses: actions/upload-artifact@v3 + with: + name: linux-builds + path: build_artifacts/*.zip + build-macos: + runs-on: macos-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build + run: | + mkdir -p build_artifacts + cmake -DCMAKE_INSTALL_PREFIX=bin-macos-universal -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -B build . + cmake --build build + cmake --install build + mkdir -p artifacts/macos-universal + cp -r bin-macos-universal/* artifacts/macos-universal/ + zip -r build_artifacts/macos-universal.zip bin-macos-universal + - name: Upload Artifact + uses: actions/upload-artifact@v3 + with: + name: macos-build + path: build_artifacts/*.zip + + release: + runs-on: ubuntu-latest + needs: [build-linux, build-macos] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Download Artifacts + uses: actions/download-artifact@v3 + with: + path: release_files + + - name: Get Date + run: echo "TAG_NAME=v$(date -u +'%Y%m%d-%H%M%S')" >> $GITHUB_ENV + + - name: Upload to Gitea + uses: akkuman/gitea-release-action@v1 + with: + token: ${{ secrets.TOKEN }} + prerelease: true + name: "Automated Build ${{ env.TAG_NAME }}" + tag_name: ${{ env.TAG_NAME }} + body: | + **Automated prerelease build** + Commit: ${{ github.sha }} + Triggered by: ${{ github.actor }} + files: release_files/**/*.zip \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 97b93e5..3dd4bbf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,21 +15,28 @@ set(VERSION_MICRO "0") # Add executable add_executable(bannertool -source/cmd.cpp -source/main.cpp -source/pc/stb_image.c -source/pc/stb_vorbis.c -source/pc/wav.cpp -source/3ds/cbmd.cpp -source/3ds/cwav.cpp -source/3ds/lz11.cpp) + source/cmd.cpp + source/main.cpp + source/pc/stb_image.c + source/pc/stb_vorbis.c + source/pc/wav.cpp + source/3ds/cbmd.cpp + source/3ds/cwav.cpp + source/3ds/lz11.cpp +) + # set include dirs target_include_directories(bannertool PUBLIC -source -source/3ds -source/pc) + source + source/3ds + source/pc +) + # define VERSION target_compile_definitions(bannertool PUBLIC --DVERSION_MAJOR=${VERSION_MAJOR} --DVERSION_MINOR=${VERSION_MINOR} --DVERSION_MICRO=${VERSION_MICRO}) \ No newline at end of file + -DVERSION_MAJOR=${VERSION_MAJOR} + -DVERSION_MINOR=${VERSION_MINOR} + -DVERSION_MICRO=${VERSION_MICRO} +) + +install(TARGETS bannertool DESTINATION bin) diff --git a/LICENSE.txt b/LICENSE.txt index e11e5ee..27d7d95 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,3 +1,4 @@ +Copyright (C) 2024-2025 tobid7 Copyright (C) 2015-2017 Steveice10 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: