# Makefile for Amanda library.
-lib_LTLIBRARIES = libamanda.la
-
-REGDIR = ../regex-src
-REGsrcdir = $(srcdir)/$(REGDIR)
-
-INCLUDES = -I$(REGsrcdir)
-
-libamanda_la_SOURCES = \
- alloc.c amflock.c clock.c debug.c \
- dgram.c error.c file.c fileheader.c \
- amfeatures.c match.c \
- protocol.c regcomp.c regerror.c regexec.c \
- regfree.c security.c statfs.c stream.c \
- token.c util.c versuff.c version.c \
- pipespawn.c sl.c
-
-libamanda_la_LIBADD = @LTLIBOBJS@ @LTALLOCA@
-libamanda_la_LDFLAGS = -release $(VERSION)
-
-noinst_HEADERS = amanda.h arglist.h \
- clock.h dgram.h \
- amfeatures.h protocol.h \
- statfs.h stream.h \
- token.h version.h \
- amregex.h fileheader.h \
- util.h pipespawn.h \
- sl.h
+include $(top_srcdir)/config/automake/vars.am
+include $(top_srcdir)/config/automake/scripts.am
+include $(top_srcdir)/config/automake/installperms.am
+include $(top_srcdir)/config/automake/precompile.am
-STANDARD_COMMON_STUFF_NOT_FILE = \
- alloc.$(OBJEXT) \
- clock.$(OBJEXT) \
- debug.$(OBJEXT) \
- error.$(OBJEXT) \
- util.$(OBJEXT)
+INCLUDES = -I$(top_srcdir)/gnulib
-STANDARD_COMMON_STUFF = \
- $(STANDARD_COMMON_STUFF_NOT_FILE) \
- file.$(OBJEXT)
+AM_CFLAGS = $(AMANDA_WARNING_CFLAGS)
+AM_LDFLAGS = $(AMANDA_STATIC_LDFLAGS) $(AS_NEEDED_FLAGS)
+
+amlib_LTLIBRARIES = libamanda.la
+
+sbin_PROGRAMS = amservice
+
+LINT=$(AMLINT)
+LINTFLAGS=$(AMLINTFLAGS)
+
+libamanda_la_SOURCES = \
+ alloc.c \
+ amfeatures.c \
+ amflock.c \
+ ipc-binary.c \
+ amxml.c \
+ clock.c \
+ columnar.c \
+ conffile.c \
+ debug.c \
+ dgram.c \
+ event.c \
+ file.c \
+ fileheader.c \
+ glib-util.c \
+ match.c \
+ packet.c \
+ pipespawn.c \
+ protocol.c \
+ semaphore.c \
+ security.c \
+ security-util.c \
+ simpleprng.c \
+ sl.c \
+ sockaddr-util.c \
+ stream.c \
+ tapelist.c \
+ timestamp.c \
+ util.c
+# version.c is generated; see below
+nodist_libamanda_la_SOURCES = version.c
+
+INSTALLPERMS_exec = \
+ dest=$(sbindir) chown=root:setuid chmod=04750 \
+ amservice
+
+LDADD = libamanda.la
+
+libamanda_la_LIBADD = \
+ ../gnulib/libgnu.la
+
+if WANT_AMFLOCK_POSIX
+libamanda_la_SOURCES += amflock-posix.c
+endif
+
+if WANT_AMFLOCK_FLOCK
+libamanda_la_SOURCES += amflock-flock.c
+endif
-.sh:
- cat $< > $@
- chmod a+x $@
+if WANT_AMFLOCK_LOCKF
+libamanda_la_SOURCES += amflock-lockf.c
+endif
+
+if WANT_AMFLOCK_LNLOCK
+libamanda_la_SOURCES += amflock-lnlock.c
+endif
+
+
+if WANT_RSH_SECURITY
+libamanda_la_SOURCES += rsh-security.c
+endif
+if WANT_SSH_SECURITY
+libamanda_la_SOURCES += ssh-security.c
+endif
+if WANT_BSD_SECURITY
+libamanda_la_SOURCES += bsd-security.c
+endif
+if WANT_BSDTCP_SECURITY
+libamanda_la_SOURCES += bsdtcp-security.c
+endif
+if WANT_BSDUDP_SECURITY
+libamanda_la_SOURCES += bsdudp-security.c
+endif
+if WANT_KRB5_SECURITY
+libamanda_la_SOURCES += krb5-security.c
+endif
+
+libamanda_la_SOURCES += local-security.c
+
+libamanda_la_LDFLAGS = -release $(VERSION) $(AS_NEEDED_FLAGS)
+
+noinst_HEADERS = \
+ amanda.h \
+ amfeatures.h \
+ ipc-binary.h \
+ amxml.h \
+ arglist.h \
+ clock.h \
+ columnar.h \
+ directtcp.h \
+ amflock.h \
+ conffile.h \
+ debug.h \
+ dgram.h \
+ event.h \
+ file.h \
+ fileheader.h \
+ glib-util.h \
+ match.h \
+ packet.h \
+ pipespawn.h \
+ protocol.h \
+ semaphore.h \
+ security.h \
+ security-util.h \
+ simpleprng.h \
+ sl.h \
+ sockaddr-util.h \
+ stream.h \
+ tapelist.h \
+ timestamp.h \
+ util.h \
+ version.h
EXTRA_PROGRAMS = genversion $(TEST_PROGS)
-EXTRA_DIST = krb4-security.c krb4-security.h
+# Version-building steps:
+#
+# 1. configure builds svn-info.h, if svn info is available; this
+# file is included in distribution tarballs
+# 2. Makefile creates genversion.h with build-time information
+# 3. Makefile builds genversion
+# 4. Makefile runs genversion to create version.c
+# 5. version.c is compiled into libamanda normally
-genversion_SOURCES = genversion.c
-genversion_LDADD = $(libamanda_la_LIBADD) $(STANDARD_COMMON_STUFF) versuff.o
+genversion_SOURCES = genversion.c svn-info.h
+genversion_LDADD = $(libamanda_la_LIBADD) \
+ ../gnulib/libgnu.la
-genversion.o: genversion.h
genversion.h: $(top_builddir)/config.status
-rm -f $@ $@.new
echo '#define CC "$(CC)"' > $@.new
echo '#define BUILT_DATE "'`date`'"' >> $@.new
- echo '#define BUILT_MACH "'`uname -a || echo UNKNOWN HOST`'"' >> $@.new
+ echo '#define BUILT_MACH "$(target)"' >> $@.new
mv $@.new $@
-version.c: genversion$(EXEEXT)
+version.c: genversion$(EXEEXT)
-rm -f version.c
- ./genversion > version.c
+ ./genversion$(EXEEXT) > version.c
-match.@OBJEXT@ match.lo: regex.h
-regcomp.@OBJEXT@ regcomp.lo: regex.h regcomp.ih
-regexec.@OBJEXT@ regexec.lo: regex.h engine.ih
-regerror.@OBJEXT@ regerror.lo: regex.h regerror.ih
-regfree.@OBJEXT@ regfree.lo: regex.h
-
-REGEXHSRC = $(REGsrcdir)/regex2.h \
- $(REGsrcdir)/regcomp.c \
- $(REGsrcdir)/regexec.c \
- $(REGsrcdir)/regerror.c \
- $(REGsrcdir)/regfree.c
+BUILT_SOURCES += genversion.h version.c
# these are used for testing only:
-TEST_PROGS = statfs token file security amfeatures
+TEST_PROGS = file bsdsecurity
+
+CLEANFILES += *.test.c
+DISTCLEANFILES += version.c genversion genversion.h
+
+# used for testing only
+
+STANDARD_COMMON_STUFF_NOT_FILE = \
+ alloc.lo \
+ clock.lo \
+ conffile.lo \
+ debug.lo \
+ glib-util.lo \
+ util.lo \
+ match.lo \
+ sl.lo \
+ sockaddr-util.lo \
+ timestamp.lo
-CLEANFILES = regex.h regcomp.ih engine.ih regerror.ih *.test.c
+STANDARD_COMMON_STUFF = \
+ $(STANDARD_COMMON_STUFF_NOT_FILE) \
+ file.lo
-DISTCLEANFILES = version.c genversion
+file_SOURCES = file.test.c
+file_LDADD = $(libamanda_la_LIBADD) $(STANDARD_COMMON_STUFF_NOT_FILE)
-regex.h: $(REGEXHSRC) $(REGsrcdir)/mkh
- sh $(REGsrcdir)/mkh -o -i _REGEX_H_ $(REGEXHSRC) >$@
+bsdsecurity_SOURCES = bsd-security.test.c
+bsdsecurity_LDADD = $(libamanda_a_LIBADD) \
+ alloc.lo \
+ clock.lo \
+ debug.lo \
+ dgram.lo \
+ event.lo \
+ file.lo \
+ packet.lo \
+ security.lo \
+ ssh-security.lo
-regcomp.ih: $(REGsrcdir)/regcomp.c $(REGsrcdir)/mkh
- sh $(REGsrcdir)/mkh -o -p $(REGsrcdir)/regcomp.c >$@
+# libtestutils.la
+#
+# Convenience library (never installed) for 'make check'-based tests.
-engine.ih: $(REGsrcdir)/engine.c $(REGsrcdir)/mkh
- sh $(REGsrcdir)/mkh -o -p $(REGsrcdir)/engine.c >$@
+noinst_LTLIBRARIES = libtestutils.la
+libtestutils_la_SOURCES = \
+ testutils.c \
+ testutils.h
-regerror.ih: $(REGsrcdir)/regerror.c $(REGsrcdir)/mkh
- sh $(REGsrcdir)/mkh -o -p $(REGsrcdir)/regerror.c >$@
+# automake-style tests
-# used for testing only
+# automake-style tests
-statfs_SOURCES = statfs.test.c
-statfs_LDADD = $(libamanda_la_LIBADD) $(STANDARD_COMMON_STUFF)
+TESTS = amflock-test event-test semaphore-test quoting-test \
+ ipc-binary-test hexencode-test fileheader-test match-test
+noinst_PROGRAMS = $(TESTS)
-token_SOURCES = token.test.c
-token_LDADD = $(libamanda_la_LIBADD) $(STANDARD_COMMON_STUFF)
+amflock_test_SOURCES = amflock-test.c
+amflock_test_LDADD = libamanda.la libtestutils.la
-file_SOURCES = file.test.c
-file_LDADD = $(libamanda_la_LIBADD) $(STANDARD_COMMON_STUFF_NOT_FILE)
+event_test_SOURCES = event-test.c
+event_test_LDADD = libamanda.la libtestutils.la
+
+semaphore_test_SOURCES = semaphore-test.c
+semaphore_test_LDADD = libamanda.la libtestutils.la
+
+quoting_test_SOURCES = quoting-test.c
+quoting_test_LDADD = libamanda.la libtestutils.la
+
+ipc_binary_test_SOURCES = ipc-binary-test.c
+ipc_binary_test_LDADD = libamanda.la libtestutils.la
+
+hexencode_test_SOURCES = hexencode-test.c
+hexencode_test_LDADD = libamanda.la libtestutils.la
+
+fileheader_test_SOURCES = fileheader-test.c
+fileheader_test_LDADD = libamanda.la libtestutils.la
-security_SOURCES = security.test.c
-security_LDADD = $(libamanda_la_LIBADD) $(STANDARD_COMMON_STUFF)
+match_test_SOURCES = match-test.c
+match_test_LDADD = libamanda.la libtestutils.la
-amfeatures_SOURCES = amfeatures.test.c
-amfeatures_LDADD = $(libamanda_la_LIBADD) $(STANDARD_COMMON_STUFF)
+# scripts
+
+# divide scripts up both by language and destination directory
+sbin_SCRIPTS_PERL = \
+ amgpgcrypt \
+ amcryptsimple \
+ amgetconf
+
+amlibexec_SCRIPTS_PERL =
+
+sbin_SCRIPTS_SHELL = \
+ amcrypt \
+ amaespipe \
+ amcrypt-ossl \
+ amcrypt-ossl-asym
+
+amlibexec_SCRIPTS_SHELL =
+
+SCRIPTS_INCLUDE = \
+ amanda-sh-lib.sh
+
+EXTRA_DIST += amanda-sh-lib.sh.in
+
+SCRIPTS_PERL = $(sbin_SCRIPTS_PERL) $(amlibexec_SCRIPTS_PERL)
+SCRIPTS_SHELL = $(sbin_SCRIPTS_SHELL) $(amlibexec_SCRIPTS_SHELL)
+
+amlibexec_DATA = $(SCRIPTS_INCLUDE)
+amlibexec_SCRIPTS = $(amlibexec_SCRIPTS_PERL) $(amlibexec_SCRIPTS_SHELL)
+sbin_SCRIPTS = $(sbin_SCRIPTS_PERL) $(sbin_SCRIPTS_SHELL)
+
+# installation
+
+lint:
+ @echo $(LINT) $(libamanda_la_SOURCES)
+ @$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(DEFS) -I. -I$(top_builddir)/config $(INCLUDES) $(libamanda_la_SOURCES)
+ @echo $(LINT) $(genversion_SOURCES)
+ @$(LINT) $(LINTFLAGS) $(CPPFLAGS) $(DEFS) -I. -I$(top_builddir)/config $(INCLUDES) $(genversion_SOURCES)
+
+listlibsrc:
+ @ for p in $(libamanda_la_SOURCES) $(REGEXCSRC); do \
+ listlibsrcs="$$listlibsrcs `pwd`/$$p"; \
+ done; \
+ echo $$listlibsrcs >listlibsrc.output
%.test.c: $(srcdir)/%.c
echo '#define TEST' >$@
echo '#include "$<"' >>$@
+
+distclean-local:
+ if test `cd $(srcdir) && pwd` != `pwd`; then rm -f svn-info.h; fi
+MAINTAINERCLEANFILES+=svn-info.h