make/GNUmakefile

280 lines
7.6 KiB
Makefile
Raw Normal View History

1992-01-11 19:09:59 +08:00
# GNU Make-specific makefile for GNU Make.
1994-01-08 05:28:25 +08:00
# Copyright (C) 1990, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
1992-01-11 19:09:59 +08:00
# This file is part of GNU Make.
#
# GNU Make 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.
#
# GNU Make 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 GNU Make; see the file COPYING. If not, write to
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
.PHONY: default
default:
1993-03-29 06:36:05 +08:00
# Set `ARCH' to a string for the type of machine.
ifndef ARCH
ifdef machine
ARCH = $(machine)
endif # machine
endif # not ARCH
1992-06-23 04:34:05 +08:00
override srcdir := .
1993-01-06 03:53:58 +08:00
override CC := $(CC)
1992-06-23 04:34:05 +08:00
1993-03-29 06:36:05 +08:00
ifeq ($(ARCH),hp300)
1994-04-26 07:37:12 +08:00
#customs=yes
1993-03-29 06:36:05 +08:00
endif
ifdef customs
override REMOTE := cstms
else
override REMOTE := stub
endif
1992-01-11 19:09:59 +08:00
# Get most of the information from the Unix-compatible makefile.
include compatMakefile
1994-02-17 07:58:49 +08:00
MAKE = $(MAKE_COMMAND) $(MAKEOVERRIDES)
1993-03-30 03:30:33 +08:00
# Remove autoconf magic.
prefix = /usr/local
exec_prefix = $(prefix)
1993-03-30 03:30:33 +08:00
extras := $(filter-out getloadavg.o @%@,$(extras)) getloadavg.o
LOADLIBES := $(filter-out @%@,$(LOADLIBES))
ALLOCA := $(filter-out @%@,$(ALLOCA))
ifdef AC_MACRODIR
configure config.h.in: $(patsubst %,$(AC_MACRODIR)/%.m4,acspecific acgeneral)
config.h.in: $(AC_MACRODIR)/acconfig.h
endif
1994-01-08 05:28:25 +08:00
configure: configure.in; autoconf $(ACFLAGS)
config.h.in: configure.in; autoheader $(ACFLAGS)
1993-03-29 06:36:05 +08:00
ifdef customs
1993-03-30 03:30:33 +08:00
defines := $(defines) -Ipmake/customs -Ipmake/lib/include
LOADLIBES := $(addprefix pmake/customs/,customslib.o rpc.o xlog.o) \
pmake/lib/sprite/libsprite.a
1993-03-18 09:34:17 +08:00
endif
1992-01-11 19:09:59 +08:00
ifdef ARCH
ifndef no_libc
libc_dir = /home/gd2/gnu/libc/$(ARCH)
ifneq ($(wildcard $(libc_dir)),)
ifneq ($(wildcard $(libc_dir)/works-for-make),)
1992-05-28 13:03:09 +08:00
#CPPFLAGS := -I$(libc_dir)/include
#LDFLAGS := -nostdlib $(libc_dir)/lib/start.o
#LOADLIBES := $(LOADLIBES) \
# $(libc_dir)/lib/mcheck-init.o \
# $(libc_dir)/lib/libc.a \
# -lgcc \
# $(libc_dir)/lib/libc.a
1992-06-03 11:24:11 +08:00
CC := $(CC) -b glibc
1992-01-11 19:09:59 +08:00
1992-06-11 13:33:52 +08:00
# getopt is in libc.
1992-05-09 12:06:58 +08:00
GETOPT =
1992-08-28 07:25:59 +08:00
#GETOPT_SRC = Don't clear this or dist will break.
1992-05-09 12:06:58 +08:00
1992-10-13 02:16:07 +08:00
# glob is in libc too.
GLOB =
1992-01-11 19:09:59 +08:00
else
CPPFLAGS := $(filter-out @%@,$(CPPFLAGS)) -Iglob
1992-01-11 19:09:59 +08:00
1992-10-13 02:16:07 +08:00
endif # works-for-make
endif # $(libc_dir)
endif # !no_libc
# We know the type of machine, so put the binaries in subdirectories.
$(ARCH)/%.o: %.c
1993-01-06 08:30:46 +08:00
$(COMPILE.c) -Iglob $< $(OUTPUT_OPTION)
1993-01-22 07:24:19 +08:00
$(ARCH)/glob/libglob.a: FORCE
$(MAKE) -C $(@D) $(@F)
1993-01-22 07:24:19 +08:00
FORCE:
1992-10-13 02:16:07 +08:00
objs := $(addprefix $(ARCH)/,$(objs))
prog := $(ARCH)/make
archpfx = $(ARCH)/
$(archpfx)load.o: load.c
$(COMPILE.c) $(LOAD_AVG) $< -o $@
$(archpfx)load.dep: load.c
$(mkdep) $(LOAD_AVG) $< | sed 's,$*\.o,& $@,' > $@
1993-01-13 06:51:00 +08:00
CPPFLAGS := -I$(ARCH) $(CPPFLAGS) -DHAVE_CONFIG_H $(filter-out @%@,$(defines))
1992-10-13 02:16:07 +08:00
ifneq "$(wildcard $(ARCH)/makefile)" ""
include $(ARCH)/makefile
1992-01-11 19:09:59 +08:00
endif
1992-12-29 10:36:27 +08:00
objs := $(objs) $(addprefix $(ARCH)/,$(ALLOCA) $(extras))
1992-01-11 19:09:59 +08:00
else # Not ARCH
prog := make
endif
ifneq "$(findstring gcc,$(CC))" ""
1992-05-15 04:05:17 +08:00
CFLAGS = -g -W -Wunused -Wpointer-arith -Wreturn-type -Wswitch
else
CFLAGS = -g
1992-01-11 19:09:59 +08:00
endif
1993-01-23 08:35:32 +08:00
LDFLAGS = -g
1992-01-11 19:09:59 +08:00
# Define the command to make dependencies.
ifneq "$(findstring gcc,$(CC))" ""
# Don't include system directories.
mkdep-nolib = $(CC) -MM $(CPPFLAGS)
else
mkdep-nolib = $(mkdep)
endif
mkdep = $(CC) -M $(CPPFLAGS)
1992-12-29 10:36:27 +08:00
depfiles = $(patsubst %.o,%.dep,$(filter %.o,$(objs)))
1992-01-11 19:09:59 +08:00
.PHONY: default
default: $(prog)
1993-11-12 00:51:19 +08:00
$(prog): $(objs) $(globdep) #$(addprefix $(ARCH)/,gmalloc.o mcheck.o)
1992-01-11 19:09:59 +08:00
$(CC) $(LDFLAGS) $^ $(globlib) $(LOADLIBES) -o $@.new
mv -f $@.new $@
1992-06-23 04:34:05 +08:00
globfiles = $(addprefix glob/,COPYING.LIB Makefile.in \
1992-01-11 19:09:59 +08:00
glob.c fnmatch.c glob.h fnmatch.h)
1993-06-10 06:06:20 +08:00
$(globfiles): stamp-glob ;
stamp-glob: /home/gd/gnu/libc/posix/glob.tar
1993-07-26 10:12:47 +08:00
-rm -rf glob
1993-06-10 06:06:20 +08:00
tar xvf $< glob
touch $@
1992-01-11 19:09:59 +08:00
/home/gd/gnu/libc/posix/glob.tar: force
$(MAKE) -C $(@D) $(@F) no_deps=t
.PHONY: force
force:
# Make the Unix-compatible Makefile to be distributed by appending
# the automatically-generated dependencies to compatMakefile.
ifeq ($(mkdep),$(mkdep-nolib))
nolib-deps = $(depfiles)
else
%.dep: %.c
1993-12-23 06:18:14 +08:00
$(mkdep-nolib) $< | sed -e 's,$*\.o,$(@:.dep=.o) $@,' > $(@:.dep=.dtm)
mv -f $(@:.dep=.dtm) $@
1992-02-16 15:20:51 +08:00
nolib-deps = $(patsubst $(archpfx)%,%,$(depfiles))
1992-01-11 19:09:59 +08:00
endif
1993-04-23 06:42:00 +08:00
# The distributed Makefile.in should contain deps for remote-stub only.
Makefile.in: compatMakefile $(nolib-deps:remote-%.dep=remote-stub.dep)
(sed 's/^MAKE[ ]*=.*$$/@SET_MAKE@/' $<; \
1992-01-11 19:09:59 +08:00
echo '# Automatically generated dependencies.'; \
sed -e 's/ [^ ]*\.dep//' -e 's=$(archpfx)==' $(filter-out $<,$^) \
) > $@
.SUFFIXES: .dep
# Maintain the automatically-generated dependencies.
ifndef no_deps
1992-10-25 10:43:22 +08:00
include $(depfiles)
endif
1992-01-11 19:09:59 +08:00
$(archpfx)%.dep: %.c
$(mkdep) $< | sed 's,$*\.o,$(@:.dep=.o) $@,' > $@
1992-05-12 03:21:28 +08:00
ETAGS = etags -T # for v19 etags
1992-01-11 19:09:59 +08:00
# Run the tests.
.PHONY: tests
1992-05-05 06:54:21 +08:00
testdir := $(shell ls -d1 make-test-?.? | sort -n +0.10 -0.11 +0.12 | tail -1l)
1992-06-16 09:25:32 +08:00
tests:# $(testdir)/run_make_tests.pl $(prog)
1993-01-13 06:51:00 +08:00
# cd $(<D); MAKELEVEL=0 perl $(<F)
1993-08-17 05:40:16 +08:00
build.sh.in: build.template compatMakefile
1993-03-12 03:25:25 +08:00
sed -e 's@%objs%@$(filter-out remote-% $(GLOB) $(ALLOCA) $(extras),\
1993-01-14 05:05:06 +08:00
$(patsubst $(archpfx)%,%,$(objs)))\
$(patsubst %.c,%.o,$(filter %.c,$(globfiles)))@' \
1993-01-13 06:51:00 +08:00
$< > $@.new
mv -f $@.new $@
1992-01-11 19:09:59 +08:00
# Make the distribution tar files.
.PHONY: dist
# Figure out the version number from the source of `version.c'.
version := \
$(strip $(shell sed -e '/=/!d' -e 's/^.*"\(.*\)";$$/\1/' < version.c))
1994-01-12 08:30:18 +08:00
tarfiles := make # make-doc
1993-01-23 08:35:32 +08:00
tarfiles := $(addsuffix -$(version).tar,$(tarfiles))
1993-06-03 05:09:00 +08:00
tarfiles := $(tarfiles:%=%.gz) # no more compress $(tarfiles:%=%.Z)
1992-01-11 19:09:59 +08:00
# Depend on default and doc so we don't ship anything that won't compile.
dist: rcs-mark default info dvi tests tarfiles
1993-01-23 08:35:32 +08:00
.PHONY: tarfiles
tarfiles: $(tarfiles)
1992-01-11 19:09:59 +08:00
ifndef dist-flavor
dist-flavor = alpha
endif
.PHONY: rcs-mark rcs-mark-alpha rcs-mark-beta
rcs-mark: rcs-mark-$(dist-flavor)
rcs-mark-alpha: RCS/[!=]*,v;rcs -sAlpha -Nmake-$(version-): $^
rcs-mark-beta: RCS/[!=]*,v;rcs -sBeta -Nmake-$(version-): $^
version- = $(subst .,-,$(version))
1992-01-11 19:09:59 +08:00
dist: local-inst
.PHONY: local-inst
local-inst: $(prog)
install -c -g kmem -o $(USER) -m 2755 $< /usr/local/gnubin/make
# Put the alpha distribution files in the anonymous FTP directory.
1992-04-14 10:30:18 +08:00
alpha-files = $(tarfiles) GNUmakefile compatMakefile $(testdir).tar.Z
1992-01-11 19:09:59 +08:00
dist: alpha
.PHONY: alpha
alpha-dir := ~ftp/gnu
alpha-files := $(addprefix $(alpha-dir)/,$(alpha-files))
alpha: $(alpha-dir) $(alpha-files)
$(alpha-dir)/%: %
@rm -f $@
cp $< $@
# Implicit rule to make README and README-doc.
%: %.template version.c
1992-08-14 06:09:36 +08:00
rm -f $@
1992-01-11 19:09:59 +08:00
sed 's/VERSION/$(version)/' < $< > $@
1992-07-17 02:34:43 +08:00
# Make sure I don't edit it by accident.
chmod a-w $@
1992-01-11 19:09:59 +08:00
define make-tar
@rm -fr make-$(version)
ln -s . make-$(version)
1993-04-17 02:41:16 +08:00
tar cvhof $@ $(addprefix make-$(version)/,$^)
1992-01-11 19:09:59 +08:00
rm -f make-$(version)
endef
1993-01-23 08:35:32 +08:00
%.Z: %; compress -c $< > $@
1993-06-03 05:09:00 +08:00
%.gz: %; gzip -9 -c -v $< > $@
1993-01-23 08:35:32 +08:00
make-doc-$(version).tar: README-doc COPYING make.dvi make.info make.info*
1992-01-11 19:09:59 +08:00
$(make-tar)
1993-01-23 08:35:32 +08:00
make-$(version).tar: README INSTALL COPYING ChangeLog NEWS \
1993-05-22 01:36:32 +08:00
configure Makefile.in configure.in build.sh.in mkinstalldirs \
1993-10-12 07:47:29 +08:00
acconfig.h $(srcs) remote-*.c $(globfiles) \
1993-07-01 11:36:40 +08:00
make.texinfo make-stds.texi \
1993-12-24 04:41:21 +08:00
make.?? make.??s make.toc make.aux make.man texinfo.tex TAGS tags \
1994-01-12 08:30:18 +08:00
install.sh \
make.info make.info*
1992-01-11 19:09:59 +08:00
$(make-tar)
1992-04-14 10:30:18 +08:00
ifneq (,)
1992-01-11 19:09:59 +08:00
tests := $(filter-out %~,$(wildcard tests/*))
make-tests-$(version).tar.Z: $(tests)
@rm -fr make-tests-$(version)
ln -s tests make-tests-$(version)
tar cvhf $(@:.Z=) $(patsubst tests/%,make-tests-$(version)/%,$^)
rm -f make-tests-$(version)
compress -f $(@:.Z=)
1992-04-14 10:30:18 +08:00
endif
1992-01-11 19:09:59 +08:00
$(archpfx)loadtest: $(archpfx)load.o