Nox boot.sh

建议先读:

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。

你可能感兴趣的:(Nox boot.sh)