summary refs log tree commit diff
path: root/nix/local.mk
diff options
context:
space:
mode:
authorMathieu Lirzin <mthl@gnu.org>2016-04-21 18:07:52 +0200
committerMathieu Lirzin <mthl@gnu.org>2016-04-21 18:47:50 +0200
commit03d0e2d2b9f9cc3be8e871842c11df9453e903bd (patch)
treea7cf97b70bf769217609beff73ec0c073d3f57f8 /nix/local.mk
parentdc9bdb1e2730589ff7c2ec5f1e601f4262eac9d6 (diff)
downloadguix-03d0e2d2b9f9cc3be8e871842c11df9453e903bd.tar.gz
build: Move 'Makefile' fragments to subdirectories.
This follows a convention used by some other GNU packages like Autoconf,
Bison, Coreutils, and Gnulib.

* doc.am: Rename to ...
* doc/local.mk: ... this.
* emacs.am: Rename to ...
* emacs/local.mk: ... this.
* gnu-system.am: Rename to ...
* gnu/local.mk: ... this.
* daemon.am: Rename to ...
* nix/local.mk: ... this.
* Makefile.am: Adapt to them.
* doc/guix.texi (Porting to a New Platform): Adapt documentation.
* guix/config.scm.in (%state-directory, %config-directory): Adapt comments.
* emacs/guix-config.el.in (guix-config-state-directory): Likewise.
Diffstat (limited to 'nix/local.mk')
-rw-r--r--nix/local.mk226
1 files changed, 226 insertions, 0 deletions
diff --git a/nix/local.mk b/nix/local.mk
new file mode 100644
index 0000000000..3c15531f54
--- /dev/null
+++ b/nix/local.mk
@@ -0,0 +1,226 @@
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
+# Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
+#
+# This file is part of GNU Guix.
+#
+# GNU Guix is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or (at
+# your option) any later version.
+#
+# GNU Guix is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Integration of the `guix-daemon' code taken from upstream Nix.
+#
+
+BUILT_SOURCES += nix/libstore/schema.sql.hh
+CLEANFILES += $(BUILT_SOURCES) etc/guix-daemon.service etc/guix-daemon.conf
+
+noinst_LIBRARIES = libformat.a libutil.a libstore.a
+
+# Use '-std=c++11' for 'std::shared_ptr', 'auto', lambdas, and more.
+AM_CXXFLAGS = -Wall -std=c++11
+
+libformat_a_SOURCES =				\
+  nix/boost/format/free_funcs.cc		\
+  nix/boost/format/parsing.cc			\
+  nix/boost/format/format_implementation.cc
+
+libformat_headers =				\
+  nix/boost/throw_exception.hpp			\
+  nix/boost/format.hpp				\
+  nix/boost/assert.hpp				\
+  nix/boost/format/macros_default.hpp		\
+  nix/boost/format/format_fwd.hpp		\
+  nix/boost/format/format_class.hpp		\
+  nix/boost/format/exceptions.hpp		\
+  nix/boost/format/group.hpp			\
+  nix/boost/format/feed_args.hpp		\
+  nix/boost/format/internals_fwd.hpp		\
+  nix/boost/format/internals.hpp
+
+libformat_a_CPPFLAGS =				\
+  -I$(top_srcdir)/nix
+
+libutil_a_SOURCES =				\
+  nix/libutil/archive.cc			\
+  nix/libutil/affinity.cc			\
+  nix/libutil/serialise.cc			\
+  nix/libutil/util.cc				\
+  nix/libutil/xml-writer.cc			\
+  nix/libutil/hash.cc				\
+  nix/libutil/gcrypt-hash.cc
+
+libutil_headers =				\
+  nix/libutil/affinity.hh			\
+  nix/libutil/hash.hh				\
+  nix/libutil/serialise.hh			\
+  nix/libutil/xml-writer.hh			\
+  nix/libutil/util.hh				\
+  nix/libutil/archive.hh			\
+  nix/libutil/types.hh				\
+  nix/libutil/gcrypt-hash.hh			\
+  nix/libutil/md5.h				\
+  nix/libutil/sha1.h				\
+  nix/libutil/sha256.h				\
+  nix/libutil/sha512.h
+
+libutil_a_CPPFLAGS =				\
+  -I$(top_builddir)/nix				\
+  -I$(top_srcdir)/nix/libutil			\
+  $(libformat_a_CPPFLAGS)
+
+libstore_a_SOURCES =				\
+  nix/libstore/gc.cc				\
+  nix/libstore/globals.cc			\
+  nix/libstore/misc.cc				\
+  nix/libstore/references.cc			\
+  nix/libstore/store-api.cc			\
+  nix/libstore/optimise-store.cc		\
+  nix/libstore/local-store.cc			\
+  nix/libstore/build.cc				\
+  nix/libstore/pathlocks.cc			\
+  nix/libstore/derivations.cc
+
+libstore_headers =				\
+  nix/libstore/references.hh			\
+  nix/libstore/pathlocks.hh			\
+  nix/libstore/globals.hh			\
+  nix/libstore/worker-protocol.hh		\
+  nix/libstore/derivations.hh			\
+  nix/libstore/misc.hh				\
+  nix/libstore/local-store.hh			\
+  nix/libstore/store-api.hh
+
+libstore_a_CPPFLAGS =				\
+  $(libutil_a_CPPFLAGS)				\
+  -I$(top_srcdir)/nix/libstore			\
+  -I$(top_builddir)/nix/libstore		\
+  -DNIX_STORE_DIR=\"$(storedir)\"		\
+  -DNIX_DATA_DIR=\"$(datadir)\"			\
+  -DNIX_STATE_DIR=\"$(localstatedir)/guix\"	\
+  -DNIX_LOG_DIR=\"$(localstatedir)/log/guix\"	\
+  -DNIX_CONF_DIR=\"$(sysconfdir)/guix\"		\
+  -DNIX_LIBEXEC_DIR=\"$(libexecdir)\"		\
+  -DNIX_BIN_DIR=\"$(bindir)\"			\
+  -DOPENSSL_PATH="\"guix-authenticate\""	\
+  -DDEFAULT_CHROOT_DIRS="\"\""
+
+libstore_a_CXXFLAGS = $(AM_CXXFLAGS)		\
+  $(SQLITE3_CFLAGS) $(LIBGCRYPT_CFLAGS)
+
+bin_PROGRAMS = guix-daemon
+sbin_PROGRAMS = guix-register
+
+guix_daemon_SOURCES =				\
+  nix/nix-daemon/nix-daemon.cc			\
+  nix/nix-daemon/guix-daemon.cc
+
+guix_daemon_CPPFLAGS =				\
+  -DLOCALEDIR=\"$(localedir)\"			\
+  $(libutil_a_CPPFLAGS)				\
+  -I$(top_srcdir)/nix/libstore
+
+guix_daemon_LDADD =				\
+  libstore.a libutil.a libformat.a -lbz2	\
+  $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS)
+
+guix_daemon_headers =				\
+  nix/nix-daemon/shared.hh
+
+
+guix_register_SOURCES =				\
+  nix/guix-register/guix-register.cc
+
+guix_register_CPPFLAGS =			\
+  $(libutil_a_CPPFLAGS)				\
+  $(libstore_a_CPPFLAGS)			\
+  -I$(top_srcdir)/nix/libstore
+
+# XXX: Should we start using shared libs?
+guix_register_LDADD =				\
+  libstore.a libutil.a libformat.a -lbz2	\
+  $(SQLITE3_LIBS) $(LIBGCRYPT_LIBS)
+
+
+noinst_HEADERS =						\
+  $(libformat_headers) $(libutil_headers) $(libstore_headers)	\
+  $(guix_daemon_headers)
+
+nix/libstore/schema.sql.hh: nix/libstore/schema.sql
+	$(AM_V_GEN)$(GUILE) --no-auto-compile -c		\
+	  "(use-modules (rnrs io ports))			\
+	   (call-with-output-file \"$@\"			\
+	     (lambda (out)					\
+	       (call-with-input-file \"$^\"			\
+	         (lambda (in)					\
+	           (write (get-string-all in) out)))))"
+
+nodist_pkglibexec_SCRIPTS =			\
+  nix/scripts/list-runtime-roots		\
+  nix/scripts/substitute
+
+if BUILD_DAEMON_OFFLOAD
+
+nodist_pkglibexec_SCRIPTS +=			\
+  nix/scripts/offload
+
+endif BUILD_DAEMON_OFFLOAD
+
+
+# XXX: It'd be better to hide it in $(pkglibexecdir).
+nodist_libexec_SCRIPTS =			\
+  nix/scripts/guix-authenticate
+
+# The '.service' file for systemd.
+systemdservicedir = $(libdir)/systemd/system
+nodist_systemdservice_DATA = etc/guix-daemon.service
+
+etc/guix-daemon.service: etc/guix-daemon.service.in	\
+			 $(top_builddir)/config.status
+	$(AM_V_GEN)$(MKDIR_P) "`dirname $@`";				\
+	$(SED) -e 's|@''bindir''@|$(bindir)|' <				\
+	       "$(srcdir)/etc/guix-daemon.service.in" > "$@.tmp";	\
+	mv "$@.tmp" "$@"
+
+# The '.conf' job for Upstart.
+upstartjobdir = $(libdir)/upstart/system
+nodist_upstartjob_DATA = etc/guix-daemon.conf
+
+etc/guix-daemon.conf: etc/guix-daemon.conf.in	\
+			 $(top_builddir)/config.status
+	$(AM_V_GEN)$(MKDIR_P) "`dirname $@`";				\
+	$(SED) -e 's|@''bindir''@|$(bindir)|' <				\
+	       "$(srcdir)/etc/guix-daemon.conf.in" > "$@.tmp";		\
+	mv "$@.tmp" "$@"
+
+EXTRA_DIST +=					\
+  nix/libstore/schema.sql			\
+  nix/AUTHORS					\
+  nix/COPYING					\
+  etc/guix-daemon.service.in	\
+  etc/guix-daemon.conf.in
+
+if CAN_RUN_TESTS
+
+AM_TESTS_ENVIRONMENT +=				\
+  top_builddir="$(abs_top_builddir)"
+
+TESTS +=					\
+  tests/guix-daemon.sh
+
+endif CAN_RUN_TESTS
+
+clean-local:
+	-if test -d "$(GUIX_TEST_ROOT)"; then		\
+	  find "$(GUIX_TEST_ROOT)" | xargs chmod +w;	\
+	 fi
+	-rm -rf "$(GUIX_TEST_ROOT)"