Autoconfは,テストソースファイルを生成するために使用することが可能なマク ロの組みを提供しています.それらは,一般的な言語で書かれていて,すなわち, それらは実際に現在の言語(see Language Choice)に依存して適切な出力 “フォーマット”になっています.
現在のテストソースファイルにsourceのテキストを保存します. conftest.extensionのextensionは現在の言語に依存します.
通常のAutoconfマクロ引数のように,sourceは一度だけ評価され,そのた め,(i)マクロ呼び出しに渡してもかまわず,(ii)そうでなければ,必要があれ ば二重に引用符で囲む必要があることに注意してください.
例えば,以下を実行します(二重の引用符を守ってください!).
AC_INIT(Autoconf Documentation, 2.59, bug-autoconf@gnu.org)
AC_DEFINE([HELLO_WORLD], ["Hello, World\n"])
AC_LANG_CONFTEST(
[AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])])
gcc -E -dD conftest.c -o -
結果は以下のようになります.
# 1 "conftest.c"
# 1169 "configure"
# 1 "confdefs.h" 1
#define PACKAGE_NAME "Autoconf Documentation"
#define PACKAGE_TARNAME "autoconf-documentation"
#define PACKAGE_VERSION "2.59"
#define PACKAGE_STRING "Autoconf Documentation 2.59"
#define PACKAGE_BUGREPORT "bug-autoconf@gnu.org"
#define HELLO_WORLD "Hello, World\n"
# 1170 "configure" 2
const char hw[] = "Hello, World\n";
prologueの内容と,bodyをmain関数(例えばCの
main)として ソースファイルに展開します.それはAC_LANG_SOURCEを使用するので, 後者の機能は利用可能です.
例えば以下のようにします.
AC_INIT(Autoconf Documentation, 2.59, bug-autoconf@gnu.org)
AC_DEFINE([HELLO_WORLD], ["Hello, World\n"])
AC_LANG_CONFTEST(
[AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
[[fputs (hw, stdout);]])])
gcc -E -dD conftest.c -o -
結果は以下のようになります.
# 1 "conftest.c"
# 1169 "configure"
# 1 "confdefs.h" 1
#define PACKAGE_NAME "Autoconf Documentation"
#define PACKAGE_TARNAME "autoconf-documentation"
#define PACKAGE_VERSION "2.59"
#define PACKAGE_STRING "Autoconf Documentation 2.59"
#define PACKAGE_BUGREPORT "bug-autoconf@gnu.org"
#define HELLO_WORLD "Hello, World\n"
# 1170 "configure" 2
const char hw[] = "Hello, World\n";
int
main ()
{
fputs (hw, stdout);
;
return 0;
}