Пользовательский макрос .m4 не работает с configure.ac

Я пытаюсь обновить загадочную научную программу F77 до современного мира, упростив ее установку с помощью сценария .configure. Однако это оказалось сложнее, чем рекламировалось. Программа, которую я с визгом и пинками тащу в 21 век, требует графической библиотеки SuperMongo, и я пытаюсь понять, как заставить Automake найти правильный путь для необходимых библиотек SuperMongo (libplotsub.a, libdevices.a и libutils.a) Вместо того, чтобы вы, добрые души, смотрели на внутренности кода, я создал скелетный репозиторий github (https://github.com/Acetylene5/autoconf_testing).

Основной программой является test.f, и она вызывает файл Junk.f. Оба файла включают общий блок Stuff.com. Файл Junk.f вызывает две функции: одну (dcopy) из библиотеки LAPACK, а другую (drawcurs) из программы SuperMongo. Причина, по которой я это сделал, заключается в том, что эта программа, которую я быстро перематываю из каменного века, использует обе эти библиотеки.

Я нашел в Интернете макрос LAPACK (ax_lapack.m4), который, кажется, находит библиотеки LAPACK в моей системе. Я попытался скопировать этот файл .m4 в ax_supermongo.m4 и изменить необходимые имена и каталоги. Однако я не эксперт по M4, поэтому понятия не имею, делает ли это то, что я хочу. Я так не думаю, потому что, если вы посмотрите на вывод ./configure, он не найдет файл sm_graphics (процедура токена supermongo, используемая ax_supermongo.m4 для расположения библиотек SM):

deen@aida44170:~/Code/FORTRAN/testing/autoconf/master> autoreconf -i
deen@aida44170:~/Code/FORTRAN/testing/autoconf/master> ./configure
configure: loading site script /usr/share/site/x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether the Fortran 77 compiler works... yes
checking for Fortran 77 compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU Fortran 77 compiler... no
checking whether /usr/local2/misc/iraf/iraf/unix/hlib/f77.sh accepts -g... yes
checking for style of include used by make... GNU
checking for gcc... gcc
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking dependency style of gcc... none
checking for sgemm_... no
checking for ATL_xerbla in -latlas... no
checking for sgemm_ in -lblas... yes
checking for dgemm_ in -ldgemm... no
checking for sgemm_ in -lmkl... no
checking for sgemm_... (cached) no
checking for sgemm_ in -lcxml... no
checking for sgemm_ in -ldxml... no
checking for sgemm_ in -lscs... no
checking for sgemm_ in -lcomplib.sgimath... no
checking for sgemm_ in -lblas... (cached) yes
checking for sgemm_ in -lessl... no
checking for sgemm_ in -lblas... (cached) yes
checking build system type... x86_64-suse-linux-gnu
checking host system type... x86_64-suse-linux-gnu
checking how to get verbose linking output from /usr/local2/misc/iraf/iraf/unix/hlib/f77.sh... configure: WARNING: cannot determine how to obtain linking information from /usr/local2/misc/iraf/iraf/unix/hlib/f77.sh

checking for Fortran 77 libraries of /usr/local2/misc/iraf/iraf/unix/hlib/f77.sh... 
checking for dummy main to link with Fortran 77 libraries... none
checking for Fortran 77 name-mangling scheme... lower case, underscore, extra underscore
checking for cheev_... no
checking for cheev_ in -llapack... yes
checking for sm_graphics__... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: executing depfiles commands

В моей системе библиотеки Supermongo находятся в: /usr/local/misc/sm/sm2_4_36/lib/

Любые предложения о том, как заставить autoconf заглянуть в этот каталог или, возможно, использовать переменную командной строки для передачи здесь каталога?

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

Кейси


person soylentdeen    schedule 28.07.2013    source источник
comment
Если это система Linux/HPUX-11/Solaris/AIX, попробуйте установить LD_LIBRARY_PATH так, чтобы он указывал на каталог вашей библиотеки. Предположительно, это .so или .sl. Возможно, у него уже есть значения, поэтому просто добавьте их перед ним.   -  person cup    schedule 31.07.2013
comment
Всегда используйте тег fortran и добавляйте версию только при необходимости, чтобы отличить конкретный вопрос. Например, что вы не можете использовать Fortran 2008, а только Fortran 90.   -  person Vladimir F    schedule 17.12.2015


Ответы (1)


autoconf не пытается найти для вас библиотеки, но это делает configure скрипт, который он генерирует. Если вы хотите, чтобы этот скрипт configure смотрел в /usr/local/misc/sm/sm2_4_36/lib/, используемый вами механизм будет зависеть от вашей системы, но очень часто скрипту configure задается аргумент вида LDFLAGS=-L/usr/local/misc/sm/sm2_4_36/lib/. Возможно, вам также придется добавить аналогичное предложение -I в CPPFLAGS, чтобы найти заголовочные файлы.

person William Pursell    schedule 04.08.2013