1 # GNU Make-specific makefile for GNU Make.
3 # Copyright (C) 1990, 91, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
4 # This file is part of GNU Make.
6 # GNU Make is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2, or (at your option)
11 # GNU Make is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with GNU Make; see the file COPYING. If not, write to
18 # the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
23 # Set `ARCH' to a string for the type of machine.
37 override REMOTE
:= cstms
39 override REMOTE
:= stub
42 # Get most of the information from the Unix-compatible makefile.
43 include compatMakefile
45 MAKE
= $(MAKE_COMMAND
) $(MAKEOVERRIDES
)
47 # Remove autoconf magic.
49 exec_prefix = $(prefix)
50 extras
:= $(filter-out getloadavg.o @
%@
,$(extras
)) getloadavg.o
51 LOADLIBES
:= $(filter-out @
%@
,$(LOADLIBES
))
52 ALLOCA
:= $(filter-out @
%@
,$(ALLOCA
))
53 CPPFLAGS
:= $(filter-out @
%@
,$(defines
) $(CPPFLAGS
)) -DHAVE_CONFIG_H
56 configure config.h.in
: $(patsubst %,$(AC_MACRODIR
)/%.m4
,acspecific acgeneral
)
57 config.h.in
: $(AC_MACRODIR
)/acconfig.h
59 configure
: configure.in aclocal.m4
61 test -d CVS
&& cvs commit
-m
'autoconf $(ACFLAGS)' $@
62 config.h.in
: configure.in aclocal.m4
64 test -d CVS
&& cvs commit
-m
'autoheader $(ACFLAGS)' $@
67 defines
:= $(defines
) -Ipmake
/customs
-Ipmake
/lib
/include
68 LOADLIBES
:= $(addprefix pmake
/customs
/,customslib.o rpc.o xlog.o
) \
69 pmake
/lib
/sprite
/libsprite.a
75 libc_dir
= /home
/gd2
/gnu
/libc
/$(ARCH
)
76 ifneq ($(wildcard $(libc_dir
)),)
77 ifneq ($(wildcard $(libc_dir
)/works-for-make
),)
78 #CPPFLAGS := -I$(libc_dir)/include
79 #LDFLAGS := -nostdlib $(libc_dir)/lib/start.o
80 #LOADLIBES := $(LOADLIBES) \
81 # $(libc_dir)/lib/mcheck-init.o \
82 # $(libc_dir)/lib/libc.a \
84 # $(libc_dir)/lib/libc.a
89 #GETOPT_SRC = Don't clear this or dist will break.
91 # glob is in libc too.
96 endif # works-for-make
100 # We know the type of machine, so put the binaries in subdirectories.
102 $(COMPILE.c
) -Iglob
$< $(OUTPUT_OPTION
)
103 $(ARCH
)/glob
/libglob.a
: FORCE
104 $(MAKE
) -C
$(@D
) $(@F
)
106 objs
:= $(addprefix $(ARCH
)/,$(objs
))
111 $(archpfx
)load.o
: load.c
112 $(COMPILE.c
) $(LOAD_AVG
) $< -o
$@
113 $(archpfx
)load.dep
: load.c
114 $(mkdep
) $(LOAD_AVG
) $< | sed
's,$*\.o,& $@,' > $@
116 CPPFLAGS
:= -I
$(ARCH
) -Iglob
-DHAVE_CONFIG_H
$(filter-out @
%@
,$(CPPFLAGS
))
118 ifneq "$(wildcard $(ARCH)/makefile)" ""
119 include $(ARCH
)/makefile
121 objs
:= $(objs
) $(addprefix $(ARCH
)/,$(ALLOCA
) $(extras
))
127 ifneq "$(findstring gcc,$(CC))" ""
128 CFLAGS
= -g
-Wall
-Wtraditional
-Wid-clash-31
-Wpointer-arith \
129 -Wbad-function-cast
-Wconversion
135 # Define the command to make dependencies.
136 mkdep-nolib
= $(CC
) -MM
$(CPPFLAGS
)
137 mkdep
= $(CC
) -M
$(CPPFLAGS
)
139 depfiles
= $(patsubst %.o
,%.dep
,$(filter %.o
,$(objs
)))
145 $(prog
): $(objs
) $(globdep
) #$(addprefix $(ARCH)/,gmalloc.o mcheck.o)
146 $(CC
) $(LDFLAGS
) $^
$(globlib
) $(LOADLIBES
) -o
$@.new
149 libc-srcdir
= ..
/libc
150 globfiles
= $(addprefix glob
/,COPYING.LIB configure.in configure Makefile.in \
151 Makefile.ami SCOPTIONS SMakefile \
152 configure.bat glob.c fnmatch.c glob.h fnmatch.h
)
153 $(globfiles
): stamp-glob
;
154 stamp-glob
: $(libc-srcdir
)/posix
/glob.
tar
155 -rm -f stamp-glob glob
/*
157 cvs commit
-m
'Updated from libc' glob
159 $(libc-srcdir
)/posix
/glob.
tar: force
160 $(MAKE
) -C
$(@D
) $(@F
) no_deps
=t
164 # Make the Unix-compatible Makefile to be distributed by appending
165 # the automatically-generated dependencies to compatMakefile.
166 ifeq ($(mkdep
),$(mkdep-nolib
))
167 nolib-deps
= $(depfiles
)
170 $(mkdep-nolib
) $< | sed
-e
's,$*\.o,$(@:.dep=.o) $@,' > $(@
:.dep
=.dtm
)
171 mv
-f
$(@
:.dep
=.dtm
) $@
172 nolib-deps
= $(patsubst $(archpfx
)%,%,$(depfiles
))
174 # The distributed Makefile.in should contain deps for remote-stub only.
175 Makefile.in
: compatMakefile
$(nolib-deps
:remote-
%.dep
=remote-stub.dep
)
176 (sed
's/^MAKE[ ]*=.*$$/@SET_MAKE@/' $<; \
177 echo
'# Automatically generated dependencies.'; \
178 sed
-e
's/ [^ ]*\.dep//' -e
's=$(archpfx)==' $(filter-out $<,$^
) \
180 cvs commit
-mRegenerated
$@
183 # Maintain the automatically-generated dependencies.
188 $(mkdep
) $< | sed
's,$*\.o,$(@:.dep=.o) $@,' > $@
190 ETAGS
= etags
-T
# for v19 etags
194 testdir
:= $(shell ls
-d1 make-test-?.? |
sort -n
+0.10 -0.11 +0.12 | tail
-1l)
195 tests
:# $(testdir)/run_make_tests.pl $(prog)
196 # cd $(<D); MAKELEVEL=0 perl $(<F)
198 build.sh.in
: build.template compatMakefile
199 sed
-e
's@%objs%@$(filter-out remote-% $(GLOB) $(ALLOCA) $(extras),\
200 $(patsubst $(archpfx)%,%,$(objs)))\
201 $(patsubst %.c,%.o,$(filter %.c,$(globfiles)))@' \
205 cvs commit
-mRegenerated
$@
207 # Make the distribution tar files.
210 # Figure out the version number from the source of `version.c'.
212 $(strip $(shell sed
-e
'/=/!d' -e
's/^.*"\(.*\)";$$/\1/' < version.c
))
213 tarfiles
:= make
# make-doc
214 tarfiles
:= $(addsuffix -$(version
).
tar,$(tarfiles
))
215 tarfiles
:= $(tarfiles
:%=%.gz
) # no more compress $(tarfiles:%=%.Z)
216 # Depend on default and doc so we don't ship anything that won't compile.
217 dist: cvs-mark default
info dvi tests tarfiles
219 tarfiles
: $(tarfiles
)
221 vmsfiles
= config.h-vms makefile.com makefile.vms readme.vms \
222 vmsdir.h vmsfunctions.c vmsify.c
223 amigafiles
= README.Amiga config.ami Makefile.ami SCOPTIONS SMakefile \
224 amiga.c amiga.h make.lnk
225 win32files
= README.WIN32 build_w32.bat config.h.WIN32 subproc.bat NMakefile \
226 $(addprefix w32
/,pathstuff.c compat
/dirent.c
include/dirent.h \
227 include/pathstuff.h
include/sub_proc.h \
228 include/w32err.h subproc
/NMakefile \
229 subproc
/build.bat subproc
/misc.c \
230 subproc
/proc.h subproc
/sub_proc.c \
232 distfiles
=README INSTALL COPYING ChangeLog NEWS \
233 configure Makefile.in configure.in build.sh.in mkinstalldirs \
234 configh.dos configure.bat \
235 $(amigafiles
) $(vmsfiles
) $(win32files
) \
236 aclocal.m4 acconfig.h
$(srcs
) remote-
*.c
$(globfiles
) \
237 make.texinfo make-stds.texi \
238 make.?? make.??s make.toc make.aux make.man texinfo.
tex TAGS
tags \
246 cvs-mark
: $(distfiles
)
247 cvs tag
-F make-
$(subst .
,-,$(version
))
252 install -c
-g kmem
-o
$(USER
) -m
2755 $< /usr
/local
/gnubin
/make
254 # Put the alpha distribution files in the anonymous FTP directory.
255 alpha-files
= $(tarfiles
) GNUmakefile compatMakefile
$(testdir
).
tar.Z
258 alpha-dir
:= ~ftp
/gnu
259 alpha-files
:= $(addprefix $(alpha-dir
)/,$(alpha-files
))
260 alpha
: $(alpha-dir
) $(alpha-files
)
265 # Implicit rule to make README and README-doc.
266 %: %.template version.c
268 sed
's/VERSION/$(version)/' < $< > $@
269 # Make sure I don't edit it by accident.
271 cvs commit
-m
'Regenerated for $(version)' $@
274 @
rm -fr make-
$(version
)
275 ln
-s . make-
$(version
)
276 tar cvhof
$@
$(addprefix make-
$(version
)/,$^
)
277 rm -f make-
$(version
)
280 %.Z
: %; compress
-c
$< > $@
281 %.gz
: %; gzip
-9 -c
-v
$< > $@
283 make-
$(version
).
tar: $(distfiles
)
287 tests
:= $(filter-out %~
,$(wildcard tests
/*))
288 make-tests-
$(version
).
tar.Z
: $(tests
)
289 @
rm -fr make-tests-
$(version
)
290 ln
-s tests make-tests-
$(version
)
291 tar cvhf
$(@
:.Z
=) $(patsubst tests
/%,make-tests-
$(version
)/%,$^
)
292 rm -f make-tests-
$(version
)
296 $(archpfx
)loadtest
: $(archpfx
)load.o