📄 makefile.in
字号:
-nostartfiles -nostdlib `$(GCC_FOR_TARGET) --print-libgcc-file-name`libgcc1-test.o: libgcc1-test.c native xgcc $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -c $(srcdir)/libgcc1-test.c# Recompile all the language-independent object files.# This is used only if the user explicitly asks for it.compilations: ${OBJS}# Create a list of the language-independent object files so the language# subdirectories needn't mention their names explicitly.stamp-objlist: Makefile $(OBJS) $(BC_OBJS) echo " $(OBJS) $(BC_OBJS)" | sed -e 's, \([a-z]\), ../\1,g' -e 's/\.o/$(objext)/g' >stamp-objlist# We call this executable `xgcc' rather than `gcc'# to avoid confusion if the current directory is in the path# and CC is `gcc'. It is renamed to `gcc' when it is installed.xgcc: gcc.o version.o $(LIBDEPS) $(EXTRA_GCC_OBJS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ gcc.o version.o $(EXTRA_GCC_OBJS) $(LIBS)# Dump a specs file to make -B./ read these specs over installed ones.specs: xgcc $(GCC_FOR_TARGET) -dumpspecs > tmp-specs mv tmp-specs specs# We do want to create an executable named `xgcc', so we can use it to# compile libgcc2.a.# Also create gcc-cross, so that install-common will install properly.gcc-cross: xgcc cp xgcc$(exeext) gcc-cross$(exeext)cc1: $(P) $(C_OBJS) $(OBJS) $(BC_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(C_OBJS) $(OBJS) $(BC_OBJS) $(LIBS)cc1obj: $(P) $(OBJC_OBJS) $(OBJS) $(BC_OBJS) $(LIBDEPS) $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(OBJC_OBJS) $(OBJS) $(BC_OBJS) $(LIBS)# Copy float.h from its source.gfloat.h: $(FLOAT_H) -rm -f gfloat.h cp $(FLOAT_H) gfloat.h# Create float.h source for the native machine.float.h-nat: enquire -./enquire -f > tmp-float.h mv tmp-float.h float.h-nat# Create a dummy float.h source for a cross-compiler.float.h-cross: echo "#error float.h values not known for cross-compiler" > t-float.h-cross mv t-float.h-cross float.h-cross# Used to compile enquire with standard cc, but have forgotten why.# Let's try with GCC.enquire: enquire.o $(GCC_PARTS) $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ENQUIRE_LDFLAGS) enquire.o -o $@enquire.o: $(srcdir)/enquire.c $(GCC_PASSES) stmp-int-hdrs# Breaking this line caused a problem with one version of GNU make. $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) $(ENQUIRE_CFLAGS) -I. -c $(srcdir)/enquire.c# Build the version of limits.h that we will install.xlimits.h: glimits.h limitx.h limity.h if $(LIMITS_H_TEST) ; then \ cat $(srcdir)/limitx.h $(srcdir)/glimits.h $(srcdir)/limity.h > tmp-xlimits.h; \ else \ cat $(srcdir)/glimits.h > tmp-xlimits.h; \ fi mv tmp-xlimits.h xlimits.h# Build libgcc.a.# This is done in two parts because some functions, in libgcc1.c,# must be compiled with something other than GCC,# while the rest, in libgcc2.c, must be compiled with xgcc.# That means we can't do libgcc2.c until after xgcc, cc1, etc.# Use this as value of LIBGCC1 to cause conversion to GNU library format.# LIBCONVERT should put its output in libgcc1.conv.libgcc1.conv: libgcc1.a $(LIBCONVERT) libgcc1.a libgcc1.conv# Use this as value of LIBGCC1 to inhibit use of libgcc1.c entirely.# Make an empty file instead.libgcc1.null: $(GCC_PASSES) echo "__foo () {}" > dummy.c $(GCC_FOR_TARGET) $(GCC_CFLAGS) -c dummy.c $(OLDAR) $(OLDAR_FLAGS) libgcc1.null dummy$(objext) rm -f dummy$(objext) dummy.c# This is $(LIBGCC1) for a cross-compiler.# We have no automatic way of building libgcc1.a, # so it's up to the installer to find a way to do that.# This rule deliberately does not depend on libgcc1.a# so that it will fail if the installer hasn't provided it.libgcc1.cross: mv libgcc1.a libgcc1.cross || (echo You must find a way to make libgcc1.a; false)# Compile the library of arithmetic subroutines with the native compiler.# Don't compile it with GCC!# (That would cause most arithmetic functions to call themselves.)libgcc1.a: libgcc1.c $(CONFIG_H) $(LIB1FUNCS_EXTRA) config.status -rm -f tmplibgcc1.a# Actually build it in tmplibgcc1.a, then rename at end,# so that libgcc1.a itself remains nonexistent if compilation is aborted.# -e causes any failing command to make this rule fail.# -e doesn't work in certain shells, so we test $$? as well.# lynx has a broken ar, it always complains when the initial library is# empty, thus this command works only if we don't do -e# There is a trailing backslash (\) deleted from the following line.# set -e; for name in $(LIB1FUNCS); \ do \ echo $${name}; \ rm -f $${name}$(objext); \ $(OLDCC) $(CCLIBFLAGS) $(INCLUDES) -c -DL$${name} $(srcdir)/libgcc1.c; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ mv libgcc1$(objext) $${name}$(objext); \ $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ rm -f $${name}$(objext); \ done# Some shells crash when a loop has no items.# So make sure there is always at least one--`..'.# Then ignore it.# We don't use -e here because there are if statements# that should not make the command give up when the if condition is false.# Instead, we test for failure after each command where it matters. for file in .. $(LIB1FUNCS_EXTRA); \ do \ if [ x$${file} != x.. ]; then \ name=`echo $${file} | sed -e 's/[.][cS]$$//' -e 's/[.]asm$$//'`; \ echo $${name}; \ if [ $${name}.asm = $${file} ]; then \ cp $${file} $${name}.s || exit 1; file=$${name}.s; \ else true; fi; \ $(OLDCC) $(CCLIBFLAGS) $(INCLUDES) -c $${file}; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ $(OLDAR) $(OLDAR_FLAGS) tmplibgcc1.a $${name}$(objext); \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ rm -f $${name}.s $${name}$(objext); \ else true; \ fi; \ done -if $(RANLIB_TEST) ; then $(RANLIB) tmplibgcc1.a; else true; fi mv tmplibgcc1.a libgcc1.a# Build libgcc1.a from assembler source. LIB1ASMFUNCS is the list of# functions. LIB1ASMSRC is the name of the source file in the config# subdirectory.libgcc1-asm.a: libgcc2.ready config.status $(srcdir)/config/$(LIB1ASMSRC) -rm -f tmplibgcc1.a libgcc1.S cp $(srcdir)/config/$(LIB1ASMSRC) libgcc1.S# Actually build it in tmplibgcc1.a, then rename at end,# so that libgcc1-asm.a itself remains nonexistent if compilation is aborted.# -e causes any failing command to make this rule fail.# -e doesn't work in certain shells, so we test $$? as well.# lynx has a broken ar, it always complains when the initial library is# empty, thus this command works only if we don't do -e# There is a trailing backslash (\) deleted from the following line.# set -e; for name in $(LIB1ASMFUNCS); \ do \ echo $${name}; \ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} libgcc1.S; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ mv libgcc1$(objext) $${name}$(objext); \ $(AR) $(AR_FLAGS) tmplibgcc1.a $${name}$(objext); \ rm -f $${name}$(objext); \ done -rm -f libgcc1.S mv tmplibgcc1.a libgcc1-asm.a# Generate assembly versions of the functions required for libgcc1.# You'll still need to massage the code by hand (possibly hacking# underscores and local labels) but this will get you started.libgcc1.S: libgcc1.c $(CONFIG_H) config.status -rm -f libgcc1.S touch libgcc1.S for name in $(LIB1FUNCS); \ do \ echo $${name}; \ $(OLDCC) $(CCLIBFLAGS) $(INCLUDES) -S -DL$${name} $(srcdir)/libgcc1.c; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ echo '#ifdef ' L$${name} >> libgcc1.S; \ cat libgcc1.s >> libgcc1.S; \ echo '#endif /*' L$${name} '*/' >> libgcc1.S; \ echo "" >> libgcc1.S; \ done# Compiling libgcc2.a requires making sure that cc1, etc. have been compiled.# But recompiling cc1 should not force recompilation of libgcc2.a.# If you want to force recompilation, delete libgcc2.a.libgcc2.ready: $(GCC_PASSES) $(LIBGCC2_DEPS) stmp-int-hdrs -if [ -f libgcc2.ready ] ; then \ true; \ else \ touch libgcc2.ready; \ filibgcc2.a: libgcc2.c libgcc2.ready $(CONFIG_H) $(LIB2FUNCS_EXTRA) \ machmode.h longlong.h gbl-ctors.h config.status# Actually build it in tmplibgcc2.a, then rename at end,# so that libgcc2.a itself remains nonexistent if compilation is aborted. -rm -f tmplibgcc2.a# -e causes any failing command to make this rule fail.# -e doesn't work in certain shells, so we test $$? as well.# lynx has a broken ar, it always complains when the initial library is# empty, thus this command works only if we don't do -e# There is a trailing backslash (\) deleted from the following line.# set -e; for name in $(LIB2FUNCS); \ do \ echo $${name}; \ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c -DL$${name} \ $(srcdir)/libgcc2.c -o $${name}$(objext); \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ $(AR) $(AR_FLAGS) tmplibgcc2.a $${name}$(objext); \ rm -f $${name}$(objext); \ done# Some shells crash when a loop has no items.# So make sure there is always at least one--`..'.# Then ignore it.# We don't use -e here because there are if statements# that should not make the command give up when the if condition is false.# Instead, we test for failure after each command where it matters. for file in .. $(LIB2FUNCS_EXTRA); \ do \ if [ x$${file} != x.. ]; then \ name=`echo $${file} | sed -e 's/[.][cS]$$//' -e 's/[.]asm$$//'`; \ oname=` echo $${name} | sed -e 's,.*/,,'`; \ echo $${name}; \ if [ $${name}.asm = $${file} ]; then \ cp $${file} $${name}.s || exit 1; file=$${name}.s; \ else true; fi; \ $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES) -c $${file}; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ $(AR) $(AR_FLAGS) tmplibgcc2.a $${oname}$(objext); \ rm -f $${name}.s $${oname}$(objext); \ else true; \ fi; \ done mv tmplibgcc2.a libgcc2.a# These lines were deleted from above the mv command# because ranlibing libgcc.a itself should suffice.# -if [ x${HPUX_GAS} = x ] ; then \# if $(RANLIB_TEST) ; then $(RANLIB) tmplibgcc2.a; else true; fi; \# else true; fi# Combine the various libraries into a single library, libgcc.a.libgcc.a: $(LIBGCC1) $(LIBGCC2) -rm -rf tmplibgcc.a libgcc.a tmpcopy mkdir tmpcopy -if [ x$(LIBGCC1) != x ]; \ then (cd tmpcopy; $(AR) x ../$(LIBGCC1)); \ else true; \ fi# Some versions of ar (specifically the one in RISC/os 5.x), create an# unwritable table of contents file, and then print an error message when# the second ar command tries to overwrite this file. To avoid the error# message from ar, we make sure all files are writable. -(cd tmpcopy; chmod +w * > /dev/null 2>&1) (cd tmpcopy; $(AR) x ../$(LIBGCC2)) (cd tmpcopy; $(AR) $(AR_FLAGS) ../tmplibgcc.a *$(objext)) rm -rf tmpcopy -if $(RANLIB_TEST) ; then $(RANLIB) tmplibgcc.a; else true; fi# Actually build it in tmplibgcc.a, then rename at end,# so that libgcc.a itself remains nonexistent if compilation is aborted. mv tmplibgcc.a libgcc.a# Use the genmultilib shell script to generate the information the gcc# driver program needs to select the library directory based on the# switches.multilib.h: $(srcdir)/genmultilib Makefile $(SHELL) $(srcdir)/genmultilib "$(MULTILIB_OPTIONS)" \ "$(MULTILIB_DIRNAMES)" "$(MULTILIB_MATCHES)" > multilib.h# Build multiple copies of libgcc.a, one for each target switch.stmp-multilib: $(LIBGCC1) libgcc2.c libgcc2.ready $(CONFIG_H) \ $(LIB2FUNCS_EXTRA) machmode.h longlong.h gbl-ctors.h config.status for i in `$(GCC_FOR_TARGET) --print-multi-lib`; do \ dir=`echo $$i | sed -e 's/;.*$$//'`; \ flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" CC="$(CC)" CFLAGS="$(CFLAGS)" \ RANLIB="$(RANLIB)" RANLIB_TEST="$(RANLIB_TEST)" \ HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS) $${flags}" \ LIBGCC1="$(LIBGCC1)" LIBGCC2="$(LIBGCC2)" \ dir="$${dir}" stmp-multilib-sub; \ if [ $$? -eq 0 ] ; then true; else exit 1; fi; \ done touch stmp-multilib# Subroutine of stmp-multilib so make -n works.stmp-multilib-sub: rm -f $(dir)/libgcc.a $(LIBGCC2) $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" CC="$(CC)" CFLAGS="$(CFLAGS)" \ HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" $(LIBGCC2) if [ x$(LIBGCC1) != xlibgcc1-asm.a ]; \ then true; \ else rm -f $(LIBGCC1); \ fi if [ x$(LIBGCC1) != xlibgcc1-asm.a ]; \ then true; \ else \ $(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" CC="$(CC)" CFLAGS="$(CFLAGS)" \ HOST_PREFIX="$(HOST_PREFIX)" HOST_PREFIX_1="$(HOST_PREFIX_1)" \ LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)" $(LIBGCC1); \ fi rm -rf tmplibgcc.a tmpcopy mkdir tmpcopy if [ x$(LIBGCC1) != x ]; \ then (cd tmpcopy; $(AR) x ../$(LIBGCC1)); \ else true; \ fi (cd tmpcopy; $(AR) x ../$(LIBGCC2)) (cd tmpcopy; $(AR) $(AR_FLAGS) ../tmplibgcc.a *$(objext)) rm -rf libgcc2.a tmpcopy if $(RANLIB_TEST) ; then $(RANLIB) tmplibgcc.a; else true; fi if [ -d $(dir) ]; then true; else mkdir $(dir); fi mv tmplibgcc.a $(dir)/libgcc.aobjc-runtime: libobjc.a# Build the Objective C runtime library.libobjc.a: cc1obj stmp-int-hdrs libgcc2.ready $(USE_COLLECT2) $(EXTRA_PARTS) if [ -d objc ]; then true; else mkdir objc; fi thisdir1=`pwd`; \ srcdir1=`cd $(srcdir); pwd`; \ cd objc; \ $(MAKE) -f $${srcdir1}/objc/Makefile libobjc.a \ srcdir=$${srcdir1} tooldir=$(tooldir) AR="$(AR)" AR_FLAGS="$(AR_FLAGS)" \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -