Next: configure.ac Layout, Previous: Shell Script Compiler, Up: Writing configure.ac [Contents][Index]
Autoconf¸À¸ì¤Ï¡¤¥×¥ì¡¼¥ó¥Æ¥¥¹¥ÈƱÍͤ˼ºݤΥ³¡¼¥É¤ò°·¤¦¤Î¤Ç¡¤Â¿¤¯¤Î¾¤Î ¥³¥ó¥Ô¥å¡¼¥¿¸À¸ì¤ÈÁ´¤¯°Û¤Ê¤ê¤Þ¤¹¡¥Î㤨¤ÐC¤Ç¤Ï¡¤¥Ç¡¼¥¿¤ÈÌ¿Îá¤ÏÁ´¤¯°Û¤Ê¤ë ¹½Ê¸¾å¤Î¥¹¥Æ¡¼¥¿¥¹¤È¤Ê¤ê¤Þ¤¹¤¬¡¤Autoconf¤Ç¤Ï¡¤¤½¤ì¤é¤Î¥¹¥Æ¡¼¥¿¥¹¤Ï¸·Ì©¤Ë Ʊ¤¸¤Ç¤¹¡¥¤³¤Î¤¿¤á¡¤²æ¡¹¤Ï¥ê¥Æ¥é¥ëʸ»úÎó¤òŸ³«¤µ¤ì¤¿¥Æ¥¥¹¥È¤È¶èÊ̤¹¤ë¼ê Ãʤ¬É¬ÍפǤ¹¡¥¤½¤ì¤Ï°úÍÑÉä¤Ç¤¹¡¥
°ú¿ô¤¬¤¢¤ë¥Þ¥¯¥í¤ò¸Æ¤Ó½Ð¤¹¤È¤¡¤¥Þ¥¯¥í̾¤È³«¤¤¤Æ¤¤¤ë¥«¥Ã¥³¤Î´Ö¤Ë¶õÇò¤¬¤¢¤Ã ¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡¥°ú¿ô¤Ï¡¤M4¤Î°úÍÑÉäʸ»ú‘[’¤È‘]’¤Ç°Ï¤ß¡¤¥«¥ó¥Þ¤Ç ʬ¤±¤ë¤Ù¤¤Ç¤¹¡¥°ú¿ô¤¬Ã±½ã¤Ê¥Æ¥¥¹¥È¤Î¤È¤¤Ï¡¤°úÍÑÉ䤬¤Ê¤¯¤Æ¤âÂç¾æÉפ«¤â ¤·¤ì¤Þ¤»¤ó¤¬¡¤Â¾¤Î¥Þ¥¯¥í¤Î¸Æ¤Ó½Ð¤·¤Î¤è¤¦¤ÊÊ£»¨¤Ê°ú¿ô¤Ï¡¤¾ï¤Ë°úÍÑ Éä¤Ç°Ï¤ó¤Ç¤¯¤À¤µ¤¤¡¥¤³¤Îµ¬Â§¤Ï¡¤Â¾¤Î¥Þ¥¯¥í¤«¤é¤Î¸Æ¤Ó½Ð¤·¤ò´Þ¤á¡¤Á´¤Æ¤Î¥Þ ¥¯¥í¸Æ¤Ó½Ð¤·¤ÇºÆµ¢Åª¤ËŬÍѤµ¤ì¤Þ¤¹¡¥
Î㤨¤Ð¡¤°Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡¥
AC_CHECK_HEADER([stdio.h], [AC_DEFINE([HAVE_STDIO_H])], [AC_MSG_ERROR([Sorry, can't do anything for you])])
¤³¤ì¤Ï¡¤Àµ¤·¤¯°úÍÑÉä¤Ç°Ï¤Þ¤ì¤Þ¤¹¡¥¤½¤Î°úÍѤò°Ê²¼¤Î¤è¤¦¤Ëñ½ã¤Ë¤·¤Æ¤âÂç¾æ Éפ«¤â¤·¤ì¤Þ¤»¤ó¡¥
AC_CHECK_HEADER(stdio.h, [AC_DEFINE(HAVE_STDIO_H)], [AC_MSG_ERROR([Sorry, can't do anything for you])])
AC_MSG_ERROR
¤Î°ú¿ô¤Ï¡¤°úÍÑÉä¤Ç°Ï¤Þ¤ì¤¿¤Þ¤Þ¤À¤È¤¤¤¦¤³¤È¤ËÃí°Õ¤·¤Æ
¤¯¤À¤µ¤¤¡¥¤½¤¦¤·¤Ê¤¤¾ì¹ç¤Ï¡¤¥«¥ó¥Þ¤Ï°ú¿ô¤òʬΥ¤¹¤ë¤â¤Î¤È¤·¤Æ²ò¼á¤µ¤ì¤ë¤Ç
¤·¤ç¤¦¡¥
°Ê²¼¤ÎÎã¤Ï¡¤°úÍÑÉä¤Ç°Ï¤Þ¤ì¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¤´Ö°ã¤Ã¤Æ¤¤¤Æ´í¸±¤Ç¤¹¡¥
AC_CHECK_HEADER(stdio.h, AC_DEFINE(HAVE_STDIO_H), AC_MSG_ERROR([Sorry, can't do anything for you]))
¾ì¹ç¤Ë¤è¤Ã¤Æ¤Ï¡¤¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Î¤è¤¦¤Ê¥Æ¥¥¹¥È¤ò»ÈÍѤ¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤· ¤ì¤Þ¤»¤ó¡¥¥Þ¥¯¥í°ú¿ô¤È¤·¤ÆÅϤµ¤ì¤Ê¤¤¤È¤¤Ç¤â¥Æ¥¥¹¥È¤Ï°úÍÑÉä¤Ç°Ï¤àɬÍפ¬ ¤¢¤ê¤Þ¤¹¡¥
echo "Hard rock was here! --[AC_DC]"
·ë²Ì¤È¤·¤Æ°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡¥
echo "Hard rock was here! --AC_DC"
Ʊ¤¸¥Æ¥¥¹¥È¤ò¥Þ¥¯¥í°ú¿ô¤Ç»ÈÍѤ¹¤ë¤È¤¤Ï¡¤¤½¤Î¤¿¤á¤Ë;ʬ¤Ê°úÍÑÉä¥ì¥Ù¥ë¤ò Äɲ乤ëɬÍפ¬¤¢¤ê¤Þ¤¹(°ì¤Ä¤Ï¥Þ¥¯¥íÃÖ´¹¤Çºï½ü¤µ¤ì¤ë¤¿¤á¤Ç¤¹)¡¥½¾¤Ã¤Æ°ìÈÌ Åª¤Ë¡¤Á´¤Æ¤Î¥ê¥Æ¥é¥ëʸ»úÎó¤Î°ú¿ô¤ËÂФ·¤ÆÆó½Å¤Ë°úÍÑÉä¤ò»ÈÍѤ¹¤ë¤³¤È ¤ÏÎɤ¤¹Í¤¨¤Ç¤¹¡¥
AC_MSG_WARN([[AC_DC stinks --Iron Maiden]])
À䤨¤º¸í²ò¤µ¤ì¤Æ¤¤¤¿Autoconf¤Î¹½À®Êª¤Î°ì¤Ä¤ò¡¤º£¤Ç¤ÏÍý²ò¤Ç¤¤ë¤Ç¤·¤ç¤¦ ...Âè°ì¤Îµ¬Â§¤Ï¡¤¥Þ¥¯¥íŸ³«¤¬Í½Â¬¤µ¤ì¤ë¤È¤³¤í¤Ç¤Ï¡¤°úÍÑÉä¤Î Ÿ³«¤òͽ¬¤·¤Æ¤¯¤À¤µ¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡¥¤¹¤Ê¤ï¤Á¡¤°úÍÑÉä¤Î¥ì¥Ù¥ë¤Î°ì¤Ä¤¬ ¼º¤ï¤ì¤ë¤È¤¤¤¦¤³¤È¤Ç¤¹¡¥Î㤨¤Ð¡¤°Ê²¼¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡¥
AC_COMPILE_IFELSE([char b[10];],, [AC_MSG_ERROR([you lose])])
¤³¤ì¤ÏÀµ¤·¤¤¤â¤Î¤Ç¤¹¡¥¤³¤³¤Ç¡¤AC_COMPILE_IFELSE
ºÇ½é¤Î°ú¿ô¤Ï¡¤
‘char b[10];’¤Ç¡¤°ìÅÙŸ³«¤µ¤ì¤Æ¡¤·ë²Ì¤È¤·¤Æ‘char b10;’¤Ë¤Ê¤ê¤Þ
¤¹¡¥(M4¤Îchangequote
¥×¥ê¥ß¥Æ¥£¥Ö¤òÍѤ¤¤Æ¤³¤ÎÌäÂê¤ò²ò·è¤¹¤ë¤³¤È¤¬¡¤
°ìÈÌŪ¤Ê´·½¬¤È¤·¤Æ°ÊÁ°¤ÎAutoconf¤Ë¤¢¤ê¤Þ¤·¤¿¤¬¡¤¤½¤ì¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ
¤¤¡ª)¤µ¤Æ¡¤¤è¤ê¾Ü¤·¤¯¸«¤Æ¤ß¤Þ¤·¤ç¤¦¡¥¤â¤¦°ìÊý¤Ç¤Ï¡¤Âè°ì°ú¿ô¤Ï¥ê¥Æ¥é¥ë¤È
¤·¤ÆÍý²ò¤µ¤ì¡¤¤½¤Î¤¿¤á¤½¤ì¤Ï°úÍÑÉä¤ÇÆó½Å¤Ë°Ï¤àɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
AC_COMPILE_IFELSE([[char b[10];]],, [AC_MSG_ERROR([you lose])])
Voilࡤº£²ó¤Ï¼ÂºÝ¤Ë‘char b[10];’¤òÀ¸À®¤·¤Æ¤¤¤ë¤Î¤Ç¤¹¡ª
Ãí°Õ¿¼¤¯ÆÉ¤ó¤Ç¤¤¤ë¤È¡¤¤³¤ì¤é¤Î¥¬¥¤¥É¥é¥¤¥ó¤Ë¤è¤ì¤Ð¡¤¾åµ¤ÎÎã¤Î
AC_CHECK_HEADER
¤Ç°úÍÑÉä¤Ç“Àµ¤·¤¯”°Ï¤Þ¤ì¤Æ¤¤¤ë¤â¤Î¤Ï¡¤¼ÂºÝ¤Ë¤Ï»°
ÁȤΰúÍÑÉ䤬¤ê¤Ê¤¤¤³¤È¤Ëµ¤ÉÕ¤¯¤Ç¤·¤ç¤¦¡ª¤½¤ì¤Ë¤â¤«¤«¤ï¤é¤º¡¤²ÄÆÉÀ¤Î¤¿
¤á¡¤¥ê¥Æ¥é¥ë¤òÆó½Å¤Ë°úÍÑÉä¤Ç°Ï¤à¤³¤È¤Ï¡¤¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ç¤ÏɬÍפʤȤ³¤í¤Ç
¤Î¤ß»ÈÍѤµ¤ì¤Þ¤¹¡¥
¥ª¥×¥·¥ç¥ó¤Î°ú¿ô¤ò¼õ¤±Æþ¤ì¤ë¥Þ¥¯¥í¤â¤¢¤ê¡¤¤½¤ì¤Ï¤³¤Î¥É¥¥å¥á¥ó¥È¤Ç¤Ï(°ú ÍÑÉä¤Îʸ»ú¤ò»ÈÍѤ·¤Æº®Í𤷤ʤ¤¤è¤¦¤Ë)¡¤[arg]¤È¤·¤ÆÉ½¸½¤·¤Þ¤¹¡¥¶õ¤Î ¤Þ¤Þ¤Ë¤·¤¿¤ê¡¤ÌÀ¼¨Åª¤Ë°ú¿ô¤ò¶õ¤Ë¤¹¤ë¤¿¤á¤Ë‘[]’¤ò»ÈÍѤ·¤¿¤ê¡¤Ã±½ã¤Ë ¸åÃÖ¤µ¤ì¤ë¥«¥ó¥Þ¤ò¾Êά¤·¤¿¤ê¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡¥°Ê²¼¤Î»°¹Ô¤ÏÅù²Á¤È¤Ê¤ê¤Þ ¤¹¡¥
AC_CHECK_HEADERS(stdio.h, [], [], []) AC_CHECK_HEADERS(stdio.h,,,) AC_CHECK_HEADERS(stdio.h)
configure.ac¤Ç¤Ï¡¤Ã±ÆÈ¹Ô¤Ë¤½¤ì¤¾¤ì¤Î¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤ò½ñ¤¯¤³¤È¤¬ºÇ
Á±¤Ç¤¹¡¥¤Û¤È¤ó¤É¤Î¥Þ¥¯¥í¤Ï¡¤Í¾Ê¬¤Ê²þ¹Ô¤ò²Ã¤¨¤Þ¤»¤ó¡¥¤½¤ì¤é¤Ï¡¤¥³¥Þ¥ó¥É¤ò
½ªÃ¼¤¹¤ë¤¿¤á¤Î¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤Î¸å¤Î²þ¹Ô¤Ë°Í¸¤·¤Æ¤¤¤Þ¤¹¡¥¤³¤Î¥¢¥×¥í¡¼¥Á¤Ç
¤Ï¡¤À¸À®¤µ¤ì¤¿configure
¥¹¥¯¥ê¥×¥È¤ò¡¤Â¿¤¯¤Î¶õÇò¹Ô¤òÁÞÆþ¤¹¤ë¤³
¤È¤Ê¤¯¡¤¼ã´³ÆÉ¤ß¤ä¤¹¤¯¤·¤Þ¤¹¡¥¥·¥§¥ë¤Ï¡¤²þ¹Ô¤Ë´³¾Ä¤µ¤ì¤ë¤³¤È¤Ê¤¯³ä¤êÅö¤Æ
¤ë¤³¤È¤¬²Äǽ¤Ê¤Î¤Ç¡¤¥·¥§¥ëÊÑ¿ô¤ò¥Þ¥¯¥í¸Æ¤Ó½Ð¤·¤ÈƱ¤¸¹Ô¤ÇÀßÄꤹ¤ë¤È¡¤Ä̾ï
¤Ï°ÂÁ´¤Ç¤¹¡¥
configure.ac¥Õ¥¡¥¤¥ë¤Ë‘#’¤Ç»Ï¤Þ¤ë¥³¥á¥ó¥È¤ò´Þ¤á¤ë¤³¤È¤â²Äǽ ¤Ç¤¹¡¥Î㤨¤Ð¡¤°Ê²¼¤Î¤è¤¦¤Ê¹Ô¤òconfigure.ac¥Õ¥¡¥¤¥ë¤ÎºÇ½é¤Ë½ñ¤¯¤È Ìò¤ËΩ¤Ä¤Ç¤·¤ç¤¦¡¥
# Process this file with autoconf to produce a configure script.