网站公告列表

  没有公告

加入收藏
设为首页
联系本站
您现在的位置: AnalogCN安诺电子 >> 文章 >> 技术交流 >> 文章正文
  bfin-xxx-gcc中options.h的生成           ★★★ 【字体:
bfin-xxx-gcc中options.h的生成
作者:快乐虾    文章来源:http://blog.csdn.net/lights_joy    点击数:    更新时间:2008-8-20    

Makefile.in中有这样的语句:

options.h: s-options-h ; @true

s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opth-gen.awk

     $(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/opth-gen.awk \

            < $< > tmp-options.h

     $(SHELL) $(srcdir)/../move-if-change tmp-options.h options.h

     $(STAMP) $@

它将取决于optionlist文件,再查optionlist

optionlist: s-options ; @true

s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk

     $(AWK) -f $(srcdir)/opt-gather.awk $(ALL_OPT_FILES) > tmp-optionlist

     $(SHELL) $(srcdir)/../move-if-change tmp-optionlist optionlist

     $(STAMP) s-options

在这里用到了一个变量ALL_OPT_FILES,看看它是什么东西:

ALL_OPT_FILES=$(lang_opt_files) $(extra_opt_files)

查一下lang_opt_files,在configure脚本中这样定义:

for lang in ${srcdir}/*/config-lang.in

do

……………….

     if test -f $srcdir/$subdir/lang.opt; then

         lang_opt_files="$lang_opt_files $srcdir/$subdir/lang.opt"

     fi

……………….

done

从这里我们就可以知道$lang_opt_files的值将为

”treelang/lang.opt”

再找extra_opt_files,在configure脚本有如下语句:

# Convert extra_options into a form suitable for Makefile use.

extra_opt_files=

for f in $extra_options; do

  extra_opt_files="$extra_opt_files \$(srcdir)/config/$f"

done

在这里用到了extra_options变量,在config.gcc中对这个值进行了设置:

if test -f ${srcdir}/config/${cpu_type}/${cpu_type}.opt

then

     extra_options="${extra_options} ${cpu_type}/${cpu_type}.opt"

fi

bfin*-uclinux*)

     tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h linux.h bfin/uclinux.h"

     tmake_file=bfin/t-bfin-uclinux

     tm_defines="${tm_defines} UCLIBC_DEFAULT=1"

     extra_options="${extra_options} linux.opt"

     use_collect2=no

     ;;

因此extra_tions的值为:

“bfin/bfin.opt linux.opt”

回到extra_opt_files的定义上来,由extra_options的值可知,extra_opt_files的值将为:

“config/bfin/bfin.opt config/linux.opt”

这样我们就可以知道在MakefileALL_OPT_FILES这个变量的值为:

”treelang/lang.opt  config/bfin/bfin.opt config/linux.opt”

执行awk命令,可以得到optionlist文件的内容:

LanguageTreelang

flexer-traceTreelangTrace lexical analysis

fparser-traceTreelangTrace the parsing process

mcpu=Target RejectNegative JoinedSpecify the name of the target CPU

mcsync-anomalyTarget Report Var(bfin_csync_anomaly) Init(-1)Work around a hardware anomaly by adding a number of NOPs before aCSYNC or SSYNC instruction.

mfast-fpTarget Report Mask(FAST_FP)Link with the fast floating-point library

mfdpicTarget Report Mask(FDPIC)Enable Function Descriptor PIC mode

mglibcTarget RejectNegative Report InverseMask(UCLIBC, GLIBC) Var(linux_uclibc) VarExistsUse GNU libc instead of uClibc

mid-shared-libraryTarget Report Mask(ID_SHARED_LIBRARY)Enabled ID based shared library

minline-pltTarget Report Mask(INLINE_PLT)Enable inlining of PLT in function calls

mleaf-id-shared-libraryTarget Report Mask(LEAF_ID_SHARED_LIBRARY)Generate code that won't be linked against any other ID shared libraries,but may be used as a shared library.

mlong-callsTarget Report Mask(LONG_CALLS)Avoid generating pc-relative calls; use indirection

mlow64kTarget Report Mask(LOW_64K)Program is entirely located in low 64k of memory

momit-leaf-frame-pointerTarget Report Mask(OMIT_LEAF_FRAME_POINTER)Omit frame pointer for leaf functions

msep-dataTarget Report Mask(SEP_DATA)Enable separate data segment

mshared-library-id=Target RejectNegative Joined UInteger Var(bfin_library_id)ID of shared library to build

msimTarget RejectNegativeUse simulator runtime

mspecld-anomalyTarget Report Var(bfin_specld_anomaly) Init(-1)Avoid speculative loads to work around a hardware anomaly.

mstack-check-l1Target Report Mask(STACK_CHECK_L1)Do stack checking using bounds in L1 scratch memory

muclibcTarget RejectNegative Report Mask(UCLIBC) Var(linux_uclibc) Init(UCLIBC_DEFAULT ? OPTION_MASK_UCLIBC : 0)Use uClibc instead of GNU libc

vTreelang

yTreelang

再执行awk命令生成options.h

/* This file is auto-generated by opth-gen.awk.  */

 

#ifndef OPTIONS_H

#define OPTIONS_H

 

extern int target_flags;

extern int target_flags_explicit;

 

extern int bfin_csync_anomaly;

extern int linux_uclibc;

extern int bfin_library_id;

extern int bfin_specld_anomaly;

extern int linux_uclibc;

 

#define MASK_FAST_FP (1 << 0)

#define MASK_FDPIC (1 << 1)

#define MASK_ID_SHARED_LIBRARY (1 << 2)

#define MASK_INLINE_PLT (1 << 3)

#define MASK_LEAF_ID_SHARED_LIBRARY (1 << 4)

#define MASK_LONG_CALLS (1 << 5)

#define MASK_LOW_64K (1 << 6)

#define MASK_OMIT_LEAF_FRAME_POINTER (1 << 7)

#define MASK_SEP_DATA (1 << 8)

#define MASK_STACK_CHECK_L1 (1 << 9)

#define OPTION_MASK_UCLIBC (1 << 0)

 

#define TARGET_FAST_FP ((target_flags & MASK_FAST_FP) != 0)

#define TARGET_FDPIC ((target_flags & MASK_FDPIC) != 0)

#define TARGET_ID_SHARED_LIBRARY ((target_flags & MASK_ID_SHARED_LIBRARY) != 0)

#define TARGET_INLINE_PLT ((target_flags & MASK_INLINE_PLT) != 0)

#define TARGET_LEAF_ID_SHARED_LIBRARY ((target_flags & MASK_LEAF_ID_SHARED_LIBRARY) != 0)

#define TARGET_LONG_CALLS ((target_flags & MASK_LONG_CALLS) != 0)

#define TARGET_LOW_64K ((target_flags & MASK_LOW_64K) != 0)

#define TARGET_OMIT_LEAF_FRAME_POINTER ((target_flags & MASK_OMIT_LEAF_FRAME_POINTER) != 0)

#define TARGET_SEP_DATA ((target_flags & MASK_SEP_DATA) != 0)

#define TARGET_STACK_CHECK_L1 ((target_flags & MASK_STACK_CHECK_L1) != 0)

#define OPTION_UCLIBC ((linux_uclibc & OPTION_MASK_UCLIBC) != 0)

 

#define OPTION_GLIBC ((linux_uclibc & OPTION_MASK_UCLIBC) == 0)

 

#define CL_Treelang   (1 << 0)

#define CL_LANG_ALL   ((1 << 1) - 1)

 

enum opt_code

{

  OPT_flexer_trace,                          /* -flexer-trace */

  OPT_fparser_trace,                         /* -fparser-trace */

  OPT_mcpu_,                                 /* -mcpu= */

  OPT_mcsync_anomaly,                        /* -mcsync-anomaly */

  OPT_mfast_fp,                              /* -mfast-fp */

  OPT_mfdpic,                                /* -mfdpic */

  OPT_mglibc,                                /* -mglibc */

  OPT_mid_shared_library,                    /* -mid-shared-library */

  OPT_minline_plt,                           /* -minline-plt */

  OPT_mleaf_id_shared_library,               /* -mleaf-id-shared-library */

  OPT_mlong_calls,                           /* -mlong-calls */

  OPT_mlow64k,                               /* -mlow64k */

  OPT_momit_leaf_frame_pointer,              /* -momit-leaf-frame-pointer */

  OPT_msep_data,                             /* -msep-data */

  OPT_mshared_library_id_,                   /* -mshared-library-id= */

  OPT_msim,                                  /* -msim */

  OPT_mspecld_anomaly,                       /* -mspecld-anomaly */

  OPT_mstack_check_l1,                       /* -mstack-check-l1 */

  OPT_muclibc,                               /* -muclibc */

  OPT_v,                                     /* -v */

  OPT_y,                                     /* -y */

  N_OPTS

};

 

#endif /* OPTIONS_H */

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    前置放大器在移动医疗服务系
    便携式多通道大容量生理信号
    防腐监测仪的设计与应用
    基于AD1674的酶标仪的设计
    基于C/S模式的JRTPLIB库的测
    ffmpeg与jrtplib相结合应用
    blackfin模拟摄像头驱动中的
    可编程逻辑在数字信号处理系
    发现VDSP4.5一个BUG:单步调
    VDSP5.0双核工程下sml3中的变
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    版权所有:AnalogCN安诺电子 湘ICP备06016315号