Files
mist/.gitlab-ci.yml

151 lines
5.0 KiB
YAML

stages:
- build
- package
image: $CI_SERVER_HOST:5050/libretro-steam/rust-build-image:cross
.build-common:
stage: build
needs:
- project: libretro-steam/steamworks
job: package
ref: v1.65
artifacts: true
script: &build_common_script
- echo building for $RUST_TARGET
- STEAMWORKS_SDK="$(pwd)/steamworks" cargo build --release --target=$RUST_TARGET --bin mist --features=mist-bin
- cargo build --release --target=$RUST_TARGET --lib --package mist
build-linux-arm64:
image: $CI_SERVER_HOST:5050/libretro-steam/rust-build-image:latest
extends: .build-common
artifacts:
paths:
- mist-linux-arm64
expire_in: 1 hour
variables:
RUST_TARGET: aarch64-unknown-linux-gnu
script:
- *build_common_script
- mkdir -p mist-linux-arm64/mist
- cp ./target/$RUST_TARGET/release/libmist.so ./mist-linux-arm64
- cp ./target/$RUST_TARGET/release/mist ./mist-linux-arm64/mist
- cp ./steamworks/redistributable_bin/linuxarm64/libsteam_api.so ./mist-linux-arm64/mist
build-linux-x64:
image: $CI_SERVER_HOST:5050/libretro-steam/rust-build-image:latest
extends: .build-common
artifacts:
paths:
- mist-linux-x64
expire_in: 1 hour
variables:
RUST_TARGET: x86_64-unknown-linux-gnu
script:
- *build_common_script
- mkdir -p mist-linux-x64/mist
- cp ./target/$RUST_TARGET/release/libmist.so ./mist-linux-x64
- cp ./target/$RUST_TARGET/release/mist ./mist-linux-x64/mist
- cp ./steamworks/redistributable_bin/linux64/libsteam_api.so ./mist-linux-x64/mist
.build-osx-common:
extends: .build-common
script: &build_osx_common_script
- *build_common_script
- mkdir -p $MIST_PATH/mist
- cp ./target/$RUST_TARGET/release/libmist.dylib ./$MIST_PATH/
- cp ./target/$RUST_TARGET/release/mist ./$MIST_PATH/mist/
- cp ./steamworks/redistributable_bin/osx/libsteam_api.dylib ./$MIST_PATH/mist/
build-osx-arm64:
extends: .build-osx-common
image: $CI_SERVER_HOST:5050/libretro-steam/rust-build-image:osx-aarch64
artifacts:
paths:
- mist-osx-arm64
expire_in: 1 hour
variables:
RUST_TARGET: aarch64-apple-darwin
MIST_PATH: mist-osx-arm64
script:
- export LINKER_FILE="/osxcross/target/bin/arm64-apple-${TOOLCHAIN_VERSION}-clang"
- export CARGO_TARGET_AARCH64_APPLE_DARWIN_LINKER="${LINKER_FILE}"
- *build_osx_common_script
build-osx-x64:
extends: .build-osx-common
image: $CI_SERVER_HOST:5050/libretro-steam/rust-build-image:osx
artifacts:
paths:
- mist-osx-x64
expire_in: 1 hour
variables:
RUST_TARGET: x86_64-apple-darwin
MIST_PATH: mist-osx-x64
MACOSX_DEPLOYMENT_TARGET: "10.12"
script:
- export LINKER_FILE="/osxcross/target/bin/x86_64-apple-${TOOLCHAIN_VERSION}-clang"
- export CARGO_TARGET_X86_64_APPLE_DARWIN_LINKER="${LINKER_FILE}"
- *build_osx_common_script
build-windows-x64:
extends: .build-common
artifacts:
paths:
- mist-windows-x64
expire_in: 1 hour
variables:
RUST_TARGET: x86_64-pc-windows-gnu
script:
- *build_common_script
- mkdir -p ./mist-windows-x64/mist
- cp ./target/$RUST_TARGET/release/mist.dll ./mist-windows-x64
- cp ./target/$RUST_TARGET/release/mist.exe ./mist-windows-x64/mist
- cp ./steamworks/redistributable_bin/win64/steam_api64.dll ./mist-windows-x64/mist
package:
stage: package
needs:
- job: build-windows-x64
artifacts: true
- job: build-linux-arm64
artifacts: true
- job: build-linux-x64
artifacts: true
- job: build-osx-x64
artifacts: true
- job: build-osx-arm64
artifacts: true
artifacts:
paths:
- mist
expire_in: 1 hour
script:
# Generate third party licenses
- cargo install --version 0.6.4 --locked cargo-about
- cargo about generate about.hbs > ./mist-ThirdPartyLicenses.txt
- rm -rf mist/ && mkdir -p mist/
# Linux
- cp -r ./mist-linux-arm64 ./mist/
- cp -r ./include ./mist/mist-linux-arm64
- cp ./LICENSE ./mist/mist-linux-arm64/mist/mist-LICENSE.txt
- cp ./mist-ThirdPartyLicenses.txt ./mist/mist-linux-arm64/mist/
- cp -r ./mist-linux-x64 ./mist/
- cp -r ./include ./mist/mist-linux-x64
- cp ./LICENSE ./mist/mist-linux-x64/mist/mist-LICENSE.txt
- cp ./mist-ThirdPartyLicenses.txt ./mist/mist-linux-x64/mist/
# Mac
- mkdir -p ./mist/mist-osx/mist/
- cp -r ./include ./mist/mist-osx
- llvm-lipo-19 -create -output ./mist/mist-osx/libmist.dylib ./mist-osx-arm64/libmist.dylib ./mist-osx-x64/libmist.dylib
# the libsteam_api.dylib is already universal
- cp ./mist-osx-x64/mist/libsteam_api.dylib ./mist/mist-osx/mist/
- llvm-lipo-19 -create -output ./mist/mist-osx/mist/mist ./mist-osx-arm64/mist/mist ./mist-osx-x64/mist/mist
- cp ./LICENSE ./mist/mist-osx/mist/mist-LICENSE.txt
- cp ./mist-ThirdPartyLicenses.txt ./mist/mist-osx/mist/
# Windows
- cp -r ./mist-windows-x64 ./mist/
- cp -r ./include ./mist/mist-windows-x64
- cp ./LICENSE ./mist/mist-windows-x64/mist/mist-LICENSE.txt
- cp ./mist-ThirdPartyLicenses.txt ./mist/mist-windows-x64/mist/