diff options
Diffstat (limited to 'nixpkgs/pkgs/development/em-modules')
-rw-r--r-- | nixpkgs/pkgs/development/em-modules/generic/default.nix | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/em-modules/generic/default.nix b/nixpkgs/pkgs/development/em-modules/generic/default.nix new file mode 100644 index 000000000000..f03e6e42739a --- /dev/null +++ b/nixpkgs/pkgs/development/em-modules/generic/default.nix @@ -0,0 +1,66 @@ +{ pkgs, lib, emscripten, python }: + +{ buildInputs ? [], nativeBuildInputs ? [] + +, enableParallelBuilding ? true + +, meta ? {}, ... } @ args: + +pkgs.stdenv.mkDerivation ( + args // + { + + name = "emscripten-${args.name}"; + buildInputs = [ emscripten python ] ++ buildInputs; + nativeBuildInputs = [ emscripten python ] ++ 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 + + emconfigure ./configure --prefix=$out + + runHook postConfigure + ''; + + buildPhase = args.buildPhase or '' + runHook preBuild + + HOME=$TMPDIR + emmake make + + runHook postBuild + ''; + + doCheck = true; + + checkPhase = args.checkPhase or '' + runHook preCheck + + echo "Please provide a test for your emscripten based library/tool, see libxml2 as an exmple on how to use emcc/node to verify your build" + echo "" + echo "In normal C 'unresolved symbols' would yield an error and a breake of execution. In contrast, in emscripten they are only a warning which is ok given that emscripten assumptions about shared libraries." + echo " -> https://github.com/kripken/emscripten/wiki/Linking" + echo "So just assume the dependencies were built using hydra, then YOU WILL NEVER see the warning and your code depending on a library will always fail!" + exit 1 + + 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 ]; + }; +}) |