diff --git a/flake.nix b/flake.nix index 3cc3a317..b7071531 100644 --- a/flake.nix +++ b/flake.nix @@ -137,6 +137,7 @@ hydraJobs = { inherit (packages.x86_64-linux) llvm-nac3 nac3artiq; llvm-nac3-msys2 = packages.x86_64-w64-mingw32.llvm-nac3; + nac3artiq-msys2 = packages.x86_64-w64-mingw32.nac3artiq; }; }; diff --git a/windows/default.nix b/windows/default.nix index 19b4ab26..6e8a9c6f 100644 --- a/windows/default.nix +++ b/windows/default.nix @@ -7,8 +7,31 @@ let phases = [ "installPhase" ]; installPhase = (pkgs.lib.strings.concatStringsSep "\n" (["mkdir $out"] ++ (map (p: "tar xvf ${p} -C $out") srcs))); }; -in -{ + silenceFontconfig = # silence flood of "Fontconfig error: Cannot load default config file: No such file: (null)" + '' + export FONTCONFIG_PATH=$HOME/fonts + mkdir $FONTCONFIG_PATH + cat > $FONTCONFIG_PATH/fonts.conf << EOF + + + EOF + ''; + pyo3-mingw-config = pkgs.writeTextFile { + name = "pyo3-mingw-config"; + text = + '' + implementation=CPython + version=3.9 + shared=true + abi3=false + lib_name=python3.9 + lib_dir=${msys2-env}/mingw64/lib + pointer_width=64 + build_flags=WITH_THREAD + suppress_build_script_link_lines=false + ''; + }; +in rec { llvm-nac3 = pkgs.stdenvNoCC.mkDerivation rec { name = "llvm-nac3-msys2"; src-llvm = pkgs.fetchurl { @@ -37,15 +60,7 @@ in export HOME=`mktemp -d` export WINEDEBUG=-all export WINEPATH=${msys2-env}/mingw64/bin - - # silence flood of "Fontconfig error: Cannot load default config file: No such file: (null)" - export FONTCONFIG_PATH=$HOME/fonts - mkdir $FONTCONFIG_PATH - cat > $FONTCONFIG_PATH/fonts.conf << EOF - - - EOF - + ${silenceFontconfig} mkdir build cd build wine64 cmake .. -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_UNWIND_TABLES=OFF -DLLVM_ENABLE_THREADS=OFF -DLLVM_TARGETS_TO_BUILD=X86\;ARM\;RISCV -DLLVM_LINK_LLVM_DYLIB=OFF -DLLVM_ENABLE_FFI=OFF -DLLVM_ENABLE_LIBXML2=OFF -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_INSTALL_PREFIX=$out @@ -59,4 +74,20 @@ in wine64 ninja install ''; }; + nac3artiq = pkgs.rustPlatform.buildRustPackage { + name = "nac3artiq"; + src = ../.; + cargoLock = { lockFile = ../Cargo.lock; }; + doCheck = false; + nativeBuildInputs = [ pkgs.wineWowPackages.stable ]; + buildPhase = + '' + export HOME=`mktemp -d` + export WINEDEBUG=-all + export WINEPATH=${msys2-env}/mingw64/bin + ${silenceFontconfig} + export PYO3_CONFIG_FILE=Z:${pyo3-mingw-config} + wine64 cargo build --release -p nac3artiq + ''; + }; }