aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/boost/Makefile.am8
-rw-r--r--src/boost/format/Makefile7
-rw-r--r--src/bsdiff-4.3/Makefile13
-rw-r--r--src/libexpr/Makefile20
-rw-r--r--src/libexpr/eval.cc23
-rw-r--r--src/libexpr/primops.cc1
-rw-r--r--src/libmain/Makefile11
-rw-r--r--src/libmain/shared.cc20
-rw-r--r--src/libstore/Makefile26
-rw-r--r--src/libstore/globals.cc2
-rw-r--r--src/libutil/Makefile15
-rw-r--r--src/nix-daemon/Makefile7
-rw-r--r--src/nix-env/Makefile7
-rw-r--r--src/nix-env/user-env.cc2
-rw-r--r--src/nix-hash/Makefile7
-rw-r--r--src/nix-instantiate/Makefile7
-rw-r--r--src/nix-log2xml/Makefile8
-rw-r--r--src/nix-store/Makefile9
18 files changed, 160 insertions, 33 deletions
diff --git a/src/boost/Makefile.am b/src/boost/Makefile.am
deleted file mode 100644
index 8b5aa25fb..000000000
--- a/src/boost/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-SUBDIRS = format
-
-nobase_pkginclude_HEADERS = assert.hpp checked_delete.hpp format.hpp \
- shared_ptr.hpp weak_ptr.hpp throw_exception.hpp \
- enable_shared_from_this.hpp \
- detail/shared_count.hpp detail/workaround.hpp
-
-pkgincludedir = ${includedir}/nix/boost
diff --git a/src/boost/format/Makefile b/src/boost/format/Makefile
new file mode 100644
index 000000000..17897fa59
--- /dev/null
+++ b/src/boost/format/Makefile
@@ -0,0 +1,7 @@
+LIBS += libformat
+
+libformat_NAME = libnixformat
+
+libformat_DIR := $(d)
+
+libformat_SOURCES := $(wildcard $(d)/*.cc)
diff --git a/src/bsdiff-4.3/Makefile b/src/bsdiff-4.3/Makefile
new file mode 100644
index 000000000..aca1ac116
--- /dev/null
+++ b/src/bsdiff-4.3/Makefile
@@ -0,0 +1,13 @@
+PROGRAMS += bsdiff bspatch
+
+bsdiff_DIR := $(d)
+bsdiff_SOURCES := $(d)/bsdiff.c
+bsdiff_LDFLAGS = -lbz2 $(bsddiff_compat_include)
+bsdiff_INSTALL_DIR = $(libexecdir)/nix
+
+bspatch_DIR := $(d)
+bspatch_SOURCES := $(d)/bspatch.c
+bspatch_LDFLAGS = -lbz2 $(bsddiff_compat_include)
+bspatch_INSTALL_DIR = $(libexecdir)/nix
+
+dist_files += $(d)/compat-include/*
diff --git a/src/libexpr/Makefile b/src/libexpr/Makefile
new file mode 100644
index 000000000..de276aa65
--- /dev/null
+++ b/src/libexpr/Makefile
@@ -0,0 +1,20 @@
+LIBS += libexpr
+
+libexpr_NAME = libnixexpr
+
+libexpr_DIR := $(d)
+
+libexpr_SOURCES := $(wildcard $(d)/*.cc) $(d)/lexer-tab.cc $(d)/parser-tab.cc
+
+libexpr_LIBS = libutil libstore libformat
+
+# The dependency on libgc must be propagated (i.e. meaning that
+# programs/libraries that use libexpr must explicitly pass -lgc),
+# because inline functions in libexpr's header files call libgc.
+libexpr_LDFLAGS_PROPAGATED = $(BDW_GC_LIBS)
+
+$(d)/parser-tab.cc $(d)/parser-tab.hh: $(d)/parser.y
+ bison -v -o $(libexpr_DIR)/parser-tab.cc $< -d
+
+$(d)/lexer-tab.cc $(d)/lexer-tab.hh: $(d)/lexer.l
+ flex --outfile $(libexpr_DIR)/lexer-tab.cc --header-file=$(libexpr_DIR)/lexer-tab.hh $<
diff --git a/src/libexpr/eval.cc b/src/libexpr/eval.cc
index 3d8ee9934..2087c7c43 100644
--- a/src/libexpr/eval.cc
+++ b/src/libexpr/eval.cc
@@ -129,7 +129,15 @@ string showType(const Value & v)
}
-Symbol getName(const AttrName & name, EvalState & state, Env & env) {
+/* Called when the Boehm GC runs out of memory. */
+static void * oomHandler(size_t requested)
+{
+ /* Convert this to a proper C++ exception. */
+ throw std::bad_alloc();
+}
+
+
+static Symbol getName(const AttrName & name, EvalState & state, Env & env) {
if (name.symbol.set()) {
return name.symbol;
} else {
@@ -168,8 +176,16 @@ EvalState::EvalState()
countCalls = getEnv("NIX_COUNT_CALLS", "0") != "0";
#if HAVE_BOEHMGC
- static bool gcInitialised = true;
- if (gcInitialised) {
+ static bool gcInitialised = false;
+ if (!gcInitialised) {
+
+ /* Initialise the Boehm garbage collector. This isn't
+ necessary on most platforms, but for portability we do it
+ anyway. */
+ GC_INIT();
+
+ GC_oom_fn = oomHandler;
+
/* Set the initial heap size to something fairly big (25% of
physical RAM, up to a maximum of 384 MiB) so that in most
cases we don't need to garbage collect at all. (Collection
@@ -193,6 +209,7 @@ EvalState::EvalState()
debug(format("setting initial heap size to %1% bytes") % size);
GC_expand_hp(size);
}
+
gcInitialised = true;
}
#endif
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index 4f836e279..ca316f08a 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -1322,6 +1322,7 @@ void EvalState::createBaseEnv()
/* Add a wrapper around the derivation primop that computes the
`drvPath' and `outPath' attributes lazily. */
string path = findFile("nix/derivation.nix");
+ assert(!path.empty());
sDerivationNix = symbols.create(path);
evalFile(path, v);
addConstant("derivation", v);
diff --git a/src/libmain/Makefile b/src/libmain/Makefile
new file mode 100644
index 000000000..0efeee531
--- /dev/null
+++ b/src/libmain/Makefile
@@ -0,0 +1,11 @@
+LIBS += libmain
+
+libmain_NAME = libnixmain
+
+libmain_DIR := $(d)
+
+libmain_SOURCES := $(wildcard $(d)/*.cc)
+
+libmain_LIBS = libstore libutil libformat
+
+libmain_ALLOW_UNDEFINED = 1
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 999b50238..fb70cb076 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -15,10 +15,6 @@
#include <unistd.h>
#include <signal.h>
-#if HAVE_BOEHMGC
-#include <gc/gc.h>
-#endif
-
namespace nix {
@@ -236,14 +232,6 @@ static void initAndRun(int argc, char * * argv)
}
-/* Called when the Boehm GC runs out of memory. */
-static void * oomHandler(size_t requested)
-{
- /* Convert this to a proper C++ exception. */
- throw std::bad_alloc();
-}
-
-
void showManPage(const string & name)
{
string cmd = "man " + name;
@@ -273,14 +261,6 @@ int main(int argc, char * * argv)
std::ios::sync_with_stdio(false);
-#if HAVE_BOEHMGC
- /* Initialise the Boehm garbage collector. This isn't necessary
- on most platforms, but for portability we do it anyway. */
- GC_INIT();
-
- GC_oom_fn = oomHandler;
-#endif
-
try {
try {
initAndRun(argc, argv);
diff --git a/src/libstore/Makefile b/src/libstore/Makefile
new file mode 100644
index 000000000..dcedd4c26
--- /dev/null
+++ b/src/libstore/Makefile
@@ -0,0 +1,26 @@
+LIBS += libstore
+
+libstore_NAME = libnixstore
+
+libstore_DIR := $(d)
+
+libstore_SOURCES := $(wildcard $(d)/*.cc)
+
+libstore_LIBS = libutil libformat
+
+libstore_LDFLAGS = -lsqlite3 -lbz2
+
+libstore_CXXFLAGS = \
+ -DNIX_STORE_DIR=\"$(storedir)\" \
+ -DNIX_DATA_DIR=\"$(datadir)\" \
+ -DNIX_STATE_DIR=\"$(localstatedir)/nix\" \
+ -DNIX_LOG_DIR=\"$(localstatedir)/log/nix\" \
+ -DNIX_CONF_DIR=\"$(sysconfdir)/nix\" \
+ -DNIX_LIBEXEC_DIR=\"$(libexecdir)\" \
+ -DNIX_BIN_DIR=\"$(bindir)\" \
+ -DPACKAGE_VERSION=\"$(PACKAGE_VERSION)\"
+
+$(d)/local-store.cc: $(d)/schema.sql.hh
+
+%.sql.hh: %.sql
+ sed -e 's/"/\\"/g' -e 's/\(.*\)/"\1\\n"/' < $< > $@ || (rm $@ && exit 1)
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc
index 1ecc629cb..68add1982 100644
--- a/src/libstore/globals.cc
+++ b/src/libstore/globals.cc
@@ -212,7 +212,7 @@ Settings::SettingsMap Settings::getOverrides()
}
-const string nixVersion = NIX_VERSION;
+const string nixVersion = PACKAGE_VERSION;
}
diff --git a/src/libutil/Makefile b/src/libutil/Makefile
new file mode 100644
index 000000000..83bd05f28
--- /dev/null
+++ b/src/libutil/Makefile
@@ -0,0 +1,15 @@
+LIBS += libutil
+
+libutil_NAME = libnixutil
+
+libutil_DIR := $(d)
+
+libutil_SOURCES := $(wildcard $(d)/*.cc)
+
+ifeq ($(HAVE_OPENSSL), 1)
+ libutil_LDFLAGS = $(OPENSSL_LIBS)
+else
+ libutil_SOURCES += $(d)/md5.c $(d)/sha1.c $(d)/sha256.c
+endif
+
+libutil_LIBS = libformat
diff --git a/src/nix-daemon/Makefile b/src/nix-daemon/Makefile
new file mode 100644
index 000000000..f6bc9ea31
--- /dev/null
+++ b/src/nix-daemon/Makefile
@@ -0,0 +1,7 @@
+PROGRAMS += nix-daemon
+
+nix-daemon_DIR := $(d)
+
+nix-daemon_SOURCES := $(d)/nix-daemon.cc
+
+nix-daemon_LIBS = libmain libstore libutil libformat
diff --git a/src/nix-env/Makefile b/src/nix-env/Makefile
new file mode 100644
index 000000000..5a38d2fb7
--- /dev/null
+++ b/src/nix-env/Makefile
@@ -0,0 +1,7 @@
+PROGRAMS += nix-env
+
+nix-env_DIR := $(d)
+
+nix-env_SOURCES := $(wildcard $(d)/*.cc)
+
+nix-env_LIBS = libexpr libmain libstore libutil libformat
diff --git a/src/nix-env/user-env.cc b/src/nix-env/user-env.cc
index c2dab4f0c..3a73f2647 100644
--- a/src/nix-env/user-env.cc
+++ b/src/nix-env/user-env.cc
@@ -1,5 +1,5 @@
+#include "user-env.hh"
#include "util.hh"
-#include "get-drvs.hh"
#include "derivations.hh"
#include "store-api.hh"
#include "globals.hh"
diff --git a/src/nix-hash/Makefile b/src/nix-hash/Makefile
new file mode 100644
index 000000000..062e4d13b
--- /dev/null
+++ b/src/nix-hash/Makefile
@@ -0,0 +1,7 @@
+PROGRAMS += nix-hash
+
+nix-hash_DIR := $(d)
+
+nix-hash_SOURCES := $(d)/nix-hash.cc
+
+nix-hash_LIBS = libmain libstore libutil libformat
diff --git a/src/nix-instantiate/Makefile b/src/nix-instantiate/Makefile
new file mode 100644
index 000000000..daa741eb7
--- /dev/null
+++ b/src/nix-instantiate/Makefile
@@ -0,0 +1,7 @@
+PROGRAMS += nix-instantiate
+
+nix-instantiate_DIR := $(d)
+
+nix-instantiate_SOURCES := $(d)/nix-instantiate.cc
+
+nix-instantiate_LIBS = libexpr libmain libstore libutil libformat
diff --git a/src/nix-log2xml/Makefile b/src/nix-log2xml/Makefile
new file mode 100644
index 000000000..8467d1973
--- /dev/null
+++ b/src/nix-log2xml/Makefile
@@ -0,0 +1,8 @@
+PROGRAMS += nix-log2xml
+
+nix-log2xml_DIR := $(d)
+
+nix-log2xml_SOURCES := $(d)/log2xml.cc
+
+$(foreach file, mark-errors.xsl log2html.xsl treebits.js, \
+ $(eval $(call install-data-in, $(d)/$(file), $(datadir)/nix/log2html)))
diff --git a/src/nix-store/Makefile b/src/nix-store/Makefile
new file mode 100644
index 000000000..edd111b42
--- /dev/null
+++ b/src/nix-store/Makefile
@@ -0,0 +1,9 @@
+PROGRAMS += nix-store
+
+nix-store_DIR := $(d)
+
+nix-store_SOURCES := $(wildcard $(d)/*.cc)
+
+nix-store_LIBS = libmain libstore libutil libformat
+
+nix-store_LDFLAGS = -lbz2