|
|
1.1 root 1: # Makefile for GNU C compiler.
2: # Copyright (C) 1987, 1988, 1990, 1991 Free Software Foundation, Inc.
3:
4: #This file is part of GNU CC.
5:
6: #GNU CC 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)
9: #any later version.
10:
11: #GNU CC 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.
15:
16: #You should have received a copy of the GNU General Public License
17: #along with GNU CC; see the file COPYING. If not, write to
18: #the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19:
20: # The targets for external use include:
21: # all, doc, proto, install, install-cross, install-cross-rest,
1.1.1.2 ! root 22: # uninstall, TAGS, mostlyclean, clean, distclean, realclean,
1.1 root 23: # stage1, stage2, stage3, stage4.
24:
1.1.1.2 ! root 25: # Suppress smart makes who think they know how to automake Yacc files
! 26: .y.c:
! 27:
1.1 root 28: .NOEXPORT: # This tells GNU Make version 3
29: # not to put all the variables in the environment.
30:
31: # Variables that exist for you to override.
32: # See below for how to change them for certain systems.
33:
34: # Selection of languages to be made.
35: LANGUAGES = c c++ objective-c proto
36:
37: ALLOCA =
38: ALLOCA_FLAGS = -S -Demacs
39: ALLOCA_FINISH = as -o alloca.o alloca.s
40:
41: # Various ways of specifying flags for compilations:
42: # CFLAGS is for the user to override to, e.g., do a bootstrap with -O2.
43: # BOOT_CFLAGS is the value of CFLAGS to pass
44: # to the stage2 and stage3 compilations
45: # XCFLAGS is used for most compilations but not when using the GCC just built.
46: XCFLAGS =
47: CFLAGS = -g
48: BOOT_CFLAGS = -O $(CFLAGS)
49: # These exists to be overridden by the x-* and t-* files, respectively.
50: X_CFLAGS =
51: T_CFLAGS =
52:
53: X_CPPFLAGS =
54: T_CPPFLAGS =
55:
56: CC = cc
57: BISON = bison
58: BISONFLAGS =
59: AR = ar
60: OLDAR_FLAGS = qc
61: AR_FLAGS = rc
62: SHELL = /bin/sh
63: # on sysV, define this as cp.
64: INSTALL = install -c
65: # These permit overriding just for certain files.
66: INSTALL_PROGRAM = $(INSTALL)
67: INSTALL_DATA = $(INSTALL)
68: SYMLINK = ln -s
69:
70: # Define this as & to perform parallel make on a Sequent.
71: # Note that this has some bugs, and it seems currently necessary
72: # to compile all the gen* files first by hand to avoid erroneous results.
73: P =
74:
75: # How to invoke ranlib.
76: RANLIB = ranlib
77: # Test to use to see whether ranlib exists on the system.
78: RANLIB_TEST = [ -f /usr/bin/ranlib -o -f /bin/ranlib ]
79:
80: # Compiler to use for compiling libgcc1.a.
81: # OLDCC should not be the GNU C compiler,
82: # since that would compile typical libgcc1.a functions such as mulsi3
83: # into infinite recursions.
84: OLDCC = cc
85:
86: # CFLAGS for use with OLDCC, for compiling libgcc1.a.
87: # NOTE: -O does not work on some Unix systems!
88: CCLIBFLAGS = -O
89:
1.1.1.2 ! root 90: # Version of ar to use when compiling libgcc1.a.
1.1 root 91: OLDAR = ar
92:
93: # The GCC to use for compiling libgcc2.a. Usually the one we just built.
94: # Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS).
95: GCC_FOR_TARGET = ./gcc
96:
97: # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET.
98: # It omits XCFLAGS, and specifies -B./.
99: GCC_CFLAGS=$(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) -B./
100:
101: # Special flags for compiling enquire.
102: # We disable optimization to make floating point more reliable.
103: ENQUIRE_CFLAGS = -DNO_SC -DNO_MEM -DNO_STDDEF -O0
104: ENQUIRE_LDFLAGS = $(LDFLAGS)
105:
106: # Tools to use when building a cross-compiler.
107: # These are used because `configure' appends `cross-make'
108: # to the makefile when making a cross-compiler.
109:
110: TARGET_TOOLPREFIX = $(tooldir)/bin/
111: AR_FOR_TARGET = $(TARGET_TOOLPREFIX)ar
112: AR_FOR_TARGET_FLAGS = rc
113: RANLIB_FOR_TARGET = $(TARGET_TOOLPREFIX)ranlib
114: RANLIB_TEST_FOR_TARGET = [ -f $(TARGET_TOOLPREFIX)ranlib ]
115: CROSS_TOOLS =
116:
117: target= ... `configure' substitutes actual target name here.
118: xmake_file= ... `configure' substitutes actual x- file name here.
119: tmake_file= ... `configure' substitutes actual t- file name here.
120: version=`awk '{printf "%s", substr ($$4, 2, length ($$4) - 3); }' $(srcdir)/version.c`
121:
122: # Directory where sources are, from where we are.
123: srcdir = .
124: # Common prefix for installation directories.
125: # NOTE: This directory must exist when you start installation.
126: prefix = /usr/local
1.1.1.2 ! root 127: # Directory in which to put host dependent programs and libraries
! 128: exec_prefix = $(prefix)
1.1 root 129: # Directory in which to put the executable for the command `gcc'
1.1.1.2 ! root 130: bindir = $(exec_prefix)/bin
1.1 root 131: # Directory in which to put the directories used by the compiler.
1.1.1.2 ! root 132: libdir = $(exec_prefix)/lib
1.1 root 133: # Directory in which the compiler finds executables, libraries, etc.
1.1.1.2 ! root 134: libsubdir = $(libdir)/gcc-lib/$(target)/$(version)
1.1 root 135: # Extension (if any) to put in installed man-page filename.
136: manext = .1
137: # Directory in which to put man pages.
138: mandir = $(prefix)/man/man1
139: # Directory in which to find other cross-compilation tools and headers.
140: # Used in install-cross.
141: tooldir = $(prefix)/$(target)
142:
143: # Additional system libraries to link with.
144: CLIB=
145:
146: # Change this to a null string if obstacks are installed in the
147: # system library.
148: OBSTACK=obstack.o
149:
150: # Specify the rule for actually making libgcc1.a.
1.1.1.2 ! root 151: # The value may be empty; that means to do absolutely nothing
! 152: # with or for libgcc1.a.
1.1 root 153: LIBGCC1 = libgcc1.a
154:
155: # Specify the rule for actually making libgcc2.a.
156: LIBGCC2 = libgcc2.a
157:
158: # Options to use when compiling libgcc2.a.
159: # -g1 causes output of debug info only for file-scope entities.
160: # we use this here because that should be enough, and also
161: # so that -g1 will be tested.
162: LIBGCC2_CFLAGS = -O2 $(GCC_CFLAGS) -g1
163:
164: # List of extra executables that should be compiled for this target machine
165: # that are used for compiling from source code to object code.
166: # The rules for compiling them should be in the t-* file for the machine.
167: EXTRA_PASSES =
168:
1.1.1.2 ! root 169: # Like EXTRA_PASSES, but these are used when linking.
! 170: EXTRA_PROGRAMS =
! 171:
! 172: # List of extra object files that should be compiled for this target machine.
1.1 root 173: # The rules for compiling them should be in the t-* file for the machine.
174: EXTRA_PARTS =
175:
176: # List of extra object files that should be compiled and linked with
177: # compiler proper (cc1, cc1obj, cc1plus).
178: EXTRA_OBJS =
179:
180: # List of extra C and assembler files to add to libgcc1.a.
181: # Assembler files should have names ending in `.asm'.
182: LIB1FUNCS_EXTRA =
183:
184: # List of extra C and assembler files to add to libgcc2.a.
185: # Assembler files should have names ending in `.asm'.
186: LIB2FUNCS_EXTRA =
187:
188: # Program to convert libraries.
189: LIBCONVERT =
190:
191: # Control whether header files are installed.
192: # We will change this to install-fixincludes eventually.
193: # It would be useful for people to try this now.
194: INSTALL_HEADERS=install-headers
195:
196: # Select which version of fixincludes to use (I.E. regular versus SVR4)
197: FIXINCLUDES=fixincludes
198:
199: # List of things which should already be built whenever we try to use gcc
200: # to compile anything (without linking).
201: GCC_PASSES=gcc cc1 cpp $(EXTRA_PASSES)
202:
203: # List of things which should already be built whenever we try to use gcc
204: # to link anything.
1.1.1.2 ! root 205: GCC_PARTS=$(GCC_PASSES) libgcc.a $(EXTRA_PROGRAMS) $(EXTRA_PARTS)
1.1 root 206:
207: # Change this to empty to prevent installing limits.h.
1.1.1.2 ! root 208: # Actually, this currently has no effect,
1.1 root 209: # and if that causes no problems, it can be deleted.
1.1.1.2 ! root 210: # Otherwise, it must be replaced so as to control
1.1 root 211: # the actions of install-limits-h.
212: LIMITS_H = limits.h
213:
214: # Directory to link to, when using the target `maketest'.
215: DIR = ../gcc
216:
217: # Flags to use when cross-building GCC.
218: # Prefix to apply to names of object files when using them
219: # to run on the machine we are compiling on.
220: HOST_PREFIX=
221: # Prefix to apply to names of object files when compiling them
222: # to run on the machine we are compiling on.
223: # The default for this variable is chosen to keep these rules
224: # out of the way of the other rules for compiling the same source files.
225: HOST_PREFIX_1=loser-
226: HOST_CC=$(CC)
227: HOST_CFLAGS=$(ALL_CFLAGS)
228: HOST_CLIB=$(CLIB)
229: HOST_LDFLAGS=$(LDFLAGS)
230: HOST_CPPFLAGS=$(ALL_CPPFLAGS)
231: HOST_ALLOCA=$(ALLOCA)
232: HOST_MALLOC=$(MALLOC)
233: HOST_OBSTACK=$(OBSTACK)
234:
235: # Choose the real default target.
236: ALL=all.internal
237:
238: # Choose the real install target.
239: INSTALL_TARGET=install-native
240:
241: # End of variables for you to override.
242:
243: # Definition of `all' is here so that new rules inserted by sed
244: # do not specify the default target.
245: # The real definition is under `all.internal' (for native compilers)
246: # or `all.cross' (for cross compilers).
1.1.1.2 ! root 247: all: all.indirect
1.1 root 248:
249: # sed inserts variable overrides after the following line.
250: ####
251:
252: # Now figure out from those variables how to compile and link.
253:
1.1.1.2 ! root 254: all.indirect: $(ALL)
! 255:
1.1 root 256: INTERNAL_CFLAGS = $(CROSS)
257:
258: # This is the variable actually used when we compile.
259: ALL_CFLAGS = $(INTERNAL_CFLAGS) $(X_CFLAGS) $(T_CFLAGS) $(CFLAGS) $(XCFLAGS)
260:
261: # Likewise.
262: ALL_CPPFLAGS = $(CPPFLAGS) $(X_CPPFLAGS) $(T_CPPFLAGS)
263:
264: # Even if ALLOCA is set, don't use it if compiling with GCC.
1.1.1.2 ! root 265: USE_ALLOCA= ` case "${CC}" in "${OLDCC}") echo ${ALLOCA} ;; esac `
! 266: USE_HOST_ALLOCA= ` case "${HOST_CC}"@"${HOST_ALLOCA}" in "${OLDCC}"@?*) echo ${HOST_PREFIX}${HOST_ALLOCA} ;; esac `
! 267: USE_HOST_MALLOC= ` case "${HOST_MALLOC}" in ?*) echo ${HOST_PREFIX}${HOST_MALLOC} ;; esac `
! 268: USE_HOST_OBSTACK= ` case "${HOST_OBSTACK}" in ?*) echo ${HOST_PREFIX}${HOST_OBSTACK} ;; esac `
1.1 root 269:
270: # Dependency on obstack, alloca, malloc or whatever library facilities
271: # are not installed in the system libraries.
272: # We don't use USE_ALLOCA because backquote expansion doesn't work in deps.
273: LIBDEPS= $(OBSTACK) $(ALLOCA) $(MALLOC)
274:
275: # Likewise, for use in the tools that must run on this machine
276: # even if we are cross-building GCC.
277: # We don't use USE_ALLOCA because backquote expansion doesn't work in deps.
278: HOST_LIBDEPS= $(HOST_PREFIX)$(HOST_OBSTACK) $(HOST_PREFIX)$(HOST_ALLOCA) $(HOST_PREFIX)$(HOST_MALLOC)
279:
280: # How to link with both our special library facilities
281: # and the system's installed libraries.
282: LIBS = $(OBSTACK) $(USE_ALLOCA) $(MALLOC) $(CLIB)
283:
284: # Likewise, for use in the tools that must run on this machine
285: # even if we are cross-building GCC.
286: HOST_LIBS = $(USE_HOST_OBSTACK) $(USE_HOST_ALLOCA) $(USE_HOST_MALLOC) \
287: $(HOST_CLIB)
288:
289: HOST_RTL = $(HOST_PREFIX)rtl.o
290: HOST_RTLANAL = $(HOST_PREFIX)rtlanal.o
291:
292: # Specify the directories to be searched for header files.
293: # Both . and srcdir are used, in that order,
294: # so that tm.h and config.h will be found in the compilation
295: # subdirectory rather than in the source directory.
296: INCLUDES = -I. -I$(srcdir) -I$(srcdir)/config
297: SUBDIR_INCLUDES = -I.. -I../$(srcdir) -I../$(srcdir)/config
298:
299: # Always use -I$(srcdir)/config when compiling.
300: .c.o:
301: $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
302:
303: # This tells GNU make version 3 not to export all the variables
304: # defined in this file into the environment.
305: .NOEXPORT:
306:
307: # Lists of files for various purposes.
308:
309: # A list of all the language-specific executables.
310: COMPILERS = cc1 cc1plus cc1obj
311:
312: # Language-specific object files for C.
313: C_OBJS = c-parse.o c-lang.o \
314: c-lex.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o
315:
316: # Language-specific object files for Objectionable C.
317: OBJC_OBJS = objc-parse.o objc-actions.o \
318: c-lex.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o
319:
320: # Language-specific object files for C++.
321: CPLUS_OBJS = cp-parse.o cp-decl.o cp-decl2.o \
322: cp-typeck.o cp-type2.o cp-tree.o cp-ptree.o \
323: cp-cvt.o cp-search.o cp-lex.o cp-gc.o cp-call.o \
324: cp-class.o cp-init.o cp-method.o cp-except.o \
325: cp-expr.o cp-pt.o cp-edsel.o cp-xref.o \
326: $(CPLUS_INPUT) cp-spew.o c-common.o
327:
328: # Language-independent object files.
329: OBJS = toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o \
330: function.o stmt.o expr.o calls.o expmed.o explow.o optabs.o varasm.o \
1.1.1.2 ! root 331: rtl.o print-rtl.o rtlanal.o emit-rtl.o \
! 332: dbxout.o sdbout.o dwarfout.o xcoffout.o \
1.1 root 333: integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o \
334: regclass.o local-alloc.o global-alloc.o reload.o reload1.o caller-save.o \
335: insn-peep.o reorg.o sched.o final.o recog.o reg-stack.o \
336: insn-recog.o insn-extract.o insn-output.o insn-emit.o \
1.1.1.2 ! root 337: insn-attrtab.o aux-output.o getpwd.o $(EXTRA_OBJS)
1.1 root 338:
339: # GEN files are listed separately, so they can be built before doing parallel
340: # makes for cc1 or cc1plus. Otherwise sequent parallel make attempts to load
341: # them before rtl.o is compiled.
342: GEN= genemit genoutput genrecog genextract genflags gencodes genconfig genpeep
343:
344: # Files to be copied away after each stage in building.
345: STAGESTUFF = *.o insn-flags.h insn-config.h insn-codes.h \
346: insn-output.c insn-recog.c insn-emit.c insn-extract.c insn-peep.c \
347: insn-attr.h insn-attrtab.c \
348: stamp-flags stamp-config stamp-codes \
349: stamp-output stamp-recog stamp-emit stamp-extract stamp-peep \
350: stamp-attr stamp-attrtab \
351: genemit genoutput genrecog genextract genflags gencodes genconfig genpeep \
352: genattrtab genattr \
353: $(GCC_PASSES) $(EXTRA_PARTS) gcc-cross cccp cc1plus cc1obj enquire \
354: protoize unprotoize specs collect2
355:
356: # Members of libgcc1.a.
357: LIB1FUNCS = _mulsi3 _udivsi3 _divsi3 _umodsi3 _modsi3 \
358: _lshrsi3 _lshlsi3 _ashrsi3 _ashlsi3 \
359: _divdf3 _muldf3 _negdf2 _adddf3 _subdf3 \
360: _fixdfsi _fixsfsi _floatsidf _floatsisf _truncdfsf2 _extendsfdf2 \
361: _addsf3 _negsf2 _subsf3 _mulsf3 _divsf3 \
362: _eqdf2 _nedf2 _gtdf2 _gedf2 _ltdf2 _ledf2 \
363: _eqsf2 _nesf2 _gtsf2 _gesf2 _ltsf2 _lesf2
364:
365: # Library members defined in libgcc2.c.
366: LIB2FUNCS = _muldi3 _divdi3 _moddi3 _udivdi3 _umoddi3 _negdi2 \
367: _lshrdi3 _lshldi3 _ashldi3 _ashrdi3 \
368: _udivmoddi4 _cmpdi2 _ucmpdi2 _floatdidf _floatdisf \
369: _fixunsdfsi _fixunssfsi _fixunsdfdi _fixdfdi _fixunssfdi _fixsfdi \
370: _varargs _eprintf _builtin_new _builtin_New _builtin_del \
371: _bb _shtab _clear_cache _trampoline __main _exit
372:
373: # Header files that are made available under the same name
374: # to programs compiled with gcc.
375: USER_H = assert.h va-hp800.h va-i860.h va-mips.h va-pyr.h va-sparc.h \
376: va-spur.h va-m88k.h proto.h
377:
378: # All the header files that are installed for users from GCC itself.
379: INSTALLED_H = float.h stddef.h stdarg.h varargs.h $(USER_H) limits.h
380:
381: # The files that "belong" in CONFIG_H are deliberately omitted
382: # because having them there would not be useful in actual practice.
383: # All they would do is cause complete recompilation every time
384: # one of the machine description files is edited.
385: # That may or may not be what one wants to do.
386: # If it is, rm *.o is an easy way to do it.
387: # CONFIG_H = config.h tm.h
388: CONFIG_H =
389: RTL_H = rtl.h rtl.def machmode.h machmode.def
390: TREE_H = tree.h real.h tree.def machmode.h machmode.def
391: CPLUS_TREE_H = $(TREE_H) cp-tree.h cp-tree.def
392:
393: # Avoid a lot of time thinking about remaking Makefile.in and *.def.
394: .SUFFIXES: .in .def
395:
396: Makefile: $(srcdir)/Makefile.in $(srcdir)/configure \
397: $(srcdir)/config/$(xmake_file) $(srcdir)/config/$(tmake_file)
398: sh config.status
399:
400: all.internal: start.encap rest.encap
401: # This is what to compile if making a cross-compiler.
402: all.cross: native gcc-cross
403: # This is what must be made before installing GCC and converting libraries.
404: start.encap: native gcc $(LIBGCC1_TARGET)
405: # Use this to make a GCC that will be used only to recompile GCC.
406: for-bootstrap: start.encap libgcc.a
407: # These can't be made, with COFF encapsulation, until after GCC can run.
1.1.1.2 ! root 408: rest.encap: libgcc.a float.h $(EXTRA_PARTS)
1.1 root 409: # This is what is made with the host's compiler
410: # whether making a cross compiler or not.
1.1.1.2 ! root 411: native: config.status cpp $(LANGUAGES) $(EXTRA_PASSES) $(EXTRA_PROGRAMS)
1.1 root 412:
413: # Define the names for selecting languages in LANGUAGES.
414: C c: cc1
415: C++ c++: cc1plus
416: OBJC objc: cc1obj
417: OBJECTIVE-C objective-c: cc1obj
418: PROTO: proto
419:
1.1.1.2 ! root 420: # Really, really stupid make features, such as SUN's KEEP_STATE, may force
! 421: # a target to build even if it is up-to-date. So we must verify that
! 422: # config.status does not exist before failing.
1.1 root 423: config.status:
1.1.1.2 ! root 424: @if [ ! -f config.status ] ; then \
! 425: echo You must configure gcc. Look at the INSTALL file for details.; \
! 426: false; \
! 427: else \
! 428: true; \
! 429: fi
1.1 root 430:
431: compilations: ${OBJS}
432:
433: gcc: gcc.o version.o $(LIBDEPS)
434: $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o gccnew gcc.o version.o $(LIBS)
435: # Go via `gccnew' to avoid `file busy' if $(CC) is `gcc'.
436: mv -f gccnew gcc
437: # Dump a specs file to make -B./ read these specs over installed ones
438: ./gcc -dumpspecs > specs
439:
440: # We do want to create an executable named `gcc', so we can use it to
441: # compile libgcc2.a.
442: # Also create gcc-cross, so that install-common will install properly.
443: gcc-cross: gcc
444: cp gcc gcc-cross
445:
446: cc1:$(P) $(C_OBJS) $(OBJS) $(LIBDEPS)
447: $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cc1 $(C_OBJS) $(OBJS) $(LIBS)
448:
449: cc1plus:$(P) $(CPLUS_OBJS) $(OBJS) $(LIBDEPS)
450: $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cc1plus $(CPLUS_OBJS) $(OBJS) $(LIBS)
451:
452: cc1obj:$(P) $(OBJC_OBJS) $(OBJS) $(LIBDEPS)
453: $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cc1obj $(OBJC_OBJS) $(OBJS) $(LIBS)
454:
455: float.h: enquire
456: -./enquire -f > tmp-float.h
457: mv tmp-float.h float.h
458:
459: # Used to compile enquire with standard cc, but have forgotten why.
460: # Let's try with GCC.
461: enquire: enquire.o $(GCC_PARTS)
462: $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ENQUIRE_LDFLAGS) enquire.o -o $@
463: enquire.o: $(srcdir)/enquire.c $(GCC_PASSES)
464: -cp $(srcdir)/enquire.c . > /dev/null 2>&1
465: # Breaking this line caused a problem with one version of GNU make.
466: $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(ENQUIRE_CFLAGS) -I. -c enquire.c
467:
468: # Build libgcc.a.
469: # This is done in two parts because some functions, in libgcc1.c,
470: # must be compiled with something other than gcc,
471: # while the rest, in libgcc2.c, must be compiled with gcc.
472: # That means we can't do libgcc2.c until after gcc, cc1, etc.
473:
474: # Use this as value of LIBGCC1 to cause conversion to GNU library format.
475: # LIBCONVERT should put its output in libgcc1.conv.
476: libgcc1.conv: libgcc1.a
477: $(LIBCONVERT) libgcc1.a libgcc1.conv
478:
479: # Use this as value of LIBGCC1 to inhibit use of libgcc1.c entirely.
480: # Make an empty file instead.
481: libgcc1.null: $(CROSS_TOOLS) $(GCC_PASSES)
482: echo "__foo () {}" > dummy.c
483: $(GCC_FOR_TARGET) $(GCC_CFLAGS) -c dummy.c
484: $(OLDAR) $(OLDAR_FLAGS) libgcc1.null dummy.o
485: rm -f dummy.o dummy.c
486:
487: # Compile the library of arithmetic subroutines with the native compiler.
488: # Don't compile it with gcc!
489: # (That would cause most arithmetic functions to call themselves.)
490: libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1FUNCS_EXTRA) config.status
491: -rm -f tmplibgcc1.a
492: # Actually build it in tmplibgcc1.a, then rename at end,
493: # so that libgcc1.a itself remains nonexistent if compilation is aborted.
494: # -e causes any failing command to make this rule fail.
495: # -e doesn't work in certain shells, so we test $$? as well.
496: set -e; \
497: for name in $(LIB1FUNCS); \
498: do \
499: echo $${name}; \
500: rm -f $${name}.o; \
501: $(OLDCC) $(CCLIBFLAGS) $(INCLUDES) -c -DL$${name} $(srcdir)/libgcc1.c; \
502: if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
503: mv libgcc1.o $${name}.o; \
504: $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}.o; \
505: rm -f $${name}.o; \
506: done
507: # Some shells crash when a loop has no items.
508: # So make sure there is always at least one--`..'.
509: # Then ignore it.
510: # We don't use -e here because there are if statements
511: # that should not make the command give up when the if condition is false.
512: # Instead, we test for failure after each command where it matters.
1.1.1.2 ! root 513: -for file in .. $(LIB1FUNCS_EXTRA); \
1.1 root 514: do \
515: if [ x$${file} != x.. ]; then \
516: name=`echo $${file} | sed -e 's/[.]c$$//' -e 's/[.]asm$$//'`; \
517: echo $${name}; \
518: if [ $${name}.asm = $${file} ]; then \
519: cp $${file} $${name}.s; file=$${name}.s; \
520: if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
521: else true; fi; \
522: $(OLDCC) $(CCLIBFLAGS) $(INCLUDES) -c $${file}; \
523: if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
524: $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}.o; \
525: if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
526: rm -f $${name}.[so]; \
527: else true; \
528: fi; \
529: done
530: mv tmplibgcc1.a libgcc1.a
531:
532: # Compiling libgcc2.a requires making sure that cc1, etc. have been compiled.
533: # But recompiling cc1 should not force recompilation of libgcc2.a.
534: # If you want to force recompilation, delete libgcc2.a.
535: # Depend on install-cross-tools to make sure we set up properly
536: # to run the assembler before we try compiling anything.
537: # install-cross-tools does nothing if not cross compiling.
538: libgcc2.ready: $(GCC_PASSES) $(CROSS_TOOLS)
539: -if [ -f libgcc2.ready ] ; then \
540: true; \
541: else \
542: touch libgcc2.ready; \
543: fi
544:
545: libgcc2.a: libgcc2.c libgcc2.ready $(CONFIG_H) $(LIB2FUNCS_EXTRA) \
546: longlong.h gbl-ctors.h config.status
547: # Actually build it in tmplibgcc2.a, then rename at end,
548: # so that libgcc2.a itself remains nonexistent if compilation is aborted.
549: -rm -f tmplibgcc2.a
550: # -e causes any failing command to make this rule fail.
551: # -e doesn't work in certain shells, so we test $$? as well.
552: set -e; \
553: for name in $(LIB2FUNCS); \
554: do \
555: echo $${name}; \
1.1.1.2 ! root 556: $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} \
1.1 root 557: $(srcdir)/libgcc2.c -o $${name}.o; \
558: if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
559: $(AR) $(AR_FLAGS) tmplibgcc2.a $${name}.o; \
560: rm -f $${name}.o; \
561: done
562: # Some shells crash when a loop has no items.
563: # So make sure there is always at least one--`..'.
564: # Then ignore it.
565: # We don't use -e here because there are if statements
566: # that should not make the command give up when the if condition is false.
567: # Instead, we test for failure after each command where it matters.
1.1.1.2 ! root 568: -for file in .. $(LIB2FUNCS_EXTRA); \
1.1 root 569: do \
570: if [ x$${file} != x.. ]; then \
571: name=`echo $${file} | sed -e 's/[.]c$$//' -e 's/[.]asm$$//'`; \
572: echo $${name}; \
573: if [ $${name}.asm = $${file} ]; then \
574: cp $${file} $${name}.s; file=$${name}.s; \
575: if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
576: else true; fi; \
1.1.1.2 ! root 577: $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \
1.1 root 578: if [ $$? -eq 0 ] ; then true; else exit 1; fi; \
579: $(AR) $(AR_FLAGS) tmplibgcc2.a $${name}.o; \
580: rm -f $${name}.[so]; \
581: else true; \
582: fi; \
583: done
584: mv tmplibgcc2.a libgcc2.a
585: # These lines were deleted from above the mv command
586: # because ranlibing libgcc.a itself should suffice.
587: # -if [ x${HPUX_GAS} = x ] ; then \
588: # if $(RANLIB_TEST) ; then $(RANLIB) tmplibgcc2.a; else true; fi \
589: # else true; fi
590:
591: # Combine the various libraries into a single library, libgcc.a.
592: libgcc.a: $(LIBGCC1) $(LIBGCC2)
593: -rm -rf tmplibgcc.a libgcc.a tmpcopy
594: mkdir tmpcopy
1.1.1.2 ! root 595: -if [ x$(LIBGCC1) != x ]; \
! 596: then (cd tmpcopy; $(AR) x ../$(LIBGCC1)); \
! 597: else true; \
! 598: fi
1.1 root 599: (cd tmpcopy; $(AR) x ../$(LIBGCC2))
600: (cd tmpcopy; $(AR) $(AR_FLAGS) ../tmplibgcc.a *.o)
601: rm -rf tmpcopy
602: -if $(RANLIB_TEST) ; then $(RANLIB) tmplibgcc.a; else true; fi
603: # Actually build it in tmplibgcc.a, then rename at end,
604: # so that libgcc.a itself remains nonexistent if compilation is aborted.
605: mv tmplibgcc.a libgcc.a
606:
607:
608: # Compile two additional files that are linked with every program
609: # linked using GCC on system V, for the sake of C++ constructors.
610: crtbegin.o: crtstuff.c $(GCC_PASSES) $(CONFIG_H) gbl-ctors.h
611: $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) -DCRT_BEGIN \
1.1.1.2 ! root 612: -finhibit-size-directive -g0 -c $(srcdir)/crtstuff.c -o crtbegin.o
1.1 root 613:
614: crtend.o: crtstuff.c $(GCC_PASSES) $(CONFIG_H) gbl-ctors.h
615: $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) -DCRT_END \
1.1.1.2 ! root 616: -finhibit-size-directive -g0 -c $(srcdir)/crtstuff.c -o crtend.o
1.1 root 617:
618: # Compiling object files from source files.
619:
620: # Note that dependencies on obstack.h are not written
621: # because that file is not part of GCC.
622: # Dependencies on gvarargs.h are not written
623: # because all that file does, when not compiling with GCC,
624: # is include the system varargs.h.
625:
626: # C language specific files.
627:
628: c-parse.o : $(srcdir)/c-parse.c $(CONFIG_H) $(TREE_H) c-lex.h c-tree.h input.h flags.h
629: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c $(srcdir)/c-parse.c
630: $(srcdir)/c-parse.c $(srcdir)/c-parse.h: $(srcdir)/c-parse.y
631: cd $(srcdir); $(BISON) $(BISONFLAGS) -d c-parse.y -o c-parse.c
632:
633: c-decl.o : c-decl.c $(CONFIG_H) $(TREE_H) c-tree.h c-lex.h flags.h
634: c-typeck.o : c-typeck.c $(CONFIG_H) $(TREE_H) c-tree.h flags.h
635: c-lang.o : c-lang.c $(CONFIG_H) $(TREE_H)
636: c-lex.o : c-lex.c $(CONFIG_H) $(TREE_H) c-lex.h c-tree.h c-parse.h \
637: input.h flags.h
638: c-aux-info.o : c-aux-info.c $(CONFIG_H) $(TREE_H) c-tree.h flags.h
639: c-convert.o : c-convert.c $(CONFIG_H) $(TREE_H) flags.h
640:
641: # C++ language specific files.
642:
643: cp-parse.o : $(srcdir)/cp-parse.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
644: $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
645: `echo $(srcdir)/cp-parse.c | sed 's,^\./,,'`
646:
647: $(srcdir)/cp-parse.c $(srcdir)/cp-parse.h : $(srcdir)/cp-parse.y
648: @echo expect 30 shift/reduce conflicts and 14 reduce/reduce conflicts
649: cd $(srcdir); $(BISON) $(BISONFLAGS) -d -o cp-parse.c cp-parse.y
650:
651: cp-spew.o : cp-spew.c $(CONFIG_H) $(CPLUS_TREE_H) \
652: $(srcdir)/cp-parse.h flags.h
653: cp-lex.o : cp-lex.c $(CONFIG_H) $(CPLUS_TREE_H) \
654: $(srcdir)/cp-parse.h $(srcdir)/cp-input.c flags.h
655: cp-decl.o : cp-decl.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h \
656: cp-lex.h cp-decl.h stack.h
657: cp-decl2.o : cp-decl2.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h \
658: cp-lex.h cp-decl.h
659: cp-type2.o : cp-type2.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
660: cp-typeck.o : cp-typeck.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
661: cp-class.o : cp-class.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h \
662: cp-class.h flags.h
663: cp-call.o : cp-call.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h cp-class.h \
664: flags.h
665: cp-init.o : cp-init.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
666: cp-method.o : cp-method.c $(CONFIG_H) $(CPLUS_TREE_H)
667: cp-cvt.o : cp-cvt.c $(CONFIG_H) $(CPLUS_TREE_H)
668: cp-search.o : cp-search.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h flags.h
669: cp-tree.o : cp-tree.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
670: cp-ptree.o : cp-ptree.c $(CONFIG_H) $(CPLUS_TREE_H)
671: cp-gc.o : cp-gc.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
672: cp-except.o : cp-except.c $(CONFIG_H) $(CPLUS_TREE_H) flags.h
673: cp-expr.o : cp-expr.c $(CONFIG_H) $(CPLUS_TREE_H) $(RTL_H) flags.h \
674: expr.h insn-codes.h
675: cp-edsel.o : cp-edsel.c $(CONFIG_H) $(CPLUS_TREE_H) stack.h flags.h
676: cp-xref.o : cp-xref.c $(CONFIG_H) $(CPLUS_TREE_H)
677: cp-pt.o : cp-pt.c $(CONFIG_H) $(CPLUS_TREE_H) cp-decl.h cp-parse.h
678:
679: collect2 : collect2.o version.o $(LIBDEPS)
680: $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o collect2 collect2.o version.o $(LIBS)
681:
682: collect2.o : collect2.c $(CONFIG_H) gstab.h
1.1.1.2 ! root 683: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
! 684: -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
! 685: -DSTANDARD_BIN_PREFIX=\"$(bindir)/\" \
! 686: -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-lib/\" \
! 687: -DDEFAULT_TARGET_MACHINE=\"$(target)\" \
! 688: -c `echo $(srcdir)/collect2.c | sed 's,^\./,,'`
1.1 root 689:
690: # Objectionable C language specific files.
691:
692: objc-parse.o : $(srcdir)/objc-parse.c $(CONFIG_H) $(TREE_H) c-lex.h \
693: c-tree.h input.h flags.h objc-actions.h
694: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c $(srcdir)/objc-parse.c
695: $(srcdir)/objc-parse.c : $(srcdir)/objc-parse.y
696: cd $(srcdir); $(BISON) $(BISONFLAGS) objc-parse.y -o objc-parse.c
697:
698: objc-actions.o : objc-actions.c $(CONFIG_H) $(TREE_H) c-tree.h c-lex.h \
699: flags.h objc-actions.h
700:
701: # A file used by all variants of C.
702:
703: c-common.o : c-common.c $(CONFIG_H) $(TREE_H) c-tree.h c-lex.h flags.h
704:
705: # Language-independent files.
706:
707: gcc.o: gcc.c $(CONFIG_H) gvarargs.h obstack.h
708: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
709: -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \
1.1.1.2 ! root 710: -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-lib/\" \
1.1 root 711: -DDEFAULT_TARGET_MACHINE=\"$(target)\" \
712: -c `echo $(srcdir)/gcc.c | sed 's,^\./,,'`
713:
714: dumpvers: dumpvers.c
715:
716: version.o: version.c
717: obstack.o: obstack.c
718:
719: tree.o : tree.c $(CONFIG_H) $(TREE_H) gvarargs.h flags.h function.h
720: print-tree.o : print-tree.c $(CONFIG_H) $(TREE_H)
721: stor-layout.o : stor-layout.c $(CONFIG_H) $(TREE_H) function.h
722: fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H) flags.h
1.1.1.2 ! root 723: toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h input.h \
! 724: insn-attr.h xcoffout.h
1.1 root 725:
726: rtl.o : rtl.c $(CONFIG_H) $(RTL_H)
727:
728: print-rtl.o : print-rtl.c $(CONFIG_H) $(RTL_H)
729: rtlanal.o : rtlanal.c $(CONFIG_H) $(RTL_H)
730:
731: varasm.o : varasm.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h \
1.1.1.2 ! root 732: insn-codes.h expr.h hard-reg-set.h regs.h xcoffout.h
1.1 root 733: function.o : function.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h function.h \
734: insn-flags.h insn-codes.h expr.h regs.h hard-reg-set.h insn-config.h \
735: recog.h output.h
736: stmt.o : stmt.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h function.h \
737: insn-flags.h insn-config.h insn-codes.h hard-reg-set.h expr.h loop.h recog.h
738: expr.o : expr.c $(CONFIG_H) $(RTL_H) $(TREE_H) gvarargs.h flags.h function.h \
739: insn-flags.h insn-codes.h expr.h insn-config.h recog.h output.h typeclass.h
740: calls.o : calls.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h expr.h insn-codes.h \
741: insn-flags.h
742: expmed.o : expmed.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \
743: insn-flags.h insn-config.h insn-codes.h expr.h recog.h real.h
744: explow.o : explow.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h hard-reg-set.h \
745: insn-config.h expr.h recog.h insn-flags.h insn-codes.h
746: optabs.o : optabs.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \
747: insn-flags.h insn-config.h insn-codes.h expr.h recog.h
748: dbxout.o : dbxout.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h regs.h \
1.1.1.2 ! root 749: insn-config.h reload.h gstab.h xcoffout.h
1.1 root 750: sdbout.o : sdbout.c $(CONFIG_H) $(TREE_H) $(RTL_H) gsyms.h flags.h \
751: insn-config.h reload.h
752: dwarfout.o : dwarfout.c $(CONFIG_H) $(TREE_H) $(RTL_H) dwarf.h flags.h \
753: insn-config.h reload.h output.h
1.1.1.2 ! root 754: xcoffout.o : xcoffout.c $(CONFIG_H) $(TREE_H) $(RTL_H) xcoffout.h flags.h
1.1 root 755: emit-rtl.o : emit-rtl.c $(CONFIG_H) $(RTL_H) flags.h gvarargs.h function.h \
756: regs.h insn-config.h insn-codes.h real.h expr.h
1.1.1.2 ! root 757: getpwd.o : getpwd.c $(CONFIG_H)
1.1 root 758:
759: integrate.o : integrate.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h integrate.h \
760: insn-flags.h insn-config.h insn-codes.h expr.h real.h function.h
761:
762: jump.o : jump.c $(CONFIG_H) $(RTL_H) flags.h hard-reg-set.h regs.h \
763: insn-config.h insn-flags.h insn-codes.h expr.h real.h
764: stupid.o : stupid.c $(CONFIG_H) $(RTL_H) regs.h hard-reg-set.h flags.h
765:
766: cse.o : cse.c $(CONFIG_H) $(RTL_H) regs.h hard-reg-set.h flags.h real.h \
767: insn-config.h recog.h
768: loop.o : loop.c $(CONFIG_H) $(RTL_H) flags.h loop.h insn-config.h \
769: insn-flags.h insn-codes.h regs.h hard-reg-set.h recog.h expr.h real.h
770: unroll.o : unroll.c $(CONFIG_H) $(RTL_H) insn-config.h insn-codes.h \
771: integrate.h regs.h flags.h expr.h loop.h
772: flow.o : flow.c $(CONFIG_H) $(RTL_H) flags.h insn-config.h \
773: basic-block.h regs.h hard-reg-set.h output.h
774: combine.o : combine.c $(CONFIG_H) $(RTL_H) gvarargs.h flags.h \
775: insn-config.h insn-flags.h insn-codes.h insn-attr.h regs.h expr.h \
776: basic-block.h recog.h real.h
777: regclass.o : regclass.c $(CONFIG_H) $(RTL_H) hard-reg-set.h flags.h \
778: basic-block.h regs.h insn-config.h recog.h
779: local-alloc.o : local-alloc.c $(CONFIG_H) $(RTL_H) flags.h basic-block.h \
780: regs.h hard-reg-set.h insn-config.h recog.h output.h
781: global-alloc.o : global-alloc.c $(CONFIG_H) $(RTL_H) flags.h \
782: basic-block.h regs.h hard-reg-set.h insn-config.h output.h
783:
784: reload.o : reload.c $(CONFIG_H) $(RTL_H) flags.h \
785: reload.h recog.h hard-reg-set.h insn-config.h insn-codes.h regs.h real.h
786: reload1.o : reload1.c $(CONFIG_H) $(RTL_H) flags.h expr.h \
787: reload.h regs.h hard-reg-set.h insn-config.h insn-flags.h insn-codes.h \
788: basic-block.h recog.h output.h
789: caller-save.o : caller-save.c $(CONFIG_H) $(RTL_H) flags.h \
790: regs.h hard-reg-set.h insn-config.h basic-block.h recog.h reload.h expr.h
791: reorg.o : reorg.c $(CONFIG_H) $(RTL_H) conditions.h hard-reg-set.h \
792: basic-block.h regs.h insn-config.h insn-attr.h insn-flags.h recog.h \
793: flags.h output.h
794: sched.o : sched.c $(CONFIG_H) $(RTL_H) basic-block.h regs.h hard-reg-set.h \
795: flags.h insn-config.h insn-attr.h
796: final.o : final.c $(CONFIG_H) $(RTL_H) gvarargs.h flags.h regs.h \
797: recog.h conditions.h insn-config.h insn-attr.h real.h output.h \
1.1.1.2 ! root 798: hard-reg-set.h insn-codes.h gstab.h xcoffout.h
1.1 root 799: recog.o : recog.c $(CONFIG_H) $(RTL_H) \
800: regs.h recog.h hard-reg-set.h flags.h insn-config.h insn-attr.h \
801: insn-flags.h insn-codes.h real.h
802: reg-stack.o : reg-stack.c $(CONFIG_H) $(RTL_H) $(TREE_H) \
803: regs.h hard-reg-set.h flags.h insn-config.h
804:
805: aux-output.o : aux-output.c $(CONFIG_H) \
806: $(RTL_H) regs.h hard-reg-set.h real.h insn-config.h conditions.h \
807: insn-flags.h output.h insn-attr.h insn-codes.h
808:
809: # Normally this target is not used; but it is used if you
810: # define ALLOCA=alloca.o. In that case, you must get a suitable alloca.c
811: # from the GNU Emacs distribution.
812: # Note some machines won't allow $(CC) without -S on this source file.
813: alloca.o: alloca.c
814: # sed is used to strip the comments from the assembler output.
815: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(ALLOCA_FLAGS) \
816: `echo $(srcdir)/alloca.c | sed 's,^\./,,'`
817: $(ALLOCA_FINISH)
1.1.1.2 ! root 818: -rm alloca.s
1.1 root 819:
820: # Generate header and source files from the machine description,
821: # and compile them.
822:
823: .PRECIOUS: insn-config.h insn-flags.h insn-codes.h \
824: insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \
825: insn-attr.h insn-attrtab.c
826:
827: # The following pair of rules has this effect:
828: # genconfig is run only if the md has changed since genconfig was last run;
829: # but the file insn-config.h is touched only when its contents actually change.
830:
831: # Each of the other insn-* files is handled by a similar pair of rules.
832:
833: # Each of the insn-*.[ch] rules has a semicolon at the end,
834: # for otherwise the system Make on SunOS 4.1 never tries
835: # to recompile insn-*.o.
836:
837: insn-config.h: stamp-config ;
838: stamp-config : md genconfig $(srcdir)/move-if-change
839: ./genconfig md > tmp-config.h
840: $(srcdir)/move-if-change tmp-config.h insn-config.h
841: touch stamp-config
842:
843: insn-flags.h: stamp-flags ;
844: stamp-flags : md genflags $(srcdir)/move-if-change
845: ./genflags md > tmp-flags.h
846: $(srcdir)/move-if-change tmp-flags.h insn-flags.h
847: touch stamp-flags
848:
849: insn-codes.h: stamp-codes ;
850: stamp-codes : md gencodes $(srcdir)/move-if-change
851: ./gencodes md > tmp-codes.h
852: $(srcdir)/move-if-change tmp-codes.h insn-codes.h
853: touch stamp-codes
854:
855: insn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) expr.h real.h output.h \
856: insn-config.h insn-flags.h insn-codes.h
857: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-emit.c
858:
859: insn-emit.c: stamp-emit ;
860: stamp-emit : md genemit $(srcdir)/move-if-change
861: ./genemit md > tmp-emit.c
862: $(srcdir)/move-if-change tmp-emit.c insn-emit.c
863: touch stamp-emit
864:
865: insn-recog.o : insn-recog.c $(CONFIG_H) $(RTL_H) insn-config.h recog.h \
866: real.h output.h flags.h
867: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-recog.c
868:
869: insn-recog.c: stamp-recog ;
870: stamp-recog : md genrecog $(srcdir)/move-if-change
871: ./genrecog md > tmp-recog.c
872: $(srcdir)/move-if-change tmp-recog.c insn-recog.c
873: touch stamp-recog
874:
875: insn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H)
876: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-extract.c
877:
878: insn-extract.c: stamp-extract ;
879: stamp-extract : md genextract $(srcdir)/move-if-change
880: ./genextract md > tmp-extract.c
881: $(srcdir)/move-if-change tmp-extract.c insn-extract.c
882: touch stamp-extract
883:
884: insn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) regs.h output.h real.h
885: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-peep.c
886:
887: insn-peep.c: stamp-peep ;
888: stamp-peep : md genpeep $(srcdir)/move-if-change
889: ./genpeep md > tmp-peep.c
890: $(srcdir)/move-if-change tmp-peep.c insn-peep.c
891: touch stamp-peep
892:
893: insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(RTL_H) regs.h real.h output.h \
894: insn-attr.h insn-config.h
895: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-attrtab.c
896:
897: insn-attr.h: stamp-attr ;
898: stamp-attr : md genattr $(srcdir)/move-if-change
899: ./genattr md > tmp-attr.h
900: $(srcdir)/move-if-change tmp-attr.h insn-attr.h
901: touch stamp-attr
902:
903: insn-attrtab.c: stamp-attrtab ;
904: stamp-attrtab : md genattrtab $(srcdir)/move-if-change
905: ./genattrtab md > tmp-attrtab.c
906: $(srcdir)/move-if-change tmp-attrtab.c insn-attrtab.c
907: touch stamp-attrtab
908:
909: insn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) regs.h real.h conditions.h \
910: hard-reg-set.h insn-config.h insn-flags.h insn-attr.h output.h recog.h \
911: insn-codes.h
912: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c insn-output.c
913:
914: insn-output.c: stamp-output ;
915: stamp-output : md genoutput $(srcdir)/move-if-change
916: ./genoutput md > tmp-output.c
917: $(srcdir)/move-if-change tmp-output.c insn-output.c
918: touch stamp-output
919:
920: # Compile the programs that generate insn-* from the machine description.
921: # They are compiled with $(HOST_CC), and associated libraries,
922: # since they need to run on this machine
923: # even if GCC is being compiled to run on some other machine.
924:
925: # $(CONFIG_H) is omitted from the deps of the gen*.o
926: # because these programs don't really depend on anything
927: # about the target machine. They do depend on config.h itself,
928: # since that describes the host machine.
929:
930: genconfig : genconfig.o $(HOST_RTL) $(HOST_LIBDEPS)
931: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genconfig \
932: genconfig.o $(HOST_RTL) $(HOST_LIBS)
933:
934: genconfig.o : genconfig.c $(RTL_H) config.h
935: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genconfig.c
936:
937: genflags : genflags.o $(HOST_RTL) $(HOST_LIBDEPS)
938: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genflags \
939: genflags.o $(HOST_RTL) $(HOST_LIBS)
940:
941: genflags.o : genflags.c $(RTL_H) config.h
942: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genflags.c
943:
944: gencodes : gencodes.o $(HOST_RTL) $(HOST_LIBDEPS)
945: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o gencodes \
946: gencodes.o $(HOST_RTL) $(HOST_LIBS)
947:
948: gencodes.o : gencodes.c $(RTL_H) config.h
949: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/gencodes.c
950:
951: genemit : genemit.o $(HOST_RTL) $(HOST_LIBDEPS)
952: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genemit \
953: genemit.o $(HOST_RTL) $(HOST_LIBS)
954:
955: genemit.o : genemit.c $(RTL_H) config.h
956: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genemit.c
957:
958: genrecog : genrecog.o $(HOST_RTL) $(HOST_LIBDEPS)
959: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genrecog \
960: genrecog.o $(HOST_RTL) $(HOST_LIBS)
961:
962: genrecog.o : genrecog.c $(RTL_H) config.h
963: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genrecog.c
964:
965: genextract : genextract.o $(HOST_RTL) $(HOST_LIBDEPS)
966: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genextract \
967: genextract.o $(HOST_RTL) $(HOST_LIBS)
968:
969: genextract.o : genextract.c $(RTL_H) config.h
970: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genextract.c
971:
972: genpeep : genpeep.o $(HOST_RTL) $(HOST_LIBDEPS)
973: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genpeep \
974: genpeep.o $(HOST_RTL) $(HOST_LIBS)
975:
976: genpeep.o : genpeep.c $(RTL_H) config.h
977: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genpeep.c
978:
979: genattr : genattr.o $(HOST_RTL) $(HOST_LIBDEPS)
980: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genattr \
981: genattr.o $(HOST_RTL) $(HOST_LIBS)
982:
983: genattr.o : genattr.c $(RTL_H) config.h
984: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattr.c
985:
986: genattrtab : genattrtab.o $(HOST_RTL) $(HOST_RTLANAL) $(HOST_LIBDEPS)
987: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genattrtab \
988: genattrtab.o $(HOST_RTL) $(HOST_RTLANAL) $(HOST_LIBS)
989:
990: genattrtab.o : genattrtab.c $(RTL_H) config.h insn-config.h
991: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genattrtab.c
992:
993: genoutput : genoutput.o $(HOST_RTL) $(HOST_LIBDEPS)
994: $(HOST_CC) $(HOST_CFLAGS) $(HOST_LDFLAGS) -o genoutput \
995: genoutput.o $(HOST_RTL) $(HOST_LIBS)
996:
997: genoutput.o : genoutput.c $(RTL_H) config.h
998: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(srcdir)/genoutput.c
999:
1000: # Compile the libraries to be used by gen*.
1001: # If we are not cross-building, gen* use the same .o's that cc1 will use,
1002: # and HOST_PREFIX_1 is `foobar', just to ensure these rules don't conflict
1003: # with the rules for rtl.o, alloca.o, etc.
1004: $(HOST_PREFIX_1)rtl.o: $(srcdir)/rtl.c $(CONFIG_H) $(RTL_H)
1005: rm -f $(HOST_PREFIX)rtl.c
1006: cp $(srcdir)/rtl.c $(HOST_PREFIX)rtl.c
1007: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtl.c
1008:
1009: $(HOST_PREFIX_1)rtlanal.o: $(srcdir)/rtlanal.c $(CONFIG_H) $(RTL_H)
1010: rm -f $(HOST_PREFIX)rtlanal.c
1011: cp $(srcdir)/rtlanal.c $(HOST_PREFIX)rtlanal.c
1012: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)rtlanal.c
1013:
1014: $(HOST_PREFIX_1)alloca.o: alloca.c
1015: rm -f $(HOST_PREFIX)alloca.c
1016: cp $(srcdir)/alloca.c $(HOST_PREFIX)alloca.c
1017: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)alloca.c
1018:
1019: $(HOST_PREFIX_1)obstack.o: obstack.c
1020: rm -f $(HOST_PREFIX)obstack.c
1021: cp $(srcdir)/obstack.c $(HOST_PREFIX)obstack.c
1022: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)obstack.c
1023:
1024: $(HOST_PREFIX_1)malloc.o: malloc.c
1025: rm -f $(HOST_PREFIX)malloc.c
1026: cp $(srcdir)/malloc.c $(HOST_PREFIX)malloc.c
1027: $(HOST_CC) -c $(HOST_CFLAGS) $(HOST_CPPFLAGS) $(INCLUDES) $(HOST_PREFIX)malloc.c
1028:
1029: # This satisfies the dependency that we get if you cross-compile a compiler
1030: # that does not need to compile alloca, malloc or whatever.
1031: $(HOST_PREFIX_1):
1032: touch $(HOST_PREFIX_1)
1033:
1034: # Remake cpp and protoize.
1035:
1036: # Making the preprocessor
1037: cpp: cccp
1038: -rm -f cpp
1039: ln cccp cpp
1040: cccp: cccp.o cexp.o version.o $(LIBDEPS)
1041: $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o cccp cccp.o cexp.o version.o $(LIBS)
1042: cexp.o: $(srcdir)/cexp.c $(CONFIG_H)
1043: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) -c $(srcdir)/cexp.c
1044: $(srcdir)/cexp.c: $(srcdir)/cexp.y
1045: cd $(srcdir); $(BISON) -o cexp.c cexp.y
1046: cccp.o: cccp.c $(CONFIG_H) pcp.h version.c
1047: # The reason we use $(libdir)/g++-include rather than using libsubdir
1048: # is for compatibility with the current version of libg++.
1049: $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
1.1.1.2 ! root 1050: -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
! 1051: -DGPLUSPLUS_INCLUDE_DIR=\"$(libdir)/g++-include\" \
1.1 root 1052: -DLOCAL_INCLUDE_DIR=\"$(prefix)/include\" \
1.1.1.2 ! root 1053: -DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
1.1 root 1054: -c `echo $(srcdir)/cccp.c | sed 's,^\./,,'`
1055:
1056: proto: config.status protoize unprotoize SYSCALLS.c.X protoize.1 unprotoize.1
1057:
1.1.1.2 ! root 1058: protoize: protoize.o getopt.o getopt1.o getpwd.o version.o $(LIBDEPS)
1.1 root 1059: $(CC) $(ALL_CFLAGS) $(LDFLAGS) \
1.1.1.2 ! root 1060: protoize.o getopt.o getopt1.o getpwd.o version.o $(LIBS) -o $@
1.1 root 1061: protoize.o: $(srcdir)/protoize.c getopt.h $(CONFIG_H)
1062: $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
1063: -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
1064: -DGPLUSPLUS_INCLUDE_DIR=\"$(libdir)/g++-include\" \
1065: -DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
1066: -DLOCAL_INCLUDE_DIR=\"$(prefix)/include\" \
1067: -DSTD_PROTO_DIR=\"$(libsubdir)\" \
1068: $(srcdir)/protoize.c
1069:
1.1.1.2 ! root 1070: unprotoize: unprotoize.o getopt.o getopt1.o getpwd.o version.o $(LIBDEPS)
1.1 root 1071: $(CC) $(ALL_CFLAGS) $(LDFLAGS) \
1.1.1.2 ! root 1072: unprotoize.o getopt.o getopt1.o getpwd.o version.o $(LIBS) -o $@
1.1 root 1073: unprotoize.o: $(srcdir)/protoize.c getopt.h $(CONFIG_H)
1074: cp $(srcdir)/protoize.c unprotoize.c
1075: $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
1076: -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \
1077: -DGPLUSPLUS_INCLUDE_DIR=\"$(libdir)/g++-include\" \
1078: -DCROSS_INCLUDE_DIR=\"$(libsubdir)/sys-include\" \
1079: -DLOCAL_INCLUDE_DIR=\"$(prefix)/include\" \
1080: -DSTD_PROTO_DIR=\"$(libsubdir)\" \
1081: -DUNPROTOIZE unprotoize.c
1082: rm -f unprotoize.c
1083:
1084: getopt.o: $(srcdir)/getopt.c getopt.h
1085: $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/getopt.c
1086: getopt1.o: $(srcdir)/getopt1.c getopt.h
1087: $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $(srcdir)/getopt1.c
1088:
1089: protoize.1: $(srcdir)/proto-man ./cpp
1090: ./cpp -traditional $(srcdir)/proto-man \
1091: | grep -v '^#' \
1092: | awk 'NF > 0 {print}' > tmp-proto.1
1093: mv tmp-proto.1 protoize.1
1094:
1095: unprotoize.1: $(srcdir)/proto-man ./cpp
1096: ./cpp -traditional -DUNPRO $(srcdir)/proto-man \
1097: | grep -v '^#' \
1098: | awk 'NF > 0 {print}' > tmp-unproto.1
1099: mv tmp-unproto.1 unprotoize.1
1100:
1.1.1.2 ! root 1101: SYSCALLS.c : $(srcdir)/sys-types.h $(srcdir)/sys-protos.h
! 1102: cat $(srcdir)/sys-types.h $(srcdir)/sys-protos.h >$@
! 1103:
1.1 root 1104: # This info describes the target machine, so compile with GCC just built.
1105: SYSCALLS.c.X: SYSCALLS.c $(GCC_PASSES)
1106: $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
1.1.1.2 ! root 1107: -aux-info $@ -S -o /dev/null SYSCALLS.c
1.1 root 1108:
1109: # Remake the info files.
1110:
1.1.1.2 ! root 1111: doc: $(srcdir)/cpp.info $(srcdir)/gcc.info
1.1 root 1112:
1113: $(srcdir)/cpp.info: $(srcdir)/cpp.texi
1114: makeinfo `echo $(srcdir)/cpp.texi | sed 's,^\./,,'`
1115:
1.1.1.2 ! root 1116: #$(srcdir)/gplus.info: $(srcdir)/gplus.texi
! 1117: # makeinfo `echo $(srcdir)/gplus.texi | sed 's,^\./,,'`
1.1 root 1118:
1119: $(srcdir)/gcc.info: $(srcdir)/gcc.texi
1120: makeinfo `echo $(srcdir)/gcc.texi | sed 's,^\./,,'`
1121:
1122: # Deletion of files made during compilation.
1123: # There are four levels of this:
1124: # `mostlyclean', `clean', `cleanconfig' and `realclean'.
1125: # `mostlyclean' is useful while working on a particular type of machine.
1.1.1.2 ! root 1126: # It deletes most, but not all, of the files made by compilation.
1.1 root 1127: # It does not delete libgcc.a or its parts, so it won't have to be recompiled.
1.1.1.2 ! root 1128: # `clean' deletes everything made by running `make all'.
1.1 root 1129: # `cleanconfig' also deletes the files made by config.
1130: # `realclean' also deletes everything that could be regenerated automatically.
1131:
1132: mostlyclean:
1133: -rm -f $(STAGESTUFF)
1134: # Delete the temporary source copies for cross compilation.
1135: -rm -f $(HOST_PREFIX_1)rtl.c $(HOST_PREFIX_1)rtlanal.c
1136: -rm -f $(HOST_PREFIX_1)alloca.c $(HOST_PREFIX_1)malloc.c
1137: -rm -f $(HOST_PREFIX_1)obstack.c
1138: # Delete the temp files made in the course of building libgcc.a.
1.1.1.2 ! root 1139: -rm -f tmplibgcc* tmpcopy
1.1 root 1140: for name in $(LIB1FUNCS); do rm -f $${name}.c; done
1141: # Delete other temporary files.
1.1.1.2 ! root 1142: -rm -f tmp-float.h tmp-*proto.1 tmp-gcc.xtar.Z tmp-limits.h gccnew
1.1 root 1143: # Delete the stamp files.
1144: -rm -f stamp-* tmp-*
1.1.1.2 ! root 1145: # Delete debugging dump files.
1.1 root 1146: -rm -f *.greg *.lreg *.combine *.flow *.cse *.jump *.rtl *.tree *.loop
1.1.1.2 ! root 1147: -rm -f *.dbr *.jump2 *.sched *.cse2 *.sched2 *.stack
! 1148: # Delete some files made during installation.
! 1149: -rm -f specs float.h enquire SYSCALLS.c SYSCALLS.c.X
! 1150: -rm -f collect collect2 ld mips-tfile mips-tdump alloca.s
! 1151: # Delete unwanted output files from TeX.
1.1 root 1152: -rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg
1.1.1.2 ! root 1153: # Delete sorted indices we don't actually use.
! 1154: -rm -f gcc.vrs gcc.kys gcc.tps gcc.pgs gcc.fns
! 1155: # Delete core dumps.
! 1156: -rm -f core
1.1 root 1157:
1158: # delete all files made by compilation.
1159: clean: mostlyclean
1160: -rm -f libgcc.a libgcc1.a libgcc2.a libgcc2.ready
1161: -rm -fr stage1 stage2 stage3 stage4
1162:
1.1.1.2 ! root 1163: # This is used to get rid of everything found in the source dir
! 1164: # that shouldn't be in the distribution.
! 1165: distclean: clean
1.1 root 1166: -rm -f tm.h aux-output.c config.h md config.status tconfig.h
1.1.1.2 ! root 1167: -rm -f Makefile *.dvi *.oaux
1.1 root 1168:
1.1.1.2 ! root 1169: # Delete anything likely to be found in the source directory
1.1 root 1170: # that shouldn't be in the distribution.
1.1.1.2 ! root 1171: extraclean: distclean
! 1172: -rm -rf =* #* *~* config/=* config/#* config/*~*
! 1173: -rm -f *.dvi *.oaux patch* *.orig *.rej *.d *.Z *.tar
! 1174: -rm -f *.s *.s[0-9] *.i
1.1 root 1175:
1176: # Get rid of every file that's generated from some other file.
1177: # Most of these files ARE PRESENT in the GCC distribution.
1.1.1.2 ! root 1178: realclean: distclean
1.1 root 1179: -rm -f cp-parse.c cp-parse.h cp-parse.output
1180: -rm -f objc-parse.c objc-parse.output
1181: -rm -f protoize.1 unprotoize.1
1182: -rm -f c-parse.c c-parse.h c-parse.output
1183: -rm -f cexp.c cexp.output TAGS
1184: -rm -f cpp.info* cpp.??s cpp.*aux
1185: -rm -f gcc.info* gcc.??s gcc.*aux
1186: -rm -f gplus.info* gplus.??s gplus.*aux
1187:
1188: # Entry points `install' and `uninstall'.
1189: # Also temporarily `install-fixincludes' could replace `install-headers'.
1190: # Also use `install-collect2' to install collect2 when the config files don't.
1191:
1192: install: $(INSTALL_TARGET)
1193:
1194: # Copy the files of native compiler into directories where they will be run.
1195: install-native: install-common install-libgcc $(INSTALL_HEADERS) \
1.1.1.2 ! root 1196: install-man
1.1 root 1197:
1198: # Copy the files of cross compiler into directories where they will be run.
1199: install-cross: install-common install-common-headers \
1200: install-man install-cross-tools install-libgcc
1201:
1202: # Install the tools, libraries and header files for the target machine
1203: # where cross-compilation will look for them.
1204: # Use tooldir to find them.
1205: install-cross-tools: install-dir
1206: # The first if makes this a no-op except for a cross compiler.
1207: # The /. after the dirname causes test to follow symlinks.
1208: # Before making a link or an indirection script,
1209: # we verify the desired file does not already exist.
1210: # If a symlink does exist, then making a symlink would certainly fail,
1211: # leading us to overwrite the real file through the symlink.
1212: -if [ -f gcc-cross ] ; \
1213: then \
1214: if [ -d $(tooldir)/. ] ; \
1215: then \
1216: for file in as ld ar ranlib; do \
1217: if [ -f $(libsubdir)/$$file ] ; \
1218: then true; \
1219: else \
1220: $(SYMLINK) $(tooldir)/bin/$$file $(libsubdir)/$$file \
1221: || (echo "#!/bin/sh"; echo $(tooldir)/bin/$$file "$$@") > $(libsubdir)/$$file; \
1222: fi; \
1223: done; \
1224: for file in $(tooldir)/lib/*; do \
1225: if [ -f $$file ] ; \
1226: then \
1227: if [ -f $(libsubdir)/`basename $$file` ] ; \
1228: then true; \
1229: else \
1230: $(SYMLINK) $$file $(libsubdir)/`basename $$file` \
1231: || $(INSTALL_DATA) $$file $(libsubdir)/`basename $$file`; \
1232: fi; \
1233: else true; \
1234: fi; \
1235: done; \
1236: if [ -d $(tooldir)/include/. ] ; then \
1237: $(SYMLINK) $(tooldir)/include $(libsubdir)/sys-include \
1238: || (if [ -d $(libsubdir)/sys-include ] ; then true ; else mkdir $(libsubdir)/sys-include ; fi; \
1239: cd $(tooldir)/include; tar cf - . | (cd $(libsubdir)/sys-include; tar xpf -)); \
1240: else true; fi; \
1241: else true; \
1242: fi; \
1243: else true; \
1244: fi;
1245:
1246: # Run this on the target machine
1247: # to finish installation of cross compiler.
1248: install-cross-rest: install-float-h-cross
1249:
1250: # Install float.h for cross compiler.
1251: # Run this on the target machine!
1252: install-float-h-cross:
1253: if [ -f enquire ] ; then true; else false; done
1254: -./enquire -f > float.h
1255: -rm -f $(libsubdir)/include/float.h
1256: $(INSTALL_DATA) float.h $(libsubdir)/include/float.h
1257: chmod a-x $(libsubdir)/include/float.h
1258:
1259: # Create the installation directory.
1260: install-dir:
1261: if [ -d $(libdir) ] ; then true ; else mkdir $(libdir) ; fi
1.1.1.2 ! root 1262: if [ -d $(libdir)/gcc-lib ] ; then true ; else mkdir $(libdir)/gcc-lib ; fi
! 1263: if [ -d $(libdir)/gcc-lib/$(target) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target) ; fi
! 1264: if [ -d $(libdir)/gcc-lib/$(target)/$(version) ] ; then true ; else mkdir $(libdir)/gcc-lib/$(target)/$(version) ; fi
1.1 root 1265: if [ -d $(bindir) ] ; then true ; else mkdir $(bindir) ; fi
1266: # We don't use mkdir -p to create the parents of mandir,
1267: # because some systems don't support it.
1268: # Instead, we use this technique to create the immediate parent of mandir.
1269: parent=`echo $(mandir)|sed -e 's@/[^/]*$$@@'`; \
1270: if [ -d $$parent ] ; then true ; else mkdir $$parent ; fi
1271: -if [ -d $(mandir) ] ; then true ; else mkdir $(mandir) ; fi
1272:
1273: # Install the compiler executables built during cross compilation.
1274: install-common: native install-dir
1275: for file in $(COMPILERS); do \
1276: if [ -f $$file ] ; then \
1277: rm -f $(libsubdir)/$$file; \
1278: $(INSTALL_PROGRAM) $$file $(libsubdir)/$$file; \
1279: else true; \
1280: fi; \
1281: done
1.1.1.2 ! root 1282: for file in $(EXTRA_PASSES) $(EXTRA_PARTS) $(EXTRA_PROGRAMS) ..; do \
1.1 root 1283: if [ x"$$file" != x.. ]; then \
1284: rm -f $(libsubdir)/$$file; \
1285: $(INSTALL_PROGRAM) $$file $(libsubdir)/$$file; \
1286: else true; fi; \
1287: done
1288: -rm -f $(libsubdir)/specs
1289: $(INSTALL_DATA) specs $(libsubdir)/specs
1290: # Install the driver program as gcc-$(target)
1291: # and also as either gcc (if native) or $(tooldir)/bin/gcc.
1292: -if [ -f gcc-cross ] ; then \
1.1.1.2 ! root 1293: $(INSTALL_PROGRAM) gcc-cross $(bindir)/gcc-$(target); \
1.1 root 1294: if [ -d $(tooldir)/bin/. ] ; then \
1295: rm -f $(tooldir)/bin/gcc; \
1296: $(INSTALL_PROGRAM) gcc-cross $(tooldir)/bin/gcc; \
1297: else true; fi; \
1298: else \
1299: rm -f $(bindir)/gcc; \
1300: $(INSTALL_PROGRAM) gcc $(bindir)/gcc; \
1301: rm -f $(bindir)/gcc-$(target)-1; \
1302: ln $(bindir)/gcc $(bindir)/gcc-$(target)-1; \
1303: mv $(bindir)/gcc-$(target)-1 $(bindir)/gcc-$(target); \
1304: fi
1305: $(INSTALL_PROGRAM) $(srcdir)/c++ $(bindir)/c++
1306: $(INSTALL_PROGRAM) $(srcdir)/g++ $(bindir)/g++
1307: -rm -f $(libsubdir)/cpp
1308: $(INSTALL_PROGRAM) cpp $(libsubdir)/cpp
1309:
1310: # Install protoize.
1311: install-proto: proto install-dir
1312: -rm -f $(bindir)/protoize
1313: $(INSTALL_PROGRAM) protoize $(bindir)/protoize
1314: -rm -f $(bindir)/unprotoize
1315: $(INSTALL_PROGRAM) unprotoize $(bindir)/unprotoize
1316: -rm -f $(libsubdir)/SYSCALLS.c.X
1317: $(INSTALL_DATA) SYSCALLS.c.X $(libsubdir)/SYSCALLS.c.X
1318: chmod a-x $(libsubdir)/SYSCALLS.c.X
1319:
1320: # Install the man pages.
1.1.1.2 ! root 1321: install-man: install-dir $(srcdir)/gcc.1 $(srcdir)/cccp.1 \
! 1322: protoize.1 unprotoize.1 $(srcdir)/g++.1
1.1 root 1323: -rm -f $(mandir)/gcc$(manext)
1324: $(INSTALL_DATA) $(srcdir)/gcc.1 $(mandir)/gcc$(manext)
1325: chmod a-x $(mandir)/gcc$(manext)
1.1.1.2 ! root 1326: -rm -f $(mandir)/cccp$(manext)
! 1327: $(INSTALL_DATA) $(srcdir)/cccp.1 $(mandir)/cccp$(manext)
! 1328: chmod a-x $(mandir)/cccp$(manext)
1.1 root 1329: -rm -f $(mandir)/protoize$(manext)
1330: $(INSTALL_DATA) protoize.1 $(mandir)/protoize$(manext)
1331: chmod a-x $(mandir)/protoize$(manext)
1332: -rm -f $(mandir)/unprotoize$(manext)
1333: $(INSTALL_DATA) unprotoize.1 $(mandir)/unprotoize$(manext)
1334: chmod a-x $(mandir)/unprotoize$(manext)
1.1.1.2 ! root 1335: -rm -f $(mandir)/g++$(manext)
! 1336: $(INSTALL_DATA) $(srcdir)/g++.1 $(mandir)/g++$(manext)
! 1337: chmod a-x $(mandir)/g++$(manext)
1.1 root 1338:
1339: # Install the library.
1340: install-libgcc: libgcc.a
1341: -if [ -f libgcc.a ] ; then \
1342: rm -f $(libsubdir)/libgcc.a; \
1343: $(INSTALL_DATA) libgcc.a $(libsubdir)/libgcc.a; \
1344: if $(RANLIB_TEST) ; then \
1345: (cd $(libsubdir); $(RANLIB) libgcc.a); else true; fi; \
1346: chmod a-x $(libsubdir)/libgcc.a; \
1347: else true; fi
1348:
1349: # Install all the header files for native compiler.
1350: install-headers: install-common-headers install-float-h install-limits-h
1351:
1352: # Install float.h for native compiler.
1353: install-float-h: float.h
1354: -rm -f $(libsubdir)/include/float.h
1355: $(INSTALL_DATA) float.h $(libsubdir)/include/float.h
1356: chmod a-x $(libsubdir)/include/float.h
1357:
1358: # Install limits.h, optionally inheriting from the standard system version.
1359: install-limits-h: limits.h limitx.h
1360: -rm -f $(libsubdir)/include/limits.h tmp-limits.h
1361: if [ -f /usr/include/limits.h ] ; then \
1362: cat $(srcdir)/limitx.h $(srcdir)/limits.h > tmp-limits.h; \
1363: else \
1364: cat $(srcdir)/limits.h > tmp-limits.h; \
1365: fi
1366: $(INSTALL_DATA) tmp-limits.h $(libsubdir)/include/limits.h
1367: chmod a-x $(libsubdir)/include/limits.h
1368: rm tmp-limits.h
1369:
1370: # Install the fixed headers that are the same for all machines.
1371: install-common-headers: install-dir $(USER_H) gvarargs.h gstdarg.h gstddef.h
1372: if [ -d $(libsubdir)/include ] ; then true ; else mkdir $(libsubdir)/include ; fi
1373: -chmod ugo+rx $(libsubdir)/include
1374: # Must compute $(libsubdir) before the cd; the awk script won't work after.
1375: shelllibsubdir=$(libsubdir); \
1376: cd $(srcdir); \
1377: for file in $(USER_H); do \
1378: rm -f $$shelllibsubdir/include/`basename $$file`; \
1379: $(INSTALL_DATA) `basename $$file` $$shelllibsubdir/include/`basename $$file`; \
1380: chmod a-x $$shelllibsubdir/include/`basename $$file`; \
1381: done
1382: -rm -f $(libsubdir)/include/varargs.h
1383: $(INSTALL_DATA) $(srcdir)/gvarargs.h $(libsubdir)/include/varargs.h
1384: chmod a-x $(libsubdir)/include/varargs.h
1385: -rm -f $(libsubdir)/include/stdarg.h
1386: $(INSTALL_DATA) $(srcdir)/gstdarg.h $(libsubdir)/include/stdarg.h
1387: chmod a-x $(libsubdir)/include/stdarg.h
1388: -rm -f $(libsubdir)/include/stddef.h
1389: $(INSTALL_DATA) $(srcdir)/gstddef.h $(libsubdir)/include/stddef.h
1390: chmod a-x $(libsubdir)/include/stddef.h
1391: # Copy byteorder.h into the object file directory
1392: # so that fixinc.svr4 can get at it if necessary.
1393: # If the dirs are the same, this won't do anything.
1394: -cp $(srcdir)/byteorder.h .
1395:
1396: # $(libsubdir)/include:
1397: # if [ -d $(libsubdir)/include ] ; then true ; else mkdir $(libsubdir)/include ; fi
1398: # -chmod ugo+rx $(libsubdir)/include
1399:
1400: # This appears not to work. It isn't clear how to fix it.
1.1.1.2 ! root 1401: # $(libsubdir)/include/README: $(libsubdir)/include $(srcdir)/$(FIXINCLUDES)
! 1402: # LIB=$(libsubdir)/include $(srcdir)/$(FIXINCLUDES)
1.1 root 1403: # $(INSTALL_DATA) $(srcdir)/fixincludes-README $@
1404: # chmod a-x $@
1405:
1406: # Run fixincludes in the proper directory.
1407: install-fixincludes: install-headers
1408: rm -rf $(libsubdir)/tmp
1409: mkdir $(libsubdir)/tmp
1410: # Move aside the headers that come from GCC; delete all else.
1.1.1.2 ! root 1411: # The sed command gets just the last file name component;
! 1412: # this is necessary because VPATH could add a dirname.
! 1413: # Using basename would be simpler, but some systems don't have it.
! 1414: cd $(libsubdir)/include; \
! 1415: for file in $(INSTALLED_H); do \
! 1416: realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
! 1417: mv $$realfile ../tmp; \
! 1418: done; \
! 1419: rm -rf *
1.1 root 1420: # Install fixed copies of system files.
1421: $(srcdir)/$(FIXINCLUDES) $(libsubdir)/include
1422: # Bring back gcc's header files.
1423: cd $(libsubdir)/include; mv ../tmp/* .; rmdir ../tmp
1424: # Install the README
1425: $(INSTALL_DATA) $(srcdir)/README-fixinc $(libsubdir)/include/README
1426: chmod a-x $(libsubdir)/include/README
1427:
1428: # Use this target to install the program `collect2' under the name `ld'.
1429: install-collect2: collect2
1430: $(INSTALL_PROGRAM) collect2 $(libsubdir)/ld
1431: # Install the driver program as $(libsubdir)/gcc for collect2.
1432: -if [ -f gcc-cross ] ; then \
1433: $(INSTALL_PROGRAM) gcc-cross $(libsubdir)/gcc; \
1434: else \
1435: $(INSTALL_PROGRAM) gcc $(libsubdir)/gcc; \
1436: fi
1437:
1438: # Cancel installation by deleting the installed files.
1439: uninstall:
1440: -rm -rf $(libsubdir)
1441: -rm -rf $(bindir)/gcc
1442: -rm -rf $(bindir)/protoize
1443: -rm -rf $(bindir)/unprotoize
1444: -rm -rf $(mandir)/gcc$(manext)
1.1.1.2 ! root 1445: -rm -rf $(mandir)/cccp$(manext)
1.1 root 1446: -rm -rf $(mandir)/protoize$(manext)
1447: -rm -rf $(mandir)/unprotoize$(manext)
1448:
1449: # These exist for maintenance purposes.
1450:
1451: # Update the tags table.
1452: TAGS: force
1453: cd $(srcdir); \
1454: mkdir temp; \
1455: mv -f c-parse.c c-parse.h cp-parse.c cp-parse.h objc-parse.c cexp.c temp; \
1456: etags *.y *.h *.c; \
1457: mv temp/* .; \
1458: rmdir temp
1459:
1460: # Create the distribution tar file.
1461: #dist: gcc-$(version).tar.Z
1462: dist: gcc.xtar.Z
1463:
1464: gcc.xtar.Z: gcc.xtar
1465: compress < gcc.xtar > tmp-gcc.xtar.Z
1466: mv tmp-gcc.xtar.Z gcc.xtar.Z
1467:
1468: #gcc-$(version).tar.Z: gcc-$(version).tar
1469: # compress < gcc-$(version).tar > gcc-$(version).tar.Z
1470:
1471: #gcc-$(version).tar:
1472: gcc.xtar:
1473: -rm -rf gcc-$(version) tmp
1474: # Put all the files in a temporary subdirectory
1475: # which has the name that we want to have in the tar file.
1476: mkdir tmp
1477: mkdir tmp/config
1478: for file in *[0-9a-zA-Z+]; do \
1479: ln $$file tmp || cp $$file tmp; \
1480: done
1481: cd config; \
1482: for file in *[0-9a-zA-Z+]; do \
1483: ln $$file ../tmp/config || cp $$file ../tmp/config; \
1484: done
1485: ln .gdbinit tmp
1486: mv tmp gcc-$(version)
1487: # Get rid of everything we don't want in the distribution.
1.1.1.2 ! root 1488: cd gcc-$(version); make -f Makefile.in extraclean
1.1 root 1489: # Make the distribution.
1490: tar chf gcc.xtar gcc-$(version)
1491: # Get rid of the temporary directory.
1492: rm -rf gcc-$(version)
1493:
1494: # do make -f ../gcc/Makefile maketest DIR=../gcc
1495: # in the intended test directory to make it a suitable test directory.
1496: # THIS IS OBSOLETE; use the -srcdir operand in configure instead.
1497: maketest:
1498: ln -s $(DIR)/*.[chy] .
1499: ln -s $(DIR)/configure .
1500: ln -s $(DIR)/*.def .
1501: -rm -f =*
1502: ln -s $(DIR)/.gdbinit .
1503: ln -s $(DIR)/$(FIXINCLUDES) .
1504: -ln -s $(DIR)/bison.simple .
1505: ln -s $(DIR)/config .
1506: ln -s $(DIR)/move-if-change .
1507: # The then and else were swapped to avoid a problem on Ultrix.
1508: if [ ! -f Makefile ] ; then ln -s $(DIR)/Makefile .; else false; fi
1509: -rm tm.h aux-output.c config.h md
1510: make clean
1511: # You must then run config to set up for compilation.
1512:
1513: bootstrap: all force
1514: $(MAKE) stage1
1515: # This used to define ALLOCA as empty, but that would lead to bad results
1516: # for a subsequent `make install' since that would not have ALLOCA empty.
1517: # To prevent `make install' from compiling alloca.o and then relinking cc1
1518: # because alloca.o is newer, we permit these recursive makes to compile
1519: # alloca.o. Then cc1 is newer, so it won't have to be relinked.
1520: $(MAKE) CC="stage1/gcc -Bstage1/" CFLAGS="$(BOOT_CFLAGS)" libdir=$(libdir) LANGUAGES="$(LANGUAGES)"
1521: $(MAKE) stage2
1522: $(MAKE) CC="stage2/gcc -Bstage2/" CFLAGS="$(BOOT_CFLAGS)" libdir=$(libdir) LANGUAGES="$(LANGUAGES)"
1523:
1524: bootstrap2: force
1525: $(MAKE) CC="stage1/gcc -Bstage1/" CFLAGS="$(BOOT_CFLAGS)" libdir=$(libdir) LANGUAGES="$(LANGUAGES)"
1526: $(MAKE) stage2
1527: $(MAKE) CC="stage2/gcc -Bstage2/" CFLAGS="$(BOOT_CFLAGS)" libdir=$(libdir) LANGUAGES="$(LANGUAGES)"
1528:
1529: bootstrap3: force
1530: $(MAKE) CC="stage2/gcc -Bstage2/" CFLAGS="$(BOOT_CFLAGS)" libdir=$(libdir) LANGUAGES="$(LANGUAGES)"
1531:
1532: # Copy the object files from a particular stage into a subdirectory.
1533: stage1: force
1.1.1.2 ! root 1534: -if [ -d stage1 ] ; then true ; else mkdir stage1 ; fi
1.1 root 1535: -mv $(STAGESTUFF) stage1
1536: -rm -f stage1/libgcc.a
1537: -cp libgcc.a stage1
1538: -if $(RANLIB_TEST) ; then $(RANLIB) stage1/libgcc.a; else true; fi
1539:
1540: stage2: force
1.1.1.2 ! root 1541: -if [ -d stage2 ] ; then true ; else mkdir stage2 ; fi
1.1 root 1542: -mv $(STAGESTUFF) stage2
1543: -rm -f stage2/libgcc.a
1544: -cp libgcc.a stage2
1545: -if $(RANLIB_TEST) ; then $(RANLIB) stage2/libgcc.a; else true; fi
1546:
1547: stage3: force
1548: if [ -d stage3 ] ; then true ; else mkdir stage3 ; fi
1549: -mv $(STAGESTUFF) stage3
1550: -rm -f stage3/libgcc.a
1551: -cp libgcc.a stage3
1552: -if $(RANLIB_TEST) ; then $(RANLIB) stage3/libgcc.a; else true; fi
1553:
1554: stage4: force
1555: if [ -d stage4 ] ; then true ; else mkdir stage4 ; fi
1556: -mv $(STAGESTUFF) stage4
1557: -rm -f stage4/libgcc.a
1558: -cp libgcc.a stage4
1559: -if $(RANLIB_TEST) ; then $(RANLIB) stage4/libgcc.a; else true; fi
1560:
1561: # Copy just the executable files from a particular stage into a subdirectory,
1562: # and delete the object files. Use this if you're just verifying a version
1563: # that is pretty sure to work, and you are short of disk space.
1564: risky-stage1: force
1565: if [ -d stage1 ] ; then true ; else mkdir stage1 ; fi
1566: -mv cc1 cpp cccp gcc stage1
1567: -rm -f stage1/libgcc.a
1568: -cp libgcc.a stage1 && $(RANLIB) stage1/libgcc.a
1569: -make clean
1570:
1571: risky-stage2: force
1572: if [ -d stage2 ] ; then true ; else mkdir stage2 ; fi
1573: -mv cc1 cpp cccp gcc stage2
1574: -rm -f stage2/libgcc.a
1575: -cp libgcc.a stage2 && $(RANLIB) stage2/libgcc.a
1576: -make clean
1577:
1578: risky-stage3: force
1579: if [ -d stage3 ] ; then true ; else mkdir stage3 ; fi
1580: -mv cc1 cpp cccp gcc stage3
1581: -rm -f stage3/libgcc.a
1582: -cp libgcc.a stage3 && $(RANLIB) stage3/libgcc.a
1583: -make clean
1584:
1585: risky-stage4: force
1586: if [ -d stage4 ] ; then true ; else mkdir stage4 ; fi
1587: -mv cc1 cpp cccp gcc stage4
1588: -rm -f stage4/libgcc.a
1589: -cp libgcc.a stage4 && $(RANLIB) stage4/libgcc.a
1590: -make clean
1591:
1592: #In GNU Make, ignore whether `stage*' exists.
1593: .PHONY: stage1 stage2 stage3 stage4 clean realclean TAGS bootstrap
1594: .PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4
1595:
1596: force:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.