Automakeは現在,Fortran 77とCそして/またはC++が混在しているプログラム と共有ライブラリを作成するため,限定されたサポートを提供してい ます.しかし,(現在は)Automakeによって処理されませんが,他のパッ ケージ1で処理される,Fortran 77と他の言 葉との混在に関連して,多くの問題が発生しています.
Automakeは二つの方法でそれを助けることが可能です.
これらの追加されたFortran 77リンカフラグは,Autoconf(Autoconfバージョ
ン2.13やそれ以降)の新しいバージョンで供給された,
AC_F77_LIBRARY_LDFLAGS
というAutoconfマクロでの出力変数
FLIBS
で提供されます.See Fortran 77 Compiler Characteristics.
(_PROGRAMS
や_LTLIBRARIES
プライマリで記述されているような)
プログラムや共有ライブラリが,Fortran 77と,Cそして/またはC++が混合す
るソースコードを含んでいることをAutomakeが検出した場合,
AC_F77_LIBRARY_LDFLAGS
マクロをconfigure.acで呼び出し,
$(FLIBS)
が,適切な(プログラムに対する)_LDADD
や,(共有ラ
イブラリに対する)_LIBADD
変数のいずれかで書かれていることを要求
します.$(FLIBS)
が適切な_LDADD
や_LIBADD
変数に書か
れていることを確かめるのは,Makefile.amを書いている人の責任です.
bin_PROGRAMS = foo foo_SOURCES = main.cc foo.f foo_LDADD = libfoo.la $(FLIBS) pkglib_LTLIBRARIES = libfoo.la libfoo_la_SOURCES = bar.f baz.c zardoz.cc libfoo_la_LIBADD = $(FLIBS)
この状況では,Automakeは,AC_F77_LIBRARY_LDFLAGS
が
configure.acで記述されることを強く要求します.また,
$(FLIBS)
がfoo_LDADD
とlibfoo_la_LIBADD
で記述されて
いない場合も,Automakeは警告を出します.
[1] 例えば,
the cfortran package
は,これらすべての言語間の問題を扱い,ほとんどすべてのプラットホームの,
ほとんどすべてのFortran 77,C,そしてC++コンパイラで動作します.しかし
ながら,cfortran
はまだフリーソフトウェアではありませんが,次の
メジャーリリースでそうなるでしょう.