summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile269
1 files changed, 269 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 00000000..322e008c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,269 @@
+#
+# Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2004,
+# 2006, 2009, 2011, 2012, 2013 Free Software Foundation, Inc.
+#
+# This program 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 2, or (at
+# your option) any later version.
+#
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+dir := .
+makemode := misc
+
+DISTFILES := configure
+
+include ./Makeconf
+
+## 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 libhurdbugaddr libftpconn libcons
+
+# Hurd programs
+prog-subdirs = auth proc exec init term \
+ ext2fs isofs tmpfs fatfs \
+ storeio pflocal pfinet defpager mach-defpager \
+ login daemons boot console \
+ hostmux usermux ftpfs trans \
+ console-client utils sutils \
+ benchmarks fstests \
+ random \
+
+ifeq ($(HAVE_SUN_RPC),yes)
+prog-subdirs += nfs nfsd
+endif
+
+# Other directories
+other-subdirs = hurd doc config release include
+
+# All the subdirectories together
+subdirs = $(lib-subdirs) $(prog-subdirs) $(other-subdirs)
+
+# 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))
+
+
+$(subdirs): version.h
+
+## GNU Coding Standards targets (not all are here yet), and some other
+## similar sorts of things
+
+all: $(lib-subdirs) $(working-prog-subdirs)
+
+# Create a distribution tar file.
+
+git_describe := git describe --match '*release*'
+dist-version := $(shell cd $(top_srcdir)/ && $(git_describe))
+
+.PHONY: dist
+ifdef configured
+dist: $(foreach Z,bz2 gz,$(dist-version).tar.$(Z))
+else
+dist:
+ @echo >&2 'Cannot build a distribution from an unconfigured tree.'
+ false
+endif
+
+HEAD.tar: FORCE
+ cd $(top_srcdir)/ && git status --short \
+ | $(AWK) '{ print; rc=1 } END { exit rc }' \
+ || { echo >&2 \
+ 'Refusing to build a distribution from dirty sources.' && \
+ false; }
+ (cd $(top_srcdir)/ && git archive --prefix=$(dist-version)/ HEAD) > $@
+
+ChangeLog.tar: gen-ChangeLog
+ tar -c -f $@ --owner=0 --group=0 \
+ --transform='s%^%$(dist-version)/%' $(ChangeLog_files)
+
+gen_start_commit = 2772f5c6a6a51cf946fd95bf6ffe254273157a21
+ChangeLog_files = \
+ ChangeLog \
+ auth/ChangeLog \
+ benchmarks/ChangeLog \
+ boot/ChangeLog \
+ config/ChangeLog \
+ console-client/ChangeLog \
+ console/ChangeLog \
+ daemons/ChangeLog \
+ defpager/ChangeLog \
+ doc/ChangeLog \
+ exec/ChangeLog \
+ ext2fs/ChangeLog \
+ fatfs/ChangeLog \
+ fstests/ChangeLog \
+ ftpfs/ChangeLog \
+ hostmux/ChangeLog \
+ hurd/ChangeLog \
+ include/ChangeLog \
+ init/ChangeLog \
+ isofs/ChangeLog \
+ libcons/ChangeLog \
+ libdirmgt/ChangeLog \
+ libdiskfs/ChangeLog \
+ libfshelp/ChangeLog \
+ libftpconn/ChangeLog \
+ libhurdbugaddr/ChangeLog \
+ libihash/ChangeLog \
+ libiohelp/ChangeLog \
+ libnetfs/ChangeLog \
+ libpager/ChangeLog \
+ libpipe/ChangeLog \
+ libports/ChangeLog \
+ libps/ChangeLog \
+ libshouldbeinlibc/ChangeLog \
+ libstore/ChangeLog \
+ libthreads/ChangeLog \
+ libtrivfs/ChangeLog \
+ login/ChangeLog \
+ mach-defpager/ChangeLog \
+ nfs/ChangeLog \
+ nfsd/ChangeLog \
+ pfinet/ChangeLog \
+ pflocal/ChangeLog \
+ proc/ChangeLog \
+ release/ChangeLog \
+ storeio/ChangeLog \
+ sutils/ChangeLog \
+ term/ChangeLog \
+ tmpfs/ChangeLog \
+ trans/ChangeLog \
+ usermux/ChangeLog \
+ utils/ChangeLog
+distdir = .
+.PHONY: gen-ChangeLog
+gen-ChangeLog:
+ $(AM_V_GEN)if test -d $(top_srcdir)/.git; then \
+ (cd $(top_srcdir)/ && \
+ ./gitlog-to-changelog --strip-tab \
+ $(gen_start_commit).. && \
+ echo) >> $(distdir)/cl-t && \
+ for f in $(ChangeLog_files); do \
+ (cd $(top_srcdir)/ && \
+ git show $(gen_start_commit):$$f) >> $(distdir)/cl-t && \
+ rm -f $(distdir)/$$f && \
+ mv $(distdir)/cl-t $(distdir)/$$f \
+ || exit $$?; \
+ done; \
+ fi
+
+$(dist-version).tar: HEAD.tar $(addsuffix /dist-hook,hurd/.. $(subdirs)) ChangeLog.tar
+ tar -c -f $@ --files-from=/dev/null
+# Concatenate the tar files. Have
+# to do it one by one: <http://savannah.gnu.org/patch/?7757>.
+ for f in HEAD.tar dist.tar */dist.tar ChangeLog.tar; do \
+ tar -v --concatenate -f $@ "$$f"; \
+ done
+
+clean: $(addsuffix -clean,$(subdirs)) clean-misc
+
+relink: $(addsuffix -relink,$(lib-subdirs) $(prog-subdirs))
+
+objs: $(addsuffix -objs,$(lib-subdirs) $(prog-subdirs))
+
+install: $(addsuffix -install,$(lib-subdirs) $(working-prog-subdirs) \
+ $(other-subdirs))
+
+install-headers: $(addsuffix -install-headers,$(lib-subdirs) \
+ $(working-prog-subdirs)\
+ $(other-subdirs))
+
+TAGS: $(addsuffix -TAGS,$(working-prog-subdirs) $(lib-subdirs))
+ etags -o $@ $(patsubst %-TAGS,-i %/TAGS,$^)
+
+%.bz2: %
+ bzip2 -9 < $< > $@
+
+%.gz: %
+ gzip -9n < $< > $@
+
+## Targets used by the main targets above.
+$(prog-subdirs) $(lib-subdirs): FORCE
+ $(MAKE) -C $@ all
+FORCE:
+
+%-clean:
+ $(MAKE) -C $* clean no_deps=t
+
+%-relink:
+ $(MAKE) -C $* relink no_deps=t
+
+%-objs:
+ $(MAKE) -C $* objs
+
+%-install:
+ $(MAKE) -C $* install
+
+%-install-headers:
+ $(MAKE) -C $* install-headers
+
+%-TAGS:
+ $(MAKE) -C $* TAGS no_deps=t
+
+.PHONY: %/dist-hook
+%/dist-hook:
+ $(MAKE) -C $* dist-hook no_deps=t dist-version=$(dist-version)
+
+.PHONY: clean-misc distclean
+clean-misc:
+ rm -f HEAD.tar ChangeLog.tar $(ChangeLog_files)
+
+distclean: clean
+ rm -f config.make config.log config.status config.cache
+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.
+
+ifneq ($(no_deps),t)
+-include $(addsuffix .d,$(subdirs))
+endif
+
+# How to build them
+$(addsuffix .d,$(subdirs)): %.d: $(top_srcdir)/%/Makefile
+ $(MAKE) -C $* directory-depend no_deps=t
+
+
+## Build system
+
+AUTOCONF = autoconf
+AUTOCONF_FLAGS = -I $(top_srcdir)
+
+$(top_srcdir)/configure: $(top_srcdir)/configure.ac $(top_srcdir)/aclocal.m4
+ $(AUTOCONF) $(AUTOCONF_FLAGS) $< > $@
+ chmod +x $@
+
+config.status: $(top_srcdir)/configure
+ $(SHELL) $@ --recheck
+
+config.make: config.status $(top_srcdir)/config.make.in
+# No stamp file is used here, as config.make's timestamp changing will not have
+# any far-reaching consequences.
+ $(SHELL) $< --file=$@
+
+version.h: stamp-version; @:
+stamp-version: version.h.in config.make
+ sed -e 's/MASTER_HURD_VERSION/\"$(package-version)\"/' \
+ < $< > version.h.new
+ $(move-if-change) version.h.new version.h
+ touch $@