From 36fb29f8f0317144a0074d7b6689912a4dc40325 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 2 May 2005 15:25:28 +0000 Subject: * 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. --- make/lib/default.nix | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 make/lib/default.nix (limited to 'make/lib/default.nix') 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; + }; + +} -- cgit 1.4.1