Previous: C++ Compiler, Up: Compilers and Preprocessors   [Contents][Index]


5.10.5 Fortran¥³¥ó¥Ñ¥¤¥é¤ÎÆÃħ

Autoconf¤ÎFortran¥µ¥Ý¡¼¥È¤Ï¡¤Æó¤Ä¤Î¥«¥Æ¥´¥ê¤Ëʬ¤±¤é¤ì¤Þ¤·¤¿¡¥¤³¤ì¤Þ¤Ç¤Î Fortran 77¥Þ¥¯¥í(F77)¤È¡¤¸½ºß¤ÎFortram¥Þ¥¯¥í(FC)¤Ç¤¹¡¥Á°¼Ô ¤ÏÅÁÅýŪ¤ÊFortram 77¥³¡¼¥É¤òÁÛÄꤷ¤Æ¤¤¤Æ¡¤F77¡¤FFLAGS¡¤¤½ ¤·¤ÆFLIBS¤È¤¤¤Ã¤¿½ÐÎÏÊÑ¿ô¤¬¤¢¤ê¤Þ¤¹¡¥¸å¼Ô¤Ï¡¤¤è¤ê¿·¤·¤¤Fortran¤Î ɸ½à¤Î¸µ¤Ç¥³¥ó¥Ñ¥¤¥ë²Äǽ(¤Þ¤¿¤Ïɬ¿Ü)¤Ç¤¢¤ë¡¤¤è¤ê¿·¤·¤¤¥×¥í¥°¥é¥à¤òÁÛÄꤷ ¤Æ¤¤¤Æ¡¤FC¡¤FCFLAGS¡¤¤½¤·¤ÆFCLIBS¤È¤¤¤Ã¤¿½ÐÎÏÊÑ¿ô¤¬ ¤¢¤ê¤Þ¤¹¡¥

Æó¤Ä¤Î¿·¤·¤¤¥Þ¥¯¥íAC_FC_SRCEXT¤ÈAC_FC_FREEFORM(°Ê²¼¤ò»²¾È) °Ê³°¤Ç¤Ï¡¤FC¤ÈF77¤Î¥Þ¥¯¥í¤Îưºî¤Ï¤Û¤È¤ó¤ÉƱ¤¸¤Ê¤Î¤Ç¡¤¤³¤Î ¥»¥¯¥·¥ç¥ó¤Ç¤Þ¤È¤á¤ÆÀâÌÀ¤·¤Æ¤¤¤Þ¤¹¡¥

Macro: AC_PROG_F77 ([compiler-search-list])

»ÈÍѤ¹¤ëFortran 77¥³¥ó¥Ñ¥¤¥é¤ò·èÄꤷ¤Þ¤¹¡¥F77¤¬´Ä¶­ÊÑ¿ô¤Ç¤Þ¤ÀÀßÄê ¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤g77¡¤f77¡¤¤½¤·¤Æ¤½¤Î¾¤Î̾Á°¤òÄ´ºº¤·¤Þ¤¹¡¥ ¸«¤Ä¤«¤Ã¤¿¥³¥ó¥Ñ¥¤¥é̾¤ò¡¤½ÐÎÏÊÑ¿ôF77¤ËÀßÄꤷ¤Þ¤¹¡¥

¤·¤«¤·¡¤¤³¤Î¥Þ¥¯¥í¤Ï¥ª¥×¥·¥ç¥ó°ú¿ô¤òÍѤ¤¤Æ¸Æ¤Ó½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¡¤»ØÄꤹ¤ë ¾ì¹ç¤Ï¡¤¸¡º÷¤¹¤ëFortran 77¥³¥ó¥Ñ¥¤¥é¤ò¥¹¥Ú¡¼¥¹¤Ç¶èÀڤ俥ꥹ¥È¤Ë¤¹¤ëɬÍ× ¤¬¤¢¤ê¤Þ¤¹¡¥¤³¤ì¤Ç¡¤¥æ¡¼¥¶¤¬Fortran 77¥³¥ó¥Ñ¥¤¥é¤ËÂФ¹¤ëÂå¤ï¤ê¤Î¸¡º÷¥ê¥¹ ¥È¤ò»ØÄꤹ¤ëµ¡²ñ¤¬Í¿¤¨¤é¤ì¤Þ¤¹¡¥Î㤨¤Ð¡¤¥Ç¥Õ¥©¥ë¥È¤Î½ç½ø¤¬¤¤¤ä¤Ê¾ì¹ç¤Ï¡¤ °Ê²¼¤Î¤è¤¦¤Ë¤·¤ÆAC_PROG_F77¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬²Äǽ¤Ç¤¹¡¥

AC_PROG_F77(fl32 f77 fort77 xlf g77 f90 xlf90)

g77(GNU Fortran 77¥³¥ó¥Ñ¥¤¥é)¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤ AC_PROG_F77¤Ï¥·¥§¥ëÊÑ¿ôG77¤ò‘yes’¤ËÀßÄꤷ¤Þ¤¹¡¥½ÐÎÏÊÑ ¿ôFFLAGS¤¬´Ä¶­ÊÑ¿ô¤ÇÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤g77¤ËÂФ·¤Æ ‘-g -O2’(‘-g’¤ò¼õ¤±Æþ¤ì¤Ê¤¤g77¤Ç¤Ï‘-O2’)¤òÀßÄꤷ¡¤ ¾¤ÎFortran 77¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï‘-g’¤òÀßÄꤷ¤Þ¤¹¡¥

