configure.ac 7.64 KB
Newer Older
sebastien's avatar
sebastien committed
1
2
dnl Process this file with autoconf to produce a configure script.

Sébastien Villemot's avatar
Sébastien Villemot committed
3
dnl Copyright © 2009-2021 Dynare Team
sebastien's avatar
sebastien committed
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dnl
dnl This file is part of Dynare.
dnl
dnl Dynare is free software: you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation, either version 3 of the License, or
dnl (at your option) any later version.
dnl
dnl Dynare is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
18
dnl along with Dynare.  If not, see <https://www.gnu.org/licenses/>.
sebastien's avatar
trunk:    
sebastien committed
19

20
AC_PREREQ([2.62])
Sébastien Villemot's avatar
Sébastien Villemot committed
21
AC_INIT([dynare], [4.8-unstable])
22
AC_CONFIG_SRCDIR([preprocessor/src/DynareMain.cc])
23
AM_INIT_AUTOMAKE([1.11 -Wall -Wno-portability foreign no-dist-gzip dist-xz tar-pax])
sebastien's avatar
trunk:    
sebastien committed
24

25
26
AC_CONFIG_SUBDIRS([preprocessor])

sebastien's avatar
sebastien committed
27
AC_PROG_CC
sebastien's avatar
trunk:    
sebastien committed
28
AC_PROG_CXX
Sébastien Villemot's avatar
Sébastien Villemot committed
29
AX_CXX_COMPILE_STDCXX_17
sebastien's avatar
trunk:    
sebastien committed
30

sebastien's avatar
sebastien committed
31
32
33
AC_CANONICAL_HOST
case ${host_os} in
  *mingw32*)
34
35
36
    # On Windows, we want Dynare++ to be statically linked
    AM_LDFLAGS="-static"
    AC_SUBST([AM_LDFLAGS])
sebastien's avatar
sebastien committed
37
    ;;
38
  *cygwin*)
39
40
41
    AC_MSG_WARN([You are compiling for the Cygwin target. This means that the preprocessor will])
    AC_MSG_WARN([not run from MATLAB unless you add the Cygwin DLL to the path.])
    AC_MSG_WARN([This is probably not what you want. Consider using a MinGW cross-compiler.])
42
    if test -z "$F77"; then
43
44
45
46
47
      # On Cygwin 1.7, g77 comes has version 3, and is not compatible with default gcc/g++ which has version 4
      # And by default, the AC_PROG_F77 will pick up g77 if it is present (even if gfortran is also here)
      F77=gfortran
    fi
    ;;
sebastien's avatar
sebastien committed
48
49
esac

sebastien's avatar
trunk:    
sebastien committed
50
51
52
# Use C++ for testing headers
AC_LANG([C++])

53
AM_CXXFLAGS="-Wall -Wno-parentheses -Wold-style-cast"
54
AC_SUBST([AM_CXXFLAGS])
sebastien's avatar
trunk:    
sebastien committed
55

56
57
58
# If default 'ar' is not available, try to find one with a host prefix (see ticket #145)
AC_CHECK_PROGS([AR], [ar ${host_alias}-ar])

59
AC_PROG_RANLIB
60
AM_PROG_AR
61

62
AX_PROG_LN_S
63

sebastien's avatar
sebastien committed
64
AC_PROG_MKDIR_P
65

66
67
AX_CXX11_THREAD

68
69
70
71
72
73
74
75
AM_PROG_LEX

AC_CHECK_PROG([YACC], [bison], [bison])
if test -z "$YACC"; then
  unset YACC # AM_MISSING_PROG needs an unset variable: an empty variable won't do
  AM_MISSING_PROG([YACC], [bison])
fi

76
77
78
# Define optional components and their corresponding flags and Automake conditionals
AC_ARG_ENABLE([doc], AS_HELP_STRING([--disable-doc], [disable compilation of documentation]), [], [enable_doc=yes])
AM_CONDITIONAL([ENABLE_DOC], [test "$enable_doc" = yes])
79

80
81
AC_ARG_ENABLE([dynare++], AS_HELP_STRING([--disable-dynare++], [disable compilation of Dynare++]), [], [enable_dynareplusplus=yes])
AM_CONDITIONAL([ENABLE_DYNAREPLUSPLUS], [test "$enable_dynareplusplus" = yes])
82

83
84
AC_ARG_ENABLE([matlab], AS_HELP_STRING([--disable-matlab], [disable compilation of MEX files for MATLAB]), [], [enable_matlab=yes])
AM_CONDITIONAL([ENABLE_MATLAB], [test "$enable_matlab" = yes])
85

86
87
AC_ARG_ENABLE([octave], AS_HELP_STRING([--disable-octave], [disable compilation of MEX files for Octave]), [], [enable_octave=yes])
AM_CONDITIONAL([ENABLE_OCTAVE], [test "$enable_octave" = yes])
88

89
90
AC_ARG_ENABLE([org-export], AS_HELP_STRING([--enable-org-export], [enable exporting of Org files (requires Emacs, org-mode and other external programs)]))
AM_CONDITIONAL([ENABLE_ORG_EXPORT], [test -n "$enable_org_export"])
91

92
93
# Check utilities needed for documentation
if test "$enable_doc" = yes; then
94
95
96
97
98
99
  AC_CHECK_PROG([PDFLATEX], [pdflatex], [pdflatex], [no])
  test "$PDFLATEX" = no && AC_MSG_ERROR([pdflatex cannot be found. If you want to skip the compilation of the documentation, pass the --disable-doc flag.])
  AC_CHECK_PROG([BIBTEX], [bibtex], [bibtex], [no])
  test "$BIBTEX" = no && AC_MSG_ERROR([bibtex cannot be found. If you want to skip the compilation of the documentation, pass the --disable-doc flag.])
  AC_CHECK_PROG([SPHINXBUILD], [sphinx-build], [sphinx-build], [no])
  test "$SPHINXBUILD" = no && AC_MSG_ERROR([sphinx-build cannot be found. If you want to skip the compilation of the documentation, pass the --disable-doc flag.])
