diff options
author | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-05-02T15·25+0000 |
---|---|---|
committer | Eelco Dolstra <e.dolstra@tudelft.nl> | 2005-05-02T15·25+0000 |
commit | 36fb29f8f0317144a0074d7b6689912a4dc40325 (patch) | |
tree | 026fb03a97ca8b40a04ab38fa29759dbb0a9081e /make/lib/default.nix | |
parent | 02f2da01426b338c75051397dcbdcb0c75913670 (diff) |
* Merge remaining stuff from the nix-make branch.
* Add support for the creation of shared libraries to `compileC', `link', and `makeLibrary'. * Enable the ATerm library to be made into a shared library.
Diffstat (limited to 'make/lib/default.nix')
-rw-r--r-- | make/lib/default.nix | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/make/lib/default.nix b/make/lib/default.nix new file mode 100644 index 000000000000..a5059252daa7 --- /dev/null +++ b/make/lib/default.nix @@ -0,0 +1,59 @@ +rec { + + # Should point at your Nixpkgs installation. + pkgPath = ./pkgs; + + pkgs = import (pkgPath + /system/all-packages.nix) {}; + + stdenv = pkgs.stdenv; + + + compileC = {main, localIncludes ? [], cFlags ? "", forSharedLib ? false}: + stdenv.mkDerivation { + name = "compile-c"; + builder = ./compile-c.sh; + localIncludes = + if localIncludes == "auto" then + import (findIncludes { + main = toString main; + hack = __currentTime; + inherit cFlags; + }) + else + localIncludes; + inherit main; + cFlags = [ + cFlags + (if forSharedLib then ["-fpic"] else []) + ]; + }; + + /* + runCommand = {command}: { + name = "run-command"; + builder = ./run-command.sh; + inherit command; + }; + */ + + findIncludes = {main, hack, cFlags ? ""}: stdenv.mkDerivation { + name = "find-includes"; + builder = ./find-includes.sh; + inherit main hack cFlags; + }; + + link = {objects, programName ? "program", libraries ? []}: stdenv.mkDerivation { + name = "link"; + builder = ./link.sh; + inherit objects programName libraries; + }; + + makeLibrary = {objects, libraryName ? [], sharedLib ? false}: + # assert sharedLib -> fold (obj: x: assert obj.sharedLib && x) false objects + stdenv.mkDerivation { + name = "library"; + builder = ./make-library.sh; + inherit objects libraryName sharedLib; + }; + +} |