Macro: AC_PROG_FC ([compiler-search-list], [dialect])

»ÈÍѤ¹¤ëFortran¥³¥ó¥Ñ¥¤¥é¤ò·èÄꤷ¤Þ¤¹¡¥FC¤¬´Ä¶­ÊÑ¿ô¤Ç¤Þ¤ÀÀßÄꤵ¤ì ¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤dialect¤¬¸¡º÷¤·¤Æ¤¤¤ëFortran dialect²¿¤«¤ò¼¨¤¹¥Ò¥ó ¥È¤Ë¤Ê¤ê¤Þ¤¹¡¥¥Ç¥Õ¥©¥ë¥È¤È¤·¤Æ¡¤ÍøÍѲÄǽ¤Êdialect¤ÎºÇ¤â¿·¤·¤¤¤â¤Î¤ò¸¡º÷ ¤·¤Þ¤¹¡¥¸«¤Ä¤«¤Ã¤¿¥³¥ó¥Ñ¥¤¥é̾¤ò½ÐÎÏÊÑ¿ôFC¤ËÀßÄꤷ¤Þ¤¹¡¥

¥Ç¥Õ¥©¥ë¥È¤Ç¡¤¤è¤ê¿·¤·¤¤dialect¤¬¤è¤ê¸Å¤¤dialect¤ËÂå¤ï¤Ã¤ÆÁªÂò¤µ¤ì¤Þ¤¹¤¬¡¤ dialect¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¡¤»ØÄꤵ¤ì¤Æ¤¤¤ëdialect¤Ç»Ï¤Þ¤ë¡¤¤è¤ê ¸Å¤¤dialect¤¬ÁªÂò¤µ¤ì¤Þ¤¹¡¥dialect¤Ï¡¤¸½ºßFortran 77¡¤Fortran 90¡¤ ¤Þ¤¿¤ÏFortran 95¤¬²Äǽ¤Ç¤¹¡¥¤·¤«¤·¡¤¤³¤ì¤ÏÁªÂò¤µ¤ì¤ë¥³¥ó¥Ñ¥¤¥é¤Î̾ Á°¤Î¥Ò¥ó¥È(Î㤨¤Ð¡¤f90¤Þ¤¿¤Ïf95)¤Ë¤Ê¤ë¤À¤±¤Ç¡¤ÆÃÄê¤Î¸À¸ì ¤Îɸ½à¤ò¼ÂºÝ¤Ë¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¤³¤È¤Ø¤ÎÊݾڤϻî¤ß¤Þ¤»¤ó¡¥¤³¤Î¤¿¤á¡¤ dialect¥ª¥×¥·¥ç¥ó¤òÈò¤±¡¤AC_PROG_FC¤À¤±¤òºÇ¤â¿·¤·¤¤Fortran ɸ½à¤Ë¸ß´¹À­¤Î¤¢¤ë¥³¡¼¥ÉÂФ·¤Æ»ÈÍѤ·¤¿Êý¤¬Îɤ¤¤Ç¤·¤ç¤¦¡¥

¤Þ¤¿¡¤¤³¤Î¥Þ¥¯¥í¤Ï¡¤ºÇ½é¤Î¥ª¥×¥·¥ç¥ó°ú¿ô¤ò»ØÄꤷ¤Æ¸Æ¤Ó½Ð¤µ¤ì¤ë¾ì¹ç¡¤¤½¤ì ¤Ï¡¤AC_PROG_F77¤ÈƱÍͤˡ¤¸¡º÷¤¹¤ëFortran¥³¥ó¥Ñ¥¤¥é¤ò¥¹¥Ú¡¼¥¹¤Çʬ Î¥¤·¤¿¥ê¥¹¥È¤Ë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥

½ÐÎÏÊÑ¿ôFCFLAGS¤¬´Ä¶­ÊÑ¿ô¤ÇÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤GNU g77¤Ë ÂФ·¤Æ¤Ï¤½¤ì¤ò-g -02¤Ë(¤Þ¤¿¤Ï¡¤g77¤¬-g¤ò¼õ¤±Æþ ¤ì¤Ê¤¤¤È¤³¤í¤Ç¤Ï-O2¤Ë)ÀßÄꤷ¤Þ¤¹¡¥¤½¤ì°Ê³°¤Ç¤Ï¡¤¤¹¤Ù¤Æ¤ÎFortran ¥³¥ó¥Ñ¥¤¥é¤ËÂФ·¡¤FCFLAGS¤ò-g¤ËÀßÄꤷ¤Þ¤¹¡¥

Macro: AC_PROG_F77_C_O
Macro: AC_PROG_FC_C_O

Fortran¥³¥ó¥Ñ¥¤¥é¤¬¡¤¥ª¥×¥·¥ç¥ó‘-c’¤È‘-o’¤òƱ»þ¤Ë¤ò¼õ¤±Æþ¤ì¤ë ¤«¤É¤¦¤«¥Æ¥¹¥È¤·¡¤¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ï¡¤¤½¤ì¤¾¤ì F77_NO_MINUS_C_MINUS_O¤Þ¤¿¤ÏFC_NO_MINUS_C_MINUS_O¤òÄêµÁ¤· ¤Þ¤¹¡¥

