快乐虾的专栏

装上快乐的翅膀,小虾也能飞翔

原创 bfin-xxx-gcc中fortran目标的生成收藏

快乐虾

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

lights@hb165.com

  

 

本文适用于

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

 

 

 

 

 

发表于 @ 2008年08月24日 11:27:00|评论(loading...)|收藏

新一篇: bfin-xxx-gcc中java目标的生成 | 旧一篇: bfin-xxx-gcc中cc1plus.exe的生成

Csdn Blog version 3.1a
Copyright © 快乐虾