📄 makefile
字号:
cplus-decl.o : cplus-decl.c $(CONFIG_H) $(CPLUS_TREE_H) flags.hcplus-typeck.o : cplus-typeck.c $(CONFIG_H) $(CPLUS_TREE_H) flags.hcplus-class.o : cplus-class.c $(CONFIG_H) $(CPLUS_TREE_H)cplus-init.o : cplus-init.c $(CONFIG_H) $(CPLUS_TREE_H)cplus-method.o : cplus-method.c $(CONFIG_H) $(CPLUS_TREE_H)cplus-cvt.o : cplus-cvt.c $(CONFIG_H) $(CPLUS_TREE_H)cplus-search.o : cplus-search.c $(CONFIG_H) $(CPLUS_TREE_H)new-method.o : new-method.c $(CONFIG_H) $(CPLUS_TREE_H)# Language-independent files.gcc.o: gcc.c $(CONFIG_H) gvarargs.h obstack.h $(CC) $(CFLAGS) $(INCLUDES) \ -DSTANDARD_STARTFILE_PREFIX=\"$(libdir)/\" \ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-\" -c \ `echo $(srcdir)/gcc.c | sed 's,^\./,,'`version.o: version.cobstack.o: obstack.ctree.o : tree.c $(CONFIG_H) $(TREE_H) flags.hprint-tree.o : print-tree.c $(CONFIG_H) $(TREE_H)stor-layout.o : stor-layout.c $(CONFIG_H) $(TREE_H) $(RTL_H)fold-const.o : fold-const.c $(CONFIG_H) $(TREE_H)toplev.o : toplev.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h input.hrtl.o : rtl.c $(CONFIG_H) $(RTL_H)rtlanal.o : rtlanal.c $(CONFIG_H) $(RTL_H)varasm.o : varasm.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.h expr.h \ insn-codes.h hard-reg-set.hstmt.o : stmt.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \ insn-flags.h insn-config.h insn-codes.h expr.h regs.h hard-reg-set.h recog.hexpr.o : expr.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \ insn-flags.h insn-codes.h expr.h insn-config.h recog.h typeclass.hexpmed.o : expmed.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \ insn-flags.h insn-codes.h expr.h insn-config.h recog.hexplow.o : explow.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h expr.h insn-codes.hoptabs.o : optabs.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h \ insn-flags.h insn-codes.h expr.h insn-config.h recog.hsymout.o : symout.c $(CONFIG_H) $(TREE_H) $(RTL_H) symseg.h gdbfiles.hdbxout.o : dbxout.c $(CONFIG_H) $(TREE_H) $(RTL_H) flags.hsdbout.o : sdbout.c $(CONFIG_H) $(TREE_H) $(RTL_H)emit-rtl.o : emit-rtl.c $(CONFIG_H) $(RTL_H) regs.h insn-config.h real.hintegrate.o : integrate.c $(CONFIG_H) $(RTL_H) $(TREE_H) flags.h expr.h \ insn-flags.h insn-codes.hjump.o : jump.c $(CONFIG_H) $(RTL_H) flags.h regs.hstupid.o : stupid.c $(CONFIG_H) $(RTL_H) regs.h hard-reg-set.hcse.o : cse.c $(CONFIG_H) $(RTL_H) regs.h hard-reg-set.h flags.h real.hloop.o : loop.c $(CONFIG_H) $(RTL_H) insn-config.h insn-codes.h \ regs.h hard-reg-set.h recog.h flags.h expr.hflow.o : flow.c $(CONFIG_H) $(RTL_H) basic-block.h regs.h hard-reg-set.hcombine.o : combine.c $(CONFIG_H) $(RTL_H) flags.h \ insn-config.h regs.h basic-block.h recog.hregclass.o : regclass.c $(CONFIG_H) $(RTL_H) hard-reg-set.h flags.h \ basic-block.h regs.h insn-config.h recog.h local-alloc.o : local-alloc.c $(CONFIG_H) $(RTL_H) flags.h basic-block.h regs.h \ hard-reg-set.h insn-config.h recog.hglobal-alloc.o : global-alloc.c $(CONFIG_H) $(RTL_H) flags.h \ basic-block.h regs.h hard-reg-set.h insn-config.hreload.o : reload.c $(CONFIG_H) $(RTL_H) flags.h \ reload.h recog.h hard-reg-set.h insn-config.h regs.hreload1.o : reload1.c $(CONFIG_H) $(RTL_H) flags.h \ reload.h regs.h hard-reg-set.h insn-config.h basic-block.h recog.hcaller-save.o : caller-save.c $(CONFIG_H) $(RTL_H) flags.h \ reload.h regs.h hard-reg-set.h insn-config.h basic-block.h recog.hfinal.o : final.c $(CONFIG_H) $(RTL_H) flags.h regs.h recog.h conditions.h \ gdbfiles.h insn-config.h real.h output.hrecog.o : recog.c $(CONFIG_H) $(RTL_H) \ regs.h recog.h hard-reg-set.h insn-config.h real.h# Normally this target is not used; but it is used if you# define ALLOCA=alloca.o. In that case, you must get a suitable alloca.c# from the GNU Emacs distribution.# Note some machines won't allow $(CC) without -S on this source file.alloca.o: alloca.c $(CC) $(CFLAGS) -S `echo $(srcdir)/alloca.c | sed 's,^\./,,'` as alloca.s -o alloca.o# Now the source files that are generated from the machine description..PRECIOUS: insn-config.h insn-flags.h insn-codes.h \ insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c# The following pair of rules has this effect:# genconfig is run only if the md has changed since genconfig was last run;# but the file insn-config.h is touched only when its contents actually change.# Each of the other insn-* files is handled by a similar pair of rules.insn-config.h: stamp-config ;stamp-config : md genconfig $(srcdir)/move-if-change ./genconfig md > tmp-config.h $(srcdir)/move-if-change tmp-config.h insn-config.h touch stamp-configinsn-flags.h: stamp-flags ;stamp-flags : md genflags $(srcdir)/move-if-change ./genflags md > tmp-flags.h $(srcdir)/move-if-change tmp-flags.h insn-flags.h touch stamp-flagsinsn-codes.h: stamp-codes ;stamp-codes : md gencodes $(srcdir)/move-if-change ./gencodes md > tmp-codes.h $(srcdir)/move-if-change tmp-codes.h insn-codes.h touch stamp-codesinsn-emit.o : insn-emit.c $(CONFIG_H) $(RTL_H) expr.h real.h insn-codes.h \ insn-config.h insn-flags.h $(CC) $(CFLAGS) $(INCLUDES) -c insn-emit.cinsn-emit.c: stamp-emit ;stamp-emit : md genemit $(srcdir)/move-if-change ./genemit md > tmp-emit.c $(srcdir)/move-if-change tmp-emit.c insn-emit.c touch stamp-emitinsn-recog.o : insn-recog.c $(CONFIG_H) $(RTL_H) insn-config.h real.h recog.h $(CC) $(CFLAGS) $(INCLUDES) -c insn-recog.cinsn-recog.c: stamp-recog ;stamp-recog : md genrecog $(srcdir)/move-if-change ./genrecog md > tmp-recog.c $(srcdir)/move-if-change tmp-recog.c insn-recog.c touch stamp-recoginsn-extract.o : insn-extract.c $(CONFIG_H) $(RTL_H) $(CC) $(CFLAGS) $(INCLUDES) -c insn-extract.cinsn-extract.c: stamp-extract ;stamp-extract : md genextract $(srcdir)/move-if-change ./genextract md > tmp-extract.c $(srcdir)/move-if-change tmp-extract.c insn-extract.c touch stamp-extractinsn-peep.o : insn-peep.c $(CONFIG_H) $(RTL_H) regs.h real.h $(CC) $(CFLAGS) $(INCLUDES) -c insn-peep.cinsn-peep.c: stamp-peep ;stamp-peep : md genpeep $(srcdir)/move-if-change ./genpeep md > tmp-peep.c $(srcdir)/move-if-change tmp-peep.c insn-peep.c touch stamp-peepinsn-output.o : insn-output.c $(CONFIG_H) $(RTL_H) regs.h real.h conditions.h \ hard-reg-set.h insn-config.h insn-flags.h output.h aux-output.c $(CC) $(CFLAGS) $(INCLUDES) -c insn-output.cinsn-output.c: stamp-output ;stamp-output : md genoutput $(srcdir)/move-if-change ./genoutput md > tmp-output.c $(srcdir)/move-if-change tmp-output.c insn-output.c touch stamp-output# Now the programs that generate those files.# $(CONFIG_H) is omitted from the deps of the gen*.o# because these programs don't really depend on anything # about the target machine. They do depend on config.h itself,# since that describes the host machine.genconfig : genconfig.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o genconfig genconfig.o rtl.o $(LIBS)genconfig.o : genconfig.c $(RTL_H) config.hgenflags : genflags.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o genflags genflags.o rtl.o $(LIBS)genflags.o : genflags.c $(RTL_H) config.hgencodes : gencodes.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o gencodes gencodes.o rtl.o $(LIBS)gencodes.o : gencodes.c $(RTL_H) config.hgenemit : genemit.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o genemit genemit.o rtl.o $(LIBS)genemit.o : genemit.c $(RTL_H) config.hgenrecog : genrecog.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o genrecog genrecog.o rtl.o $(LIBS)genrecog.o : genrecog.c $(RTL_H) config.hgenextract : genextract.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o genextract genextract.o rtl.o $(LIBS)genextract.o : genextract.c $(RTL_H) config.hgenpeep : genpeep.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o genpeep genpeep.o rtl.o $(LIBS)genpeep.o : genpeep.c $(RTL_H) config.hgenoutput : genoutput.o rtl.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o genoutput genoutput.o rtl.o $(LIBS)genoutput.o : genoutput.c $(RTL_H) config.h# Making the preprocessorcpp: cccp -rm -f cpp ln cccp cppcccp: cccp.o cexp.o version.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o cccp cccp.o cexp.o version.o $(LIBS)cexp.o: $(srcdir)/cexp.c $(CONFIG_H) $(CC) $(CFLAGS) $(CPPFLAGS) $(INCLUDES) -c $(srcdir)/cexp.c$(srcdir)/cexp.c: $(srcdir)/cexp.y $(BISON) -o $(srcdir)/cexp.c $(srcdir)/cexp.ycccp.o: cccp.c $(CONFIG_H) $(CC) $(CFLAGS) $(INCLUDES) \ -DGCC_INCLUDE_DIR=\"$(libdir)/gcc-include\" \ -DGPLUSPLUS_INCLUDE_DIR=\"$(libdir)/g++-include\" \ -c `echo $(srcdir)/cccp.c | sed 's,^\./,,'`$(srcdir)/cpp.info: $(srcdir)/cpp.texinfo makeinfo `echo $(srcdir)/cpp.texinfo | sed 's,^\./,,'`$(srcdir)/gplus.info: $(srcdir)/gplus.texinfo makeinfo `echo $(srcdir)/gplus.texinfo | sed 's,^\./,,'`$(srcdir)/gcc.info: $(srcdir)/gcc.texinfo makeinfo `echo $(srcdir)/gcc.texinfo | sed 's,^\./,,'`# gnulib is not deleted because deleting it would be inconvenient# for most uses of this target.clean: -rm -f $(STAGESTUFF) $(STAGE_GCC)# Delete the temp files made in the course of building gnulib. -rm -f tmpgnulib for name in $(LIBFUNCS); do rm -f $${name}.c; done -rm -f stamp-*.[ch] tmp-* -rm -f *.s *.s[0-9] *.co *.greg *.lreg *.combine *.flow *.cse *.jump *.rtl *.tree *.loop *.dbr *.jump2 -rm -f core float.h hard-params# Like clean but also delete the links made to configure gcc.# Also removes gnulib, since that is desirable if you are changing cpus.cleanconfig: clean -rm -f tm.h aux-output.c config.h md config.status gnulib stamp-gnulib2# Get rid of every file that's generated from some other file (except INSTALL).realclean: cleanconfig -rm -f cpp.aux cpp.cps cpp.fns cpp.info cpp.kys cpp.pgs cpp.tps cpp.vrs# -rm -f cplus-parse.tab.c cplus-parse.output -rm -f c-parse.tab.c c-parse.output c-parse.tab.output -rm -f gnulib cexp.c TAGS -rm -f cpp.info* cpp.?? cpp.??s cpp.log cpp.toc cpp.*aux -rm -f gcc.info* gcc.?? gcc.??s gcc.log gcc.toc gcc.*aux -rm -f gplus.info* gplus.?? gplus.??s gplus.log gplus.toc gplus.*aux -rm -f *.dvi stage1 stage2 stage3# Copy the files into directories where they will be run.install: all $(USER_H) float.h gvarargs.h gstdarg.h gcc.1 -mkdir $(libdir) -mkdir $(bindir) -if [ -f cc1 ] ; then $(INSTALL) cc1 $(libdir)/gcc-cc1 ; else true; fi -if [ -f cc1plus ] ; then $(INSTALL) cc1plus $(libdir)/gcc-cc1plus ; else true; fi $(INSTALL) gnulib $(libdir)/gcc-gnulib -if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then (cd $(libdir); $(RANLIB) gcc-gnulib) ; else true; fi $(INSTALL) cpp $(libdir)/gcc-cpp $(INSTALL) gcc $(bindir)/gcc -mkdir $(libdir)/gcc-include -chmod ugo+rx $(libdir)/gcc-include for file in $(USER_H); do \ for eachfile in $(srcdir)/$${file} ; do \ $(INSTALL) $(srcdir)/`basename $${eachfile}` $(libdir)/gcc-include/`basename $${eachfile}`; \ done ; done $(INSTALL) float.h $(libdir)/gcc-include/float.h $(INSTALL) $(srcdir)/gvarargs.h $(libdir)/gcc-include/varargs.h $(INSTALL) $(srcdir)/gstdarg.h $(libdir)/gcc-include/stdarg.h -chmod a-x $(libdir)/gcc-include/*.h $(INSTALL) $(srcdir)/gcc.1 $(mandir)/gcc.$(manext) -chmod a-x $(mandir)/gcc.$(manext)# do make -f ../gcc/Makefile maketest DIR=../gcc# in the intended test directory to make it a suitable test directory.maketest: ln -s $(DIR)/*.[chy] . ln -s $(DIR)/config . ln -s $(DIR)/*.def . -rm -f =* ln -s $(DIR)/.gdbinit . -ln -s $(DIR)/bison.simple . ln -s $(DIR)/config.gcc . ln -s $(DIR)/move-if-change .# The then and else were swapped to avoid a problem on Ultrix. -if [ ! -f Makefile ] ; then ln -s $(DIR)/Makefile . ; else false; fi -rm tm.h aux-output.c config.h md make clean# You must then run config.gcc to set up for compilation.bootstrap: all force $(MAKE) stage1 $(MAKE) CC="stage1/gcc -Bstage1/" CFLAGS="-O $(CFLAGS)" libdir=$(libdir) $(MAKE) stage2 $(MAKE) CC="stage2/gcc -Bstage2/" CFLAGS="-O $(CFLAGS)" libdir=$(libdir)bootstrap2: force $(MAKE) CC="stage1/gcc -Bstage1/" CFLAGS="-O $(CFLAGS)" libdir=$(libdir) $(MAKE) stage2 $(MAKE) CC="stage2/gcc -Bstage2/" CFLAGS="-O $(CFLAGS)" libdir=$(libdir)bootstrap3: force $(MAKE) CC="stage2/gcc -Bstage2/" CFLAGS="-O $(CFLAGS)" libdir=$(libdir)# Copy the object files from a particular stage into a subdirectory.stage1: force -mkdir stage1 -mv $(STAGESTUFF) $(STAGE_GCC) stage1 -rm -f stage1/gnulib -ln gnulib stage1 || cp gnulib stage1 -if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then $(RANLIB) stage1/gnulib; else true; fistage2: force -mkdir stage2 -mv $(STAGESTUFF) $(STAGE_GCC) stage2 -rm -f stage2/gnulib -ln gnulib stage2 || cp gnulib stage2 -if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then $(RANLIB) stage2/gnulib; else true; fistage3: force -mkdir stage3 -mv $(STAGESTUFF) $(STAGE_GCC) stage3 -rm -f stage3/gnulib -ln gnulib stage3 || cp gnulib stage3 -if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then $(RANLIB) stage3/gnulib; else true; fistage4: force -mkdir stage4 -mv $(STAGESTUFF) $(STAGE_GCC) stage4 -rm -f stage4/gnulib -ln gnulib stage4 || cp gnulib stage4 -if [ -f /usr/bin/ranlib -o -f /bin/ranlib ] ; then $(RANLIB) stage4/gnulib; else true; fiTAGS: force mkdir temp -mv c-parse.tab.c cplus-parse.c cplus-parse.h cexp.c temp etags *.y *.h *.c mv temp/* . rmdir tempincludes: force export LIB; LIB=$(libdir)/gcc-include ./fixincludes#In GNU Make, ignore whether `stage*' exists..PHONY: stage1 stage2 stage3 stage4 clean realclean TAGS bootstrapforce:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -