建议先读:
Linux Makefile自动生成--总体流程
Linux Makefile自动生成--实例
Linux Makefile自动生成--config.h
提取boot.sh中关键代码进行分析。
#! /bin/sh -e exclude_list="ext" have_netapps=yes sed -e "s/APPS_ID/core/" -e "s/TURN_ON_NETAPPS/$have_netapps/" configure.ac.in > configure.ac echo "AC_CONFIG_FILES([ " >> configure.ac find . -path "*/Makefile.am" | grep -vE "$exclude_list" | sed -e "s/\.am$//" -e "s/^\.\///" >> configure.ac echo "]) " >> configure.ac echo "AC_OUTPUT " >> configure.ac # Bootstrap configure system from .ac/.am files autoreconf --install -I `pwd`/m4 --force
congigure.ac.in为nox提供的文件,实际上为autoscan扫描以后,被改名后的文件,in后缀意味着可以进行配置。
将configure.ac.in中的APPS_ID替换为core,将TURN_ON_NETAPPS更改为yes,将更改后全部内容输出到configure.ac中,用于生成Makefile。
在config.ac后追加宏定义AC_CONFIG_FILES。
find 命令递归查找子目录,查找Makefile.am,去掉后缀.am,以及前缀./,将其写入configure.ac中。
比如./src/coreapps/openflow/Makefile.am,经过处理后变成src/coreapps/openflow/Makefile。
经过处理后的configure.ac文件如下:
AC_CONFIG_FILES([ src/lib/Makefile src/coreapps/openflow/Makefile src/coreapps/switch/Makefile src/coreapps/switchtest/Makefile src/coreapps/Makefile src/include/Makefile src/utilities/Makefile src/etc/Makefile src/Makefile src/netapps/Makefile Makefile ]) AC_OUTPUT
autoreconf,会自动调用aclocal, autoconf, autoheader, automake等生成Makefile。