°Ê²¼¤Î¥Þ¥¯¥í¤Ï¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤ÎÆÃħ¤òÄ´ºº¤·¤Þ¤¹¡¥¤³¤³¤Ç¥ê¥¹¥È¥¢¥Ã¥× ¤µ¤ì¤Æ¤¤¤Ê¤¤ÆÃħ¤òÄ´ºº¤¹¤ë¤¿¤á¤Ë¡¤¸½ºß¤Î¸À¸ì(see Language Choice)¤¬ Fortran 77¤Þ¤¿¤ÏFortran¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤³¤È¤òAC_LANG(Fortran 77) ¤äAC_LANG(Fortran)¤ÇºÇ½é¤Ë³Îǧ¤·¡¤AC_COMPILE_IFELSE (see Running the Compiler)¤äAC_RUN_IFELSE (see Run Time) ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡¥

Macro: AC_F77_LIBRARY_LDFLAGS
Macro: AC_FC_LIBRARY_LDFLAGS

Fortran¥×¥í¥°¥é¥à¤ä¶¦Í­¥é¥¤¥Ö¥é¥ê¤ò¤¦¤Þ¤¯¥ê¥ó¥¯¤¹¤ë¤¿¤á¤ËɬÍ×¤Ê Fortran¤Î¥¤¥ó¥È¥ê¥ó¥·¥Ã¥¯¤È¥é¥ó¥¿¥¤¥à¥é¥¤¥Ö¥é¥ê(Fortran intrinsic and run-time libraries)¤ËÂФ·¤Æ¡¤¥ê¥ó¥«¥Õ¥é¥°(Î㤨¤Ð‘-L’ ¤È ‘-l’)¤ò·èÄꤷ¤Þ¤¹¡¥½ÐÎÏÊÑ¿ô FLIBS¤äFCLIBS¤Ë¤Ï¡¤¤³¤ì¤é ¤Î¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤Þ¤¹(¤½¤ì¤é¤Ï¥ê¥ó¥¯»þ¤ËLIBS¤Î¸å¤Ë´Þ¤á¤ë¤Ù¤­¤Ç¤¹)¡¥

¤³¤Î¥Þ¥¯¥í¤Ï¡¤Ã±°ì¤Î¥×¥í¥°¥é¥à¤ä¶¦Í­¥é¥¤¥Ö¥é¥ê¤Ë¡¤Î㤨¤Ð¡¤C++¤ÈFortran¤Î ¥½¡¼¥¹¥³¡¼¥É¤òº®ºß¤µ¤»¤ëɬÍפ¬¤¢¤ë¤È¤­ÍøÍѤµ¤ì¤Þ¤¹(see Mixing Fortran 77 With C and C++ in GNU Automake)¡¥

Î㤨¤Ð¡¤C++¤ÈFortran¥³¥ó¥Ñ¥¤¥é¤ÇÀ¸À®¤µ¤ì¤ë¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤ò¡¤¤ª¸ß¤¤ ¤Ë¥ê¥ó¥¯¤¹¤ëɬÍפ¬¤¢¤ë¤È¤­¡¤¥ê¥ó¥¯¤Ë¤ÏC++¥³¥ó¥Ñ¥¤¥é/¥ê¥ó¥«¤¬»ÈÍѤµ¤ì¤ë¤Ï ¤º¤Ç¤¹(C++ÆÃÍ­¤Î¤â¤Î¤Ï¡¤¥ê¥ó¥¯»þ¤Ë¥°¥í¡¼¥Ð¥ë¥³¥ó¥¹¥È¥é¥¯¥¿¡¤¥¤¥ó¥¹¥¿¥ó¥¹ ¥Æ¥ó¥×¥ì¡¼¥È¡¤Îã³°½èÍýÅù¤ò¸Æ¤Ó½Ð¤¹É¬Íפ¬À¸¤¸¤ë¤¿¤á¤Ç¤¹)¡¥

¤·¤«¤·¡¤Fortran¤Î¥¤¥ó¥È¥ê¥ó¥·¥Ã¥¯¤È¥é¥ó¥¿¥¤¥à¥é¥¤¥Ö¥é¥ê¤â¥ê¥ó¥¯¤¹¤ëɬÍ× ¤¬¤¢¤ê¤Þ¤¹¤¬¡¤C++¥³¥ó¥Ñ¥¤¥é/¥ê¥ó¥«¤Ï¡¤¤³¤ì¤é¤ÎFortran¥é¥¤¥Ö¥é¥ê¤òÄɲä¹ ¤ëÊýË¡¤ò¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÃΤäƤ¤¤Þ¤»¤ó¡¥¤½¤Î¤¿¤á¡¤¤³¤ì¤é¤ÎFortran¥é¥¤¥Ö¥é ¥ê¤ò·èÄꤹ¤ë¥Þ¥¯¥í¤¬ºîÀ®¤µ¤ì¤Þ¤·¤¿¡¥

¥Þ¥¯¥íAC_F77_DUMMY_MAIN/AC_FC_DUMMY_MAIN¤ä AC_F77_MAIN/AC_FC_MAIN¤Ï¡¤Fortran¤ÇC/C++¤Ë¥ê¥ó¥¯¤¹¤ëɬÍפ¬ ¤¢¤ë¤È¤­¤â¤ª¤½¤é¤¯É¬ÍפǤ¹¡¥°Ê²¼¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡¥

Macro: AC_F77_DUMMY_MAIN ([action-if-found], [action-if-not-found])
Macro: AC_FC_DUMMY_MAIN ([action-if-found], [action-if-not-found])

¿¤¯¤Î¥³¥ó¥Ñ¥¤¥é¤Ç¤Ï¡¤AC_F77_LIBRARY_LDFLAGS¤ä AC_FC_LIBRARY_LDFLAGS¤Ç¸«¤Ä¤«¤ëFortran¥é¥¤¥Ö¥é¥ê¤Ï¡¤Fortran I/O¤Î ¤è¤¦¤Ê¤â¤Î¤ò½é´ü²½¤·¤¿¤ê¡¤¥æ¡¼¥¶¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¡¤(¤¤¤ï¤æ¤ë) MAIN__¤Î¤è¤¦¤Ê̾Á°¤ò»ý¤Ä¥æ¡¼¥¶Ä󶡤Υ¨¥ó¥È¥ê¡¼´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¡¤ÆÈ ¼«¤Îmain¥¨¥ó¥È¥ê¡¼´Ø¿ô¤òÄ󶡤·¤Æ¤¤¤Þ¤¹¡¥ AC_F77_DUMMY_MAIN/AC_FC_DUMMY_MAIN¤ä AC_F77_MAIN/AC_FC_MAIN¥Þ¥¯¥í¤Ï¡¤¤³¤ÎÁê¸ßºîÍѤò°·¤¦ÊýË¡¤òÍý ²ò¤·¤Þ¤¹¡¥

(I/O¤Ê¤É¤Ç¤Ï¤Ê¤¤)½ã¿è¤Ê¿ôÃÍ´Ø¿ô¤Î¤¿¤á¤ËFortran¤ò»ÈÍѤ·¤Æ¤¤¤ë¤È¤­¡¤ÆÈ¼«¤Î main¤òÄ󶡤·¡¤Fortran¥é¥¤¥Ö¥é¥ê¤Î½é´ü²½¤òÄä»ß¤·¤¿¤¤¤³¤È¤â¤è¤¯¤¢¤ê ¤Þ¤¹¡¥¤·¤«¤·¤³¤Î¾ì¹ç¤Ï¡¤¤¤¤¯¤Ä¤«¤Î¥·¥¹¥Æ¥à¤Ç¤Î¥ê¥ó¥¯¥¨¥é¡¼¤òÈò¤±¤ë¤¿¤á¡¤ ¥À¥ß¡¼¤ÎMAIN__¥ë¡¼¥Á¥ó¤òÄ󶡤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¡¥ AC_F77_DUMMY_MAIN¤äAC_FC_DUMMY_MAIN¤Ï¡¤¤½¤Î¤è¤¦¤Ê¥ë¡¼¥Á¥ó ¤¬¥ê¥ó¥¯»þ¤ËÍ׵ᤵ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¡¤¤½¤·¤Æ¤½¤Î̾Á°¤¬²¿¤«¤ò¸¡½Ð¤· ¤Þ¤¹¡¥¥·¥§¥ëÊÑ¿ôF77_DUMMY_MAIN¤äF77_DUMMY_MAIN¤Ï¡¤²ò·èÊýË¡ ¤¬¸«¤Ä¤«¤é¤Ê¤¤¤È¤­¤Ïunknown¡¤¤½¤Î¤è¤¦¤Ê¥À¥ß¡¼¤Îmain¤¬ÉÔÍ× ¤Ê¤È¤­¤Ïnone¤È¤¤¤¦ÃͤòÊÝ»ý¤·¤Þ¤¹¡¥

¥Ç¥Õ¥©¥ë¥È¤Ç¡¤É¬Íפʾì¹ç¤Ï¡¤action-if-found¤Ï F77_DUMMY_MAIN¤äFC_DUMMY_MAIN¤ò¤³¤Î¥ë¡¼¥Á¥ó̾(Î㤨¤Ð MAIN__)¤ËÄêµÁ¤·¤Þ¤¹¡¥[action-if-not-found]¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥¨¥é¡¼ ¤Ç½ªÎ»¤·¤Þ¤¹¡¥

Fortran¤È¥ê¥ó¥¯¤¹¤ë¤¿¤á¤Ë¡¤É¬Íפʾì¹ç¤Ï¥À¥ß¡¼¤Îmain¤òÄêµÁ¤¹¤ë¤¿¤á ¤Ë¡¤user¤ÎC/C++¥×¥í¥°¥é¥à¤Ç°Ê²¼¤Î¤è¤¦¤Ê¥³¡¼¥É¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤Ù¤­¤Ç¤¹¡¥

#ifdef F77_DUMMY_MAIN
#  ifdef __cplusplus
     extern "C"
#  endif
   int F77_DUMMY_MAIN() { return 1; }
#endif

(Fortran 77¤Ç¤Ï¤Ê¤¯Fortran¤ËÂФ·¤Æ¤Ï¡¤F77¤òFC¤ÇÃÖ´¹¤·¤Æ²¼ ¤µ¤¤¡¥)

¤³¤Î¥Þ¥¯¥í¤Ï¤ÏAC_F77_WRAPPERS¤äAC_FC_WRAPPERS¤«¤é¼«Æ°Åª¤Ë ¸Æ¤Ó½Ð¤µ¤ì¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥°ìÈÌŪ¤Ë¥Ç¥Õ¥©¥ë¥È¤Îưºî¤òÊѹ¹¤·¤¿¤¯ ¤Ê¤¤¸Â¤ê¡¤ÌÀ¼¨Åª¤Ë¤Ë¸Æ¤Ó½Ð¤¹É¬ÍפϤ¢¤ê¤Þ¤»¤ó¡¥

Macro: AC_F77_MAIN
Macro: AC_FC_MAIN

¾å¤ÇµÄÏÀ¤·¤¿¤è¤¦¤Ë¡¤Fortran¥é¥¤¥Ö¥é¥ê¤Ë¤Ï¡¤Ä̾ï¤Îmain¤ÎÂå¤ï¤ê¤Ë¡¤ (¤¤¤ï¤æ¤ë)MAIN__¤È¸Æ¤Ð¤ì¤ë¥¨¥ó¥È¥ê¡¼¥Ý¥¤¥ó¥È¤òÄ󶡤¹¤ë¤³¤È¤¬²Äǽ ¤Ê¤â¤Î¤â¿¤¯¡¤¤½¤ì¤Ï¡¤Fortran I/O¤Î¤è¤¦¤Ê¤â¤Î¤ò½é´ü²½¤¹¤ë¤¿¤á¤Ë¡¤Fortran ¥é¥¤¥Ö¥é¥ê¤Îmain´Ø¿ô¤Ç¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡¥ AC_F77_MAIN/AC_FC_MAIN¥Þ¥¯¥í¤Ï¡¤¤½¤Î¤è¤¦¤ÊÂåÍý¤Î main´Ø¿ô¤ÎÍøÍѤ¬²Äǽ¤«¤É¤¦¤«¤ò¸¡½Ð¤·¡¤ F77_MAIN/AC_FC_MAIN¤ò´Ø¿ô¤Î̾Á°¤ËÄêµÁ¤·¤Þ¤¹¡¥(ÂåÍý¤Î main´Ø¿ô¤Î̾Á°¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤ F77_MAIN/AC_FC_MAIN¤Ïñ½ã¤Ëmain¤ËÄêµÁ¤·¤Þ¤¹¡¥)

¤³¤Î¤¿¤á¡¤Fortran¥ë¡¼¥Á¥ó¤¬¡¤I/O¤Î¤è¤¦¤Ê¤â¤Î¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤ËC¤«¤é¸Æ¤Ó½Ð ¤µ¤ì¤ë¤È¤­¡¤¤³¤Î¥Þ¥¯¥í¤ò»ÈÍѤ·¡¤"main"´Ø¿ô¤òmain¤Ç¤Ï¤Ê¤¯ F77_MAIN/FC_MAIN¤Î̾Á°¤Ë¤¹¤Ù¤­¤Ç¤¹¡¥

Macro: AC_F77_WRAPPERS
Macro: AC_FC_WRAPPERS

̾Á°¤¬mangle¤µ¤ì¤ëÊýË¡¤òFortran¥³¥ó¥Ñ¥¤¥é¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ë¤â¤Î¤Ë°ìÃפµ¤» ¤ë¤¿¤á¡¤mangle¤µ¤ì¤Æ¤¤¤ëC/C++¤Î¼±Ê̻Ҥȥ¢¥ó¥À¡¼¥¹¥³¥¢¤¬ÉÕ¤¤¤¿¼±Ê̻ҤÎ̾ Á°¤¬Àµ¤·¤¯¤Ê¤ë¤è¤¦¤Ë¡¤C¥Þ¥¯¥í¤Î F77_FUNC(name,NAME)/FC_FUNC(name,NAME)¤È F77_FUNC_(name,NAME)/FC_FUNC_(name,NAME)¤ò¤½¤ì¤¾¤ìÄêµÁ¤·¤Þ ¤¹¡¥

Fortran¤ÏÂçʸ»ú¾®Ê¸»ú¤Î¶èÊ̤¬Ìµ¤¯¡¤¤³¤Î¤¿¤á¤Ë¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤ÏÁ´¤Æ¤Î ¼±Ê̻Ҥòɸ½àŪ¤Êʸ»ú¤È½ñ¼°¤ËÊÑ´¹¤·¤Þ¤¹¡¥C¤«¤éFortran¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó ½Ð¤·¤¿¤ê¡¤Fortran¤«¤é¸Æ¤Ó½Ð¤·²Äǽ¤ÊC´Ø¿ô¤ò½ñ¤¤¤¿¤ê¤¹¤ë¤¿¤á¤Ë¡¤C¥×¥í¥°¥é ¥à¤Ç¤ÏFortran¥³¥ó¥Ñ¥¤¥é¤¬´üÂÔ¤¹¤ë½ñ¼°¤Ç¡¤¼±Ê̻ҤòÌÀ¼¨Åª¤Ë»ÈÍѤ¹¤ëɬÍפ¬ ¤¢¤ê¤Þ¤¹¡¥¤³¤¦¤¹¤ë¤¿¤á¤Ë¡¤Á´¤Æ¤ÎC¼±Ê̻ҤòAC_F77_WRAPPERS¤ä AC_FC_WRAPPERS¤ÇÄ󶡤µ¤ì¤ë¥Þ¥¯¥í¤Î°ì¤Ä¤Ç¡¤Ã±½ã¤Ë¥é¥Ã¥Ñ¡¼´Ø¿ô¤Ë¤· ¤Þ¤¹¡¥Î㤨¤Ð¡¤°Ê²¼¤Î¤è¤¦¤ÊFortran¤Î¥µ¥Ö¥ë¡¼¥Á¥ó¤¬¤¢¤ë¤È¤·¤Þ¤¹¡¥

      subroutine foobar(x,y)
      double precision x, y
      y = 3.14159 * x
      return
      end

C¤äC++¤Î¥×¥í¥È¥¿¥¤¥×¤Ç¡¤°Ê²¼¤Î¤è¤¦¤ËÀë¸À¤·¤Þ¤¹¡¥

#define FOOBAR_F77 F77_FUNC(foobar,FOOBAR)
#ifdef __cplusplus
extern "C"  /* prevent C++ name mangling */
#endif
void FOOBAR_F77(double *x, double *y);

Àµ¤·¤¤¤â¤Î¤¬ÁªÂò¤Ç¤­¤ë¤è¤¦¤Ë¡¤´Ø¿ô̾¤ÎÂçʸ»ú¤È¾®Ê¸»ú¤ÎξÊý¤Î¥Ð¡¼¥¸¥ç¥ó¤ò F77_FUNC¤ËÅϤ·¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡¥¤Þ¤¿¡¤Fortran 77 ¤Î¥ë¡¼ ¥Á¥ó¤Ø¤ÎÁ´¤Æ¤Î¥Ñ¥é¥á¡¼¥¿¤ò¡¤¥Ý¥¤¥ó¥¿¤È¤·¤ÆÅϤ·¤Æ¤¤¤ë¤³¤È¤Ë¤âÃí°Õ¤·¤Æ¤¯¤À ¤µ¤¤(see Mixing Fortran 77 With C and C++ in GNU Automake)¡¥

(Fortran 77¤ÎÂå¤ï¤ê¤Ë¡¤Fortran¤ËÂФ·¤Æ¤ÏF77¤ÏFC¤ÇÃÖ´¹¤·¤Æ ²¼¤µ¤¤¡¥)

Autoconf¤ÏFortran¥³¥ó¥Ñ¥¤¥é¤¬Ì¾Á°¤òmangle¤¹¤ë¼êË¡¤ò¸¡½Ð¤¹¤ë¤¿¤á¤ËÃÎŪ¤Ê ¼êË¡¤Ç»î¤ß¤Æ¤¤¤Þ¤¹¤¬¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤Ï¤½¤ì¤ò¤Þ¤À¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¤« ¤â¤·¤ì¤Þ¤»¤ó¡¥¤³¤Î¾ì¹ç¡¤¾åµ­¤Î¥³¡¼¥É¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¥¨¥é¡¼¤È¤Ê¤ê¤Þ¤¹¤¬¡¤ ¤½¤ì°Ê³°¤Îưºî(Î㤨¤Ð¡¤Fortran¤Ë´ØÏ¢¤¹¤ëµ¡Ç½¤ÎÄä»ß)¤Ï¡¤ F77_FUNC/FC_FUNC¥Þ¥¯¥í¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¤«¤É¤¦¤«¤òÄ´ºº¤¹¤ë¤³ ¤È¤Ç°ú¤­µ¯¤³¤µ¤ì¤Þ¤¹¡¥

¤µ¤Æ¡¤¤½¤Î¤è¤¦¤Ê¥ë¡¼¥Á¥ó¤òC¥×¥í¥°¥é¥à¤«¤é¸Æ¤Ó½Ð¤¹¤¿¤á¤Ë¡¤°Ê²¼¤Î¤è¤¦¤Ë¤· ¤Æ¤ß¤Þ¤¹¡¥

{
    double x = 2.7183, y;
    FOOBAR_F77(&x, &y);
}

Fortran 77¤Î¼±Ê̻Ҥ¬¥¢¥ó¥À¡¼¥¹¥³¥¢¤ò´Þ¤ó¤Ç¤¤¤ë(Î㤨¤Ðfoo_bar¤Î) ¾ì¹ç¡¤F77_FUNC/FC_FUNC¤ÎÂå¤ï¤ê¤Ë F77_FUNC_/FC_FUNC_¤ò(Ʊ¤¸°ú¿ô¤Ç)»ÈÍѤ¹¤Ù¤­¤Ç¤¹¡¥¤³¤ì¤Ï¡¤¥¢ ¥ó¥À¡¼¥¹¥³¥¢¤ò´Þ¤ó¤Ç¤¤¤ë¾ì¹ç¡¤Fortran¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¤Ï°Û¤Ê¤ë̾Á°¤Ë mangle¤¹¤ë¤â¤Î¤â¤¢¤ë¤«¤é¤Ç¤¹¡¥

Macro: AC_F77_FUNC (name, [shellvar])
Macro: AC_FC_FUNC (name, [shellvar])

¼±ÊÌ»Òname¤¬Í¿¤¨¤é¤ì¤Æ¤¤¤ë¾ì¹ç¡¤¥·¥§¥ëÊÑ¿ôshellvar¤òFortran ¥ê¥ó¥«¤Îµ¬Â§(AC_F77_WRAPPERS¤äAC_FC_WRAPPERS¤â»²¾È¤·¤Æ¤¯¤À ¤µ¤¤)¤Ë¤è¤Ã¤Æ¡¤mangle¤µ¤ì¤ë¥Ð¡¼¥¸¥ç¥ó¤Îname¤òÊÝ»ý¤¹¤ë¤è¤¦¤ËÀßÄꤷ ¤Þ¤¹¡¥shellvar¤Ï¥ª¥×¥·¥ç¥ó¤Ç¤¹¡¥Ä󶡤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¤¥·¥§¥ëÊÑ¿ô¤Ï ñ½ã¤Ëname¤Ë¤Ê¤ê¤Þ¤¹¡¥¤³¤Î¥Þ¥¯¥í¤ÎÌÜŪ¤Ï¡¤¾åµ­¤Î¤è¤¦¤ËC¥×¥ê¥×¥í¥»¥Ã ¥µ¤òÄ̤¸¤Æ¤Ç¤Ï¤Ê¤¯¡¤¸Æ¤Ó½Ð¤·Â¦¤Ë̾Á°¤Îmangle¤Ë´Ø¤¹¤ë¾ðÊó¤Ë¥¢¥¯¥»¥¹¤¹¤ëÊý Ë¡¤òÍ¿¤¨¤ë¤³¤È¤Ç¡¤Î㤨¤Ð¡¤C/C++°Ê³°¤Î¸À¸ì¤«¤éFortran¥ë¡¼¥Á¥ó¤ò¸Æ¤Ó½Ð¤¹¤¿ ¤á¤Ç¤¹¡¥

Macro: AC_FC_SRCEXT (ext, [action-if-success], [action-if-failure])

¥Ç¥Õ¥©¥ë¥È¤Ç¡¤FC¥Þ¥¯¥í¤Ï¡¤¥½¡¼¥¹¥³¡¼¥É¥Õ¥¡¥¤¥ë¤ò.f¤Î³ÈÄ¥»Ò ¤ò»ÈÍѤ·¤Æ¤¤¤ë¥Æ¥¹¥È¤ò¼Â¹Ô¤·¤Þ¤¹¡¥¤·¤«¤·¡¤¥³¥ó¥Ñ¥¤¥é¤Ë¤è¤Ã¤Æ¤Ï¡¤Å¬Àڤʥե¡ ¥¤¥ë̾¤ËÂФ·¤Æ¤Î¤ß¡¤¤è¤ê¿·¤·¤¤¸À¸ì¤Îµ¡Ç½¤òÍøÍѲÄǽ¤Ë¤·¡¤Î㤨¤Ð¡¤Fortran 90¤Îµ¡Ç½¤Ï.f90¥Õ¥¡¥¤¥ë¤À¤±¤Ë¤Ê¤ê¤Þ¤¹¡¥°ìÊý¡¤¤¹¤Ù¤Æ¤Î¥½¡¼¥¹¥Õ¥¡¥¤ ¥ë¤¬.f¤Ç½ª¤ï¤ë¤³¤È¤ò´üÂÔ¤·¤Æ¤¤¤Æ¡¤Â¾¤Î¥Õ¥¡¥¤¥ë̾¤Î³ÈÄ¥»Ò¤ò¥µ¥Ý¡¼ ¥È¤¹¤ë¤¿¤á¤Ë¤ÏÆÃ¼ì¤Ê¥Õ¥é¥°¤¬É¬Íפˤʤê¤Þ¤¹¡¥AC_FC_SRCEXT¥Þ¥¯¥í¤Ï ξÊý¤ÎÌäÂê¤ò°·¤¤¤Þ¤¹¡¥

AC_FC_SRCEXT¤Ï¡¤³ÈÄ¥»Òext(¤¹¤Ê¤ï¤Á¡¤ext¤Ë¤Ï¥É¥Ã¥È¤Ï´Þ ¤Þ¤ì¤Þ¤»¤ó)¤Ç½ª¤ï¤ë¥Õ¥¡¥¤¥ë¤ò¼õ¤±Æþ¤ì¤ëFC¥³¥ó¥Ñ¥¤¥é¤Î¼èÆÀ ¤ò»î¤ß¤Þ¤¹¡¥¤³¤¦¤¹¤ë¤¿¤á¤ËÆÃÄê¤Î¥³¥ó¥Ñ¥¤¥é¥Õ¥é¥°¤¬É¬Íפʾì¹ç¡¤¤½¤ì¤ò½ÐÎÏ ÊÑ¿ôFCFLAGS_ext¤ËÊݸ¤·¤Þ¤¹¡¥¤³¤Î³ÈÄ¥»Ò¤È¤³¤Î¥Õ¥é¥°¤Ï (AC_FC_SRCEXT¤¬ºÆ¤Ó¸Æ¤Ó½Ð¤µ¤ì¤ë¤Þ¤Ç)¡¤¤½¤ì°Ê¹ß¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¤¹¤Ù ¤Æ¤ÎFC¤Ç»ÈÍѤµ¤ì¤Þ¤¹¡¥

Î㤨¤Ð¡¤µ¡Ç½¥Æ¥¹¥È¤Ç.f90¤Î³ÈÄ¥»Ò¤òÍѤ¤¤ë¤¿¤á¡¤ AC_FC_SRCEXT(f90)¤ò»ÈÍѤ·¡¤¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤¿¤á ¤ËɬÍפÊÄɲåե饰¤¬¤¢¤ì¤Ð¡¤FCFLAGS_f90½ÐÎÏÊÑ¿ô¤òÀßÄꤷ¤Þ¤¹¡¥

FCFLAGS_ext¤òñ½ã¤ËFCFLAGS¤Ë½ñ¤­¹þ¤à¤³¤È¤ÏÉÔ²Ä Ç½¤Ç¡¤¤½¤ì¤Ë¤Ï¥³¥ó¥Ñ¥¤¥é¤ÎÀ©¸Â¤Ëµ¯°ø¤¹¤ëÆó¤Ä¤ÎÍýͳ¤¬¤¢¤ê¤Þ¤¹¡¥ºÇ½é¤Î¤â ¤Î¤Ï¡¤°ìÅ٤˰ì¤Ä¤ÎFCFLAGS_ext¤¬»ÈÍѲÄǽ¤Ê¤Î¤Ç¡¤¤³¤È¤Ê¤ë³ÈÄ¥ »Ò¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤ÏÊÌ¡¹¤Ë¥³¥ó¥Ñ¥¤¥ë¤¹¤ëɬÍפ¬¤¢¤ë¤¿¤á¤Ç¤¹¡¥ÆóÈÖÌܤΤâ¤Î¤Ï¡¤ FCFLAGS_ext¤Ï¥³¥ó¥Ñ¥¤¥ë»þ¤Î¥½¡¼¥¹¥³¡¼¥É¤Î¥Õ¥¡¥¤¥ë̾¤Î ľÁ°¤Ë½ñ¤¯É¬Íפ¬¤¢¤ë¤¿¤á¤Ç¤¹¡¥¤½¤Î¤¿¤á¡¤¾åµ­¤ÎÎã¤ò³¤±¤ë¤È¡¤°Ê²¼ ¤Î¥³¥Þ¥ó¥É¤ò»ý¤ÄMakefile¤Çfoo.f90¥Õ¥¡¥¤¥ë¤¬¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤Ç¤·¤ç ¤¦¡¥

foo.o: foo.f90
     $(FC) -c $(FCFLAGS) $(FCFLAGS_f90) foo.f90

ext¤Î³ÈÄ¥»Ò¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤Î¥³¥ó¥Ñ¥¤¥ë¤ÇAC_FC_SRCEXT¤¬À®¸ù¤¹ ¤ë¾ì¹ç¡¤¤½¤ì¤Ï[action-if-success](¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï²¿¤â¤·¤Þ¤»¤ó)¤ò¸Æ¤Ó ½Ð¤·¤Þ¤¹¡¥¼ºÇÔ¤·¤¿¾ì¹ç¤È¡¤FC¥³¥ó¥Ñ¥¤¥é¤Ë¤½¤Î¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤ò¼õ¤± Æþ¤ì¤µ¤»¤ëÊýË¡¤¬¸«¤Ä¤«¤é¤Ê¤¤¾ì¹ç¡¤[action-if-failure](¥Ç¥Õ¥©¥ë¥È¤Ï ¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤È¤È¤â¤Ë½ªÎ»¤·¤Þ¤¹)¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡¥

Macro: AC_FC_FREEFORM ([action-if-success], [action-if-failure])

AC_FC_FREEFORM¤Ï¡¤Fortran¥³¥ó¥Ñ¥¤¥é($FC)¤Ç¥Õ¥ê¡¼¥Õ¥©¡¼¥Þ¥Ã ¥È¤Î¥½¡¼¥¹¥³¡¼¥É¤¬²Äǽ¤Ç¤¢¤ë¤³¤È¤Î³Îǧ¤ò»î¤ß¤Þ¤¹(µÕ¤Ë¡¤Fortran 77¤Ï¤è¤ê ¸Å¤¤¸ÇÄê¥Õ¥©¡¼¥Þ¥Ã¥È·Á¼°¤Ç¤¹)¡¥É¬Íפʾì¹ç¡¤FCFLAGS¤ËÄɲåե饰¤ò ²Ã¤¨¤Æ¤â¤«¤Þ¤¤¤Þ¤»¤ó¡¥

¥Ç¥Õ¥©¥ë¥È¤Î.f³ÈÄ¥»Ò¤ò»ÈÍѤ·¤Æ¤¤¤ë¾ì¹ç¡¤ÄɲäΥե饰¤¬Ä󶡤µ¤ì¤Æ ¤¤¤Ê¤¤¸Â¤ê¡¤Â¿¤¯¤Î¥³¥ó¥Ñ¥¤¥é¤¬¤³¤Î³ÈÄ¥»Ò¤ò¸ÇÄê¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥½¡¼¥¹¥³¡¼¥É ¤Ç¤¢¤ë¤È²ò¼á¤¹¤ë¤Î¤Ç¡¤¤³¤Î¥Þ¥¯¥í¤¬ºÇ¤â½ÅÍפǤ¹¡¥.f90¤ä.f95 ¤Î¤è¤¦¤Ë¡¤°Û¤Ê¤ë³ÈÄ¥»Ò¤òAC_FC_SRCEXT¤Ç»ØÄꤷ¤Æ¤¤¤ë¾ì¹ç¡¤ AC_FC_FREEFORM¤Ï¡¤Ä̾FCFLAGS¤òÊÔ½¸¤¹¤ë¤³¤È¤Ê¤¯À®¸ù¤·¤Þ ¤¹¡¥

AC_FC_FREEFORM¤Ï¥Õ¥ê¡¼¥Õ¥©¡¼¥à¤Î¥½¡¼¥¹¤Î¥³¥ó¥Ñ¥¤¥ë¤ÇÀ®¸ù¤¹¤ë¾ì¹ç¡¤ ¤½¤ì¤Ï[action-if-success](¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï²¿¤â¤·¤Þ¤»¤ó)¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡¥ ¼ºÇÔ¤·¤¿¾ì¹ç¡¤[action-if-failure](¥Ç¥Õ¥©¥ë¥È¤Ï¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤È¤È ¤â¤Ë½ªÎ»¤·¤Þ¤¹)¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡¥


Previous: C++ Compiler, Up: Compilers and Preprocessors   [Contents][Index]