2016-06-23 6 views
1

Я пытаюсь скомпилировать код fortran с gnu-autotools. OpenMP конкретные линии в configure.ac является:

AC_PROG_FC([gfortran]) 
AC_OPENMP 
FCFLAGS="$OPENMP_FCFLAGS -fcheck=all" 

Если я компилирую с этим, я не получаю omp связанные опции компилятора, как описано в макросе AC_OPENMP в autoconf manual.

Если я прямо разместил -fopenmp вместо $OPENMP_FFLAGS, только после этого его работы.

Любая помощь пожалуйста?

+0

Как насчет '$ OPENMP_FCFLAGS'? –

+0

Без изменений ... его все еще не набирает OPENMP_FCFLAGS – BaRud

+0

Я действительно не понимаю autotools, но не должен ли строка 'AC_OPENMP' быть ** после **' AC_PROG_FC ([gfortran]) '? Учитывая, что последний, скорее всего, устанавливает компилятор Fortran, можно было бы ожидать, что обнаружение OpenMP должно быть выполнено после того, как был установлен компилятор, а не раньше. –

ответ

1

Autoconf обычно любит тестировать все для языка C по умолчанию, и именно поэтому вы получаете $OPENMP_CFLAGS в результате для команды AC_OPENMP. Однако Autoconf также предоставляет механизмы для изменения языка программирования (и, следовательно, компилятора) с помощью команды AC_LANG (пожалуйста, посмотрите на Autoconf/Language Choice webpage для получения дополнительной информации, а также некоторых альтернатив).

Следующий код был протестирован с использованием команды autoconf 2.69 и с использованием команды: autoreconf -fiv (также используя пустой файл Makefile.am).

AC_INIT([omp-fortran-sample], [1.0]) 
AC_PROG_CC 
AC_PROG_FC([gfortran]) 

dnl Checks for OpenMP flag for C language, stores it in $OPENMP_CFLAGS 
AC_LANG(C) 
AC_OPENMP 

dnl Checks for OpenMP flag for Fortran language, stores it in $OPENMP_FCFLAGS 
AC_LANG(Fortran) 
AC_OPENMP 

AC_CONFIG_HEADERS([config.h]) 
AC_CONFIG_FILES([Makefile]) 
AC_OUTPUT 

В результате выполнение Configure показывает два теста для OpenMP, как показано здесь:

checking for gcc option to support OpenMP... -fopenmp 
checking for gfortran option to support OpenMP... -fopenmp 

И Makefile теперь включает в себя как OPENMP_CFLAGS и OPENMP_FCFLAGS определений, среди остальных, как показано ниже:

... 
MKDIR_P = /bin/mkdir -p 
OBJEXT = o 
OPENMP_CFLAGS = -fopenmp 
OPENMP_FCFLAGS = -fopenmp 
PACKAGE = omp-fortran-sample 
...