![]() |
|
||||||||||||||
| | 首页 | 新闻 | 文库 | 方案 | 技术 | 独家 | 座谈 | 下载 | 图库 | 开发板 | 仿真器 | 邮购 | VIP会员 | 芯片代购 | 客户评价 | | ||
|
||
|
|||||
| 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” 这样我们就可以知道在Makefile中ALL_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条。评论内容只代表网友观点,与本站立场无关!) |
| | 本站介绍 | 合作联络 | 欢迎投稿 | 广告业务 | 网站地图 | 设为首页 | 加入收藏 | 友情链接 | 网站公告 | 联系我们 | | |||
|