#
include Make.inc
+MFLAGS += --no-print-directory
+# Speed up the build for developers. This means editing Make.inc,
+# and adding "BOILER = yes" to the bottom. Once that's done, the
+#
+#
+ifeq "$(BOILER)" "yes"
+
+# Require at least GNU Make 3.81 for the new build system
+# Don't allow 3.80. Allow any 3.8x. This will need to be changed
+# in a decade or two when GNU Make 3.90 is released.
+BOILERMAKE=$(subst 3.8,yes,$(subst 3.80,,$(MAKE_VERSION)))
+
+# The version of GNU Make is too old, don't use it.
+ifeq "" "$(findstring yes,$(BOILERMAKE))"
+BOILERMAKE=
+endif
+
+# Static-only builds still require libtool.
+# This is because it does all kinds of preload magic in order
+# to force the linker to put the libraries into the main binary.
+# We don't support that yet, so we miss it...
+ifneq "$(USE_SHARED_LIBS)" "yes"
+BOILERMAKE=
+endif
+endif
+
+# If possible, drastically decrease the build time.
+# The new build system means that
+ifneq "" "$(BOILERMAKE)"
+
+# Don't use libtool or libltdl.
+# They are a blight upon the face of the earth.
+LIBLTDL :=
+INCLTDL := -DWITH_DLOPEN
+CFLAGS += -DWITHOUT_LIBLTDL
+LIBTOOL := JLIBTOOL
+LTDL_SUBDIRS :=
+
+export DESTDIR := $(R)
+
+# And over-ride all of the other magic.
+include scripts/boiler.mk
+
+else
.PHONY: all clean install
SUBDIRS = $(LTDL_SUBDIRS) $(wildcard src raddb scripts doc)
clean:
@$(MAKE) $(MFLAGS) WHAT_TO_MAKE=$@ common
@rm -f *~
+endif
.PHONY: tests
tests:
# we make sure DESTDIR is defined.
#
export DESTDIR := $(R)
+ifeq "$(BOILERMAKE)" ""
install:
$(INSTALL) -d -m 755 $(R)$(sbindir)
$(INSTALL) -d -m 755 $(R)$(bindir)
$(INSTALL) -m 644 $$i $(R)$(dictdir); \
done
$(LIBTOOL) --finish $(R)$(libdir)
+endif
ifneq ($(RADMIN),)
ifneq ($(RGROUP),)
endif
endif
-common:
- @for dir in $(SUBDIRS); do \
- echo "Making $(WHAT_TO_MAKE) in $$dir..."; \
- $(MAKE) $(MFLAGS) -C $$dir $(WHAT_TO_MAKE) || exit $$?; \
- done
+.PHONY: common $(SUBDIRS)
+
+common: $(SUBDIRS)
+
+$(SUBDIRS):
+ @echo "Making $(WHAT_TO_MAKE) in $@..."
+ @$(MAKE) $(MFLAGS) -C $@ $(WHAT_TO_MAKE)
distclean: clean
rm -f config.cache config.log config.status libtool \
# Automatic remaking rules suggested by info:autoconf#Automatic_Remaking
#
######################################################################
-reconfig: configure src/include/autoconf.h.in
+.PHONY: reconfig
+reconfig:
+ @$(MAKE) $(MFLAGS) -C src reconfig
+ @$(MAKE) configure
+ @$(MAKE) src/include/autoconf.h.in
configure: configure.in aclocal.m4
$(AUTOCONF)
-# autoheader might not change autoconf.h.in, so touch a stamp file
-src/include/autoconf.h.in: src/include/stamp-h.in
-src/include/stamp-h.in: configure.in
+.PHONY: src/include/autoconf.h.in
+src/include/autoconf.h.in:
$(AUTOHEADER)
- echo timestamp > src/include/stamp-h.in
-
-src/include/autoconf.h: src/include/stamp-h
-src/include/stamp-h: src/include/autoconf.h.in config.status
- ./config.status
config.status: configure
./config.status --recheck