summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile95
1 files changed, 66 insertions, 29 deletions
diff --git a/Makefile b/Makefile
index 1e68eccf..dbba6bac 100644
--- a/Makefile
+++ b/Makefile
@@ -24,57 +24,55 @@ endif
include $(srcdir)/Makeconf
+DIST_FILES = COPYING Makeconf config.make.in configure.in configure \
+ hurd.boot build.mk.in build.mkcf.in SETUP \
+ README NEWS tasks INSTALL INSTALL-cross version.h sh-version.sed
+
+
+## Subdirectories of this directory should all be mentioned here
+
+# Hurd libraries
lib-subdirs = libshouldbeinlibc libihash libiohelp libports libthreads \
libpager libfshelp libdiskfs libtrivfs libps \
libnetfs libpipe libstore libmom libhurdbugaddr
+
+# Hurd programs
prog-subdirs = auth boot exec fstests init \
proc term ufs utils sutils trans ufs-fsck \
devio storeio ufs-utils ext2fs benchmarks pflocal defpager \
login nfs pfinet daemons nfsd
+
+# Other directories
other-subdirs = hurd doc config release include
+
+# All the subdirectories together
subdirs = $(lib-subdirs) $(prog-subdirs) $(other-subdirs)
+
+# Any subdirectories here that we don't want to distribute to the world
subdirs-nodist =
+
+# This allows the creation of a file BROKEN in any of the prog-subdirs;
+# that will prevent this top level Makefile from attempting to make it.
working-prog-subdirs := $(filter-out \
$(patsubst %/,%,\
$(dir $(wildcard $(prog-subdirs:=/BROKEN)))),\
$(prog-subdirs))
-DIST_FILES = COPYING Makeconf config.make.in configure.in configure \
- hurd.boot build.mk.in build.mkcf.in SETUP \
- README NEWS tasks INSTALL INSTALL-cross version.h sh-version.sed
-
-all: $(addsuffix -all,$(lib-subdirs) $(working-prog-subdirs))
-
-%-all:
- $(MAKE) -C $* all
-
-%-lndist: $(top_srcdir)/hurd-snap
- $(MAKE) -C $* lndist no_deps=t
-
-%-clean:
- $(MAKE) -C $* clean no_deps=t
-
-%-relink:
- $(MAKE) -C $* relink
-%-install:
- $(MAKE) -C $* install
-
-%-install-headers:
- $(MAKE) -C $* install-headers
-%-TAGS:
- $(MAKE) -C $* TAGS no_deps=t
+
+## GNU Coding Standards targets (not all are here yet), and some other
+## similar sorts of things
-$(srcdir)/hurd-snap:
- mkdir $(srcdir)/hurd-snap
+all: $(lib-subdirs) $(working-prog-subdirs)
+# Create a distribution tar file. Set make variable `version' on the
+# command line; otherwise the tar file will be a dated snapshot.
ifeq ($(version),)
version:=$(shell date +%y%m%d)
dirname:=hurd-snap
else
dirname:=hurd
endif
-
dist: $(srcdir)/hurd-snap $(addsuffix -lndist,$(filter-out $(subdirs-nodist), $(subdirs))) lndist
mv $(srcdir)/hurd-snap $(srcdir)/$(dirname)-$(version)
cd $(srcdir); tar cfz $(dirname)-$(version).tar.gz $(dirname)-$(version)
@@ -91,6 +89,35 @@ install-headers: $(addsuffix -install-headers,$(lib-subdirs) \
$(working-prog-subdirs)\
$(other-subdirs))
+TAGS: $(addsuffix -TAGS,$(prog-subdirs) $(lib-subdirs))
+
+
+## Targets used by the main targets above.
+$(prog-subdirs) $(lib-subdirs): FORCE
+ $(MAKE) -C $@ all
+FORCE:
+
+%-lndist: $(top_srcdir)/hurd-snap
+ $(MAKE) -C $* lndist no_deps=t
+
+%-clean:
+ $(MAKE) -C $* clean no_deps=t
+
+%-relink:
+ $(MAKE) -C $* relink
+
+%-install:
+ $(MAKE) -C $* install
+
+%-install-headers:
+ $(MAKE) -C $* install-headers
+
+%-TAGS:
+ $(MAKE) -C $* TAGS no_deps=t
+
+$(srcdir)/hurd-snap:
+ mkdir $(srcdir)/hurd-snap
+
lndist: cp-linked-files
linked-files = install-sh config.guess config.sub mkinstalldirs
@@ -99,8 +126,6 @@ cp-linked-files: $(lf-inst)
$(lf-inst): $(srcdir)/hurd-snap/%: $(srcdir)/%
cp $< $@
-TAGS: $(addsuffix -TAGS,$(prog-subdirs) $(lib-subdirs))
-
.PHONY: clean-misc distclean
clean-misc:
@@ -109,3 +134,15 @@ distclean: clean
ifneq (.,${srcdir})
rm -f Makefile
endif
+
+
+## Directory dependencies
+#
+# Some directories depend on others, so we need to find out exactly
+# what they are. This does that for us.
+
+-include $(addsuffix .d,$(subdirs))
+
+# How to build them
+$(addsuffix .d,$(subdirs)): %.d: %/Makefile
+ $(MAKE) -C $* directory-depend no_deps=t