100
  AX_LATEX_CLASS([beamer], [ax_latex_have_beamer], [], [AC_MSG_ERROR([beamer cannot be found. If you want to skip the compilation of the documentation, pass the --disable-doc flag.])])
sebastien's avatar
sebastien committed
101
fi
102

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Check for BLAS, LAPACK and MATIO, needed by Dynare++
if test "$enable_dynareplusplus" = yes; then
  AC_PROG_F77
  AC_F77_LIBRARY_LDFLAGS
  case ${host_os} in
    *darwin*)
      # * OS X doesn't need to link against the Fortran libraries because
      #   everything is contained within the vecLib framework.
      FLIBS=''
      ;;
  esac
  AX_BLAS
  AX_LAPACK
  AX_MATIO
  if test "$ax_blas_ok" != yes -o "$ax_lapack_ok" != yes -o "$has_matio" != yes; then
    AC_MSG_ERROR([Some dependencies of Dynare++ cannot be found. If you want to skip the compilation of Dynare++, pass the --disable-dynare++ flag.])
  fi
fi
sebastien's avatar
trunk:    
sebastien committed
121

122
# Check for MATLAB
123
if test "$enable_matlab" = yes; then
sebastien's avatar
sebastien committed
124
  AC_CONFIG_SUBDIRS([mex/build/matlab])
125
  AX_MATLAB
126
  AX_MATLAB_BATCH_OPTIONS
127
  test "$ax_enable_matlab" != yes && AC_MSG_ERROR([MATLAB cannot be found. If you want to compile Dynare without MATLAB support, pass the --disable-matlab flag.])
sebastien's avatar
sebastien committed
128
129
fi

130
# Check for Octave
131
if test "$enable_octave" = yes; then
sebastien's avatar
sebastien committed
132
  AC_CONFIG_SUBDIRS([mex/build/octave])
133
134
  AX_OCTAVE
  test "$ax_enable_octave" != yes && AC_MSG_ERROR([Octave cannot be found. If you want to compile Dynare without Octave support, pass the --disable-octave flag.])
sebastien's avatar
sebastien committed
135
fi
136

sebastien's avatar
sebastien committed
137
# Construct final output message
138
if test "$enable_dynareplusplus" = yes; then
139
  BUILD_DYNAREPLUSPLUS="yes"
140
  TESTSUITE_DYNAREPLUSPLUS="yes"
sebastien's avatar
sebastien committed
141
else
142
143
  BUILD_DYNAREPLUSPLUS="no"
  TESTSUITE_DYNAREPLUSPLUS="no"
144
145
fi

146
147
if test "$enable_doc" = yes; then
  BUILD_DOC="yes"
sebastien's avatar
sebastien committed
148
else
149
  BUILD_DOC="no"
sebastien's avatar
sebastien committed
150
151
fi

152
if test -n "$enable_org_export"; then
153
  BUILD_INTERNAL_DOC="yes"
154
else
155
  BUILD_INTERNAL_DOC="no"
156
157
fi

158
159
if test "$enable_matlab" = yes; then
  TESTSUITE_MATLAB="yes"
160
else
161
  TESTSUITE_MATLAB="no"
162
163
fi

164
if test "$enable_octave" = yes; then
sebastien's avatar
sebastien committed
165
166
167
168
169
170
171
172
173
174
175
176
  TESTSUITE_OCTAVE="yes"
else
  TESTSUITE_OCTAVE="no"
fi

AC_MSG_NOTICE([

Dynare is now configured for building the following components...

Binaries (with "make"):
 Dynare++:                              $BUILD_DYNAREPLUSPLUS

177
178
179
Documentation (with "make html pdf"):
 Manual and other documents             $BUILD_DOC
 Dynare internal doc:                   $BUILD_INTERNAL_DOC
sebastien's avatar
sebastien committed
180
181

Testsuites (run with "make check"):
182
 Dynare for MATLAB:                     $TESTSUITE_MATLAB
sebastien's avatar
sebastien committed
183
184
185
186
 Dynare for Octave:                     $TESTSUITE_OCTAVE
 Dynare++:                              $TESTSUITE_DYNAREPLUSPLUS
])

187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
AC_CONFIG_FILES([Makefile
                 VERSION
                 doc/Makefile
                 doc/manual/Makefile
                 doc/manual/utils/version.py
                 doc/parallel/Makefile
                 doc/internals/Makefile
                 doc/gsa/Makefile
                 doc/dseries-and-reporting/Makefile
                 tests/Makefile
                 matlab/dynare_version.m
                 dynare++/Makefile
                 dynare++/parser/cc/Makefile
                 dynare++/sylv/Makefile
                 dynare++/sylv/cc/Makefile
                 dynare++/sylv/testing/Makefile
                 dynare++/tl/Makefile
                 dynare++/tl/cc/Makefile
                 dynare++/tl/testing/Makefile
                 dynare++/doc/Makefile
                 dynare++/utils/cc/Makefile
                 dynare++/integ/Makefile
                 dynare++/integ/cc/Makefile
                 dynare++/integ/src/Makefile
                 dynare++/integ/testing/Makefile
                 dynare++/kord/Makefile
                 dynare++/src/Makefile
                 dynare++/tests/Makefile
                 mex/sources/Makefile
])

sebastien's avatar
trunk:    
sebastien committed
218
AC_OUTPUT