summary refs log tree commit diff
path: root/pkgs/development/em-modules/generic/default.nix
diff options
context:
space:
mode:
authorJoachim Schiele <js@lastlog.de>2016-06-13 00:34:50 +0200
committerJoachim Schiele <js@lastlog.de>2016-07-04 12:02:37 +0200
commitc514693eb62539545745b71cb0ac52733a9966ad (patch)
tree1824702a466c7e9d8eefb493bc1f7094b1cd4e2c /pkgs/development/em-modules/generic/default.nix
parentc90242e657d46704d2d1b581693ffbe1aac205e3 (diff)
downloadnixpkgs-c514693eb62539545745b71cb0ac52733a9966ad.tar
nixpkgs-c514693eb62539545745b71cb0ac52733a9966ad.tar.gz
nixpkgs-c514693eb62539545745b71cb0ac52733a9966ad.tar.bz2
nixpkgs-c514693eb62539545745b71cb0ac52733a9966ad.tar.lz
nixpkgs-c514693eb62539545745b71cb0ac52733a9966ad.tar.xz
nixpkgs-c514693eb62539545745b71cb0ac52733a9966ad.tar.zst
nixpkgs-c514693eb62539545745b71cb0ac52733a9966ad.zip
adds support to build emscripten packages using nix:
example usage:

- nix-env -I nixpkgs=../somewhere/nixpkgs -f default.nix -iA emscriptenPackages.libxml2
- nix-env -I nixpkgs=../somewhere/nixpkgs -f default.nix -iA emscriptenPackages.json_c
- nix-env -I nixpkgs=../somewhere/nixpkgs -f default.nix -iA emscriptenPackages.zlib
- nix-env -I nixpkgs=../somewhere/nixpkgs -f default.nix -iA emscriptenPackages.xmlmirror
Diffstat (limited to 'pkgs/development/em-modules/generic/default.nix')
-rw-r--r--pkgs/development/em-modules/generic/default.nix59
1 files changed, 59 insertions, 0 deletions
diff --git a/pkgs/development/em-modules/generic/default.nix b/pkgs/development/em-modules/generic/default.nix
new file mode 100644
index 00000000000..16b8f1df595
--- /dev/null
+++ b/pkgs/development/em-modules/generic/default.nix
@@ -0,0 +1,59 @@
+{ pkgs, lib, emscripten }:
+
+{ buildInputs ? [], nativeBuildInputs ? []
+
+, enableParallelBuilding ? true
+
+, meta ? {}, ... } @ args:
+
+pkgs.stdenv.mkDerivation (
+  args // 
+  {
+
+  name = "emscripten-${args.name}";
+  buildInputs = [ emscripten ] ++ buildInputs;
+  nativeBuildInputs = [ emscripten ] ++ nativeBuildInputs;
+
+  # fake conftest results with emscripten's python magic
+  EMCONFIGURE_JS=2;
+
+  configurePhase = args.configurePhase or ''
+    # FIXME: Some tests require writing at $HOME
+    HOME=$TMPDIR
+    runHook preConfigure
+
+    # probably requires autotools as dependency
+    ./autogen.sh
+    emconfigure ./configure --prefix=$out
+
+    runHook postConfigure
+  '';
+
+  buildPhase = args.buildPhase or ''
+    runHook preBuild
+
+    HOME=$TMPDIR
+    emmake make
+
+    runHook postBuild
+  '';
+
+  checkPhase = args.checkPhase or ''
+    runHook preCheck
+
+    runHook postCheck
+  '';
+
+  enableParallelBuilding = args.enableParallelBuilding or true;
+
+  meta = {
+    # Add default meta information
+    platforms = lib.platforms.all;
+    # Do not build this automatically
+    hydraPlatforms = [];
+  } // meta // {
+    # add an extra maintainer to every package
+    maintainers = (meta.maintainers or []) ++
+                  [ lib.maintainers.qknight ];
+  };
+})