summary refs log tree commit diff
path: root/pkgs/development/em-modules/generic/default.nix
diff options
context:
space:
mode:
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 ];
+  };
+})