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

 

快乐虾

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

[email protected]

 

 

本文适用于

gcc- 4.3.1

configure –target=bfin-uclinux-gnu

Blackfin系列DSP

Cygwin gcc 3.4.4

 

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

 

 

这个目标并不是放在gcc/Makefile中,而是在gcc/objc/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/java/Make-lang.in。在此文件中是这样定义java这条规则的:

objc: cc1obj$(exeext)

cc1obj$(exeext): $(OBJC_OBJS) $(C_AND_OBJC_OBJS) cc1obj-checksum.o $(BACKEND) $(LIBDEPS)

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

             $(OBJC_OBJS) $(C_AND_OBJC_OBJS) cc1obj-checksum.o /

             $(BACKEND) $(LIBS) $(GMPLIBS)

最终的结果将链接生成cc1obj.exe文件。

1.1.1.1             $(OBJC_OBJS)

这个变量定义为:

OBJC_OBJS = objc/objc-lang.o objc/objc-act.o

1.1.1.1.1       objc/objc-lang.o

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

.c.o:

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

同时有下列依赖关系:

objc/objc-lang.o : objc/objc-lang.c /

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

   $(C_TREE_H) $(DIAGNOSTIC_H) /

   $(GGC_H) langhooks.h $(LANGHOOKS_DEF_H) $(C_COMMON_H) gtype-objc.h /

   c-objc-common.h objc/objc-act.h $(TREE_GIMPLE_H)

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

 

1.1.1.1.2       objc/objc-act.o

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

.c.o:

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

同时有下列依赖关系:

objc/objc-act.o : objc/objc-act.c /

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

   $(EXPR_H) $(TARGET_H) $(C_TREE_H) $(DIAGNOSTIC_H) toplev.h $(FLAGS_H) /

   objc/objc-act.h input.h $(FUNCTION_H) output.h debug.h langhooks.h /

   $(LANGHOOKS_DEF_H) $(HASHTAB_H) $(C_PRAGMA_H) gt-objc-objc-act.h /

   $(TREE_GIMPLE_H)

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

 

1.1.1.2             $(C_AND_OBJC_OBJS)

这个变量定义为:

C_AND_OBJC_OBJS = attribs.o c-errors.o c-lex.o c-pragma.o c-decl.o c-typeck.o /

  c-convert.o c-aux-info.o c-common.o c-opts.o c-format.o c-semantics.o /

  c-incpath.o cppdefault.o c-ppoutput.o c-cppbuiltin.o prefix.o /

  c-objc-common.o c-dump.o c-pch.o c-parser.o $(C_TARGET_OBJS) /

  c-gimplify.o tree-mudflap.o c-pretty-print.o c-omp.o

由于所需要的目标都已经生成,直接略过。

 

1.1.1.3             cc1obj-checksum.o

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

.c.o:

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

同时有下列依赖关系:

cc1obj-checksum.o : cc1obj-checksum.c

cc1obj-checksum.c : cc1obj-dummy$(exeext) build/genchecksum$(build_exeext)

       build/genchecksum$(build_exeext) cc1obj-dummy$(exeext) > $@

在这里genchecksum.exe已经生成,因而需要生成cc1obj-dummy.exe,这个文件的依赖关系为:

cc1obj-dummy$(exeext): $(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o $(BACKEND) $(LIBDEPS)

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

             $(OBJC_OBJS) $(C_AND_OBJC_OBJS) dummy-checksum.o /

             $(BACKEND) $(LIBS) $(GMPLIBS)

所有目标均已生成,直接链接即可。

 

1.1.1.4             $(BACKEND)

此目标在生成cc1.exe时即已生成,略过。

1.1.1.5             $(LIBDEPS)

此目标在生成cc1.exe时即已生成,略过。

 

 

 

参考资料

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

bfin-xxx-gccfortran目标的生成( 2008-8-24 )

bfin-xxx-gccjava目标的生成( 2008-8-24 )

 

 

 

你可能感兴趣的:(bfin-xxx-gcc中objc目标的生成)