diff options
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; + }; + +} |