makefile
来自「基于4个mips核的noc设计」· 代码 · 共 1,985 行 · 第 1/4 页
TXT
1,985 行
done; \ ;; \ esac ; \ export AR AS CC CXX LD NM RANLIB DLLTOOL WINDRES; \ if (cd ./$$i; \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ $${target}); \ then true; else exit 1; fi; \ else true; fi; \ done @target=`echo $@ | sed -e 's/^do-//'`; \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ for i in $(TARGET_CONFIGDIRS) -dummy-; do \ if [ -f $(TARGET_SUBDIR)/$$i/Makefile ]; then \ for flag in $(EXTRA_TARGET_FLAGS); do \ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'|"`; \ done; \ export AR AS CC CXX LD NM RANLIB DLLTOOL WINDRES; \ if (cd $(TARGET_SUBDIR)/$$i; \ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ "RANLIB=$${RANLIB}" \ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" \ $${target}); \ then true; else exit 1; fi; \ else true; fi; \ done# Here are the targets which correspond to the do-X targets..PHONY: info installcheck dvi install-info.PHONY: clean distclean mostlyclean maintainer-clean realclean.PHONY: local-clean local-distclean local-maintainer-cleaninfo: do-infoinstallcheck: do-installcheckdvi: do-dvi# Make sure makeinfo is built before we do a `make info'.do-info: all-texinfoinstall-info: do-install-info dir.info s=`cd $(srcdir); pwd`; export s; \ if [ -f dir.info ] ; then \ $(INSTALL_DATA) dir.info $(infodir)/dir.info ; \ else true ; filocal-clean: -rm -f *.a TEMP errs core *.o *~ \#* TAGS *.E *.loglocal-distclean: -rm -f Makefile config.status config.cache mh-frag mt-frag -if [ "$(TARGET_SUBDIR)" != "." ]; then \ rm -rf $(TARGET_SUBDIR); \ else true; filocal-maintainer-clean: @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild."clean: do-clean local-cleanmostlyclean: do-mostlyclean local-cleandistclean: do-distclean local-clean local-distcleanmaintainer-clean: local-maintainer-clean do-maintainer-clean local-clean maintainer-clean: local-distcleanrealclean: maintainer-clean# This rule is used to clean specific modules..PHONY: $(CLEAN_MODULES) $(CLEAN_X11_MODULES) clean-gcc$(CLEAN_MODULES) $(CLEAN_X11_MODULES) clean-gcc: @dir=`echo $@ | sed -e 's/clean-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) clean); \ else \ true; \ fi.PHONY: $(CLEAN_TARGET_MODULES)$(CLEAN_TARGET_MODULES): @dir=`echo $@ | sed -e 's/clean-target-//'`; \ rm -f $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/tmpmulti.out; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) clean); \ else \ true; \ ficlean-target: $(CLEAN_TARGET_MODULES) clean-target-libgccclean-target-libgcc: test ! -d gcc/libgcc || \ (cd gcc/libgcc && find . -type d -print) | \ while read d; do rm -f gcc/$$d/libgcc.a || : ; done -rm -rf gcc/libgcc# Check target..PHONY: checkcheck: $(CHECK_MODULES) \ $(CHECK_TARGET_MODULES) \ $(CHECK_X11_MODULES) \ check-gcc# Automated reporting of test results.warning.log: build.log $(srcdir)/contrib/warn_summary build.log > $@mail-report.log: if test x'$(BOOT_CFLAGS)' != x''; then \ BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \ fi; \ $(srcdir)/contrib/test_summary -t >$@ chmod +x $@ echo If you really want to send e-mail, run ./$@ nowmail-report-with-warnings.log: warning.log if test x'$(BOOT_CFLAGS)' != x''; then \ BOOT_CFLAGS='$(BOOT_CFLAGS)'; export BOOT_CFLAGS; \ fi; \ $(srcdir)/contrib/test_summary -t -i warning.log >$@ chmod +x $@ echo If you really want to send e-mail, run ./$@ now# Installation targets..PHONY: install install-cross uninstall source-vault binary-vault vault-installinstall: $(INSTALL_TARGET) install-cross: $(INSTALL_TARGET_CROSS) uninstall: @echo "the uninstall target is not supported in this tree"source-vault: $(MAKE) -f ./release/Build-A-Release \ host=$(host_alias) source-vaultbinary-vault: $(MAKE) -f ./release/Build-A-Release \ host=$(host_alias) target=$(target_alias)vault-install: @if [ -f ./release/vault-install ] ; then \ ./release/vault-install $(host_alias) $(target_alias) ; \ else \ true ; \ fi.PHONY: install.allinstall.all: install-no-fixedincludes @if [ -f ./gcc/Makefile ] ; then \ r=`pwd` ; export r ; \ $(SET_LIB_PATH) \ (cd ./gcc; \ $(MAKE) $(FLAGS_TO_PASS) install-headers) ; \ else \ true ; \ fi# inet-install is used because the I*Net wants DejaGNU installed but# not built. Similarly, gzip is built but not installed.inet-install: $(MAKE) INSTALL_MODULES="`echo $(INSTALL_MODULES) | sed -e 's/install-dejagnu//' -e 's/install-gzip//'`" install# install-no-fixedincludes is used because Cygnus can not distribute# the fixed header files..PHONY: install-no-fixedincludesinstall-no-fixedincludes: \ installdirs \ $(INSTALL_MODULES) \ $(INSTALL_TARGET_MODULES) \ $(INSTALL_X11_MODULES) \ gcc-no-fixedincludes # Install the gcc headers files, but not the fixed include files,# which Cygnus is not allowed to distribute. This rule is very# dependent on the workings of the gcc Makefile.in..PHONY: gcc-no-fixedincludesgcc-no-fixedincludes: @if [ -f ./gcc/Makefile ]; then \ rm -rf gcc/tmp-include; \ mv gcc/include gcc/tmp-include 2>/dev/null; \ mkdir gcc/include; \ cp $(srcdir)/gcc/gsyslimits.h gcc/include/syslimits.h; \ touch gcc/stmp-fixinc gcc/include/fixed; \ rm -f gcc/stmp-headers gcc/stmp-int-hdrs; \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd` ; export s; \ $(SET_LIB_PATH) \ (cd ./gcc; \ $(MAKE) $(GCC_FLAGS_TO_PASS) install); \ rm -rf gcc/include; \ mv gcc/tmp-include gcc/include 2>/dev/null; \ else true; fi# This rule is used to build the modules which use FLAGS_TO_PASS. To# build a target all-X means to cd to X and make all.## all-gui, and all-libproc are handled specially because# they are still experimental, and if they fail to build, that# shouldn't stop "make all"..PHONY: $(ALL_MODULES) all-gui all-libproc$(ALL_MODULES) all-gui all-libproc: @dir=`echo $@ | sed -e 's/all-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) all); \ else \ true; \ fi# These rules are used to check the modules which use FLAGS_TO_PASS.# To build a target check-X means to cd to X and make check. Some# modules are only tested in a native toolchain..PHONY: $(CHECK_MODULES) $(NATIVE_CHECK_MODULES) $(CROSS_CHECK_MODULES)$(NATIVE_CHECK_MODULES): @if [ "$(host_canonical)" = "$(target_canonical)" ] ; then \ dir=`echo $@ | sed -e 's/check-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \ else \ true; \ fi; \ fi$(CROSS_CHECK_MODULES): @dir=`echo $@ | sed -e 's/check-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) check); \ else \ true; \ fi# This rule is used to install the modules which use FLAGS_TO_PASS.# To build a target install-X means to cd to X and make install..PHONY: $(INSTALL_MODULES)$(INSTALL_MODULES): installdirs @dir=`echo $@ | sed -e 's/install-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; $(MAKE) $(FLAGS_TO_PASS) install); \ else \ true; \ fi# This rule is used to configure the modules which are built with the# target tools..PHONY: $(CONFIGURE_TARGET_MODULES)$(CONFIGURE_TARGET_MODULES): @dir=`echo $@ | sed -e 's/configure-target-//'`; \ if [ -d $(TARGET_SUBDIR)/$${dir} ]; then \ r=`pwd`; export r; \ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/$${dir}/tmpmulti.out 2> /dev/null; \ if [ -s $(TARGET_SUBDIR)/$${dir}/tmpmulti.out ]; then \ if [ -f $(TARGET_SUBDIR)/$${dir}/multilib.out ]; then \ if cmp $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/tmpmulti.out > /dev/null; then \ rm -f $(TARGET_SUBDIR)/$${dir}/tmpmulti.out; \ else \ echo "Multilibs changed for $${dir}, reconfiguring"; \ rm -f $(TARGET_SUBDIR)/$${dir}/multilib.out $(TARGET_SUBDIR)/$${dir}/Makefile; \ mv $(TARGET_SUBDIR)/$${dir}/tmpmulti.out $(TARGET_SUBDIR)/$${dir}/multilib.out; \ fi; \ else \ mv $(TARGET_SUBDIR)/$${dir}/tmpmulti.out $(TARGET_SUBDIR)/$${dir}/multilib.out; \ fi; \ fi; \ fi; exit 0 # break command into two pieces @dir=`echo $@ | sed -e 's/configure-target-//'`; \ if [ ! -d $(TARGET_SUBDIR) ]; then \ true; \ elif [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ true; \ elif echo " $(TARGET_CONFIGDIRS) " | grep " $${dir} " >/dev/null 2>&1; then \ if [ -d $(srcdir)/$${dir} ]; then \ [ -d $(TARGET_SUBDIR)/$${dir} ] || mkdir $(TARGET_SUBDIR)/$${dir};\ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ AR="$(AR_FOR_TARGET)"; export AR; \ AS="$(AS_FOR_TARGET)"; export AS; \ CC="$(CC_FOR_TARGET)"; export CC; \ CFLAGS="$(CFLAGS_FOR_TARGET)"; export CFLAGS; \ CXX="$(CXX_FOR_TARGET)"; export CXX; \ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \ LD="$(LD_FOR_TARGET)"; export LD; \ LDFLAGS="$(LDFLAGS_FOR_TARGET)"; export LDFLAGS; \ NM="$(NM_FOR_TARGET)"; export NM; \ RANLIB="$(RANLIB_FOR_TARGET)"; export RANLIB; \ WINDRES="$(WINDRES_FOR_TARGET)"; export WINDRES; \ echo Configuring in $(TARGET_SUBDIR)/$${dir}; \ cd $(TARGET_SUBDIR)/$${dir}; \ case $(srcdir) in \ /*) \ topdir=$(srcdir) ;; \ *) \ case "$(TARGET_SUBDIR)" in \ .) topdir="../$(srcdir)" ;; \ *) topdir="../../$(srcdir)" ;; \ esac ;; \ esac; \ if [ "$(srcdir)" = "." ] ; then \ if [ "$(TARGET_SUBDIR)" != "." ] ; then \ if $(SHELL) $$s/symlink-tree $${topdir}/$${dir} "no-such-file" ; then \ if [ -f Makefile ]; then \ if $(MAKE) distclean; then \ true; \ else \ exit 1; \ fi; \ else \ true; \ fi; \ else \ exit 1; \ fi; \ else \ true; \ fi; \ srcdiroption="--srcdir=."; \ libsrcdir="."; \ else \ srcdiroption="--srcdir=$${topdir}/$${dir}"; \ libsrcdir="$$s/$${dir}"; \ fi; \ if [ -f $${libsrcdir}/configure ] ; then \ rm -f no-such-file skip-this-dir; \ CONFIG_SITE=no-such-file $(SHELL) $${libsrcdir}/configure \ $(CONFIG_ARGUMENTS) $${srcdiroption} \ --with-target-subdir="$(TARGET_SUBDIR)"; \ else \ rm -f no-such-file skip-this-dir; \ CONFIG_SITE=no-such-file $(SHELL) $$s/configure \ $(CONFIG_ARGUMENTS) $${srcdiroption} \ --with-target-subdir="$(TARGET_SUBDIR)"; \ fi; \ if [ -f skip-this-dir ] ; then \ sh skip-this-dir; \ rm -f skip-this-dir; \ cd ..; rmdir $${dir} || true; \ else \ true; \ fi; \ else \ true; \ fi; \ else \ true; \ fi# This rule is used to build the modules which use TARGET_FLAGS_TO_PASS.# To build a target all-X means to cd to X and make all..PHONY: $(ALL_TARGET_MODULES)$(ALL_TARGET_MODULES): @dir=`echo $@ | sed -e 's/all-target-//'`; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir}; $(MAKE) $(TARGET_FLAGS_TO_PASS) all); \ else \ true; \ fi# This rule is used to check the modules which use TARGET_FLAGS_TO_PASS.# To build a target install-X means to cd to X and make install..PHONY: $(CHECK_TARGET_MODULES)$(CHECK_TARGET_MODULES): @dir=`echo $@ | sed -e 's/check-target-//'`; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir};$(MAKE) $(TARGET_FLAGS_TO_PASS) check);\ else \ true; \ fi# This rule is used to install the modules which use# TARGET_FLAGS_TO_PASS. To build a target install-X means to cd to X# and make install..PHONY: $(INSTALL_TARGET_MODULES)$(INSTALL_TARGET_MODULES): installdirs @dir=`echo $@ | sed -e 's/install-target-//'`; \ if [ -f $(TARGET_SUBDIR)/$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $(TARGET_SUBDIR)/$${dir}; \ $(MAKE) $(TARGET_FLAGS_TO_PASS) install); \ else \ true; \ fi# This rule is used to build the modules which use X11_FLAGS_TO_PASS.# To build a target all-X means to cd to X and make all..PHONY: $(ALL_X11_MODULES)$(ALL_X11_MODULES): @dir=`echo $@ | sed -e 's/all-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; \ $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) all); \ else \ true; \ fi# This rule is used to check the modules which use X11_FLAGS_TO_PASS.# To build a target check-X means to cd to X and make all..PHONY: $(CHECK_X11_MODULES)$(CHECK_X11_MODULES): @dir=`echo $@ | sed -e 's/check-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; \ $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) check); \ else \ true; \ fi# This rule is used to install the modules which use X11_FLAGS_TO_PASS.# To build a target install-X means to cd to X and make install..PHONY: $(INSTALL_X11_MODULES)$(INSTALL_X11_MODULES): installdirs @dir=`echo $@ | sed -e 's/install-//'`; \ if [ -f ./$${dir}/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd $${dir}; \ $(MAKE) $(FLAGS_TO_PASS) $(X11_FLAGS_TO_PASS) install); \ else \ true; \ fi# gcc is the only module which uses GCC_FLAGS_TO_PASS..PHONY: all-gccall-gcc: @if [ -f ./gcc/Makefile ] ; then \ r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ (cd gcc; $(MAKE) $(GCC_FLAGS_TO_PASS) all); \ else \ true; \ fi# Building GCC uses some tools for rebuilding "source" files# like texinfo, bison/byacc, etc. So we must depend on those.## While building GCC, it may be necessary to run various target# programs like the assembler, linker, etc. So we depend on# those too.## In theory, on an SMP all those dependencies can be resolved# in parallel.#.PHONY: bootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-leanbootstrap bootstrap-lean bootstrap2 bootstrap2-lean bootstrap3 bootstrap3-lean bootstrap4 bootstrap4-lean: all-bootstrap @r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ $(SET_LIB_PATH) \ echo "Bootstrapping the compiler"; \ cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) $@ @r=`pwd`; export r; \ s=`cd $(srcdir); pwd`; export s; \ case "$@" in \ *bootstrap4-lean ) \ msg="Comparing stage3 and stage4 of the compiler"; \ compare=compare3-lean ;; \ *bootstrap4 ) msg="Comparing stage3 and stage4 of the compiler"; \ compare=compare3 ;; \ *-lean ) msg="Comparing stage2 and stage3 of the compiler"; \
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?