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; }