about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/tools/build-managers/wafHook
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-07-14 15:50:11 +0000
committerAlyssa Ross <hi@alyssa.is>2019-08-14 00:01:17 +0000
commit69a15dd2dc85051ba1436613805f9286850e0596 (patch)
treed53cec2bb5b8d07df1d1919b212cb2deb3628cd6 /nixpkgs/pkgs/development/tools/build-managers/wafHook
parent6941276da135c3eb3b50e0be33d92e7d01ccba9a (diff)
parentbeff2f8d75ef2c65017fb25e251337c6bb2e950d (diff)
downloadnixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.gz
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.bz2
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.lz
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.xz
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.tar.zst
nixlib-69a15dd2dc85051ba1436613805f9286850e0596.zip
Merge commit 'beff2f8d75ef2c65017fb25e251337c6bb2e950d'
v#	modified:   nixpkgs/pkgs/tools/networking/dhcpcd/default.nix
Diffstat (limited to 'nixpkgs/pkgs/development/tools/build-managers/wafHook')
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/wafHook/default.nix10
-rw-r--r--nixpkgs/pkgs/development/tools/build-managers/wafHook/setup-hook.sh65
2 files changed, 75 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/tools/build-managers/wafHook/default.nix b/nixpkgs/pkgs/development/tools/build-managers/wafHook/default.nix
new file mode 100644
index 000000000000..4184bd5fe8cd
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/build-managers/wafHook/default.nix
@@ -0,0 +1,10 @@
+{ lib, stdenv, pkgs, python, makeSetupHook, waf }:
+
+makeSetupHook {
+  deps = [ python ];
+  substitutions = {
+    inherit waf;
+    crossFlags = lib.optionalString (stdenv.hostPlatform.system != stdenv.targetPlatform.system)
+      ''--cross-compile "--cross-execute=${stdenv.targetPlatform.emulator pkgs}"'';
+  };
+} ./setup-hook.sh
diff --git a/nixpkgs/pkgs/development/tools/build-managers/wafHook/setup-hook.sh b/nixpkgs/pkgs/development/tools/build-managers/wafHook/setup-hook.sh
new file mode 100644
index 000000000000..3da86d3201f5
--- /dev/null
+++ b/nixpkgs/pkgs/development/tools/build-managers/wafHook/setup-hook.sh
@@ -0,0 +1,65 @@
+wafConfigurePhase() {
+    runHook preConfigure
+
+    if ! [ -f "${wafPath:=./waf}" ]; then
+        echo "copying waf to $wafPath..."
+        cp @waf@ "$wafPath"
+    fi
+
+    if [ -z "${dontAddPrefix:-}" ] && [ -n "$prefix" ]; then
+        wafConfigureFlags="${prefixKey:---prefix=}$prefix $wafConfigureFlags"
+    fi
+
+    local flagsArray=(
+        @crossFlags@
+        "${flagsArray[@]}"
+        $wafConfigureFlags "${wafConfigureFlagsArray[@]}"
+        ${configureTargets:-configure}
+    )
+    echoCmd 'configure flags' "${flagsArray[@]}"
+    python "$wafPath" "${flagsArray[@]}"
+
+    runHook postConfigure
+}
+
+wafBuildPhase () {
+    runHook preBuild
+
+    # set to empty if unset
+    : ${wafFlags=}
+
+    local flagsArray=(
+      ${enableParallelBuilding:+-j ${NIX_BUILD_CORES}}
+      $wafFlags ${wafFlagsArray[@]}
+      $buildFlags ${buildFlagsArray[@]}
+      ${buildTargets:-build}
+    )
+
+    echoCmd 'build flags' "${flagsArray[@]}"
+    python "$wafPath" "${flagsArray[@]}"
+
+    runHook postBuild
+}
+
+wafInstallPhase() {
+    runHook preInstall
+
+    if [ -n "$prefix" ]; then
+        mkdir -p "$prefix"
+    fi
+
+    local flagsArray=(
+        $wafFlags ${wafFlagsArray[@]}
+        $installFlags ${installFlagsArray[@]}
+	${installTargets:-install}
+    )
+
+    echoCmd 'install flags' "${flagsArray[@]}"
+    python "$wafPath" "${flagsArray[@]}"
+
+    runHook postInstall
+}
+
+configurePhase=wafConfigurePhase
+buildPhase=wafBuildPhase
+installPhase=wafInstallPhase