$(TM_P_H) $(TIMEVAR_H) $(OBSTACK_H) $(TREE_H) alloc-pool.h $(HASHTAB_H) cfghooks.o: cfghooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TIMEVAR_H) toplev.h cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \ $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) function.h $(TIMEVAR_H) $(TM_H) \ coretypes.h $(TREE_DUMP_H) except.h langhooks.h tree-pass.h $(RTL_H) \ $(DIAGNOSTIC_H) toplev.h $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \ output.h toplev.h function.h except.h $(TM_P_H) insn-config.h $(EXPR_H) \ $(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \ tree-pass.h cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(BASIC_BLOCK_H) hard-reg-set.h insn-config.h $(RECOG_H) $(TM_P_H) \ $(TIMEVAR_H) $(OBSTACK_H) toplev.h cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h toplev.h \ function.h except.h $(TIMEVAR_H) $(TREE_H) cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TIMEVAR_H) hard-reg-set.h output.h $(FLAGS_H) $(RECOG_H) \ toplev.h insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H) \ $(REGS_H) $(EMIT_RTL_H) $(CFGLAYOUT_H) tree-pass.h cfgloop.h expr.h cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) coretypes.h $(TM_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(FLAGS_H) function.h \ $(OBSTACK_H) toplev.h $(TREE_FLOW_H) $(TREE_H) cfgloopanal.o : cfgloopanal.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h $(TM_H) \ $(OBSTACK_H) output.h loop-iv.o : loop-iv.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(BASIC_BLOCK_H) \ hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H) \ output.h intl.h loop-invariant.o : loop-invariant.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h \ $(TM_H) $(TM_P_H) function.h $(FLAGS_H) $(DF_H) $(OBSTACK_H) output.h cfgloopmanip.o : cfgloopmanip.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) output.h \ coretypes.h $(TM_H) cfghooks.h $(OBSTACK_H) loop-init.o : loop-init.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) \ coretypes.h $(TM_H) $(OBSTACK_H) tree-pass.h timevar.h $(FLAGS_H) loop-unswitch.o : loop-unswitch.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \ output.h $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H) loop-unroll.o: loop-unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \ output.h $(EXPR_H) coretypes.h $(TM_H) $(HASHTAB_H) $(RECOG_H) $(VARRAY_H) \ $(OBSTACK_H) dominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ hard-reg-set.h $(BASIC_BLOCK_H) et-forest.h $(OBSTACK_H) toplev.h et-forest.o : et-forest.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ et-forest.h alloc-pool.h $(BASIC_BLOCK_H) combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) function.h insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \ rtlhooks-def.h $(BASIC_BLOCK_H) $(RECOG_H) real.h hard-reg-set.h \ toplev.h $(TM_P_H) $(TREE_H) $(TARGET_H) output.h $(PARAMS_H) $(OPTABS_H) \ insn-codes.h timevar.h tree-pass.h regclass.o : regclass.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(REGS_H) insn-config.h \ $(RECOG_H) reload.h real.h toplev.h function.h output.h $(GGC_H) \ $(TM_P_H) $(EXPR_H) $(TIMEVAR_H) gt-regclass.h $(HASHTAB_H) local-alloc.o : local-alloc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \ output.h function.h $(INSN_ATTR_H) toplev.h except.h reload.h $(TM_P_H) \ $(GGC_H) $(INTEGRATE_H) timevar.h tree-pass.h bitmap.o : bitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(GGC_H) gt-bitmap.h bitmap.h $(OBSTACK_H) global.o : global.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) reload.h function.h $(RECOG_H) $(REGS_H) hard-reg-set.h \ insn-config.h output.h toplev.h $(TM_P_H) $(MACHMODE_H) tree-pass.h \ timevar.h varray.o : varray.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GGC_H) \ $(HASHTAB_H) $(BCONFIG_H) $(VARRAY_H) toplev.h vec.o : vec.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) coretypes.h vec.h $(GGC_H) \ toplev.h reload.o : reload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) output.h $(EXPR_H) $(OPTABS_H) reload.h $(RECOG_H) \ hard-reg-set.h insn-config.h $(REGS_H) function.h real.h toplev.h \ $(TM_P_H) $(PARAMS_H) $(TARGET_H) reload1.o : reload1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) hard-reg-set.h insn-config.h \ $(BASIC_BLOCK_H) $(RECOG_H) output.h function.h toplev.h $(TM_P_H) \ except.h $(TREE_H) real.h $(FLAGS_H) $(MACHMODE_H) $(OBSTACK_H) rtlhooks.o : rtlhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ rtlhooks-def.h $(EXPR_H) $(RECOG_H) postreload.o : postreload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) real.h $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \ hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \ function.h toplev.h cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \ $(OBSTACK_H) timevar.h tree-pass.h postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) real.h insn-config.h \ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) function.h output.h toplev.h \ $(TM_P_H) except.h $(TREE_H) $(TARGET_H) $(HASHTAB_H) intl.h $(OBSTACK_H) \ $(PARAMS_H) timevar.h tree-pass.h caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) function.h \ $(RECOG_H) reload.h $(EXPR_H) toplev.h $(TM_P_H) bt-load.o : bt-load.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) except.h \ $(RTL_H) hard-reg-set.h $(REGS_H) $(TM_P_H) $(FIBHEAP_H) output.h $(EXPR_H) \ $(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) function.h tree-pass.h toplev.h reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ conditions.h hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) insn-config.h \ $(INSN_ATTR_H) except.h $(RECOG_H) function.h $(FLAGS_H) output.h \ $(EXPR_H) toplev.h $(PARAMS_H) $(TM_P_H) $(OBSTACK_H) $(RESOURCE_H) \ timevar.h target.h tree-pass.h alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) toplev.h output.h \ $(ALIAS_H) $(EMIT_RTL_H) $(GGC_H) function.h cselib.h $(TREE_H) $(TM_P_H) \ langhooks.h $(TARGET_H) gt-alias.h $(TIMEVAR_H) $(CGRAPH_H) \ $(SPLAY_TREE_H) $(VARRAY_H) $(IPA_TYPE_ESCAPE_H) tree-pass.h regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ insn-config.h timevar.h tree-pass.h \ $(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) function.h \ $(EXPR_H) $(BASIC_BLOCK_H) toplev.h $(TM_P_H) except.h reload.h ddg.o : ddg.c $(DDG_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TARGET_H) \ toplev.h $(RTL_H) $(TM_P_H) $(REGS_H) function.h \ $(FLAGS_H) insn-config.h $(INSN_ATTR_H) except.h $(RECOG_H) \ $(SCHED_INT_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(EXPR_H) bitmap.h $(DF_H) \ hard-reg-set.h sbitmap.h $(TM_H) modulo-sched.o : modulo-sched.c $(DDG_H) $(CONFIG_H) $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TARGET_H) toplev.h $(RTL_H) $(TM_P_H) $(REGS_H) function.h \ $(FLAGS_H) insn-config.h $(INSN_ATTR_H) except.h $(RECOG_H) \ $(SCHED_INT_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(EXPR_H) $(PARAMS_H) \ cfghooks.h $(DF_H) $(GCOV_IO_H) hard-reg-set.h $(TM_H) timevar.h tree-pass.h haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h function.h \ $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) $(TARGET_H) sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ function.h $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h cselib.h \ $(PARAMS_H) $(TM_P_H) $(DF_H) sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ function.h $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(PARAMS_H) \ $(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) timevar.h tree-pass.h sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \ function.h $(INSN_ATTR_H) toplev.h $(RECOG_H) except.h $(TM_P_H) \ $(PARAMS_H) $(CFGLAYOUT_H) $(TARGET_H) sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(SCHED_INT_H) hard-reg-set.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) \ $(REGS_H) $(TM_P_H) $(TARGET_H) real.h toplev.h final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) intl.h $(REGS_H) $(RECOG_H) conditions.h \ insn-config.h $(INSN_ATTR_H) function.h real.h output.h hard-reg-set.h \ except.h debug.h xcoffout.h toplev.h reload.h dwarf2out.h tree-pass.h \ $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) $(CFGLAYOUT_H) dbxout.h \ timevar.h cgraph.h $(COVERAGE_H) recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ function.h $(BASIC_BLOCK_H) $(REGS_H) $(RECOG_H) $(EXPR_H) hard-reg-set.h \ $(FLAGS_H) insn-config.h $(INSN_ATTR_H) real.h toplev.h output.h reload.h \ $(TM_P_H) timevar.h tree-pass.h reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \ insn-config.h toplev.h reload.h function.h $(TM_P_H) $(GGC_H) \ gt-reg-stack.h $(BASIC_BLOCK_H) output.h $(VARRAY_H) timevar.h tree-pass.h \ target.h sreal.o: sreal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) sreal.h predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) \ hard-reg-set.h output.h toplev.h $(RECOG_H) function.h except.h $(EXPR_H) \ $(TM_P_H) $(PREDICT_H) sreal.h $(PARAMS_H) $(TARGET_H) $(CFGLOOP_H) \ $(COVERAGE_H) $(SCEV_H) $(GGC_H) predict.def $(TIMEVAR_H) $(TREE_DUMP_H) \ $(TREE_FLOW_H) tree-pass.h lists.o: lists.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) toplev.h \ $(RTL_H) $(GGC_H) gt-lists.h bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(FLAGS_H) $(TIMEVAR_H) output.h $(CFGLAYOUT_H) $(FIBHEAP_H) \ $(TARGET_H) function.h $(TM_P_H) $(OBSTACK_H) $(EXPR_H) $(REGS_H) \ $(PARAMS_H) toplev.h tree-pass.h tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h output.h $(CFGLAYOUT_H) \ $(FLAGS_H) $(TIMEVAR_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \ tree-pass.h cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h \ function.h $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \ $(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) tree-pass.h timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(TIMEVAR_H) $(FLAGS_H) intl.h toplev.h $(RTL_H) timevar.def regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \ output.h $(RECOG_H) function.h $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \ reload.h toplev.h timevar.h tree-pass.h ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(REGS_H) toplev.h $(FLAGS_H) insn-config.h function.h $(RECOG_H) \ $(TARGET_H) $(BASIC_BLOCK_H) $(EXPR_H) output.h except.h $(TM_P_H) \ real.h $(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h timevar.h tree-pass.h lambda-mat.o : lambda-mat.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ $(TM_H) coretypes.h $(TREE_H) $(VARRAY_H) lambda-trans.o: lambda-trans.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ $(TM_H) coretypes.h $(TARGET_H) $(TREE_H) $(VARRAY_H) lambda-code.o: lambda-code.c $(LAMBDA_H) $(GGC_H) $(SYSTEM_H) $(CONFIG_H) \ $(TM_H) $(OPTABS_H) $(TREE_H) $(RTL_H) $(BASIC_BLOCK_H) \ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TIMEVAR_H) $(CFGLOOP_H) \ $(TREE_DATA_REF_H) $(SCEV_H) $(EXPR_H) coretypes.h $(TARGET_H) \ tree-chrec.h tree-pass.h vec.h params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(PARAMS_H) toplev.h pointer-set.o: pointer-set.c pointer-set.h $(CONFIG_H) $(SYSTEM_H) hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H) pretty-print.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h intl.h $(PRETTY_PRINT_H) \ $(TREE_H) errors.o : errors.c $(CONFIG_H) $(SYSTEM_H) errors.h $(BCONFIG_H) $(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) $(GGC_H) \ $(RTL_H) $(REGS_H) hard-reg-set.h real.h insn-config.h conditions.h \ output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) libfuncs.h \ $(TARGET_DEF_H) function.h $(SCHED_INT_H) $(TM_P_H) $(EXPR_H) $(OPTABS_H) \ langhooks.h $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ $(out_file) $(OUTPUT_OPTION) # Build auxiliary files that support ecoff format. mips-tfile: mips-tfile.o version.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tfile.o version.o $(LIBS) mips-tfile.o : mips-tfile.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) coretypes.h \ $(TM_H) version.h $(srcdir)/../include/getopt.h gstab.h intl.h mips-tdump: mips-tdump.o version.o $(LIBDEPS) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ mips-tdump.o version.o $(LIBS) mips-tdump.o : mips-tdump.c $(CONFIG_H) $(RTL_H) $(SYSTEM_H) coretypes.h \ $(TM_H) version.h $(srcdir)/../include/getopt.h stab.def # FIXME: writing proper dependencies for this is a *LOT* of work. libbackend.o : $(OBJS-common:.o=.c) $(out_file) \ insn-config.h insn-flags.h insn-codes.h insn-constants.h \ insn-attr.h $(DATESTAMP) $(BASEVER) $(DEVPHASE) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ -DTARGET_NAME=\"$(target_noncanonical)\" \ -DLOCALEDIR=\"$(localedir)\" \ -c $(filter %.c,$^) -o $@ \ -DBASEVER=$(BASEVER_s) -DDATESTAMP=$(DATESTAMP_s) \ -DDEVPHASE=$(DEVPHASE_s) -combine # # Generate header and source files from the machine description, # and compile them. .PRECIOUS: insn-config.h insn-flags.h insn-codes.h insn-constants.h \ insn-emit.c insn-recog.c insn-extract.c insn-output.c insn-peep.c \ insn-attr.h insn-attrtab.c insn-preds.c # Dependencies for the md file. The first time through, we just assume # the md file itself and the generated dependency file (in order to get # it built). The second time through we have the dependency file. -include mddeps.mk MD_DEPS = s-mddeps $(md_file) $(MD_INCLUDES) s-mddeps: $(md_file) $(MD_INCLUDES) build/genmddeps$(build_exeext) $(RUN_GEN) build/genmddeps$(build_exeext) $(md_file) > tmp-mddeps $(SHELL) $(srcdir)/../move-if-change tmp-mddeps mddeps.mk $(STAMP) s-mddeps # 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. # This causes an anomaly in the results of make -n # because insn-* is older than s-* # and thus make -n thinks that insn-* will be updated # and force recompilation of things that depend on it. # We use move-if-change precisely to avoid such recompilation. # But there is no way to teach make -n that it will be avoided. # Each of the insn-*.[ch] rules has a semicolon at the end, # for otherwise the system Make on SunOS 4.1 never tries # to recompile insn-*.o. To avoid problems and extra noise from # versions of make which don't like empty commands (nothing after the # trailing `;'), we call true for each. insn-config.h: s-config ; @true s-config : $(MD_DEPS) build/genconfig$(build_exeext) $(RUN_GEN) build/genconfig$(build_exeext) $(md_file) > tmp-config.h $(SHELL) $(srcdir)/../move-if-change tmp-config.h insn-config.h $(STAMP) s-config insn-conditions.c: s-conditions ; @true s-conditions : $(MD_DEPS) build/genconditions$(build_exeext) $(RUN_GEN) build/genconditions$(build_exeext) $(md_file) > tmp-conditions.c $(SHELL) $(srcdir)/../move-if-change tmp-conditions.c insn-conditions.c $(STAMP) s-conditions build/insn-conditions.o : insn-conditions.c $(CONFIG_H) $(SYSTEM_H) \ $(GTM_H) $(RTL_H) $(TM_P_H) $(REGS_H) function.h $(RECOG_H) real.h output.h \ $(FLAGS_H) hard-reg-set.h $(RESOURCE_H) toplev.h reload.h gensupport.h \ insn-constants.h coretypes.h build/dummy-conditions.o : dummy-conditions.c insn-flags.h: s-flags ; @true s-flags : $(MD_DEPS) build/genflags$(build_exeext) $(RUN_GEN) build/genflags$(build_exeext) $(md_file) > tmp-flags.h $(SHELL) $(srcdir)/../move-if-change tmp-flags.h insn-flags.h $(STAMP) s-flags insn-codes.h: s-codes ; @true s-codes : $(MD_DEPS) build/gencodes$(build_exeext) $(RUN_GEN) build/gencodes$(build_exeext) $(md_file) > tmp-codes.h $(SHELL) $(srcdir)/../move-if-change tmp-codes.h insn-codes.h $(STAMP) s-codes insn-constants.h: s-constants ; @true s-constants : $(MD_DEPS) build/genconstants$(build_exeext) $(RUN_GEN) build/genconstants$(build_exeext) $(md_file) > tmp-constants.h $(SHELL) $(srcdir)/../move-if-change tmp-constants.h insn-constants.h $(STAMP) s-constants insn-emit.o : insn-emit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(EXPR_H) real.h output.h insn-config.h $(OPTABS_H) reload.h \ $(RECOG_H) toplev.h function.h $(FLAGS_H) hard-reg-set.h $(RESOURCE_H) \ $(TM_P_H) $(BASIC_BLOCK_H) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c insn-emit.c \ $(OUTPUT_OPTION) insn-emit.c: s-emit ; @true s-emit : $(MD_DEPS) build/genemit$(build_exeext) $(RUN_GEN) build/genemit$(build_exeext) $(md_file) > tmp-emit.c $(SHELL) $(srcdir)/../move-if-change tmp-emit.c insn-emit.c $(STAMP) s-emit insn-recog.o : insn-recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) insn-config.h $(RECOG_H) real.h output.h $(FLAGS_H) function.h \ hard-reg-set.h $(RESOURCE_H) $(TM_P_H) toplev.h reload.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c insn-recog.c \ $(OUTPUT_OPTION) insn-recog.c: s-recog ; @true s-recog : $(MD_DEPS) build/genrecog$(build_exeext) $(RUN_GEN) build/genrecog$(build_exeext) $(md_file) > tmp-recog.c $(SHELL) $(srcdir)/../move-if-change tmp-recog.c insn-recog.c $(STAMP) s-recog insn-opinit.o : insn-opinit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) insn-config.h $(FLAGS_H) $(RECOG_H) $(EXPR_H) $(OPTABS_H) reload.h $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c insn-opinit.c \ $(OUTPUT_OPTION) insn-opinit.c: s-opinit ; @true s-opinit : $(MD_DEPS) build/genopinit$(build_exeext) $(RUN_GEN) build/genopinit$(build_exeext) $(md_file) > tmp-opinit.c $(SHELL) $(srcdir)/../move-if-change tmp-opinit.c insn-opinit.c $(STAMP) s-opinit insn-extract.o : insn-extract.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) toplev.h insn-config.h $(RECOG_H) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c insn-extract.c \ $(OUTPUT_OPTION) insn-extract.c: s-extract ; @true s-extract : $(MD_DEPS) build/genextract$(build_exeext) $(RUN_GEN) build/genextract$(build_exeext) $(md_file) > tmp-extract.c $(SHELL) $(srcdir)/../move-if-change tmp-extract.c insn-extract.c $(STAMP) s-extract insn-peep.o : insn-peep.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(REGS_H) output.h real.h insn-config.h $(RECOG_H) except.h \ function.h $(TM_P_H) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c insn-peep.c \ $(OUTPUT_OPTION) insn-peep.c: s-peep ; @true s-peep : $(MD_DEPS) build/genpeep$(build_exeext) $(RUN_GEN) build/genpeep$(build_exeext) $(md_file) > tmp-peep.c $(SHELL) $(srcdir)/../move-if-change tmp-peep.c insn-peep.c $(STAMP) s-peep insn-attrtab.o : insn-attrtab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(REGS_H) real.h output.h $(INSN_ATTR_H) insn-config.h toplev.h \ $(RECOG_H) $(TM_P_H) $(FLAGS_H) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c insn-attrtab.c \ $(OUTPUT_OPTION) insn-attr.h: s-attr ; @true s-attr : $(MD_DEPS) build/genattr$(build_exeext) $(RUN_GEN) build/genattr$(build_exeext) $(md_file) > tmp-attr.h $(SHELL) $(srcdir)/../move-if-change tmp-attr.h insn-attr.h $(STAMP) s-attr insn-attrtab.c: s-attrtab ; @true s-attrtab : $(MD_DEPS) build/genattrtab$(build_exeext) $(RUN_GEN) build/genattrtab$(build_exeext) $(md_file) > tmp-attrtab.c $(SHELL) $(srcdir)/../move-if-change tmp-attrtab.c insn-attrtab.c $(STAMP) s-attrtab insn-output.o : insn-output.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(GGC_H) $(REGS_H) real.h conditions.h hard-reg-set.h \ insn-config.h $(INSN_ATTR_H) $(EXPR_H) output.h $(RECOG_H) function.h \ toplev.h $(FLAGS_H) insn-codes.h $(TM_P_H) $(TARGET_H) $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) -c insn-output.c \ $(OUTPUT_OPTION) insn-output.c: s-output ; @true s-output : $(MD_DEPS) build/genoutput$(build_exeext) $(RUN_GEN) build/genoutput$(build_exeext) $(md_file) > tmp-output.c $(SHELL) $(srcdir)/../move-if-change tmp-output.c insn-output.c $(STAMP) s-output genrtl.o : genrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \ $(GGC_H) genrtl.c genrtl.h : s-genrtl @true # force gnu make to recheck modification times. s-genrtl: build/gengenrtl$(build_exeext) $(RUN_GEN) build/gengenrtl$(build_exeext) -h > tmp-genrtl.h $(SHELL) $(srcdir)/../move-if-change tmp-genrtl.h genrtl.h $(RUN_GEN) build/gengenrtl$(build_exeext) > tmp-genrtl.c $(SHELL) $(srcdir)/../move-if-change tmp-genrtl.c genrtl.c $(STAMP) s-genrtl insn-modes.o : insn-modes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(MACHMODE_H) real.h min-insn-modes.c insn-modes.c insn-modes.h : s-modes ; @true s-modes: build/genmodes$(build_exeext) $(RUN_GEN) build/genmodes$(build_exeext) -h > tmp-modes.h $(SHELL) $(srcdir)/../move-if-change tmp-modes.h insn-modes.h $(RUN_GEN) build/genmodes$(build_exeext) -m > tmp-min-modes.c $(SHELL) $(srcdir)/../move-if-change tmp-min-modes.c min-insn-modes.c $(RUN_GEN) build/genmodes$(build_exeext) > tmp-modes.c $(SHELL) $(srcdir)/../move-if-change tmp-modes.c insn-modes.c $(STAMP) s-modes insn-preds.c tm-preds.h: s-preds; @true s-preds: $(MD_DEPS) build/genpreds$(build_exeext) $(RUN_GEN) build/genpreds$(build_exeext) -h $(md_file) > tmp-preds.h $(SHELL) $(srcdir)/../move-if-change tmp-preds.h tm-preds.h $(RUN_GEN) build/genpreds$(build_exeext) $(md_file) > tmp-preds.c $(SHELL) $(srcdir)/../move-if-change tmp-preds.c insn-preds.c $(STAMP) s-preds insn-preds.o : insn-preds.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ $(RTL_H) $(TREE_H) insn-config.h $(RECOG_H) real.h output.h $(FLAGS_H) \ function.h hard-reg-set.h $(RESOURCE_H) $(TM_P_H) toplev.h reload.h \ $(REGS_H) GTFILES = $(srcdir)/input.h $(srcdir)/coretypes.h \ $(CPP_ID_DATA_H) $(host_xm_file_list) \ $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \ $(srcdir)/coverage.c $(srcdir)/function.h $(srcdir)/rtl.h \ $(srcdir)/optabs.h $(srcdir)/tree.h $(srcdir)/libfuncs.h $(SYMTAB_H) \ $(srcdir)/real.h $(srcdir)/varray.h $(srcdir)/insn-addr.h $(srcdir)/hwint.h \ $(srcdir)/ipa-reference.h \ $(srcdir)/cselib.h $(srcdir)/basic-block.h $(srcdir)/cgraph.h \ $(srcdir)/c-common.h $(srcdir)/c-tree.h $(srcdir)/reload.h \ $(srcdir)/alias.c $(srcdir)/bitmap.c $(srcdir)/cselib.c $(srcdir)/cgraph.c \ $(srcdir)/ipa-prop.c $(srcdir)/ipa-cp.c $(srcdir)/cgraphunit.c \ $(srcdir)/dbxout.c $(srcdir)/dwarf2out.c $(srcdir)/dwarf2asm.c \ $(srcdir)/dojump.c $(srcdir)/tree-profile.c \ $(srcdir)/emit-rtl.c $(srcdir)/except.c $(srcdir)/explow.c $(srcdir)/expr.c \ $(srcdir)/function.c $(srcdir)/except.h \ $(srcdir)/gcse.c $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \ $(srcdir)/profile.c $(srcdir)/regclass.c \ $(srcdir)/reg-stack.c $(srcdir)/cfglayout.c \ $(srcdir)/sdbout.c $(srcdir)/stor-layout.c \ $(srcdir)/stringpool.c $(srcdir)/tree.c $(srcdir)/varasm.c \ $(srcdir)/tree-mudflap.c $(srcdir)/tree-flow.h \ $(srcdir)/c-objc-common.c $(srcdir)/c-common.c $(srcdir)/c-parser.c \ $(srcdir)/tree-ssanames.c $(srcdir)/tree-eh.c $(srcdir)/tree-ssa-address.c \ $(srcdir)/tree-phinodes.c $(srcdir)/tree-cfg.c \ $(srcdir)/tree-dfa.c $(srcdir)/tree-ssa-propagate.c \ $(srcdir)/tree-iterator.c $(srcdir)/gimplify.c \ $(srcdir)/tree-chrec.h $(srcdir)/tree-vect-generic.c \ $(srcdir)/tree-ssa-operands.h $(srcdir)/tree-ssa-operands.c \ $(srcdir)/tree-profile.c $(srcdir)/tree-nested.c \ $(srcdir)/ipa-reference.c $(srcdir)/tree-ssa-structalias.h \ $(srcdir)/tree-ssa-structalias.c \ $(srcdir)/targhooks.c $(out_file) \ $(srcdir)/d/d-lang.h $(srcdir)/d/d-builtins.c $(srcdir)/c-lang.c $(srcdir)/c-tree.h $(srcdir)/c-decl.c $(srcdir)/c-common.c $(srcdir)/c-common.h $(srcdir)/c-pragma.c $(srcdir)/c-objc-common.c $(srcdir)/c-parser.c GTFILES_FILES_LANGS = d d c c c c c c c c GTFILES_FILES_FILES = $(srcdir)/d/d-lang.h $(srcdir)/d/d-builtins.c $(srcdir)/c-lang.c $(srcdir)/c-tree.h $(srcdir)/c-decl.c $(srcdir)/c-common.c $(srcdir)/c-common.h $(srcdir)/c-pragma.c $(srcdir)/c-objc-common.c $(srcdir)/c-parser.c GTFILES_LANG_DIR_NAMES = d GTFILES_SRCDIR = ../../gcc-4.1.2/gcc gt-cgraph.h gt-coverage.h gtype-desc.h gtype-desc.c gt-except.h \ gt-function.h gt-integrate.h gt-tree.h gt-varasm.h \ gt-emit-rtl.h gt-explow.h gt-stor-layout.h gt-regclass.h \ gt-lists.h gt-alias.h gt-cselib.h gt-gcse.h \ gt-expr.h gt-sdbout.h gt-optabs.h gt-bitmap.h gt-dojump.h \ gt-dwarf2out.h gt-reg-stack.h gt-dwarf2asm.h \ gt-dbxout.h gt-c-common.h gt-c-decl.h gt-c-parser.h \ gt-c-pragma.h gtype-c.h gt-cfglayout.h \ gt-tree-mudflap.h gt-tree-vect-generic.h \ gt-tree-profile.h gt-tree-ssa-address.h \ gt-tree-ssanames.h gt-tree-iterator.h gt-gimplify.h \ gt-tree-phinodes.h gt-tree-nested.h \ gt-tree-ssa-operands.h gt-tree-ssa-propagate.h \ gt-tree-ssa-structalias.h gt-cgraphunit.h \ gt-stringpool.h gt-targhooks.h : s-gtype ; @true define echo_quoted_to_gtyp echo "\"$(gtyp)\", " >> tmp-gtyp.h endef gtyp-gen.h: s-gtyp-gen ; @true s-gtyp-gen: Makefile echo "/* This file is machine generated. Do not edit. */" > tmp-gtyp.h echo "static const char *const srcdir = " >> tmp-gtyp.h echo "\"$(GTFILES_SRCDIR)\"" >> tmp-gtyp.h echo ";" >> tmp-gtyp.h echo "static const char *const lang_files[] = {" >> tmp-gtyp.h $(foreach gtyp,$(GTFILES_FILES_FILES),$(echo_quoted_to_gtyp)) echo "NULL};" >> tmp-gtyp.h echo "static const char *const langs_for_lang_files[] = {" >> tmp-gtyp.h $(foreach gtyp,$(GTFILES_FILES_LANGS),$(echo_quoted_to_gtyp)) echo "NULL};" >> tmp-gtyp.h echo "static const char *const all_files[] = {" >> tmp-gtyp.h $(foreach gtyp,$(GTFILES),$(echo_quoted_to_gtyp)) echo " NULL};" >> tmp-gtyp.h echo "static const char *const lang_dir_names[] = { \"c\", " >> tmp-gtyp.h $(foreach gtyp,$(GTFILES_LANG_DIR_NAMES),$(echo_quoted_to_gtyp)) echo "NULL};" >> tmp-gtyp.h $(SHELL) $(srcdir)/../move-if-change tmp-gtyp.h gtyp-gen.h $(STAMP) s-gtyp-gen s-gtype: build/gengtype$(build_exeext) $(GTFILES) $(RUN_GEN) build/gengtype$(build_exeext) $(STAMP) s-gtype # # Compile the programs that generate insn-* from the machine description. # They are compiled with $(CC_FOR_BUILD), and associated libraries, # since they need to run on this machine # even if GCC is being compiled to run on some other machine. # $(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. # The names of programs that run on the "build" machine. genprognames=genconfig genflags gencodes genemit genopinit genrecog \ genextract genpeep genattr genoutput # The names of the executable files for those programs. genprogs=$(genprognames:%=build/%$(build_exeext)) # Object files used in those programs. genobjnames=$(genprognames:%=%.o) read-rtl.o gensupport.o genattrtab.o \ genautomata.o gengenrtl.o genmodes.o genpreds.o gengtype.o \ genconstants.o gen-protos.o scan.o fix-header.o scan-decls.o \ gencheck.o dummy-conditions.o genconditions.o errors.o ggc-none.o \ min-insn-modes.o rtl.o print-rtl.o varray.o gcov-iov.o \ insn-conditions.o gengtype-lex.o gengtype-yacc.o genmddeps.o \ genchecksum.o genobjs=$(genobjnames:%=build/%) $(genprogs): %$(build_exeext): %.o $(BUILD_RTL) $(BUILD_SUPPORT) \ $(BUILD_PRINT) $(BUILD_ERRORS) \ $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ $< $(BUILD_RTL) $(BUILD_SUPPORT) $(BUILD_PRINT) \ $(BUILD_ERRORS) $(BUILD_LIBS) $(genobjs): %.o : # dependencies provided by explicit rule later $(CC_FOR_BUILD) -c $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -o $@ $< build/read-rtl.o: read-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) \ $(RTL_BASE_H) $(OBSTACK_H) $(HASHTAB_H) build/gensupport.o: gensupport.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ $(GTM_H) $(RTL_BASE_H) $(OBSTACK_H) errors.h $(HASHTAB_H) gensupport.h build/genconfig.o : genconfig.c $(RTL_BASE_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h gensupport.h build/genflags.o : genflags.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h gensupport.h build/gencodes.o : gencodes.c $(RTL_BASE_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h gensupport.h build/genmddeps$(build_exeext) : build/genmddeps.o $(BUILD_RTL) \ $(BUILD_EARLY_SUPPORT) $(BUILD_ERRORS) $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/genmddeps.o $(BUILD_EARLY_SUPPORT) $(BUILD_RTL) \ $(BUILD_ERRORS) $(BUILD_LIBS) build/genmddeps.o: genmddeps.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ $(GTM_H) $(RTL_BASE_H) errors.h gensupport.h build/genconstants$(build_exeext) : build/genconstants.o $(BUILD_RTL) \ $(BUILD_EARLY_SUPPORT) $(BUILD_ERRORS) $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/genconstants.o $(BUILD_EARLY_SUPPORT) $(BUILD_RTL) \ $(BUILD_ERRORS) $(BUILD_LIBS) build/genconstants.o : genconstants.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) errors.h build/genemit.o : genemit.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) errors.h gensupport.h build/genopinit.o : genopinit.c $(RTL_BASE_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h gensupport.h build/genrecog.o : genrecog.c $(RTL_BASE_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h gensupport.h build/genextract.o : genextract.c $(RTL_BASE_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) insn-config.h errors.h gensupport.h build/genpeep.o : genpeep.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) errors.h gensupport.h build/genattr.o : genattr.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) errors.h gensupport.h build/genattrtab$(build_exeext) : build/genattrtab.o build/genautomata.o \ $(BUILD_RTL) $(BUILD_SUPPORT) $(BUILD_PRINT) $(BUILD_ERRORS) \ $(BUILD_VARRAY) $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/genattrtab.o build/genautomata.o \ $(BUILD_RTL) $(BUILD_SUPPORT) $(BUILD_PRINT) $(BUILD_ERRORS) \ $(BUILD_VARRAY) $(BUILD_LIBS) -lm build/genattrtab.o : genattrtab.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(GGC_H) gensupport.h genattrtab.h build/genautomata.o : genautomata.c $(RTL_BASE_H) $(OBSTACK_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h $(VARRAY_H) genattrtab.h \ $(HASHTAB_H) build/genoutput.o : genoutput.c $(RTL_BASE_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h gensupport.h build/gengenrtl$(build_exeext) : build/gengenrtl.o $(BUILD_ERRORS) \ $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/gengenrtl.o $(BUILD_ERRORS) $(BUILD_LIBS) build/gengenrtl.o : gengenrtl.c $(BCONFIG_H) $(SYSTEM_H) rtl.def build/genmodes$(build_exeext) : build/genmodes.o $(BUILD_ERRORS) \ $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/genmodes.o $(BUILD_ERRORS) $(BUILD_LIBS) build/genmodes.o : genmodes.c $(BCONFIG_H) $(SYSTEM_H) errors.h $(HASHTAB_H) \ machmode.def $(extra_modes_file) build/genpreds$(build_exeext) : build/genpreds.o $(BUILD_RTL) \ $(BUILD_EARLY_SUPPORT) $(BUILD_PRINT) $(BUILD_ERRORS) $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/genpreds.o $(BUILD_RTL) $(BUILD_EARLY_SUPPORT) $(BUILD_PRINT) \ $(BUILD_ERRORS) $(BUILD_LIBS) build/genpreds.o : genpreds.c $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) errors.h gensupport.h $(OBSTACK_H) build/gengtype$(build_exeext) : build/gengtype.o build/gengtype-lex.o \ build/gengtype-yacc.o $(BUILD_LIBDEPS) $(BUILD_ERRORS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/gengtype.o build/gengtype-lex.o build/gengtype-yacc.o \ $(BUILD_ERRORS) $(BUILD_LIBS) build/gengtype.o : gengtype.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) \ gengtype.h gtyp-gen.h rtl.def insn-notes.def errors.h build/gengtype-lex.o : gengtype-lex.c gengtype.h gengtype-yacc.h \ $(BCONFIG_H) coretypes.h $(GTM_H) $(SYSTEM_H) vec.h build/gengtype-yacc.o : gengtype-yacc.c gengtype.h $(BCONFIG_H) $(SYSTEM_H) \ coretypes.h $(GTM_H) gengtype-lex.c : gengtype-lex.l -$(FLEX) $(FLEXFLAGS) -o$@ $< gengtype-yacc.c gengtype-yacc.h: gengtype-yacc.y -$(BISON) $(BISONFLAGS) -d -o gengtype-yacc.c $< build/genconditions$(build_exeext) : build/genconditions.o \ $(BUILD_EARLY_SUPPORT) $(BUILD_RTL) $(BUILD_ERRORS) $(BUILD_LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/genconditions.o $(BUILD_EARLY_SUPPORT) $(BUILD_RTL) \ $(BUILD_ERRORS) $(BUILD_LIBS) build/genconditions.o : genconditions.c $(RTL_BASE_H) $(BCONFIG_H) \ $(SYSTEM_H) coretypes.h $(GTM_H) errors.h build/errors.o : errors.c $(BCONFIG_H) $(SYSTEM_H) errors.h build/ggc-none.o : ggc-none.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GGC_H) build/min-insn-modes.o : min-insn-modes.c $(BCONFIG_H) $(SYSTEM_H) \ $(MACHMODE_H) build/rtl.o: rtl.c $(BCONFIG_H) coretypes.h $(GTM_H) $(SYSTEM_H) $(RTL_H) \ real.h $(GGC_H) errors.h build/print-rtl.o: print-rtl.c $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) \ $(RTL_BASE_H) build/varray.o: varray.c $(BCONFIG_H) coretypes.h $(GTM_H) $(SYSTEM_H) \ $(VARRAY_H) $(RTL_BASE_H) $(GGC_H) $(TREE_H) bitmap.h errors.h # # Remake internationalization support. intl.o: intl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h Makefile $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ -DLOCALEDIR=\"$(localedir)\" \ -c $(srcdir)/intl.c $(OUTPUT_OPTION) # # Remake cpp and protoize. PREPROCESSOR_DEFINES = \ -DGCC_INCLUDE_DIR=\"$(libsubdir)/include\" \ -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \ cppdefault.h Makefile $(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ $(PREPROCESSOR_DEFINES) \ -c $(srcdir)/cppdefault.c $(OUTPUT_OPTION) # Note for the stamp targets, we run the program `true' instead of # having an empty command (nothing following the semicolon). proto: config.status protoize$(exeext) unprotoize$(exeext) SYSCALLS.c.X PROTO_OBJS = intl.o version.o cppdefault.o errors.o protoize$(exeext): protoize.o $(PROTO_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ protoize.o $(PROTO_OBJS) $(LIBS) unprotoize$(exeext): unprotoize.o $(PROTO_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ unprotoize.o $(PROTO_OBJS) $(LIBS) protoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) $(SYSTEM_H) \ coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h (SHLIB_LINK='$(SHLIB_LINK)' \ SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ $(DRIVER_DEFINES) \ $(srcdir)/protoize.c $(OUTPUT_OPTION)) unprotoize.o: protoize.c $(srcdir)/../include/getopt.h $(CONFIG_H) \ $(SYSTEM_H) coretypes.h $(TM_H) Makefile version.h cppdefault.h intl.h (SHLIB_LINK='$(SHLIB_LINK)' \ SHLIB_MULTILIB='$(SHLIB_MULTILIB)'; \ $(CC) -c -DUNPROTOIZE $(ALL_CFLAGS) $(ALL_CPPFLAGS) \ $(DRIVER_DEFINES) \ $(srcdir)/protoize.c $(OUTPUT_OPTION)) # This info describes the target machine, so compile with GCC just built. SYSCALLS.c.X: $(srcdir)/sys-types.h $(srcdir)/sys-protos.h $(GCC_PASSES) \ stmp-int-hdrs -rm -f SYSCALLS.c tmp-SYSCALLS.s sed -e s/TARGET_GETGROUPS_T/$(TARGET_GETGROUPS_T)/ \ $(srcdir)/sys-types.h $(srcdir)/sys-protos.h > SYSCALLS.c $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) \ -aux-info $@ -S -o tmp-SYSCALLS.s SYSCALLS.c -rm -f SYSCALLS.c tmp-SYSCALLS.s test-protoize-simple: ./protoize ./unprotoize $(GCC_PASSES) -rm -f tmp-proto.[cso] cp $(srcdir)/protoize.c tmp-proto.c chmod u+w tmp-proto.c ./protoize -N -B ./ -x getopt.h -c "-B./ -Wall -Wwrite-strings \ $(GCC_CFLAGS) $(INCLUDES) \ -DGCC_INCLUDE_DIR=0 \ -DGPLUSPLUS_INCLUDE_DIR=0 \ -DCROSS_INCLUDE_DIR=0 \ -DTOOL_INCLUDE_DIR=0 \ -DSTANDARD_EXEC_PREFIX=0 \ -DDEFAULT_TARGET_MACHINE=0 \ -DDEFAULT_TARGET_VERSION=0" tmp-proto.c @echo '**********' Expect 400 lines of differences. -diff $(srcdir)/protoize.c tmp-proto.c > tmp-proto.diff -wc -l tmp-proto.diff ./unprotoize -N -x getopt.h -c "-B./ -Wall -Wwrite-strings \ $(GCC_CFLAGS) $(INCLUDES) \ -DGCC_INCLUDE_DIR=0 \ -DGPLUSPLUS_INCLUDE_DIR=0 \ -DCROSS_INCLUDE_DIR=0 \ -DTOOL_INCLUDE_DIR=0 \ -DSTANDARD_EXEC_PREFIX=0 \ -DDEFAULT_TARGET_MACHINE=0 \ -DDEFAULT_TARGET_VERSION=0" tmp-proto.c @echo Expect zero differences. diff $(srcdir)/protoize.c tmp-proto.c | cat -rm -f tmp-proto.[cs] tmp-proto$(objext) # gcov-iov.c is run on the build machine to generate gcov-iov.h from version.c build/gcov-iov.o: gcov-iov.c $(BCONFIG_H) coretypes.h $(GTM_H) \ $(SYSTEM_H) coretypes.h $(TM_H) build/gcov-iov$(build_exeext): build/gcov-iov.o $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) build/gcov-iov.o -o $@ gcov-iov.h: s-iov s-iov: build/gcov-iov$(build_exeext) $(BASEVER) $(DEVPHASE) build/gcov-iov$(build_exeext) '$(BASEVER_c)' '$(DEVPHASE_c)' \ > tmp-gcov-iov.h $(SHELL) $(srcdir)/../move-if-change tmp-gcov-iov.h gcov-iov.h $(STAMP) s-iov gcov.o: gcov.c gcov-io.c $(GCOV_IO_H) intl.h $(SYSTEM_H) coretypes.h $(TM_H) \ $(CONFIG_H) version.h gcov-dump.o: gcov-dump.c gcov-io.c $(GCOV_IO_H) $(SYSTEM_H) coretypes.h \ $(TM_H) $(CONFIG_H) GCOV_OBJS = gcov.o intl.o version.o errors.o gcov$(exeext): $(GCOV_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) $(GCOV_OBJS) $(LIBS) -o $@ GCOV_DUMP_OBJS = gcov-dump.o version.o errors.o gcov-dump$(exeext): $(GCOV_DUMP_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) $(GCOV_DUMP_OBJS) $(LIBS) -o $@ # # Build the include directory. The stamp files are stmp-* rather than # s-* so that mostlyclean does not force the include directory to # be rebuilt. # Build the include directory stmp-int-hdrs: $(STMP_FIXINC) $(USER_H) xlimits.h $(UNWIND_H) # Copy in the headers provided with gcc. # The sed command gets just the last file name component; # this is necessary because VPATH could add a dirname. # Using basename would be simpler, but some systems don't have it. # The touch command is here to workaround an AIX/Linux NFS bug. -if [ -d include ] ; then true; else mkdir include; chmod a+rx include; fi for file in .. $(USER_H); do \ if [ X$$file != X.. ]; then \ realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ $(STAMP) include/$$realfile; \ rm -f include/$$realfile; \ cp $$file include; \ chmod a+r include/$$realfile; \ fi; \ done rm -f include/limits.h cp xlimits.h include/limits.h cp $(UNWIND_H) include/unwind.h chmod a+r include/limits.h # Install the README rm -f include/README cp $(srcdir)/../fixincludes/README-fixinc include/README chmod a+r include/README $(STAMP) $@ .PHONY: install-gcc-tooldir install-gcc-tooldir: $(mkinstalldirs) $(DESTDIR)$(gcc_tooldir) macro_list: s-macro_list; @true s-macro_list : $(GCC_PASSES) echo | $(GCC_FOR_TARGET) -E -dM - | \ sed -n -e 's/^#define \([^_][a-zA-Z0-9_]*\).*/\1/p' \ -e 's/^#define \(_[^_A-Z][a-zA-Z0-9_]*\).*/\1/p' | \ sort -u > tmp-macro_list $(SHELL) $(srcdir)/../move-if-change tmp-macro_list macro_list $(STAMP) s-macro_list # The line below is supposed to avoid accidentally matching the # built-in suffix rule `.o:' to build fixincl out of fixincl.o. You'd # expect fixincl to be newer than fixincl.o, such that this situation # would never come up. As it turns out, if you use ccache with # CCACHE_HARDLINK enabled, the compiler doesn't embed the current # working directory in object files (-g absent, or -fno-working-dir # present), and build and host are the same, fixincl for the host will # build after fixincl for the build machine, getting a cache hit, # thereby updating the timestamp of fixincl.o in the host tree. # Because of CCACHE_HARDLINK, this will also update the timestamp in # the build tree, and so fixincl in the build tree will appear to be # out of date. Yuck. ../$(build_subdir)/fixincludes/fixincl: ; @ : # Build fixed copies of system files. # Abort if no system headers available, unless building a crosscompiler. # FIXME: abort unless building --without-headers would be more accurate and less ugly stmp-fixinc: gsyslimits.h macro_list \ $(build_objdir)/fixincludes/fixincl \ $(build_objdir)/fixincludes/fixinc.sh @if ! $(inhibit_libc) && test ! -d ${SYSTEM_HEADER_DIR}; then \ echo The directory that should contain system headers does not exist: >&2 ; \ echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ tooldir_sysinc=`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`; \ if test "x${SYSTEM_HEADER_DIR}" = "x${tooldir_sysinc}"; \ then sleep 1; else exit 1; fi; \ fi rm -rf include; mkdir include -chmod a+rx include (TARGET_MACHINE='$(target)'; srcdir=`cd $(srcdir); ${PWD_COMMAND}`; \ SHELL='$(SHELL)'; MACRO_LIST=`${PWD_COMMAND}`/macro_list ; \ export TARGET_MACHINE srcdir SHELL MACRO_LIST && \ cd $(build_objdir)/fixincludes && \ $(SHELL) -c true ../../gcc/include \ $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ) rm -f include/syslimits.h if [ -f include/limits.h ]; then \ mv include/limits.h include/syslimits.h; \ else \ cp $(srcdir)/gsyslimits.h include/syslimits.h; \ fi chmod a+r include/syslimits.h $(STAMP) stmp-fixinc # Files related to the fixproto script. # gen-protos and fix-header are compiled with CC_FOR_BUILD, but they are only # used in native and host-x-target builds, so it's safe to link them with # libiberty.a. deduced.h: $(GCC_PASSES) $(srcdir)/scan-types.sh stmp-int-hdrs if [ -d "$(SYSTEM_HEADER_DIR)" ]; \ then \ CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -isystem include -isystem ${SYSTEM_HEADER_DIR}"; \ export CC; \ $(SHELL) $(srcdir)/scan-types.sh "$(srcdir)" >tmp-deduced.h; \ mv tmp-deduced.h deduced.h; \ else \ $(STAMP) deduced.h; \ fi GEN_PROTOS_OBJS = build/gen-protos.o build/scan.o $(BUILD_ERRORS) build/gen-protos$(build_exeext): $(GEN_PROTOS_OBJS) ${CC_FOR_BUILD} $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ $(GEN_PROTOS_OBJS) $(BUILD_LIBS) build/gen-protos.o: gen-protos.c scan.h $(BCONFIG_H) $(SYSTEM_H) coretypes.h \ $(GTM_H) errors.h build/scan.o: scan.c scan.h $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) xsys-protos.h: $(GCC_PASSES) $(srcdir)/sys-protos.h deduced.h \ build/gen-protos$(build_exeext) Makefile sed -e s/TARGET_GETGROUPS_T/$(TARGET_GETGROUPS_T)/ \ deduced.h $(srcdir)/sys-protos.h > tmp-fixtmp.c mv tmp-fixtmp.c fixtmp.c $(GCC_FOR_TARGET) fixtmp.c -w -U__SIZE_TYPE__ -U__PTRDIFF_TYPE__ -U__WCHAR_TYPE__ -E \ | sed -e 's/ / /g' -e 's/ *(/ (/g' -e 's/ [ ]*/ /g' -e 's/( )/()/' \ | $(RUN_GEN) build/gen-protos >xsys-protos.hT mv xsys-protos.hT xsys-protos.h rm -rf fixtmp.c # This is nominally a 'build' program, but it's run only when host==build, # so we can (indeed, must) use $(LIBDEPS) and $(LIBS). build/fix-header$(build_exeext): build/fix-header.o build/scan-decls.o \ build/scan.o xsys-protos.h c-incpath.o cppdefault.o prefix.o \ $(BUILD_ERRORS) $(LIBDEPS) $(CC_FOR_BUILD) $(BUILD_CFLAGS) $(BUILD_LDFLAGS) -o $@ \ build/fix-header.o c-incpath.o cppdefault.o build/scan-decls.o prefix.o \ build/scan.o $(BUILD_ERRORS) $(LIBS) build/fix-header.o: fix-header.c $(OBSTACK_H) scan.h errors.h \ xsys-protos.h $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) $(CPPLIB_H) build/scan-decls.o: scan-decls.c scan.h $(CPPLIB_H) $(BCONFIG_H) $(SYSTEM_H) coretypes.h $(GTM_H) # stmp-fixproto depends on this, not on fix-header directly. # The idea is to make sure fix-header gets built, # but not rerun fixproto after each stage # just because fix-header's mtime has changed. fixhdr.ready: build/fix-header$(build_exeext) -if [ -f fixhdr.ready ] ; then \ true; \ else \ $(STAMP) fixhdr.ready; \ fi # stmp-int-hdrs is to make sure fixincludes has already finished. # The if statement is so that we don't run fixproto a second time # if it has already been run on the files in `include'. stmp-fixproto: fixhdr.ready fixproto stmp-int-hdrs if [ -f include/fixed ] ; then true; \ else \ : This line works around a 'make' bug in BSDI 1.1.; \ FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"; export FIXPROTO_DEFINES; \ FIX_HEADER="build/fix-header$(build_exeext)"; export FIX_HEADER; \ mkinstalldirs="$(mkinstalldirs)"; \ export mkinstalldirs; \ if [ -d "$(SYSTEM_HEADER_DIR)" ]; then \ $(SHELL) ${srcdir}/fixproto include include $(SYSTEM_HEADER_DIR); \ if [ $$? -eq 0 ] ; then true ; else exit 1 ; fi ; \ else true; fi; \ $(STAMP) include/fixed; \ fi $(STAMP) stmp-fixproto # We can't run fixproto (it's being built for a different host), but we still # need to install it so that the user can run it when the compiler is # installed. stmp-install-fixproto: fixproto $(STAMP) $@ # # Remake the info files. doc: $(BUILD_INFO) $(GENERATED_MANPAGES) gccbug INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \ doc/gccinstall.info doc/cppinternals.info info: $(INFOFILES) lang.info # srcinfo lang.srcinfo srcinfo: $(INFOFILES) -cp -p $^ $(srcdir)/doc TEXI_CPP_FILES = cpp.texi fdl.texi cppenv.texi cppopts.texi \ gcc-common.texi gcc-vers.texi TEXI_GCC_FILES = gcc.texi gcc-common.texi gcc-vers.texi frontends.texi \ standards.texi invoke.texi extend.texi md.texi objc.texi \ gcov.texi trouble.texi bugreport.texi service.texi \ contribute.texi compat.texi funding.texi gnu.texi gpl.texi \ fdl.texi contrib.texi cppenv.texi cppopts.texi \ implement-c.texi TEXI_GCCINT_FILES = gccint.texi gcc-common.texi gcc-vers.texi \ contribute.texi makefile.texi configterms.texi options.texi \ portability.texi interface.texi passes.texi c-tree.texi \ rtl.texi md.texi tm.texi hostconfig.texi fragments.texi \ configfiles.texi collect2.texi headerdirs.texi funding.texi \ gnu.texi gpl.texi fdl.texi contrib.texi languages.texi \ sourcebuild.texi gty.texi libgcc.texi cfg.texi tree-ssa.texi TEXI_GCCINSTALL_FILES = install.texi install-old.texi fdl.texi TEXI_CPPINT_FILES = cppinternals.texi gcc-common.texi gcc-vers.texi # gcc-vers.texi is generated from the version files. gcc-vers.texi: $(BASEVER) $(DEVPHASE) (echo "@set version-GCC $(BASEVER_c)"; \ if [ "$(DEVPHASE_c)" = "experimental" ]; \ then echo "@set DEVELOPMENT"; \ else echo "@clear DEVELOPMENT"; \ fi) > $@T mv -f $@T $@ # The *.1, *.7, *.info, and *.dvi files are being generated from implicit # patterns. To use them, put each of the specific targets with its # specific dependencies but no build commands. doc/cpp.info: $(TEXI_CPP_FILES) doc/gcc.info: $(TEXI_GCC_FILES) doc/gccint.info: $(TEXI_GCCINT_FILES) doc/cppinternals.info: $(TEXI_CPPINT_FILES) doc/%.info: %.texi if [ x$(BUILD_INFO) = xinfo ]; then \ $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(docdir) \ -I $(docdir)/include -o $@ $<; \ fi # Duplicate entry to handle renaming of gccinstall.info doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) if [ x$(BUILD_INFO) = xinfo ]; then \ $(MAKEINFO) $(MAKEINFOFLAGS) -I $(docdir) \ -I $(docdir)/include -o $@ $<; \ fi doc/cpp.dvi: $(TEXI_CPP_FILES) doc/gcc.dvi: $(TEXI_GCC_FILES) doc/gccint.dvi: $(TEXI_GCCINT_FILES) doc/cppinternals.dvi: $(TEXI_CPPINT_FILES) $(htmldir)/cpp/index.html: $(TEXI_CPP_FILES) $(htmldir)/gcc/index.html: $(TEXI_GCC_FILES) $(htmldir)/gccint/index.html: $(TEXI_GCCINT_FILES) $(htmldir)/cppinternals/index.html: $(TEXI_CPPINT_FILES) dvi:: doc/gcc.dvi doc/gccint.dvi doc/gccinstall.dvi doc/cpp.dvi \ doc/cppinternals.dvi doc/%.dvi: %.texi $(TEXI2DVI) -I . -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $< # Duplicate entry to handle renaming of gccinstall.dvi doc/gccinstall.dvi: $(TEXI_GCCINSTALL_FILES) $(TEXI2DVI) -I . -I $(abs_docdir) -I $(abs_docdir)/include -o $@ $< html:: $(htmldir)/cpp/index.html $(htmldir)/gcc/index.html \ $(htmldir)/gccinstall/index.html $(htmldir)/gccint/index.html \ $(htmldir)/cppinternals/index.html $(htmldir)/%/index.html: %.texi $(mkinstalldirs) $(@D) rm -f $(@D)/* $(TEXI2HTML) -I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $< # Duplicate entry to handle renaming of gccinstall $(htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES) $(mkinstalldirs) $(@D) echo rm -f $(@D)/* $(TEXI2HTML) -I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $< MANFILES = doc/gcov.1 doc/cpp.1 doc/gcc.1 doc/gfdl.7 doc/gpl.7 doc/fsf-funding.7 generated-manpages: man man: $(MANFILES) lang.man # srcman lang.srcman srcman: $(MANFILES) -cp -p $^ $(srcdir)/doc doc/%.1: %.pod $(STAMP) $@ -($(POD2MAN) --section=1 $< > $(@).T$$$$ && \ mv -f $(@).T$$$$ $@) || \ (rm -f $(@).T$$$$ && exit 1) doc/%.7: %.pod $(STAMP) $@ -($(POD2MAN) --section=7 $< > $(@).T$$$$ && \ mv -f $(@).T$$$$ $@) || \ (rm -f $(@).T$$$$ && exit 1) %.pod: %.texi $(STAMP) $@ -$(TEXI2POD) $< > $@ .INTERMEDIATE: cpp.pod gcc.pod gfdl.pod fsf-funding.pod cpp.pod: cpp.texi cppenv.texi cppopts.texi # These next rules exist because the output name is not the same as # the input name, so our implicit %.pod rule will not work. gcc.pod: invoke.texi cppenv.texi cppopts.texi $(STAMP) $@ -$(TEXI2POD) $< > $@ gfdl.pod: fdl.texi $(STAMP) $@ -$(TEXI2POD) $< > $@ fsf-funding.pod: funding.texi $(STAMP) $@ -$(TEXI2POD) $< > $@ # # Deletion of files made during compilation. # There are four levels of this: # `mostlyclean', `clean', `distclean' and `maintainer-clean'. # `mostlyclean' is useful while working on a particular type of machine. # It deletes most, but not all, of the files made by compilation. # It does not delete libgcc.a or its parts, so it won't have to be recompiled. # `clean' deletes everything made by running `make all'. # `distclean' also deletes the files made by config. # `maintainer-clean' also deletes everything that could be regenerated # automatically, except for `configure'. # We remove as much from the language subdirectories as we can # (less duplicated code). mostlyclean: lang.mostlyclean -rm -f $(STAGECOPYSTUFF) $(STAGEMOVESTUFF) -rm -f *$(coverageexts) -rm -rf libgcc # Delete build programs -rm -f build/* -rm -f mddeps.mk # Delete the temp files made in the course of building libgcc.a. -rm -f xlimits.h # Delete other built files. -rm -f xsys-protos.hT -rm -f specs.h gencheck.h options.c options.h # Delete the stamp and temporary files. -rm -f s-* tmp-* stamp-* stmp-* -rm -f */stamp-* */tmp-* # Delete debugging dump files. -rm -f *.[0-9][0-9].* */*.[0-9][0-9].* # Delete some files made during installation. -rm -f specs $(SPECS) SYSCALLS.c.X SYSCALLS.c -rm -f collect collect2 mips-tfile mips-tdump # Delete files generated for fixproto -rm -rf $(build_exeext) xsys-protos.h deduced.h tmp-deduced.h \ gen-protos$(build_exeext) fixproto.list fixtmp.* fixhdr.ready # Delete unwanted output files from TeX. -rm -f *.toc *.log *.vr *.fn *.cp *.tp *.ky *.pg -rm -f */*.toc */*.log */*.vr */*.fn */*.cp */*.tp */*.ky */*.pg # Delete sorted indices we don't actually use. -rm -f gcc.vrs gcc.kys gcc.tps gcc.pgs gcc.fns # Delete core dumps. -rm -f core */core # Delete file generated for gengtype.c -rm -f gtyp-gen.h # Delete files generated by gengtype.c -rm -f gtype-* -rm -f gt-* # Delete genchecksum outputs -rm -f *-checksum.c # Delete all files made by compilation # that don't exist in the distribution. clean: mostlyclean lang.clean -rm -f libgcc.a libgcc_eh.a libgcov.a -rm -f libgcc_s* -rm -f libunwind* -rm -f config.h tconfig.h bconfig.h tm_p.h tm.h -rm -f options.c options.h optionlist -rm -f cs-* -rm -rf libgcc -rm -f doc/*.dvi # Delete the include directory. -rm -rf include # Delete files used by the "multilib" facility (including libgcc subdirs). -rm -f multilib.h tmpmultilib* -if [ "x$(MULTILIB_DIRNAMES)" != x ] ; then \ rm -rf $(MULTILIB_DIRNAMES); \ else if [ "x$(MULTILIB_OPTIONS)" != x ] ; then \ rm -rf `echo $(MULTILIB_OPTIONS) | sed -e 's/\// /g'`; \ fi ; fi -rm -fr stage1 stage2 stage3 stage4 stageprofile stagefeedback # Delete stamps of bootstrap stages -rm -f stage?_* -rm -f clean?_* -rm -f stage_last # Delete all files that users would normally create # while building and installing GCC. distclean: clean lang.distclean -rm -f auto-host.h auto-build.h -rm -f cstamp-h -rm -f config.status config.run config.cache config.bak -rm -f Make-lang Make-hooks Make-host Make-target -rm -f Makefile *.oaux -rm -f gthr-default.h -rm -f */stage1 */stage2 */stage3 */stage4 */include */stageprofile */stagefeedback -rm -f TAGS */TAGS -rm -f *.asm -rm -f site.exp site.bak testsuite/site.exp testsuite/site.bak -rm -f testsuite/*.log testsuite/*.sum -cd testsuite && rm -f x *.x *.x? *.exe *.rpo *.o *.s *.S *.c -cd testsuite && rm -f *.out *.gcov *$(coverageexts) -rm -rf ${QMTEST_DIR} stamp-qmtest -rm -f cxxmain.c -rm -f mklibgcc gccbug .gdbinit configargs.h -rm -f gcov.pod # Delete po/*.gmo only if we are not building in the source directory. -if [ ! -f po/exgettext ]; then rm -f po/*.gmo; fi -rmdir ada cp f java objc intl po testsuite 2>/dev/null # Get rid of every file that's generated from some other file, except for `configure'. # Most of these files ARE PRESENT in the GCC distribution. maintainer-clean: @echo 'This command is intended for maintainers to use; it' @echo 'deletes files that may need special tools to rebuild.' $(MAKE) lang.maintainer-clean distclean -rm -f cpp.??s cpp.*aux -rm -f gcc.??s gcc.*aux -rm -f $(docdir)/*.info $(docdir)/*.1 $(docdir)/*.7 $(docdir)/*.dvi # # Entry points `install' and `uninstall'. # Also use `install-collect2' to install collect2 when the config files don't. # Copy the compiler files into directories where they will be run. # Install the driver last so that the window when things are # broken is small. install: install-common $(INSTALL_HEADERS) $(INSTALL_LIBGCC) \ install-cpp install-man install-info install-po \ lang.install-normal install-driver # Handle cpp installation. install-cpp: installdirs cpp$(exeext) -rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext) -$(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext) -if [ x$(cpp_install_dir) != x ]; then \ rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ $(INSTALL_PROGRAM) -m 755 cpp$(exeext) $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ else true; fi # Create the installation directories. # $(libdir)/gcc/include isn't currently searched by cpp. installdirs: $(mkinstalldirs) $(DESTDIR)$(libsubdir) $(mkinstalldirs) $(DESTDIR)$(libexecsubdir) $(mkinstalldirs) $(DESTDIR)$(bindir) $(mkinstalldirs) $(DESTDIR)$(includedir) $(mkinstalldirs) $(DESTDIR)$(infodir) $(mkinstalldirs) $(DESTDIR)$(slibdir) $(mkinstalldirs) $(DESTDIR)$(man1dir) $(mkinstalldirs) $(DESTDIR)$(man7dir) # Install the compiler executables built during cross compilation. install-common: native $(EXTRA_PARTS) lang.install-common installdirs for file in $(COMPILERS); do \ if [ -f $$file ] ; then \ rm -f $(DESTDIR)$(libexecsubdir)/$$file; \ $(INSTALL_PROGRAM) $$file $(DESTDIR)$(libexecsubdir)/$$file; \ else true; \ fi; \ done for file in $(EXTRA_PASSES) $(EXTRA_PROGRAMS) $(COLLECT2) ..; do \ if [ x"$$file" != x.. ]; then \ rm -f $(DESTDIR)$(libexecsubdir)/$$file; \ $(INSTALL_PROGRAM) $$file $(DESTDIR)$(libexecsubdir)/$$file; \ else true; fi; \ done for file in $(EXTRA_PARTS) ..; do \ if [ x"$$file" != x.. ]; then \ rm -f $(DESTDIR)$(libsubdir)/$$file; \ $(INSTALL_DATA) $$file $(DESTDIR)$(libsubdir)/$$file; \ chmod a-x $(DESTDIR)$(libsubdir)/$$file; \ else true; fi; \ done # We no longer install the specs file because its presence makes the # driver slower, and because people who need it can recreate it by # using -dumpspecs. We remove any old version because it would # otherwise override the specs built into the driver. rm -f $(DESTDIR)$(libsubdir)/specs # Install protoize if it was compiled. -if [ -f protoize$(exeext) ]; then \ rm -f $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \ $(INSTALL_PROGRAM) protoize$(exeext) $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext); \ rm -f $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \ $(INSTALL_PROGRAM) unprotoize$(exeext) $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext); \ rm -f $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \ $(INSTALL_DATA) SYSCALLS.c.X $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \ chmod a-x $(DESTDIR)$(libsubdir)/SYSCALLS.c.X; \ fi # Install gcov if it was compiled. -if [ -f gcov$(exeext) ]; \ then \ rm -f $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \ $(INSTALL_PROGRAM) gcov$(exeext) $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext); \ fi $(INSTALL_SCRIPT) gccbug $(DESTDIR)$(bindir)/$(GCCBUG_INSTALL_NAME) # Install the driver program as $(target_noncanonical)-gcc, # $(target_noncanonical)-gcc-$(version) # and also as either gcc (if native) or $(gcc_tooldir)/bin/gcc. install-driver: installdirs xgcc$(exeext) -rm -f $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext) -$(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext) -rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-$(version)$(exeext) -( cd $(DESTDIR)$(bindir) && \ $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-$(version)$(exeext) ) -if [ -f gcc-cross$(exeext) ] ; then \ if [ -d $(DESTDIR)$(gcc_tooldir)/bin/. ] ; then \ rm -f $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \ $(INSTALL_PROGRAM) gcc-cross$(exeext) $(DESTDIR)$(gcc_tooldir)/bin/gcc$(exeext); \ else true; fi; \ else \ rm -f $(DESTDIR)$(bindir)/$(target_noncanonical)-gcc-tmp$(exeext); \ ( cd $(DESTDIR)$(bindir) && \ $(LN) $(GCC_INSTALL_NAME)$(exeext) $(target_noncanonical)-gcc-tmp$(exeext) && \ mv -f $(target_noncanonical)-gcc-tmp$(exeext) $(GCC_TARGET_INSTALL_NAME)$(exeext) ); \ fi # Install the info files. # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir # to do the install. install-info:: doc installdirs \ $(DESTDIR)$(infodir)/cpp.info \ $(DESTDIR)$(infodir)/gcc.info \ $(DESTDIR)$(infodir)/cppinternals.info \ $(DESTDIR)$(infodir)/gccinstall.info \ $(DESTDIR)$(infodir)/gccint.info $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs rm -f $@ if [ -f $< ]; then \ for f in $(<)*; do \ realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ $(INSTALL_DATA) $$f $(DESTDIR)$(infodir)/$$realfile; \ chmod a-x $(DESTDIR)$(infodir)/$$realfile; \ done; \ else true; fi -if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ if [ -f $@ ]; then \ install-info --dir-file=$(DESTDIR)$(infodir)/dir $@; \ else true; fi; \ else true; fi; # Install the man pages. install-man: lang.install-man \ $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) \ $(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext) \ $(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext) \ $(DESTDIR)$(man7dir)/fsf-funding$(man7ext) \ $(DESTDIR)$(man7dir)/gfdl$(man7ext) \ $(DESTDIR)$(man7dir)/gpl$(man7ext) $(DESTDIR)$(man7dir)/%$(man7ext): doc/%.7 installdirs -rm -f $@ -$(INSTALL_DATA) $< $@ -chmod a-x $@ $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext): doc/gcc.1 installdirs -rm -f $@ -$(INSTALL_DATA) $< $@ -chmod a-x $@ $(DESTDIR)$(man1dir)/$(CPP_INSTALL_NAME)$(man1ext): doc/cpp.1 installdirs -rm -f $@ -$(INSTALL_DATA) $< $@ -chmod a-x $@ $(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext): doc/gcov.1 installdirs -rm -f $@ -$(INSTALL_DATA) $< $@ -chmod a-x $@ # Install the library. install-libgcc: libgcc.mk libgcc.a libgcov.a installdirs $(MAKE) \ CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ CONFIG_H="$(TCONFIG_H)" \ MAKEOVERRIDES= \ mkinstalldirs='$(mkinstalldirs)' \ -f libgcc.mk install # Install multiple versions of libgcc.a, libgcov.a. install-multilib: stmp-multilib installdirs $(MAKE) \ CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ CONFIG_H="$(CONFIG_H)" \ MAKEOVERRIDES= \ mkinstalldirs='$(mkinstalldirs)' \ -f libgcc.mk install # Install all the header files built in the include subdirectory. install-headers: $(INSTALL_HEADERS_DIR) # Fix symlinks to absolute paths in the installed include directory to # point to the installed directory, not the build directory. # Don't need to use LN_S here since we really do need ln -s and no substitutes. -files=`cd $(DESTDIR)$(libsubdir)/include; find . -type l -print 2>/dev/null`; \ if [ $$? -eq 0 ]; then \ dir=`cd include; ${PWD_COMMAND}`; \ for i in $$files; do \ dest=`ls -ld $(DESTDIR)$(libsubdir)/include/$$i | sed -n 's/.*-> //p'`; \ if expr "$$dest" : "$$dir.*" > /dev/null; then \ rm -f $(DESTDIR)$(libsubdir)/include/$$i; \ ln -s `echo $$i | sed "s|/[^/]*|/..|g" | sed 's|/..$$||'``echo "$$dest" | sed "s|$$dir||"` $(DESTDIR)$(libsubdir)/include/$$i; \ fi; \ done; \ fi # Create or recreate the gcc private include file directory. install-include-dir: installdirs -rm -rf $(DESTDIR)$(libsubdir)/include mkdir $(DESTDIR)$(libsubdir)/include -chmod a+rx $(DESTDIR)$(libsubdir)/include # Create or recreate the install-tools include file directory. itoolsdir = $(libexecsubdir)/install-tools itoolsdatadir = $(libsubdir)/install-tools install-itoolsdirs: installdirs $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include $(mkinstalldirs) $(DESTDIR)$(itoolsdir) # Install the include directory using tar. install-headers-tar: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir # We use `pwd`/include instead of just include to problems with CDPATH # Unless a full pathname is provided, some shells would print the new CWD, # found in CDPATH, corrupting the output. We could just redirect the # output of `cd', but some shells lose on redirection within `()'s (cd `${PWD_COMMAND}`/include ; \ tar -cf - .; exit 0) | (cd $(DESTDIR)$(libsubdir)/include; tar xpf - ) # /bin/sh on some systems returns the status of the first tar, # and that can lose with GNU tar which always writes a full block. # So use `exit 0' to ignore its exit status. # Install the include directory using cpio. install-headers-cpio: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir # See discussion about the use of `pwd` above cd `${PWD_COMMAND}`/include ; \ find . -print | cpio -pdum $(DESTDIR)$(libsubdir)/include # Install the include directory using cp. install-headers-cp: stmp-int-hdrs $(STMP_FIXPROTO) install-include-dir cp -p -r include $(DESTDIR)$(libsubdir) # Install supporting files for fixincludes to be run later. install-mkheaders: stmp-int-hdrs $(STMP_FIXPROTO) install-itoolsdirs \ macro_list xlimits.h for file in $(USER_H); do \ realfile=`echo $$file | sed -e 's|.*/\([^/]*\)$$|\1|'`; \ $(INSTALL_DATA) $$file \ $(DESTDIR)$(itoolsdatadir)/include/$$realfile ; \ done $(INSTALL_DATA) xlimits.h $(DESTDIR)$(itoolsdatadir)/include/limits.h $(INSTALL_DATA) $(UNWIND_H) $(DESTDIR)$(itoolsdatadir)/include/unwind.h $(INSTALL_DATA) $(srcdir)/gsyslimits.h \ $(DESTDIR)$(itoolsdatadir)/gsyslimits.h $(INSTALL_DATA) macro_list $(DESTDIR)$(itoolsdatadir)/macro_list if [ x$(STMP_FIXPROTO) != x ] ; then \ $(INSTALL_SCRIPT) $(mkinstalldirs) \ $(DESTDIR)$(itoolsdir)/mkinstalldirs ; \ $(INSTALL_SCRIPT) $(srcdir)/fixproto $(DESTDIR)$(itoolsdir)/fixproto ; \ $(INSTALL_PROGRAM) build/fix-header$(build_exeext) \ $(DESTDIR)$(itoolsdir)/fix-header$(build_exeext) ; \ else :; fi echo 'SYSTEM_HEADER_DIR="'"$(SYSTEM_HEADER_DIR)"'"' \ > $(DESTDIR)$(itoolsdatadir)/mkheaders.conf echo 'OTHER_FIXINCLUDES_DIRS="$(OTHER_FIXINCLUDES_DIRS)"' \ >> $(DESTDIR)$(itoolsdatadir)/mkheaders.conf echo 'FIXPROTO_DEFINES="$(FIXPROTO_DEFINES)"' \ >> $(DESTDIR)$(itoolsdatadir)/mkheaders.conf echo 'STMP_FIXPROTO="$(STMP_FIXPROTO)"' \ >> $(DESTDIR)$(itoolsdatadir)/mkheaders.conf echo 'STMP_FIXINC="$(STMP_FIXINC)"' \ >> $(DESTDIR)$(itoolsdatadir)/mkheaders.conf # Use this target to install the program `collect2' under the name `collect2'. install-collect2: collect2 installdirs $(INSTALL_PROGRAM) collect2$(exeext) $(DESTDIR)$(libexecsubdir)/collect2$(exeext) # Install the driver program as $(libsubdir)/gcc for collect2. $(INSTALL_PROGRAM) xgcc$(exeext) $(DESTDIR)$(libexecsubdir)/gcc$(exeext) # Cancel installation by deleting the installed files. uninstall: lang.uninstall -rm -rf $(DESTDIR)$(libsubdir) -rm -rf $(DESTDIR)$(libexecsubdir) -rm -rf $(DESTDIR)$(bindir)/$(GCC_INSTALL_NAME)$(exeext) -rm -f $(DESTDIR)$(bindir)/$(CPP_INSTALL_NAME)$(exeext) -if [ x$(cpp_install_dir) != x ]; then \ rm -f $(DESTDIR)$(prefix)/$(cpp_install_dir)/$(CPP_INSTALL_NAME)$(exeext); \ else true; fi -rm -rf $(DESTDIR)$(bindir)/$(PROTOIZE_INSTALL_NAME)$(exeext) -rm -rf $(DESTDIR)$(bindir)/$(UNPROTOIZE_INSTALL_NAME)$(exeext) -rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext) -rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) -rm -rf $(DESTDIR)$(man1dir)/protoize$(man1ext) -rm -rf $(DESTDIR)$(man1dir)/unprotoize$(man1ext) -rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info* -rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info* # # These targets are for the dejagnu testsuites. The file site.exp # contains global variables that all the testsuites will use. target_subdir = i686-pc-linux-gnu site.exp: ./config.status Makefile @echo "Making a new config file..." -@rm -f ./tmp? @$(STAMP) site.exp -@mv site.exp site.bak @echo "## these variables are automatically generated by make ##" > ./tmp0 @echo "# Do not edit here. If you wish to override these values" >> ./tmp0 @echo "# add them to the last section" >> ./tmp0 @echo "set rootme \"`${PWD_COMMAND}`\"" >> ./tmp0 @echo "set srcdir \"`cd ${srcdir}; ${PWD_COMMAND}`\"" >> ./tmp0 @echo "set host_triplet $(host)" >> ./tmp0 @echo "set build_triplet $(build)" >> ./tmp0 @echo "set target_triplet $(target)" >> ./tmp0 @echo "set target_alias $(target_noncanonical)" >> ./tmp0 @echo "set libiconv \"$(LIBICONV)\"" >> ./tmp0 # CFLAGS is set even though it's empty to show we reserve the right to set it. @echo "set CFLAGS \"\"" >> ./tmp0 @echo "set CXXFLAGS \"\"" >> ./tmp0 @echo "set HOSTCC \"$(CC)\"" >> ./tmp0 @echo "set HOSTCFLAGS \"$(CFLAGS)\"" >> ./tmp0 @echo "set TESTING_IN_BUILD_TREE 1" >> ./tmp0 @echo "set HAVE_LIBSTDCXX_V3 1" >> ./tmp0 # If newlib has been configured, we need to pass -B to gcc so it can find # newlib's crt0.o if it exists. This will cause a "path prefix not used" # message if it doesn't, but the testsuite is supposed to ignore the message - # it's too difficult to tell when to and when not to pass -B (not all targets # have crt0's). We could only add the -B if ../newlib/crt0.o exists, but that # seems like too selective a test. # ??? Another way to solve this might be to rely on linker scripts. Then # theoretically the -B won't be needed. # We also need to pass -L ../ld so that the linker can find ldscripts. @if [ -d $(objdir)/../$(target_subdir)/newlib ] \ && [ "${host}" != "${target}" ]; then \ echo "set newlib_cflags \"-I$(objdir)/../$(target_subdir)/newlib/targ-include -I\$$srcdir/../newlib/libc/include\"" >> ./tmp0; \ echo "set newlib_ldflags \"-B$(objdir)/../$(target_subdir)/newlib/\"" >> ./tmp0; \ echo "append CFLAGS \" \$$newlib_cflags\"" >> ./tmp0; \ echo "append CXXFLAGS \" \$$newlib_cflags\"" >> ./tmp0; \ echo "append LDFLAGS \" \$$newlib_ldflags\"" >> ./tmp0; \ else true; \ fi @if [ -d $(objdir)/../ld ] ; then \ echo "append LDFLAGS \" -L$(objdir)/../ld\"" >> ./tmp0; \ else true; \ fi echo "set tmpdir $(objdir)/testsuite" >> ./tmp0 @echo "set srcdir \"\$${srcdir}/testsuite\"" >> ./tmp0 @if [ "X$(ALT_CC_UNDER_TEST)" != "X" ] ; then \ echo "set ALT_CC_UNDER_TEST \"$(ALT_CC_UNDER_TEST)\"" >> ./tmp0; \ else true; \ fi @if [ "X$(ALT_CXX_UNDER_TEST)" != "X" ] ; then \ echo "set ALT_CXX_UNDER_TEST \"$(ALT_CXX_UNDER_TEST)\"" >> ./tmp0; \ else true; \ fi @if [ "X$(COMPAT_OPTIONS)" != "X" ] ; then \ echo "set COMPAT_OPTIONS \"$(COMPAT_OPTIONS)\"" >> ./tmp0; \ else true; \ fi @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0 @cat ./tmp0 > site.exp @cat site.bak | sed \ -e '1,/^## All variables above are.*##/ d' >> site.exp -@rm -f ./tmp? CHECK_TARGETS = check-gcc check-d check: $(CHECK_TARGETS) # The idea is to parallelize testing of multilibs, for example: # make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu} # will run 3 concurrent sessions of check-gcc, eventually testing # all 10 combinations. GNU make is required, as is a shell that expands # alternations within braces. lang_checks_parallel = $(lang_checks:=//%) $(lang_checks_parallel): site.exp target=`echo "$@" | sed 's,//.*,,'`; \ variant=`echo "$@" | sed 's,^[^/]*//,,'`; \ vardots=`echo "$$variant" | sed 's,/,.,g'`; \ $(MAKE) TESTSUITEDIR="testsuite.$$vardots" \ RUNTESTFLAGS="--target_board=$$variant $(RUNTESTFLAGS)" \ "$$target" TESTSUITEDIR = testsuite $(TESTSUITEDIR)/site.exp: site.exp test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) -rm -f $@ sed '/set tmpdir/ s|testsuite|$(TESTSUITEDIR)|' < site.exp > $@ $(lang_checks): check-% : site.exp -test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) test -d $(TESTSUITEDIR)/$* || mkdir $(TESTSUITEDIR)/$* -(rootme=`${PWD_COMMAND}`; export rootme; \ srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \ cd $(TESTSUITEDIR)/$*; \ rm -f tmp-site.exp; \ sed '/set tmpdir/ s|testsuite|$(TESTSUITEDIR)/$*|' \ < ../../site.exp > tmp-site.exp; \ $(SHELL) $${srcdir}/../move-if-change tmp-site.exp site.exp; \ EXPECT=${EXPECT} ; export EXPECT ; \ if [ -f $${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ export TCL_LIBRARY ; fi ; \ $(RUNTEST) --tool $* $(RUNTESTFLAGS)) check-consistency: testsuite/site.exp -rootme=`${PWD_COMMAND}`; export rootme; \ srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \ cd testsuite; \ EXPECT=${EXPECT} ; export EXPECT ; \ if [ -f $${rootme}/../expect/expect ] ; then \ TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ export TCL_LIBRARY ; fi ; \ $(RUNTEST) --tool consistency $(RUNTESTFLAGS) # QMTest targets # The path to qmtest. QMTEST_PATH=qmtest # The flags to pass to qmtest. QMTESTFLAGS= # The flags to pass to "qmtest run". QMTESTRUNFLAGS=-f none --result-stream dejagnu_stream.DejaGNUStream # The command to use to invoke qmtest. QMTEST=${QMTEST_PATH} ${QMTESTFLAGS} # The tests (or suites) to run. QMTEST_GPP_TESTS=g++ # The subdirectory of the OBJDIR that will be used to store the QMTest # test database configuration and that will be used for temporary # scratch space during QMTest's execution. QMTEST_DIR=qmtestsuite # Create the QMTest database configuration. ${QMTEST_DIR} stamp-qmtest: ${QMTEST} -D ${QMTEST_DIR} create-tdb \ -c gcc_database.GCCDatabase \ -a srcdir=`cd ${srcdir}/testsuite && ${PWD_COMMAND}` && \ $(STAMP) stamp-qmtest # Create the QMTest context file. ${QMTEST_DIR}/context: stamp-qmtest rm -f $@ echo "CompilerTable.languages=c cplusplus" >> $@ echo "CompilerTable.c_kind=GCC" >> $@ echo "CompilerTable.c_path=${objdir}/xgcc" >> $@ echo "CompilerTable.c_options=-B${objdir}/" >> $@ echo "CompilerTable.cplusplus_kind=GCC" >> $@ echo "CompilerTable.cplusplus_path=${objdir}/g++" >> $@ echo "CompilerTable.cplusplus_options=-B${objdir}/" >> $@ echo "DejaGNUTest.target=${target_noncanonical}" >> $@ # Run the G++ testsuite using QMTest. qmtest-g++: ${QMTEST_DIR}/context cd ${QMTEST_DIR} && ${QMTEST} run ${QMTESTRUNFLAGS} -C context \ -o g++.qmr ${QMTEST_GPP_TESTS} # Use the QMTest GUI. qmtest-gui: ${QMTEST_DIR}/context cd ${QMTEST_DIR} && ${QMTEST} gui -C context .PHONY: qmtest-g++ # Run Paranoia on real.c. paranoia.o: $(srcdir)/../contrib/paranoia.cc $(CONFIG_H) $(SYSTEM_H) \ real.h $(TREE_H) g++ -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION) paranoia: paranoia.o real.o $(LIBIBERTY) g++ -o $@ paranoia.o real.o $(LIBIBERTY) # These exist for maintenance purposes. # Update the tags table. TAGS: lang.tags (cd $(srcdir); \ incs= ; \ list='$(SUBDIRS)'; for dir in $$list; do \ if test -f $$dir/TAGS; then \ incs="$$incs --include $$dir/TAGS.sub"; \ fi; \ done; \ etags -o TAGS.sub *.y *.h *.c; \ etags --include TAGS.sub $$incs) # ------------------------------------------------------ # Bootstrap-related targets (not used during 'make all') # ------------------------------------------------------ # A list of files to be destroyed during "lean" builds. VOL_FILES=`echo $(BACKEND) $(OBJS) $(C_OBJS) *.c *.h gen*` # Flags to pass to stage2 and later recursive makes. Note that the # WARN_CFLAGS setting can't be to the expansion of GCC_WARN_CFLAGS in # the context of the stage_x rule. POSTSTAGE1_FLAGS_TO_PASS = \ ADAFLAGS="$(BOOT_ADAFLAGS)" \ CFLAGS="$(BOOT_CFLAGS)" \ LDFLAGS="$(BOOT_LDFLAGS)" \ WARN_CFLAGS="\$$(GCC_WARN_CFLAGS)" \ STRICT_WARN="$(STRICT2_WARN)" \ libdir=$(libdir) \ LANGUAGES="$(LANGUAGES)" \ MAKEINFO="$(MAKEINFO)" \ MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \ MAKEOVERRIDES= \ OUTPUT_OPTION="-o \$$@" STAGE2_FLAGS_TO_PASS = \ CFLAGS="$(BOOT_CFLAGS)" \ WERROR="$(WERROR_FLAGS)" \ STAGEPROFILE_FLAGS_TO_PASS = \ CFLAGS="$(BOOT_CFLAGS) -fprofile-generate" # Files never linked into the final executable produces warnings about missing # profile. STAGEFEEDBACK_FLAGS_TO_PASS = \ CFLAGS="$(BOOT_CFLAGS) -fprofile-use -freorder-blocks-and-partition" # Only build the C compiler for stage1, because that is the only one that # we can guarantee will build with the native compiler, and also it is the # only thing useful for building stage2. STAGE1_CFLAGS (via CFLAGS), # MAKEINFO and MAKEINFOFLAGS are explicitly passed here to make them # overrideable (for a bootstrap build stage1 also builds gcc.info). # The stage1 compiler is always built with checking enabled. stage1_build: $(MAKE) CC="$(CC)" libdir=$(libdir) LANGUAGES="$(BOOT_LANGUAGES)" \ CFLAGS="$(STAGE1_CFLAGS) $(STAGE1_CHECKING)" \ MAKEINFO="$(MAKEINFO)" MAKEINFOFLAGS="$(MAKEINFOFLAGS)" \ COVERAGE_FLAGS= OBJS-onestep="$(OBJS)" $(STAMP) stage1_build echo stage1_build > stage_last stage1_copy: stage1_build $(MAKE) stage1 $(STAMP) stage1_copy echo stage2_build > stage_last stage2_build: stage1_copy $(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \ STAGE_PREFIX=stage1/ \ $(POSTSTAGE1_FLAGS_TO_PASS) \ $(STAGE2_FLAGS_TO_PASS) $(STAMP) stage2_build echo stage2_build > stage_last stage2_copy: stage2_build $(MAKE) stage2 $(STAMP) stage2_copy echo stage3_build > stage_last stageprofile_build: stage1_copy $(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \ STAGE_PREFIX=stage1/ \ $(POSTSTAGE1_FLAGS_TO_PASS) \ $(STAGEPROFILE_FLAGS_TO_PASS) $(STAMP) stageprofile_build echo stageprofile_build > stage_last stageprofile_copy: stageprofile_build $(MAKE) stageprofile $(STAMP) stageprofile_copy echo stagefeedback_build > stage_last stage3_build: stage2_copy $(MAKE) CC="$(STAGE_CC_WRAPPER) stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage2/xgcc$(exeext) -Bstage2/ -B$(build_tooldir)/bin/" \ STAGE_PREFIX=stage2/ \ $(POSTSTAGE1_FLAGS_TO_PASS) \ $(STAGE2_FLAGS_TO_PASS) $(STAMP) stage3_build echo stage3_build > stage_last stagefeedback_build: stageprofile_copy stage1_copy $(MAKE) CC="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage1/xgcc$(exeext) -Bstage1/ -B$(build_tooldir)/bin/" \ STAGE_PREFIX=stage1/ \ $(POSTSTAGE1_FLAGS_TO_PASS) \ $(STAGEFEEDBACK_FLAGS_TO_PASS) $(STAMP) stagefeedback_build echo stagefeedback_build > stage_last stagefeedback_copy: stagefeedback_build $(MAKE) stagefeedback $(STAMP) stagefeedback_copy echo stagefeedback2_build > stage_last # For bootstrap4: stage3_copy: stage3_build $(MAKE) stage3 $(STAMP) stage3_copy echo stage4_build > stage_last stage4_build: stage3_copy $(MAKE) CC="$(STAGE_CC_WRAPPER) stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" CC_FOR_BUILD="$(STAGE_CC_WRAPPER) stage3/xgcc$(exeext) -Bstage3/ -B$(build_tooldir)/bin/" \ STAGE_PREFIX=stage3/ \ $(POSTSTAGE1_FLAGS_TO_PASS) \ $(STAGE2_FLAGS_TO_PASS) $(STAMP) stage4_build echo stage4_build > stage_last # Additional steps for *-lean targets: clean_s1: stage1_copy -(cd stage1 && rm -f $(VOL_FILES)) $(STAMP) clean_s1 clean_s2: stage2_copy -rm -rf stage1 $(STAMP) clean_s2 # The various entry points for bootstrapping. bootstrap: stage3_build @echo @echo Bootstrap complete - make \"quickstrap\" to redo last build, @echo \"restage1\" through \"restage3\" to rebuild specific stages, @echo \"restrap\" to redo the bootstrap from stage1, or @echo \"cleanstrap\" to redo the bootstrap from scratch. bootstrap-lean : clean_s1 clean_s2 stage3_build @echo @echo Bootstrap complete - make \"quickstrap\" to redo last build, @echo or \"cleanstrap\" to redo the bootstrap from scratch. bootstrap2: bootstrap bootstrap2-lean : bootstrap-lean bootstrap3 bootstrap3-lean: bootstrap bootstrap4 bootstrap4-lean: stage4_build unstage1 unstage2 unstage3 unstage4 unstageprofile unstagefeedback: -set -vx; stage=`echo $@ | sed -e 's/un//'`; \ rm -f $$stage/as$(exeext); \ rm -f $$stage/nm$(exeext); \ rm -f $$stage/collect-ld$(exeext); \ if test -d $$stage; then \ mv $$stage/specs $(SPECS) 2>/dev/null || :; \ mv $$stage/* . 2>/dev/null; \ for i in `cd $$stage; echo *` ; do \ if test -d $$stage/$$i; then \ mv $$stage/$$i/* $$i/. 2>/dev/null; \ else \ mv $$stage/$$i .; \ fi; \ done \ fi ; \ rm -f $${stage}_build $${stage}_copy ;\ echo $${stage}_build > stage_last restage1: unstage1 $(MAKE) $(REMAKEFLAGS) stage1_build restage2: unstage2 $(MAKE) $(REMAKEFLAGS) stage2_build restage3: unstage3 $(MAKE) $(REMAKEFLAGS) stage3_build restage4: unstage4 $(MAKE) $(REMAKEFLAGS) stage4_build restageprofile: unstageprofile $(MAKE) $(REMAKEFLAGS) stageprofile_build restagefeedback: unstagefeedback $(MAKE) $(REMAKEFLAGS) stagefeedback_build # Bubble up a bugfix through all the stages. Primarily useful for fixing # bugs that cause the compiler to crash while building stage 2. bubblestrap: if test -f stage_last; then \ LAST=`sed -e 's/_build//' < stage_last`; \ if test "$$LAST" != "stage1"; then \ $(MAKE) $(REMAKEFLAGS) $$LAST; \ $(STAMP) $${LAST}_copy; \ fi; \ fi if test -f stage1_copy; then $(MAKE) unstage1; fi $(MAKE) $(REMAKEFLAGS) stage1_copy if test -f stage2_copy; then $(MAKE) unstage2; fi $(MAKE) $(REMAKEFLAGS) stage2_copy if test -f stage3_copy; then $(MAKE) unstage3; fi $(MAKE) $(REMAKEFLAGS) stage3_build if test -f stage4_copy; then \ $(MAKE) $(REMAKEFLAGS) stage3_copy; $(MAKE) unstage4; \ $(MAKE) $(REMAKEFLAGS) stage4_build || exit 1; \ fi quickstrap: if test -f stage_last ; then \ LAST=`cat stage_last`; rm $$LAST; $(MAKE) $(REMAKEFLAGS) $$LAST; \ else \ $(MAKE) $(REMAKEFLAGS) stage1_build; \ fi cleanstrap: -$(MAKE) clean $(MAKE) $(REMAKEFLAGS) bootstrap unstrap: -rm -rf stage[234]* $(MAKE) unstage1 -rm -f stage_last # Differs from cleanstrap in that it starts from the earlier stage1 build, # not from scratch. restrap: $(MAKE) unstrap $(MAKE) $(REMAKEFLAGS) bootstrap # These targets compare the object files in the current directory with # those in a stage directory. We need to skip the first N bytes of # each object file. The "slow" mechanism assumes nothing special # about cmp and uses the tail command to skip. ./ avoids a bug in # some versions of tail. The "gnu" targets use gnu cmp (diffutils # v2.4 or later), to avoid running tail and the overhead of twice # copying each object file. Likewise, the "fast" targets use the skip # parameter of cmp available on some systems to accomplish the same # thing. An exit status of 1 is precisely the result we're looking # for (other values mean other problems). slowcompare slowcompare3 slowcompare4 slowcompare-lean slowcompare3-lean slowcompare4-lean \ fastcompare fastcompare3 fastcompare4 fastcompare-lean fastcompare3-lean fastcompare4-lean \ gnucompare gnucompare3 gnucompare4 gnucompare-lean gnucompare3-lean gnucompare4-lean: force -rm -f .bad_compare case "$@" in *compare | *compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^[a-z]*compare\([0-9][0-9]*\).*,\1,'` ;; esac; \ for dir in . $(SUBDIRS) libgcc; do \ if [ "`echo $$dir/*$(objext)`" != "$$dir/*$(objext)" ] ; then \ for file in $$dir/*$(objext); do \ case "$@" in \ slowcompare* ) \ tail +16c ./$$file > tmp-foo1; \ tail +16c stage$$stage/$$file > tmp-foo2; \ cmp tmp-foo1 tmp-foo2 > /dev/null 2>&1; \ cmpret=$$?; \ ;; \ fastcompare* ) \ cmp $$file stage$$stage/$$file 16 16 > /dev/null 2>&1; \ cmpret=$$?; \ ;; \ gnucompare* ) \ cmp --ignore-initial=16 $$file stage$$stage/$$file > /dev/null 2>&1; \ cmpret=$$?; \ ;; \ esac ; \ if test $$cmpret -eq 1; then \ case $$file in \ ./cc*-checksum$(objext) | libgcc/* ) \ echo warning: $$file differs;; \ *) \ echo $$file differs >> .bad_compare;; \ esac ; \ fi; \ done; \ else true; fi; \ done -rm -f tmp-foo* case "$@" in *compare | *compare-lean ) stage=2 ;; * ) stage=`echo $@ | sed -e 's,^[a-z]*compare\([0-9][0-9]*\).*,\1,'` ;; esac; \ if [ -f .bad_compare ]; then \ echo "Bootstrap comparison failure!"; \ cat .bad_compare; \ exit 1; \ else \ case "$@" in \ *-lean ) rm -rf stage$$stage ;; \ *) ;; \ esac; true; \ fi # Forwarding wrappers to the most appropriate version. compare: gnucompare compare3: gnucompare3 compare4: gnucompare4 compare-lean: gnucompare-lean compare3-lean: gnucompare3-lean compare4-lean: gnucompare4-lean # Copy the object files from a particular stage into a subdirectory. stage1-start: -if [ -d stage1 ] ; then true ; else mkdir stage1 ; fi $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage1 -subdirs="$(SUBDIRS)"; for dir in $$subdirs; \ do \ if [ -d stage1/$$dir ] ; then true ; else mkdir stage1/$$dir ; fi ; \ done -rm -f stage1/libgcc.a stage1/libgcc_eh.a stage1/libgcov.a -rm -f stage1/libgcc_s*$(SHLIB_EXT) -rm -f stage1/libunwind.a stage1/libunwind*$(SHLIB_EXT) # If SPECS is overridden, make sure it is `installed' as specs. -mv $(SPECS) stage1/specs -mv $(STAGEMOVESTUFF) stage1 -mv build/* stage1/build -cp -p $(STAGECOPYSTUFF) stage1 # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. -if [ -f as$(exeext) ] ; then (cd stage1 && $(LN_S) ../as$(exeext) .) ; else true ; fi -if [ -f ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../ld$(exeext) .) ; else true ; fi -if [ -f collect-ld$(exeext) ] ; then (cd stage1 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi -cp libgcc.a stage1 -$(RANLIB_FOR_TARGET) stage1/libgcc.a -cp libgcov.a stage1 -$(RANLIB_FOR_TARGET) stage1/libgcov.a -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage1; \ $(RANLIB_FOR_TARGET) stage1/libgcc_eh.a; \ fi -cp libgcc_s*$(SHLIB_EXT) stage1 -cp libunwind.a libunwind*$(SHLIB_EXT) stage1 -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage1/$${f} . ; \ else true; \ fi; done stage1: force stage1-start lang.stage1 -for dir in . $(SUBDIRS) ; \ do \ rm -f $$dir/*$(coverageexts) ; \ done stage2-start: -if [ -d stage2 ] ; then true ; else mkdir stage2 ; fi $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage2 -subdirs="$(SUBDIRS)"; for dir in $$subdirs; \ do \ if [ -d stage2/$$dir ] ; then true ; else mkdir stage2/$$dir ; fi ; \ done -rm -f stage2/libgcc.a stage2/libgcov.a stage2/libgcc_eh.a -rm -f stage2/libgcc_s*$(SHLIB_EXT) -rm -f stage2/libunwind.a stage2/libunwind*$(SHLIB_EXT) # If SPECS is overridden, make sure it is `installed' as specs. -mv $(SPECS) stage2/specs -mv $(STAGEMOVESTUFF) stage2 -mv build/* stage2/build -cp -p $(STAGECOPYSTUFF) stage2 # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. -if [ -f as$(exeext) ] ; then (cd stage2 && $(LN_S) ../as$(exeext) .) ; else true ; fi -if [ -f ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../ld$(exeext) .) ; else true ; fi -if [ -f collect-ld$(exeext) ] ; then (cd stage2 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi -cp libgcc.a stage2 -$(RANLIB_FOR_TARGET) stage2/libgcc.a -cp libgcov.a stage2 -$(RANLIB_FOR_TARGET) stage2/libgcov.a -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage2; \ $(RANLIB_FOR_TARGET) stage2/libgcc_eh.a; \ fi -cp libgcc_s*$(SHLIB_EXT) stage2 -cp libunwind.a libunwind*$(SHLIB_EXT) stage2 -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage2/$${f} . ; \ else true; \ fi; done stage2: force stage2-start lang.stage2 stage3-start: -if [ -d stage3 ] ; then true ; else mkdir stage3 ; fi $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage3 -subdirs="$(SUBDIRS)"; for dir in $$subdirs; \ do \ if [ -d stage3/$$dir ] ; then true ; else mkdir stage3/$$dir ; fi ; \ done -rm -f stage3/libgcc.a stage3/libgcov.a stage3/libgcc_eh.a -rm -f stage3/libgcc_s*$(SHLIB_EXT) -rm -f stage3/libunwind.a stage3/libunwind*$(SHLIB_EXT) # If SPECS is overridden, make sure it is `installed' as specs. -mv $(SPECS) stage3/specs -mv $(STAGEMOVESTUFF) stage3 -mv build/* stage3/build -cp -p $(STAGECOPYSTUFF) stage3 # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. -if [ -f as$(exeext) ] ; then (cd stage3 && $(LN_S) ../as$(exeext) .) ; else true ; fi -if [ -f ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../ld$(exeext) .) ; else true ; fi -if [ -f collect-ld$(exeext) ] ; then (cd stage3 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi -cp libgcc.a stage3 -$(RANLIB_FOR_TARGET) stage3/libgcc.a -cp libgcov.a stage3 -$(RANLIB_FOR_TARGET) stage3/libgcov.a -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage3; \ $(RANLIB_FOR_TARGET) stage3/libgcc_eh.a; \ fi -cp libgcc_s*$(SHLIB_EXT) stage3 -cp libunwind.a libunwind*$(SHLIB_EXT) stage3 -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage3/$${f} . ; \ else true; \ fi; done stage3: force stage3-start lang.stage3 stage4-start: -if [ -d stage4 ] ; then true ; else mkdir stage4 ; fi $(MAKE) -f libgcc.mk libgcc-stage-start stage=stage4 -subdirs="$(SUBDIRS)"; for dir in $$subdirs; \ do \ if [ -d stage4/$$dir ] ; then true ; else mkdir stage4/$$dir ; fi ; \ done -rm -f stage4/libgcc.a stage4/libgcov.a stage4/libgcc_eh.a -rm -f stage4/libgcc_s*$(SHLIB_EXT) -rm -f stage4/libunwind.a stage4/libunwind*$(SHLIB_EXT) # If SPECS is overridden, make sure it is `installed' as specs. -mv $(SPECS) stage4/specs -mv $(STAGEMOVESTUFF) stage4 -mv build/* stage4/build -cp -p $(STAGECOPYSTUFF) stage4 # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. -if [ -f as$(exeext) ] ; then (cd stage4 && $(LN_S) ../as$(exeext) .) ; else true ; fi -if [ -f ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../ld$(exeext) .) ; else true ; fi -if [ -f collect-ld$(exeext) ] ; then (cd stage4 && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi -cp libgcc.a stage4 -$(RANLIB_FOR_TARGET) stage4/libgcc.a -cp libgcov.a stage4 -$(RANLIB_FOR_TARGET) stage4/libgcov.a -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stage4; \ $(RANLIB_FOR_TARGET) stage4/libgcc_eh.a; \ fi -cp libgcc_s*$(SHLIB_EXT) stage4 -cp libunwind.a libunwind*$(SHLIB_EXT) stage4 -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stage4/$${f} . ; \ else true; \ fi; done stage4: force stage4-start lang.stage4 stageprofile-start: -if [ -d stageprofile ] ; then true ; else mkdir stageprofile ; fi $(MAKE) -f libgcc.mk libgcc-stage-start stage=stageprofile -subdirs="$(SUBDIRS)"; for dir in $$subdirs; \ do \ if [ -d stageprofile/$$dir ] ; then true ; else mkdir stageprofile/$$dir ; fi ; \ done -rm -f stageprofile/libgcc.a stageprofile/libgcov.a stageprofile/libgcc_eh.a -rm -f stageprofile/libgcc_s*$(SHLIB_EXT) -rm -f stageprofile/libunwind.a stageprofile/libunwind*$(SHLIB_EXT) -mv $(STAGEMOVESTUFF) stageprofile -mv build/* stageprofile/build -cp -p $(STAGECOPYSTUFF) stageprofile # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. -if [ -f as$(exeext) ] ; then (cd stageprofile && $(LN_S) ../as$(exeext) .) ; else true ; fi -if [ -f ld$(exeext) ] ; then (cd stageprofile && $(LN_S) ../ld$(exeext) .) ; else true ; fi -if [ -f collect-ld$(exeext) ] ; then (cd stageprofile && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi -cp libgcc.a stageprofile -$(RANLIB_FOR_TARGET) stageprofile/libgcc.a -cp libgcov.a stageprofile -$(RANLIB_FOR_TARGET) stageprofile/libgcov.a -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stageprofile; \ $(RANLIB_FOR_TARGET) stageprofile/libgcc_eh.a; \ fi -cp libgcc_s*$(SHLIB_EXT) stageprofile -cp libunwind.a libunwind*$(SHLIB_EXT) stageprofile -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stageprofile/$${f} . ; \ else true; \ fi; done stageprofile: force stageprofile-start lang.stageprofile stagefeedback-start: -if [ -d stagefeedback ] ; then true ; else mkdir stagefeedback ; fi $(MAKE) -f libgcc.mk libgcc-stage-start stage=stagefeedback -subdirs="$(SUBDIRS)"; for dir in $$subdirs; \ do \ if [ -d stagefeedback/$$dir ] ; then true ; else mkdir stagefeedback/$$dir ; fi ; \ done -rm -f stagefeedback/libgcc.a stagefeedback/libgcov.a stagefeedback/libgcc_eh.a -rm -f stagefeedback/libgcc_s*$(SHLIB_EXT) -rm -f stagefeedback/libunwind.a stagefeedback/libunwind*$(SHLIB_EXT) -rm -f *.da -mv $(STAGEMOVESTUFF) stagefeedback -mv build/* stagefeedback/build -cp -p $(STAGECOPYSTUFF) stagefeedback # Copy as/ld if they exist to stage dir, so that running xgcc from the stage # dir will work properly. -if [ -f as$(exeext) ] ; then (cd stagefeedback && $(LN_S) ../as$(exeext) .) ; else true ; fi -if [ -f ld$(exeext) ] ; then (cd stagefeedback && $(LN_S) ../ld$(exeext) .) ; else true ; fi -if [ -f collect-ld$(exeext) ] ; then (cd stagefeedback && $(LN_S) ../collect-ld$(exeext) .) ; else true ; fi -for dir in fixinc po testsuite $(SUBDIRS); \ do \ rm -f $$dir/*.da ; \ done -cp libgcc.a stagefeedback -$(RANLIB_FOR_TARGET) stagefeedback/libgcc.a -cp libgcov.a stagefeedback -$(RANLIB_FOR_TARGET) stagefeedback/libgcov.a -if [ -f libgcc_eh.a ] ; then cp libgcc_eh.a stagefeedback; \ $(RANLIB_FOR_TARGET) stagefeedback/libgcc_eh.a; \ fi -cp libgcc_s*$(SHLIB_EXT) stagefeedback -cp libunwind.a libunwind*$(SHLIB_EXT) stagefeedback -for f in .. $(EXTRA_MULTILIB_PARTS); do if [ x$${f} != x.. ]; then \ cp stagefeedback/$${f} . ; \ else true; \ fi; done stagefeedback: force stagefeedback-start lang.stagefeedback # Copy just the executable files from a particular stage into a subdirectory, # and delete the object files. Use this if you're just verifying a version # that is pretty sure to work, and you are short of disk space. risky-stage1: stage1 -$(MAKE) clean risky-stage2: stage2 -$(MAKE) clean risky-stage3: stage3 -$(MAKE) clean risky-stage4: stage4 -$(MAKE) clean #In GNU Make, ignore whether `stage*' exists. .PHONY: stage1 stage2 stage3 stage4 clean maintainer-clean TAGS bootstrap .PHONY: risky-stage1 risky-stage2 risky-stage3 risky-stage4 .PHONY: stagefeedback stageprofile # ----------------------------------------------------- # Rules for generating translated message descriptions. # Disabled by autoconf if the tools are not available. # ----------------------------------------------------- XGETTEXT = /usr/bin/xgettext GMSGFMT = /usr/bin/msgfmt MSGMERGE = msgmerge CATALOGS = po/be.gmo po/ca.gmo po/da.gmo po/de.gmo po/el.gmo po/es.gmo po/fr.gmo po/ja.gmo po/nl.gmo po/ru.gmo po/rw.gmo po/sv.gmo po/tr.gmo po/zh_CN.gmo po/zh_TW.gmo po/be.gmo po/ca.gmo po/da.gmo po/de.gmo po/el.gmo po/es.gmo po/fr.gmo po/ja.gmo po/nl.gmo po/ru.gmo po/rw.gmo po/sv.gmo po/tr.gmo po/zh_CN.gmo po/zh_TW.gmo .PHONY: build- install- build-po install-po update-po # Dummy rules to deal with dependencies produced by use of # "build-po" and "install-po" above, when NLS is disabled. build-: ; @true install-: ; @true build-po: $(CATALOGS) # This notation should be acceptable to all Make implementations used # by people who are interested in updating .po files. update-po: $(CATALOGS:.gmo=.pox) # N.B. We do not attempt to copy these into $(srcdir). The snapshot # script does that. .po.gmo: -test -d po || mkdir po $(GMSGFMT) --statistics -o $@ $< # The new .po has to be gone over by hand, so we deposit it into # build/po with a different extension. # If build/po/gcc.pot exists, use it (it was just created), # else use the one in srcdir. .po.pox: -test -d po || mkdir po $(MSGMERGE) $< `if test -f po/gcc.pot; \ then echo po/gcc.pot; \ else echo $(srcdir)/po/gcc.pot; fi` -o $@ # This rule has to look for .gmo modules in both srcdir and # the cwd, and has to check that we actually have a catalog # for each language, in case they weren't built or included # with the distribution. install-po: $(mkinstalldirs) $(DESTDIR)$(datadir) cats="$(CATALOGS)"; for cat in $$cats; do \ lang=`basename $$cat | sed 's/\.gmo$$//'`; \ if [ -f $$cat ]; then :; \ elif [ -f $(srcdir)/$$cat ]; then cat=$(srcdir)/$$cat; \ else continue; \ fi; \ dir=$(localedir)/$$lang/LC_MESSAGES; \ echo $(mkinstalldirs) $(DESTDIR)$$dir; \ $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ done # Rule for regenerating the message template (gcc.pot). # Instead of forcing everyone to edit POTFILES.in, which proved impractical, # this rule has no dependencies and always regenerates gcc.pot. This is # relatively harmless since the .po files do not directly depend on it. # Note that exgettext has an awk script embedded in it which requires a # fairly modern (POSIX-compliant) awk. # The .pot file is left in the build directory. gcc.pot: po/gcc.pot po/gcc.pot: force -test -d po || mkdir po $(MAKE) srcextra AWK=$(AWK) $(SHELL) $(srcdir)/po/exgettext \ $(XGETTEXT) gcc $(srcdir)