Previous: Obsoleting Macros, Up: Writing Autoconf Macros [Contents][Index]
Autoconf¥Þ¥¯¥í¤Ï¥¹¥¯¥ê¥×¥È¥³¡¼¥Ç¥£¥ó¥°¥¹¥¿¥¤¥ë¤Ë½¾¤¤¤Þ¤¹¡¥°Ê²¼¤Î¥¹¥¿¥¤¥ë ¤Ë½¾¤¦¤è¤¦¤Ë¿ä¾©¤·¡¤ÆÃ¤Ë¡¤Autoconf¼«¿È¤Ë´ó¹Æ¤·¤¿¤ê¡¤¤½¤Î¾¤ÎÌÜŪ¤Ç¡¤¥Þ¥¯ ¥í¤òÇÛÉÛ¤¹¤ëÌÜŪ¤¬¤¢¤ë¾ì¹ç¤Ï¤½¤¦¤·¤Æ¤¯¤À¤µ¤¤¡¥
ºÇ½é¤ËɬÍפʤ³¤È¤Ï¡¤°úÍÑÉä¤ËÂ礤¯Ãí°Õ¤òʧ¤¦¤³¤È¤Ç¤¹¡¥¾ÜºÙ¤Ï¡¤ Autoconf Language¤ÈM4 Quotation¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥
¿·¤¿¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÎȯÌÀ¤Ï»î¤ß¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥ÄêµÁ¤·¤Æ¤¤¤ë¥Þ¥¯¥í¤Ë»÷ ¤Æ¤¤¤ëAutoconf¥Þ¥¯¥í¤¬Â¸ºß¤¹¤ë¤³¤È¤Ï¤è¤¯¤¢¤ê¤Þ¤¹¡¥¤³¤Î´û¸¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼ ¥¹¤Ë½¾¤Ã¤Æ¤ß¤Æ¤¯¤À¤µ¤¤(°ú¿ô¤Î½ç½ø¡¤¥Ç¥Õ¥©¥ë¥ÈÃÍ¡¤Åù¡¹)¡¥²æ¡¹¤Ï¡¤¤³¤ì¤é¤Î ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ë´°Á´¤Ç¤Ê¤¤¤â¤Î¤¬¤¢¤ë¤³¤È¤Ï¡¤°Õ¼±¤·¤Æ¤¤¤Þ¤¹¡¥¤½ ¤ì¤Ë¤â¤«¤«¤ï¤é¤º¡¤Ìµ³²¤Ê¤È¤¤Ï¡¤ÁϤÀ¤è¤ê¶Ñ¼ÁÀ¤¬¹¥¤Þ¤ì¤ë¤Ç¤·¤ç¤¦¡¥
M4¥·¥ó¥Ü¥ë´Ö¤È¥·¥§¥ëÊÑ¿ô´Ö¤ÎξÊý¤Î¾×ÆÍ¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥
¿ä¾©¤µ¤ì¤ëM4̿̾µ¬Â§(see Macro Names)¤Ë½¾¤¦¾ì¹ç¡¤¾×ÆÍ¤¬À¸¤¸¤ë¤³¤È¤Ï
¤¢¤Þ¤ê¤Ê¤¤¤Ç¤·¤ç¤¦¡¥¤½¤ì¤Ë¤â¤«¤«¤ï¤é¤º¡¤ÆÃ¼ì¤ÊÃͤòÀßÄꤹ¤ëɬÍפ¬¤¢¤ë¤È¤¡¤
Ä̾ï¤Î¥Þ¥¯¥í̾¤ò»ÈÍѤ¹¤ë¤³¤È¤òÈò¤±¤Æ¤¯¤À¤µ¤¤¡¥“¿®¤¸¤é¤ì¤Ê¤¤”̾
Á°¤ò»ÈÍѤ¹¤ëÂå¤ï¤ê¤Ç¤¹¡¥Î㤨¤Ð¡¤¥Ð¡¼¥¸¥ç¥ó2.13¤Þ¤Ç¤Ï¡¤Ä̾ï¤Î¥Þ¥¯¥í̾
AC_SUBST_symbol
¤òÀßÄꤹ¤ë¤³¤È¤Ç´û¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë
symbol¤òµ²±¤¹¤ë¤¿¤á¡¤¥Þ¥¯¥íAC_SUBST
¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤·¤¿¡¥¤·
¤«¤·¡¤AC_SUBST_FILE
¤È̿̾¤µ¤ì¤Æ¤¤¤ë¥Þ¥¯¥í¤¬Â¸ºß¤¹¤ë¤Î¤Ç¡¤
‘AC_SUBST(FILE)’¤ò»ÈÍѤ¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡ª¤³¤Î¾ì¹ç¡¤
AC_SUBST(symbol)
¤ä_AC_SUBST(symbol)
¤¬»ÈÍѤµ¤ì
¤ë¤Ù¤¤Ç¤·¤¿(¤½¤¦¤Ç¤¹¡¤¥«¥Ã¥³¤Ï»ÈÍѤ·¤Þ¤¹)…¤Þ¤¿¤Ï¡¤¤è¤êÎɤ¤ÊýË¡¤È
¤·¤Æ¡¤AC_EXPAND_ONCE
¤Î¤è¤¦¤Ê¥Ï¥¤¥ì¥Ù¥ë¤Î¥Þ¥¯¥í¤ò»ÈÍѤ¹¤Ù¤¤Ç¤·¤¿¡¥
Autoconf¥Þ¥¯¥í¤Ï¡¤¥æ¡¼¥¶ÊÑ¿ô¤Î̾Á°¶õ´Ö¤ËÆþ¤ë¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥¤¹¤Ê¤ï¤Á¡¤
¼ÂºÝ¤Î¥Þ¥¯¥í¤Î¼Â¹Ô·ë²Ì¤È¤Ê¤ëÊÑ¿ô°Ê³°¤Î¡¤Á´¤Æ¥·¥§¥ëÊÑ¿ô¤Ïac_
¤Ç»Ï
¤á¤ë¤Ù¤¤Ç¤¹¡¥¤µ¤é¤Ë¡¤¾®¤µ¤Ê¥Þ¥¯¥í¤ä¾¤Î¥Þ¥¯¥í¤ËËä¤á¹þ¤Þ¤ì¤ë¤è¤¦¤Ê¥Þ¥¯¥í
¤Ï¡¤ÌÀ¼¨Åª¤Ê̾Á°¤ò»ÈÍѤ·¤Ê¤¤¤è¤¦¤ËÃí°Õ¤¹¤Ù¤¤Ç¤¹¡¥
¥³¥á¥ó¥È¤òƳÆþ¤¹¤ë¤¿¤á¤Ë¡¤dnl
¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥½ñ¤³¤¦¤È¤·¤Æ
¤¤¤ë¥³¥á¥ó¥È¤Î¤Û¤È¤ó¤É¤Ï¡¤½ÐÎϤµ¤ì¤Ê¤¤¥Ø¥Ã¥À¥³¥á¥ó¥È¡¤¤Þ¤¿¤Ï¡¤
configure¤Ë½ñ¤«¤ì¤ë¤Ù¤¥³¥á¥ó¥È¤Ç¤¹¡¥ÆÃ¼ì¤ÊM4¤Î¹½À®¤Î¥³¥á¥ó¥È¤¬Íß
¤·¤¤¾ì¹ç¤ÏÎã³°¤¬¤¢¤ê¡¤¤½¤Î¾ì¹ç¤Ïdnl
¤¬Àµ¤·¤¤¤Î¤Ç¤¹¤¬¡¤¤¢¤Þ¤ê¤Ê¤¤¤³
¤È¤À¤È¤¤¤¦¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡¥
M4¤Ï¡¤°ú¿ô¤ËÁ°ÃÖ¤µ¤ì¤ë¥¹¥Ú¡¼¥¹¤ò̵»ë¤·¤Þ¤¹¡¥¸Æ¤Ó½Ð¤µ¤ì¤Æ¤¤¤ë¥Þ¥¯¥í¤Î³«¥«¥Ã ¥³¤Ë¡¤°ú¿ô¤¬À°Î󤹤ë¤è¤¦¤Ë»ú²¼¤²¤¹¤ë¤¿¤á¤Ë¡¤¤³¤ÎÆÃħ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥ Î㤨¤Ð¡¤°Ê²¼¤ÎÂå¤ï¤ê¤ò¹Í¤¨¤Þ¤¹¡¥
AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __EMX__;])], [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡¥
AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])], [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
¤Þ¤¿¤Ï¡¤°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡¥
AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])], [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
AC_RUN_IFELSE
¤ä¡¤¥¯¥í¥¹¥³¥ó¥Ñ¥¤¥ë¤ÇưºîÉÔ²Äǽ¤Ê¥Þ¥¯¥í¤ò»ÈÍѤ·¤Æ¤¤
¤ë¤È¤¡¤Èá´ÑŪ¤ÊÃÍ(Ä̾ï¤Ï‘no’)¤òÄ󶡤·¤Æ¤¯¤À¤µ¤¤¡¥
¹½Ê¸¤ò¥Ï¥¤¥é¥¤¥Èɽ¼¨¤¹¤ë¥¨¥Ç¥£¥¿¤Î¤è¤¦¤Ê¡¤Êä½õ¥Ä¡¼¥ë¤¬ÉÔŬÀÚ¤ËÆ°ºî¤¹¤ë¤³ ¤È¤òÈò¤±¤ë¤¿¤á¡¤ÍÍ¡¹¤Ê¼êÃʤò¼«Í³¤Ë»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥Î㤨¤Ð°Ê²¼¤ò¹Í¤¨¤Þ¤¹¡¥
m4_bpatsubst([$1], [$"])
°Ê²¼¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
m4_bpatsubst([$1], [$""])
¤½¤ì¤Ï¡¤Emacsen¤¬ºÇ½é¤Î°úÍÑÉä¤Ç½ª¤ê¤Î¤Ê¤¤“ʸ»úÎó”¤ò³«¤¤¤¿¤Þ¤Þ¤Ë¤·¤Ê¤¤ ¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¹¡¥Æ±¤¸Íýͳ¤«¤é°Ê²¼¤Î¤è¤¦¤Ê¤³¤È¤ÏÈò¤±¤Æ¤¯¤À¤µ¤¤¡¥
test $[#] != 0
°Ê²¼¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥
test $[@%:@] != 0
¤½¤¦¤·¤Ê¤¤¾ì¹ç¡¤ÊÄ¥«¥Ã¥³¤Ï‘#’¥³¥á¥ó¥ÈÆâ¤Ë±£¤µ¤ì¡¤Emacsen¤Î¥«¥Ã¥³°ì
ÃפΥϥ¤¥é¥¤¥Èɽ¼¨¤òÇ˲õ¤·¤Þ¤¹¡¥¹¥¤Þ¤·¤¤¥¹¥¿¥¤¥ë¤Ï¡¤M4¤«¤é¥¨¥¹¥±¡¼¥×¤µ¤ì
¤ë¤è¤¦¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥‘$[1]’¡¤‘$[@]’¡¤Åù¤Ç¤¹¡¥ÉÔɬÍפʤÈ
¤¤Ë¥¨¥¹¥±¡¼¥×¤·¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡¥°ÕÌ£¤Î¤Ê¤¤°úÍÑÉä¤Î°ìÈÌŪ¤ÊÎã¤Ï¡¤
‘[$]$1’(‘$$1’¤È½ñ¤¤¤Æ¤¯¤À¤µ¤¤)¡¤‘[$]var’(‘$var’¤ò»È
ÍѤ·¤Æ¤¯¤À¤µ¤¤)¡¤Åù¤Ç¤¹¡¥°Ü¿¢À¤ÎÌäÂê¤ò¤³¤Î¾õÂ֤˲䨤ë¾ì¹ç¡¤
‘"[$]@"’¤è¤ê‘${1+"$[@]"}’¤Ë¤·¤¿Êý¤¬Îɤ¯¡¤Autoconf¤ò¥Ï¥Ã¥
¥ó¥°¤¹¤ë¤è¤ê²¿¤«Â¾¤Î¤³¤È¤ò¤·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦:-)
¡¥
sed
¤ò»ÈÍѤ·¤Æ¤¤¤ë¤È¤¡¤»ú²¼¤²¤ÎÌÜŪ°Ê³°¤Ç-e¤ò»ÈÍѤ·¤Ê
¤¤¤Ç¤¯¤À¤µ¤¤¡¥s
¥³¥Þ¥ó¥É¤òÍѤ¤¤¿¾ì¹ç¡¤‘/’¼«¿È¤¬¥³¥Þ¥ó¥É¤Ç»ÈÍÑ
¤µ¤ì¤Ê¤¤¸Â¤ê¡¤Í¥À褵¤ì¤ë¥»¥Ñ¥ì¡¼¥¿¤Ï‘/’¤Ë¤·¡¤¥³¥Þ¥ó¥É¤Ç»ÈÍѤµ¤ì¤ë¾ì
¹ç¤Ï‘,’¤ò»ÈÍѤ¹¤Ù¤¤Ç¤¹¡¥
¥Þ¥¯¥íÄêµÁ¤ÎÊýË¡¤Î¾ÜºÙ¤Ï¡¤See Macro Definitions. ¥Þ¥¯¥í¤Ç
AC_REQUIRE
¤ò»ÈÍѤ·¤Æ¤ª¤é¤º¡¤AC_REQUIRE
¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Î¥ª¥Ö
¥¸¥§¥¯¥È¤¬¤Ê¤¤¤³¤È¤ò´üÂÔ¤¹¤ë¾ì¹ç¡¤m4_define
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥µ¿
¤ï¤·¤¤¾ì¹ç¤Ï¡¤AC_DEFUN
¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥Á´¤Æ¤ÎAC_REQUIRE
ʸ¤Ï¡¤dnl
¤µ¤ì¤Æ¤¤¤ë¥Þ¥¯¥í¤ÎºÇ½é¤Ë½ñ¤¯¤Ù¤¤Ç¤¹¡¥
°ú¿ô¤Î¿ô¤Ë°Í¸¤¹¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡¥°ú¿ô¤¬Â¤ê¤Ê¤¤¤³¤È¤òÄ´ºº¤¹¤ëÂå¤ï¤ê¤Ë¡¤ ¶õ¤Ç¤Ê¤¤¤³¤È¤ò¥Æ¥¹¥È¤·¤Æ¤¯¤À¤µ¤¤¡¥¤è¤ê´Êñ¤Ç¤è¤êͽ¬²Äǽ¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼ ¥¹¤ò¥æ¡¼¥¶¤ËÄ󶡤·¡¤Í¾Ê¬¤Ê°ú¿ô¤ËÂФ¹¤ë;ÃϤòÀáÌ󤷤Ƥ¯¤À¤µ¤¤¡¥
¥Þ¥¯¥í¤¬Ã»¤¯¤Ê¤¤¾ì¹ç¤Ï¡¤¹Ô¤ÎºÇ½é¤Ë‘])’¤ò»Ä¤·¡¤ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¥Þ¥¯¥í
¤Î̾Á°¤ò·«¤êÊÖ¤¹¥³¥á¥ó¥È¤ò³¤±¤Æ¤¯¤À¤µ¤¤¡¥¤³¤ì¤Ï¡¤configure
¤Ë
;ʬ¤Ê²þ¹Ô¤òƳÆþ¤·¤Þ¤¹¡¥Ä̾ï¤ÏÌäÂꤢ¤ê¤Þ¤»¤ó¤¬¡¤ºï½ü¤·¤¿¤¤¾ì¹ç¤Ï¡¤¹Ô¤ÎºÇ
¸å¤Ë‘[]dnl’¤ò»ÈÍѤ¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥Æ±Íͤˡ¤¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Î¸å¤Ë¡¤
²þ¹Ô¤òºï½ü¤¹¤ë¤¿¤á¡¤‘[]dnl’¤ò»ÈÍѤ¹¤ë¤³¤È¤â²Äǽ¤Ç¤¹¡¥M4¤¬‘dnl’
¤ò¥Æ¥¥¹¥È¤ä¥Þ¥¯¥í½ÐÎϤÎÁ°¤ËÉÕ¤±¤é¤ì¤Æ¤¤¤ë¤â¤Î¤È¤·¤Æ²ò¼á¤·¤Ê¤¤¤³¤È¤ò³Î¼Â
¤Ë¤¹¤ë¤¿¤á¡¤‘[]dnl’¤Ï‘dnl’¤ÎÂå¤ï¤ê¤È¤·¤Æ¿ä¾©¤µ¤ì¤Æ¤¤¤Þ¤¹¡¥Î㤨
¤Ð°Ê²¼¤ÎÂå¤ï¤ê¤ò¹Í¤¨¤Þ¤¹¡¥
AC_DEFUN([AC_PATH_X],
[AC_MSG_CHECKING([for X])
AC_REQUIRE_CPP()
# …omitted…
AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
fi])
°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯¤Ù¤¤Ç¤¹¡¥
AC_DEFUN([AC_PATH_X],
[AC_REQUIRE_CPP()[]dnl
AC_MSG_CHECKING([for X])
# …omitted…
AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
fi[]dnl
])# AC_PATH_X
¥Þ¥¯¥í¤¬Ä¹¤¤¾ì¹ç¡¤ÏÀÍýŪ¤Ê²ô¤Ëʬ¤±¤Æ¤ß¤Æ¤¯¤À¤µ¤¤¡¥Ä̾ï¥Þ¥¯¥í¤Ï¡¤´Ø¿ô¤Î¥Ð
¥°¤òÄ´ºº¤·¡¤¤³¤Î¥»¥Ã¥È¥¢¥Ã¥×¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ÎÊä½õ¥Þ¥¯¥í¤¬¤¢¤ë
AC_LIBOBJ
¤ÎÃÖ´¹¤ò½àÈ÷¤·¤Þ¤¹¡¥¥³¡¼¥É¤ÎÍ×ÁǤËÊä½õ¥Þ¥¯¥í¤òƳÆþ¤¹¤ë¤³
¤È¤ò¤¿¤á¤é¤ï¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡¥
¿ä¾©¤µ¤ì¤ë¥³¡¼¥Ç¥£¥ó¥°¥¹¥¿¥¤¥ë¤ò¶¯Ä´¤¹¤ë¤¿¤á¤Ë¡¤¸Å¤¤¼êË¡¤Ç½ñ¤«¤ì¤Æ¤¤¤ë¥Þ ¥¯¥í¤ò¾Ò²ð¤·¤Þ¤¹¡¥
dnl Check for EMX on OS/2. dnl _AC_EMXOS2 AC_DEFUN(_AC_EMXOS2, [AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2, [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, return __EMX__;)], ac_cv_emxos2=yes, ac_cv_emxos2=no)]) test "$ac_cv_emxos2" = yes && EMXOS2=yes])
¿·¤·¤¤ÊýË¡¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡¥
# _AC_EMXOS2 # ---------- # Check for EMX on OS/2. m4_define([_AC_EMXOS2], [AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])], [ac_cv_emxos2=yes], [ac_cv_emxos2=no])]) test "$ac_cv_emxos2" = yes && EMXOS2=yes[]dnl ])# _AC_EMXOS2
Previous: Obsoleting Macros, Up: Writing Autoconf Macros [Contents][Index]