summary refs log tree commit diff
path: root/pkgs/build-support/dotnetenv/build-solution.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/build-support/dotnetenv/build-solution.nix')
-rw-r--r--pkgs/build-support/dotnetenv/build-solution.nix61
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
+  '';
+}