diff options
Diffstat (limited to 'nixpkgs/pkgs/development/tools/build-managers/wafHook')
-rw-r--r-- | nixpkgs/pkgs/development/tools/build-managers/wafHook/default.nix | 10 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/tools/build-managers/wafHook/setup-hook.sh | 75 |
2 files changed, 85 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..439350c3abc2 --- /dev/null +++ b/nixpkgs/pkgs/development/tools/build-managers/wafHook/setup-hook.sh @@ -0,0 +1,75 @@ +wafConfigurePhase() { + runHook preConfigure + + if ! [ -f "${wafPath:=./waf}" ]; then + echo "copying waf to $wafPath..." + cp @waf@/bin/waf "$wafPath" + fi + + if [ -z "${dontAddPrefix:-}" ] && [ -n "$prefix" ]; then + wafConfigureFlags="${prefixKey:---prefix=}$prefix $wafConfigureFlags" + fi + + local flagsArray=( + "${flagsArray[@]}" + $wafConfigureFlags "${wafConfigureFlagsArray[@]}" + ${configureTargets:-configure} + ) + if [ -z "${dontAddWafCrossFlags:-}" ]; then + flagsArray+=(@crossFlags@) + fi + echoCmd 'configure flags' "${flagsArray[@]}" + python "$wafPath" "${flagsArray[@]}" + + runHook postConfigure +} + +if [ -z "${dontUseWafConfigure-}" -a -z "${configurePhase-}" ]; then + configurePhase=wafConfigurePhase +fi + +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 +} + +if [ -z "${dontUseWafBuild-}" -a -z "${buildPhase-}" ]; then + buildPhase=wafBuildPhase +fi + +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 +} + +if [ -z "${dontUseWafInstall-}" -a -z "${installPhase-}" ]; then + installPhase=wafInstallPhase +fi |