feat: add Windows cross-compilation and release artifacts
- Add mkWindowsCraneLib using x86_64-pc-windows-gnu target - Add mkStreamdWindows using mingw-w64 toolchain for cross-compilation - Export streamd-windows package from flake - Add Windows build step and .exe artifact to release workflow
This commit is contained in:
parent
4ded06748b
commit
ca2ebd5949
2 changed files with 39 additions and 1 deletions
|
|
@ -49,12 +49,17 @@ jobs:
|
|||
if: steps.version.outputs.SKIP != 'true'
|
||||
run: nix build .#streamd-musl -o result-musl
|
||||
|
||||
- name: Build Windows binary
|
||||
if: steps.version.outputs.SKIP != 'true'
|
||||
run: nix build .#streamd-windows -o result-windows
|
||||
|
||||
- name: Prepare release artifacts
|
||||
if: steps.version.outputs.SKIP != 'true'
|
||||
run: |
|
||||
mkdir -p release
|
||||
cp result-deb release/streamd_${{ steps.version.outputs.VERSION }}_amd64.deb
|
||||
cp result-musl/bin/streamd release/streamd-${{ steps.version.outputs.VERSION }}-linux-x86_64
|
||||
cp result-windows/bin/streamd.exe release/streamd-${{ steps.version.outputs.VERSION }}-windows-x86_64.exe
|
||||
|
||||
- name: Create release
|
||||
if: steps.version.outputs.SKIP != 'true'
|
||||
|
|
|
|||
35
flake.nix
35
flake.nix
|
|
@ -132,6 +132,38 @@
|
|||
in
|
||||
craneLib.buildPackage (commonArgs // { inherit cargoArtifacts; });
|
||||
|
||||
mkWindowsCraneLib =
|
||||
system:
|
||||
let
|
||||
pkgs = mkPkgs system;
|
||||
toolchain = pkgs.rust-bin.stable.latest.default.override {
|
||||
targets = [ "x86_64-pc-windows-gnu" ];
|
||||
};
|
||||
in
|
||||
(crane.mkLib pkgs).overrideToolchain toolchain;
|
||||
|
||||
mkStreamdWindows =
|
||||
system:
|
||||
let
|
||||
pkgs = mkPkgs system;
|
||||
pkgsCross = pkgs.pkgsCross.mingwW64;
|
||||
craneLib = mkWindowsCraneLib system;
|
||||
commonArgs = {
|
||||
src = craneLib.path ./.;
|
||||
pname = "streamd";
|
||||
inherit version;
|
||||
strictDeps = true;
|
||||
CARGO_BUILD_TARGET = "x86_64-pc-windows-gnu";
|
||||
CC_x86_64_pc_windows_gnu = "${pkgsCross.stdenv.cc}/bin/x86_64-w64-mingw32-gcc";
|
||||
CARGO_TARGET_X86_64_PC_WINDOWS_GNU_LINKER = "${pkgsCross.stdenv.cc}/bin/x86_64-w64-mingw32-gcc";
|
||||
nativeBuildInputs = [ pkgsCross.stdenv.cc ];
|
||||
buildInputs = [ pkgsCross.windows.pthreads ];
|
||||
doCheck = false;
|
||||
};
|
||||
cargoArtifacts = craneLib.buildDepsOnly commonArgs;
|
||||
in
|
||||
craneLib.buildPackage (commonArgs // { inherit cargoArtifacts; });
|
||||
|
||||
mkStreamdDeb =
|
||||
system:
|
||||
let
|
||||
|
|
@ -181,9 +213,10 @@
|
|||
streamd = mkStreamd system;
|
||||
streamd-musl = mkStreamdMusl system;
|
||||
streamd-deb = mkStreamdDeb system;
|
||||
streamd-windows = mkStreamdWindows system;
|
||||
in
|
||||
{
|
||||
inherit streamd streamd-musl streamd-deb;
|
||||
inherit streamd streamd-musl streamd-deb streamd-windows;
|
||||
default = streamd;
|
||||
}
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue