Next: , Previous: Shell Script Compiler, Up: Writing configure.ac   [Contents][Index]


3.1.2 Autoconf¸À¸ì

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.