[hellogcc] 初稿:gcc configure.ac的注解

  • From: Mingjie Xing <mingjie.xing@xxxxxxxxx>
  • To: hellogcc@xxxxxxxxxxxxx
  • Date: Wed, 8 Aug 2012 10:55:58 +0800

大家好,

附件是对应的configure.ac。L表示行号。以下简单注解了gcc顶层目录下的configure.ac。还在完善中。欢迎评论。

谢谢
邢明杰

L38: 将运行本程序时的路径名存放在变量progname中。$0为shell脚本的名字。

L40: 如果变量PWD已经被赋值了,则可能是错的,要重新执行pwd命令对其赋值。
     test -n:字符串如果不为空则为真。
     ${PWDCMD-pwd}:如果PWDCMD没有被设置或者为空,则使用pwd来代替。

L42-64:
     导出初始的configure参数,以供子configure们使用。

L67-69:
     这些宏在acx.m4中定义

L112-177:
     列出了所有可能需要的库和工具

L186-188:
     
configdirs为所有host相关的库和工具,target_configdirs为所有target相关的库和工具,build_configdirs为所有build相关的库和工具

L225:
     skipdirs将存放那些需要被跳过去的目录

L227:
     noconfigdirs与skipdirs类似,不过会将这些目录显式的打印到终端

L229-1933:
     各种条件判断,用来设置skipdirs和noconfigdirs

L1935-1972:
     
遍历skipdirs和noconfigdirs,从configdirs,build_configdirs和target_configdirs里删除相应的目录。如果源目录下存在该相应的目录,并且只在noconfigdirs下存在,则将其放到notsupp变量中。

L1974-2001:
     
遍历configdirs,build_configdirs和target_configdirs,如果目录下没有configure文件,则从变量中删除相应的目录。

L2303-2323:
     测试要使用的编译器是否能够生成可执行文件,如果不可以则报错。

L2326-2331:
     根据host的不同,使用相应的动态库环境变量。

L2333-2340:
     对于使用PATH环境变量作为动态库搜索路径的系统,做特别处理。

L2352-2378:
     用来确定gdb是否需要tk/tcl。这里作者提到一个他认为可以进行改进,但又不太确定的地方。

L2401-2443:
     
根据是否选择了bootstrap,来调整顶层makefile。通过设定BUILD_CONFIG变量的值来完成。Makefile中会根据该变量的值来将config子目录下相应的mk文件包含进来。

L2382-2392:
L2445-2497:
L3199-3207:
     
通过extrasub_build,extrasub_host,extrasub_target来修改makeifle。它们是根据build_configdirs,configdirs,target_configdirs的内容而定义的sed语句;Makefile.in文件中有许多@if和@endif包裹的模块,这些将在生成Makefile时,通过这些sed语句选择性的进行保留和删除。

Other related posts: