bfin-xxx-gcc中fortran目标的生成

快乐虾

http://blog.csdn.net/lights_joy/

[email protected]

   

 

本文适用于

gcc- 4.3.1

configure –target=bfin-uclinux-gnu

Blackfin系列DSP

Cygwin gcc 3.4.4

 

欢迎转载,但请保留作者信息

 

 

fortran这个目标并不是放在gcc/Makefile中,而是在gcc/fortran/Make-lang.in文件中,然后在gcc/Makefile中有这个的语句:

LANG_MAKEFRAGS =  $(srcdir)/ada/Make-lang.in $(srcdir)/cp/Make-lang.in $(srcdir)/fortran/Make-lang.in $(srcdir)/java/Make-lang.in $(srcdir)/objc/Make-lang.in $(srcdir)/objcp/Make-lang.in $(srcdir)/treelang/Make-lang.in

ifneq ($(LANG_MAKEFRAGS),)

include $(LANG_MAKEFRAGS)

endif

这样就包含了gcc/fortran/Make-lang.in。在此文件中是这样定义fortran这条规则的:

# Define the names for selecting gfortran in LANGUAGES.

fortran: f951$(exeext)

f951$(exeext): $(F95_OBJS) /

              $(BACKEND) $(LIBDEPS) attribs.o

       $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ /

              $(F95_OBJS) $(BACKEND) $(LIBS) attribs.o $(GMPLIBS)

在这个依赖关系中,$(BACKEND)$(LIBDEPS)attribs.o在生成cc1.exe时已经生成,因此这个目标依赖于$(F95_OBJS)。在这些目标生成后,这段脚本将它们链接为f951.exe

F95_PARSER_OBJS = fortran/arith.o fortran/array.o fortran/bbt.o /

    fortran/check.o fortran/data.o fortran/decl.o fortran/dump-parse-tree.o /

    fortran/error.o fortran/expr.o fortran/interface.o /

    fortran/intrinsic.o fortran/io.o fortran/iresolve.o /

    fortran/match.o fortran/matchexp.o fortran/misc.o fortran/module.o /

    fortran/openmp.o fortran/options.o fortran/parse.o fortran/primary.o /

    fortran/resolve.o fortran/scanner.o fortran/simplify.o fortran/st.o /

    fortran/symbol.o fortran/target-memory.o

 

F95_OBJS = $(F95_PARSER_OBJS) /

    fortran/convert.o fortran/dependency.o fortran/f95-lang.o /

    fortran/trans.o fortran/trans-array.o fortran/trans-common.o /

    fortran/trans-const.o fortran/trans-decl.o fortran/trans-expr.o /

    fortran/trans-intrinsic.o fortran/trans-io.o fortran/trans-openmp.o /

    fortran/trans-stmt.o fortran/trans-types.o

在这里.o文件的生成适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

然后为$(F95_PARSER_OBJS)定义了一个依赖关系:

$(F95_PARSER_OBJS): fortran/gfortran.h fortran/libgfortran.h /

              fortran/intrinsic.h fortran/match.h /

              fortran/parse.h fortran/arith.h fortran/target-memory.h /

              $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TM_P_H) coretypes.h /

              $(RTL_H) $(TREE_H) $(TREE_DUMP_H) $(GGC_H) $(EXPR_H) /

              $(FLAGS_H) output.h $(DIAGNOSTIC_H) errors.h $(FUNCTION_H)

对于其它的.o文件,则单独定义依赖规则。

在所有的.o文件都生成后,将把它们链接成f951.exe这个fortran编译器。

1.1.1.1             fortran/convert.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/convert.o: $(GFORTRAN_TRANS_DEPS)

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.2             fortran/dependency.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/dependency.o: $(GFORTRAN_TRANS_DEPS) fortran/dependency.h

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.3             fortran/f95-lang.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/f95-lang.o: $(GFORTRAN_TRANS_DEPS) fortran/mathbuiltins.def /

  gt-fortran-f95-lang.h gtype-fortran.h $(CGRAPH_H) $(TARGET_H) /

  $(BUILTINS_DEF) fortran/types.def

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.4             fortran/trans.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans.o: $(GFORTRAN_TRANS_DEPS)

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.5             fortran/trans-array.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-array.o: $(GFORTRAN_TRANS_DEPS)

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.6             fortran/trans-common.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-common.o: $(GFORTRAN_TRANS_DEPS) $(TARGET_H) $(RTL_H)

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.7             fortran/trans-const.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-const.o: $(GFORTRAN_TRANS_DEPS)

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.8             fortran/trans-decl.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-decl.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-decl.h /

  $(CGRAPH_H) $(TARGET_H) $(FUNCTION_H) $(FLAGS_H) $(RTL_H) $(TREE_GIMPLE_H) /

  $(TREE_DUMP_H)

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.9             fortran/trans-expr.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-expr.o: $(GFORTRAN_TRANS_DEPS) fortran/dependency.h

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.10       fortran/trans-intrinsic.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-intrinsic.o: $(GFORTRAN_TRANS_DEPS) fortran/mathbuiltins.def /

  gt-fortran-trans-intrinsic.h

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.11       fortran/trans-io.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-io.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-io.h /

  fortran/ioparm.def

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.12       fortran/trans-openmp.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-openmp.o: $(GFORTRAN_TRANS_DEPS)

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.13       fortran/trans-stmt.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-stmt.o: $(GFORTRAN_TRANS_DEPS) fortran/dependency.h

由于所需要的目标都已经生成,直接编译即可。

 

1.1.1.14       fortran/trans-types.o

这个文件适用于通用规则:

.c.o:

       $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION);/

同时有下列依赖关系:

fortran/trans-types.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-types.h /

  $(REAL_H) toplev.h $(TARGET_H) $(FLAGS_H) dwarf2out.h

由于所需要的目标都已经生成,直接编译即可。

 

 

 

参考资料

host-i686-pc-cygwin/libiberty/Makefile解析( 2008-8-19 )

host-i686-pc-cygwin/fixincludes/Makefile分析( 2008-8-19 )

host-i686-pc-cygwin/zlib/Makefile分析( 2008-8-19 )

host-i686-pc-cygwin/libcpp/Makefile分析( 2008-8-19 )

host-i686-pc-cygwin/libdecnumber/Makefile分析( 2008-8-19 )

bfin-xxx-gcccc1plus.exe的生成 2008-08-23

 

 

 

 

 

你可能感兴趣的:(function,tree,include,fortran,编译器,output)