From 4667b7349b4c1cf869648d341c16d37b280966e9 Mon Sep 17 00:00:00 2001 From: MeexReay Date: Mon, 10 Feb 2025 10:36:44 +0300 Subject: [PATCH] crosscompile --- .cargo/config.toml | 16 ++++++++++++++++ build_all.sh | 11 +++++++++++ shell.nix | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 .cargo/config.toml create mode 100644 build_all.sh create mode 100644 shell.nix diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 0000000..19597ae --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,16 @@ + +[target.i686-unknown-linux-gnu] +linker = "i686-unknown-linux-gnu-gcc" +ar = "i686-unknown-linux-gnu-ar" + +# [target.x86_64-unknown-linux-gnu] +# linker = "x86_64-unknown-linux-gnu-gcc" +# ar = "x86_64-unknown-linux-gnu-ar" + +[target.i686-pc-windows-gnu] +linker = "i686-w64-mingw32-gcc" +ar = "i686-w64-mingw32-ar" + +[target.x86_64-pc-windows-gnu] +linker = "x86_64-w64-mingw32-gcc" +ar = "x86_64-w64-mingw32-ar" \ No newline at end of file diff --git a/build_all.sh b/build_all.sh new file mode 100644 index 0000000..c438183 --- /dev/null +++ b/build_all.sh @@ -0,0 +1,11 @@ +#!/usr/bin/env bash +TARGETS=( + x86_64-unknown-linux-gnu + i686-unknown-linux-gnu + x86_64-pc-windows-gnu + i686-pc-windows-gnu +) +for TARGET in "${TARGETS[@]}"; do + cargo build --release --target "$TARGET" + echo "$TARGET" built +done \ No newline at end of file diff --git a/shell.nix b/shell.nix new file mode 100644 index 0000000..501d316 --- /dev/null +++ b/shell.nix @@ -0,0 +1,39 @@ +{ pkgs ? import {} }: + +let + # Переопределение для mingw32 + mingw32WithDwarf = pkgs.pkgsCross.mingw32.buildPackages.gcc.overrideAttrs (oldAttrs: { + configureFlags = [ + "--disable-sjlj-exceptions" + "--enable-dwarf2" + ]; + }); +in + +pkgs.mkShell { + buildInputs = with pkgs; [ + rustup + gcc_multi + pkg-config + zlib + openssl + + # Добавляем кросс-компиляторы + pkgsCross.gnu32.buildPackages.gcc + pkgsCross.gnu32.buildPackages.binutils + pkgsCross.gnu64.buildPackages.gcc + pkgsCross.gnu64.buildPackages.binutils + + # Переопределённый MinGW для 32-бит Windows + mingw32WithDwarf + + # Необходимые библиотеки для Windows + pkgsCross.mingw32.windows.pthreads + pkgsCross.mingw32.windows.mcfgthreads + + # 64-битный MinGW и необходимые библиотеки + pkgsCross.mingwW64.buildPackages.gcc + pkgsCross.mingwW64.windows.pthreads + pkgsCross.mingwW64.windows.mcfgthreads + ]; +} \ No newline at end of file