diff options
Diffstat (limited to 'pkgs/build-support/dotnetenv/build-solution.nix')
-rw-r--r-- | pkgs/build-support/dotnetenv/build-solution.nix | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/pkgs/build-support/dotnetenv/build-solution.nix b/pkgs/build-support/dotnetenv/build-solution.nix new file mode 100644 index 000000000000..495f2f116ea4 --- /dev/null +++ b/pkgs/build-support/dotnetenv/build-solution.nix @@ -0,0 +1,61 @@ +{stdenv, dotnetfx}: +{ name +, src +, baseDir ? "." +, slnFile +, targets ? "ReBuild" +, verbosity ? "detailed" +, options ? "/p:Configuration=Debug;Platform=Win32" +, assemblyInputs ? [] +, runtimeAssemblies ? [] +, preBuild ? "" +}: + +stdenv.mkDerivation { + inherit name src preBuild; + + buildInputs = [ dotnetfx ]; + preConfigure = '' + cd ${baseDir} + ''; + + installPhase = '' + for i in ${toString assemblyInputs} + do + windowsPath=$(cygpath --windows $i) + echo "Using assembly path: $windowsPath" + + if [ "$assemblySearchPaths" = "" ] + then + assemblySearchPaths="$windowsPath" + else + assemblySearchPaths="$assemblySearchPaths;$windowsPath" + fi + done + + echo "Assembly search paths are: $assemblySearchPaths" + + if [ "$assemblySearchPaths" != "" ] + then + echo "Using assembly search paths args: $assemblySearchPathsArg" + export AssemblySearchPaths=$assemblySearchPaths + fi + + ensureDir $out + MSBuild.exe ${slnFile} /nologo /t:${targets} /p:IntermediateOutputPath=$(cygpath --windows $out)\\ /p:OutputPath=$(cygpath --windows $out)\\ /verbosity:${verbosity} ${options} + + # Create references to runtime dependencies + # !!! Should be more efficient (e.g. symlinking) + + for i in ${toString runtimeAssemblies} + do + cd $i + + for j in $(find . -type f) + do + mkdir -p $out/$(dirname $j) + cp $j $out/$(dirname $j) + done + done + ''; +} |