about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2012-05-21T13·37-0400
committerEelco Dolstra <eelco.dolstra@logicblox.com>2012-05-21T13·43-0400
commite071f87dc5476983c557cf6185fbdeab0c4c67c5 (patch)
tree29b7e65c3fc2a2737cffd8d823a6f1d5cf25576a
parentcac9eb39fe36ab28519f0b59d880fbcdc705ba95 (diff)
Add an experimental nix-make file
To use it, just do (e.g.) "nix-build build.nix -A nix_env".
-rw-r--r--build.nix169
1 files changed, 169 insertions, 0 deletions
diff --git a/build.nix b/build.nix
new file mode 100644
index 000000000000..5f10f3e910ce
--- /dev/null
+++ b/build.nix
@@ -0,0 +1,169 @@
+with import <nix-make/lib>;
+with pkgs;
+
+rec {
+
+  bin2c = link {
+    objects = [ (compileC { main = ./src/bin2c/bin2c.c; }) ];
+    programName = "bin2c";
+  };
+
+  bsdiff = link {
+    objects = [ (compileC { main = ./src/bsdiff-4.3/bsdiff.c; buildInputs = [ pkgs.bzip2 ]; }) ];
+    programName = "bsdiff";
+    buildInputs = [ pkgs.bzip2 ];
+    flags = "-lbz2";
+  };
+
+  bspatch = link {
+    objects = [ (compileC { main = ./src/bsdiff-4.3/bspatch.c; buildInputs = [ pkgs.bzip2 ]; }) ];
+    programName = "bspatch";
+    buildInputs = [ pkgs.bzip2 ];
+    flags = "-lbz2";
+  };
+
+  libformat = makeLibrary {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src ];
+      })
+      [ ./src/boost/format/format_implementation.cc
+        ./src/boost/format/free_funcs.cc
+        ./src/boost/format/parsing.cc
+      ];
+    libraryName = "format";
+  };
+
+  libutil = makeLibrary {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/libutil ./src ./. ];
+        buildInputs = [ pkgs.openssl ];
+      })
+      [ ./src/libutil/util.cc
+        ./src/libutil/hash.cc
+        ./src/libutil/serialise.cc
+        ./src/libutil/archive.cc
+        ./src/libutil/xml-writer.cc
+        ./src/libutil/immutable.cc
+      ];
+    libraryName = "util";
+  };
+
+  libstore = makeLibrary {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/libstore ./src/libutil ./src ./. ];
+        buildInputs = [ pkgs.sqlite ];
+        cFlags = "-DNIX_STORE_DIR=\"/nix/store\" -DNIX_DATA_DIR=\"/home/eelco/Dev/nix/inst/share\" -DNIX_STATE_DIR=\"/nix/var/nix\" -DNIX_LOG_DIR=\"/foo\" -DNIX_CONF_DIR=\"/foo\" -DNIX_LIBEXEC_DIR=\"/foo\" -DNIX_BIN_DIR=\"/home/eelco/Dev/nix/inst/bin\"";
+      })
+      [ ./src/libstore/store-api.cc
+        ./src/libstore/local-store.cc
+        ./src/libstore/remote-store.cc
+        ./src/libstore/derivations.cc
+        ./src/libstore/build.cc
+        ./src/libstore/misc.cc
+        ./src/libstore/globals.cc
+        ./src/libstore/references.cc
+        ./src/libstore/pathlocks.cc
+        ./src/libstore/gc.cc
+        ./src/libstore/optimise-store.cc
+      ];
+    libraryName = "store";
+  };
+
+  libmain = makeLibrary {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
+      })
+      [ ./src/libmain/shared.cc ];
+    libraryName = "main";
+  };
+
+  nix_hash = link {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/nix-hash ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
+      })
+      [ ./src/nix-hash/nix-hash.cc
+      ];
+    libraries = [ libformat libutil libstore libmain ];
+    buildInputs = [ pkgs.openssl pkgs.sqlite ];
+    flags = "-lssl -lsqlite3 -lstdc++";
+    programName = "nix-hash";
+  };
+
+  nix_store = link {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/nix-store ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
+      })
+      [ ./src/nix-store/nix-store.cc
+        ./src/nix-store/dotgraph.cc
+        ./src/nix-store/xmlgraph.cc
+      ];
+    libraries = [ libformat libutil libstore libmain ];
+    buildInputs = [ pkgs.openssl pkgs.sqlite ];
+    flags = "-lssl -lsqlite3 -lstdc++";
+    programName = "nix-store";
+  };
+
+  libexpr = makeLibrary {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/libexpr ./src/libstore ./src/libutil ./src ./. ];
+      })
+      [ ./src/libexpr/nixexpr.cc
+        ./src/libexpr/eval.cc
+        ./src/libexpr/primops.cc
+        ./src/libexpr/lexer-tab.cc
+        ./src/libexpr/parser-tab.cc
+        ./src/libexpr/get-drvs.cc
+        ./src/libexpr/attr-path.cc
+        ./src/libexpr/value-to-xml.cc
+        ./src/libexpr/common-opts.cc
+        ./src/libexpr/names.cc
+      ];
+    libraryName = "expr";
+  };
+
+  nix_instantiate = link {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/nix-instantiate ./src/libexpr ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
+      })
+      [ ./src/nix-instantiate/nix-instantiate.cc ];
+    libraries = [ libformat libutil libstore libmain libexpr ];
+    buildInputs = [ pkgs.openssl pkgs.sqlite ];
+    flags = "-lssl -lsqlite3 -lstdc++";
+    programName = "nix-instantiate";
+  };
+
+  nix_env = link {
+    objects =
+      map (fn: compileC {
+        main = fn;
+        localIncludePath = [ ./src/nix-env ./src/libexpr ./src/libmain ./src/libstore ./src/libutil ./src ./. ];
+      })
+      [ ./src/nix-env/nix-env.cc
+        ./src/nix-env/profiles.cc
+        ./src/nix-env/user-env.cc
+      ];
+    libraries = [ libformat libutil libstore libmain libexpr ];
+    buildInputs = [ pkgs.openssl pkgs.sqlite ];
+    flags = "-lssl -lsqlite3 -lstdc++";
+    programName = "nix-env";
+  };
+
+  all = [ bsdiff bspatch nix_hash nix_store nix_instantiate nix_env ];
+
+}