+VERSION=1.0
+YEAR=2018
+
# The default target
all: runtree programs configs
# We will use the libucw build system
include $(BUILDSYS)/Maketop
-EXTRA_RUNDIRS=run
+EXTRA_RUNDIRS=run/subauthd lib/subauthd share/man/man1 share/man/man8
# Add the detected flags to all the global flags
CFLAGS+=$(LIBUCW_CFLAGS) $(LIBUCW_JSON_CFLAGS)
LIBS+=$(LIBUCW_LIBS) $(LIBUCW_JSON_LIBS)
-# Programs we want to compile
-PROGS+=$(o)/subauthd $(o)/subauth
+install::
+.PHONY: install
-# And how they are created
-$(o)/subauthd: $(o)/subauthd.o
-$(o)/subauth: $(o)/subauth.o
+include $(s)/server/Makefile
+include $(s)/client/Makefile
+include $(s)/pam/Makefile
-# Configuration files
-CONFIGS+=subauthd
+ifdef CONFIG_APACHE_MOD
+include $(s)/apache/Makefile
+endif
# And finally the default rules of the build system
include $(BUILDSYS)/Makebottom
+# Our own rules for building man pages. They are a little bit hacky
+# as a2x cannot produce output in a different directory.
+$(o)/%.1: $(s)/%.1.txt
+ $(M)MAN $<
+ $(Q)cp $< $@.txt
+ $(Q)a2x -f manpage $@.txt
+ $(Q)$(call symlink,$@,run/share/man/man1)
+
+$(o)/%.8: $(s)/%.8.txt
+ $(M)MAN $<
+ $(Q)cp $< $@.txt
+ $(Q)a2x -f manpage $@.txt
+ $(Q)$(call symlink,$@,run/share/man/man8)
+
+# The dependency on %.1 is there to serialize both calls of asciidoc,
+# which does not name temporary files safely.
+$(o)/%.1.html: $(s)/%.1.txt $(o)/%.1
+ $(M)HTML $<
+ $(Q)a2x -f xhtml -D $(@D) $<
+$(o)/%.8.html: $(s)/%.8.txt $(o)/%.8
+ $(M)HTML $<
+ $(Q)a2x -f xhtml -D $(@D) $<
+
+release: $(HTML_DOCS)
+ git tag v$(VERSION)
+ git push --tags
+ git archive --format=tar --prefix=subauth-$(VERSION)/ HEAD | gzip >subauth-$(VERSION).tar.gz
+ rsync subauth-$(VERSION).tar.gz atrey:ftp/linux/
+ rsync $(HTML_DOCS) jw:www/static/sw/subauth/
+ ssh jw 'cd web && bin/release-prog subauth $(VERSION)'
+
endif