Алексей Махоткин

домашняя страница

Automake

Go to the first, previous, next, last section, table of contents.


Использование Fortran 77 с C и C++

В настоящее время Automake предоставляет ограниченную поддержку создания программ и разделяемых библиотек, которые являются смесью Fortran 77 и C и/или C++. Однако существует много других вопросов, возникающих при смешивании кода на Fortran 77 с кодом на других языках, которые в настоящее время не обрабатываются Automake, но обрабатываются другими пакетами(2).

Automake может предоставить вам помощь двумя способами:

  1. Автоматический выбор компоновщика в зависимости от комбинации исходного кода.
  2. Автоматический выбор флагов компоновщика (например, `-L’ и `-l’) для передачи автоматически выбранному компоновщику для компоновки с соответствующими внутренними библиотеками и библиотеками времени исполнения Fortran 77. Эти дополнительные флаги компоновщика Fortran 77 выдаются в выходную переменную FLIBS макросом Autoconf AC_F77_LIBRARY_LDFLAGS, который поставляется со свежими версиями Autoconf (Autoconf версии 2.13 и выше). See section `Характеристики компилятора Fortran 77’ in Autoconf.

Если Automake определяет, что программа или разделяемая библиотека (упомянутые в каких-либо основных переменных _PROGRAMS или _LTLIBRARIES) содержит исходный код, который является смесью Fortran 77 и C и/или C++, то он требует вызова макроса AC_F77_LIBRARY_LDFLAGS в файле `configure.in’, и чтобы в соответствующей переменной _LDADD (для программ) или _LIBADD (для разделяемых библиотек) появились ссылки либо на $(FLIBS), либо на @FLIBS@. От человека, пишущего `Makefile.am’, требуется убедиться, что переменные $(FLIBS) или @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.in’. Более того, если переменная @FLIBS@ не была упомянута в переменной foo_LDADD и libfoo_la_LIBADD, то Automake выдаст предупреждение.


Go to the first, previous, next, last section, table of contents.

Comments