configure.in 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345
  1. dnl Process this file with autoconf to produce a configure script.
  2. AC_INIT(avram,0.11.0,[email protected])
  3. dnl Every other copy of the package version number gets its value from here
  4. AM_INIT_AUTOMAKE(avram, 0.13.0)
  5. AM_CONFIG_HEADER(config.h)
  6. AC_SUBST(VERSION)
  7. ISODATE=`date +%Y-%m-%d`
  8. AC_SUBST(ISODATE)
  9. dnl Checks for programs.
  10. AC_PROG_INSTALL
  11. AC_PROG_CC
  12. AC_PROG_MAKE_SET
  13. AM_PROG_CC_C_O
  14. dnl Checks for header files.
  15. AC_HEADER_STDC
  16. AC_CHECK_HEADERS(
  17. ctype.h fcntl.h strings.h time.h sys/file.h sys/time.h unistd.h math.h,,
  18. [AC_MSG_ERROR(missing one of ctype.h fcntl.h strings.h time.h sys/file.h sys/time.h unistd.h math.h)])
  19. AC_CHECK_HEADER(
  20. argz.h,
  21. [AC_DEFINE([HAVE_ARGZ_H],1,[if you have the argz library])],
  22. [AC_MSG_WARN(no argz.h so AVMINPUTS unsupported)])
  23. AC_CHECK_HEADER(
  24. fenv.h,
  25. [AC_DEFINE([HAVE_FENV],1,[if you have floating point math])],
  26. [AC_MSG_WARN(no fenv.h so floating math unsupported)])
  27. AC_CHECK_HEADER(
  28. complex.h,
  29. [AC_DEFINE([HAVE_COMPLEX],1,[if you have complex math])],
  30. [AC_MSG_WARN(no complex.h so complex math unsupported)])
  31. AC_CHECK_HEADER(
  32. setjmp.h,
  33. [AC_DEFINE([HAVE_SETJMP],1,[Define if you have setjmp functions])],
  34. [AC_MSG_WARN(setjmp not detected for memory management)])
  35. AC_CHECK_HEADER(
  36. malloc.h,
  37. [AC_CHECK_DECLS(
  38. __malloc_hook,
  39. [AC_CHECK_DECLS(
  40. __realloc_hook,
  41. [AC_CHECK_DECLS(
  42. __free_hook,
  43. [AC_DEFINE([HAVE_MALLOC],1,[Define if you have the standard malloc.h header])],
  44. [AC_MSG_WARN(__free_hook not detected for memory management)],
  45. [#include<malloc.h>])],
  46. [AC_MSG_WARN(__realloc_hook not detected for memory management)],
  47. [#include<malloc.h>])],
  48. [AC_MSG_WARN(__malloc_hook not detected for memory management)],
  49. [#include<malloc.h>])],
  50. [AC_MSG_WARN(malloc.h header not detected for memory management)])
  51. dnl Checks for typedefs, structures, and compiler characteristics.
  52. dnl AC_CANONICAL_HOST
  53. AC_C_CONST
  54. AC_TYPE_SIZE_T
  55. dnl Checks for library functions.
  56. AC_CHECK_FUNCS(
  57. strdup strstr,,
  58. [AC_MSG_ERROR(missing either strdup or strstr)])
  59. AC_CHECK_FUNCS(ctime_r,,[AC_MSG_WARN(no ctime_r so using non-reentrant ctime)])
  60. AC_CHECK_FUNCS(strerror,,[AC_MSG_WARN(no strerror so error messages truncated)])
  61. AC_REPLACE_FUNCS(memmove)
  62. dnl checks for libraries
  63. AM_PATH_LIBGCRYPT(
  64. ,
  65. [AC_DEFINE([HAVE_GCRYPT],1,[Define if you have libgcrypt]) LIBS="$LIBGCRYPT_LIBS $LIBS"],
  66. [AC_MSG_WARN(no gcrypt so remote execution disabled)])
  67. dnl allow for a non-root installation
  68. LDFLAGS="$LDFLAGS -L$HOME/lib"
  69. CPPFLAGS="$CPPFLAGS -I$HOME/include"
  70. dnl LDFLAGS="$LDFLAGS -L$HOME/lib $LIBLTDL"
  71. dnl CPPFLAGS="$CPPFLAGS -I$HOME/include $LTDLINCL"
  72. dnl is there a macro to check for a list of headers atomically?
  73. AC_CHECK_LIB(
  74. gslcblas,
  75. cblas_xerbla,
  76. LIBS="-lgslcblas "$LIBS; [AC_CHECK_LIB(
  77. gsl,
  78. gsl_sf_bessel_J0,
  79. [AC_CHECK_HEADER(
  80. gsl/gsl_deriv.h,
  81. [AC_CHECK_HEADER(
  82. gsl/gsl_sum.h,
  83. [AC_CHECK_HEADER(
  84. gsl/gsl_integration.h,
  85. [AC_CHECK_HEADER(
  86. gsl/gsl_math.h,
  87. [AC_CHECK_HEADER(
  88. gsl/gsl_sf_bessel.h,
  89. [AC_CHECK_HEADER(
  90. gsl/gsl_errno.h,
  91. [AC_DEFINE([HAVE_GSL],1,[Define if you have the GNU Scientific library]) LIBS="-lgsl "$LIBS],
  92. [AC_MSG_WARN(no gsl headers so numerical analysis functions disabled)])],
  93. [AC_MSG_WARN(no gsl headers so numerical analysis functions disabled)])],
  94. [AC_MSG_WARN(no gsl headers so numerical analysis functions disabled)])],
  95. [AC_MSG_WARN(no gsl headers so numerical analysis functions disabled)])],
  96. [AC_MSG_WARN(no gsl headers so numerical analysis functions disabled)])],
  97. [AC_MSG_WARN(no gsl headers so numerical analysis functions disabled)])],
  98. [])],
  99. [AC_MSG_WARN(no gsl cblas library so numerical functions disabled)],
  100. [])
  101. AC_CHECK_LIB(
  102. glpk,
  103. glp_create_index,
  104. [AC_CHECK_HEADER(
  105. glpk.h,
  106. [AC_DEFINE([HAVE_GLPK],1,[Define if you have the GNU linear programming kit]) LIBS="-lglpk "$LIBS],
  107. [AC_MSG_WARN(no glpk.h so linear programming functions disabled)])],
  108. [AC_MSG_WARN(no glpk lib so linear programming disabled)])
  109. AC_CHECK_LIB(
  110. colamd,
  111. symamd,
  112. LIBS="-lcolamd "$LIBS; [AC_CHECK_LIB(
  113. lpsolve55,
  114. make_lp,
  115. [AC_CHECK_HEADER(
  116. lpsolve/lp_lib.h,
  117. [AC_DEFINE([HAVE_LPSOLVE],1,[Define if you have lpsolve]) LIBS="-llpsolve55 "$LIBS],
  118. [AC_MSG_WARN(no lp_lib.h so linear programming functions disabled)])],
  119. [AC_MSG_WARN(no lpsolve55 lib so linear programming disabled)])],
  120. [AC_MSG_WARN(no libltdl so lpsolve disabled)])
  121. AC_CHECK_LIB(
  122. mpfr,
  123. mpfr_add,
  124. [AC_CHECK_HEADER(
  125. mpfr.h,
  126. AC_DEFINE([HAVE_MPFR],1,[Define if you have the mpfr arbitrary precision library]) LIBS="-lmpfr "$LIBS,
  127. [AC_MSG_WARN(no mpfr.h header so arbitrary precision math disabled)])],
  128. [AC_MSG_WARN(no mpfr library so arbitrary precision math disabled)])
  129. dnl the gmp header file isn't needed
  130. AC_CHECK_LIB(
  131. gmp,
  132. __gmp_randinit_default,
  133. [AC_DEFINE([HAVE_GMP],1,[Define if you have GNU multiple precision library]) LIBS="-lgmp "$LIBS],
  134. [AC_MSG_WARN(no libgmp so arbitrary precision math partly disabled)])
  135. dnl umfpak requires blas and amd libraries already defined or else the check for it won't work
  136. AC_CHECK_LIB(
  137. blas,
  138. dscal_,
  139. [AC_CHECK_LIB(
  140. amd,
  141. amd_free,
  142. LIBS="-lblas -lamd "$LIBS; [AC_CHECK_LIB(
  143. umfpack,
  144. umfpack_di_free_numeric,
  145. [AC_CHECK_HEADER(
  146. suitesparse/umfpack.h,
  147. [AC_DEFINE([HAVE_UMF],1,[Define if you have the ufsparse libraries]) LIBS="-lumfpack "$LIBS],
  148. [AC_MSG_WARN(no umfpack.h header so sparse matrices disabled)])],
  149. [AC_MSG_WARN(no umfpack library so sparse matrices disabled)],
  150. [])],
  151. [AC_MSG_WARN(no amd library so sparse matrices disabled)],
  152. [])],
  153. [AC_MSG_WARN(no blas so sparse matrices disabled)],
  154. [])
  155. dnl lapack has no header file so only the library is checked
  156. dnl harminv is checked only if lapack is present
  157. AC_CHECK_LIB(
  158. lapack,
  159. dgesvx_,
  160. [AC_DEFINE([HAVE_LAPACK],1,[Define if you have the lapack library]) LIBS="-llapack "$LIBS; AC_CHECK_LIB(
  161. harminv,
  162. harminv_solve,
  163. AC_DEFINE([HAVE_HARMINV],1,[Define if you have the harminv library]) LIBS="-lharminv "$LIBS,
  164. [AC_MSG_WARN(no harminv library so harmonic inversiondisabled)],
  165. [])],
  166. [AC_MSG_WARN(no lapack so some linear algebra functions disabled)],
  167. [])
  168. AC_CHECK_LIB(
  169. fftw3,
  170. fftw_plan_dft_1d,
  171. [AC_CHECK_HEADER(
  172. fftw3.h,
  173. [AC_DEFINE([HAVE_FFTW],1,[Define if you have the fftw library]) LIBS=$LIBS" -lfftw3"],
  174. [AC_MSG_WARN(no fftw.h header so fourier transforms disabled)])],
  175. [AC_MSG_WARN(no fftw library so fourier transforms disabled)],
  176. [])
  177. dnl minpack.h might be a Debian addition
  178. AC_CHECK_LIB(
  179. minpack,
  180. hybrd_,
  181. [AC_CHECK_HEADER(
  182. minpack.h,
  183. [AC_DEFINE([HAVE_MINPACK],1,[Define if you have the minpack library]) LIBS="-lminpack "$LIBS],
  184. [AC_MSG_WARN(no minpack.h header so non-linear optimization disabled)])],
  185. [AC_MSG_WARN(no minpack library so non-linear optimization disabled)],
  186. [])
  187. AC_CHECK_LIB(
  188. sundials_kinsol,
  189. KINCreate,
  190. [AC_CHECK_LIB(
  191. sundials_nvecserial,
  192. N_VNew_Serial,
  193. CPPFLAGS="$CPPFLAGS -I/usr/include/sundials -I/usr/include/kinsol -I/usr/include/nvector"; [AC_CHECK_HEADER(
  194. sundials_types.h,
  195. [AC_CHECK_HEADER(
  196. sundials_math.h,
  197. [AC_CHECK_HEADER(
  198. sundials_nvector.h,
  199. dnl [AC_CHECK_HEADER(
  200. dnl sundials_smalldense.h,
  201. [AC_CHECK_HEADER(
  202. kinsol.h,
  203. [AC_CHECK_HEADER(
  204. kinsol_dense.h,
  205. [AC_CHECK_HEADER(
  206. kinsol_spgmr.h,
  207. [AC_CHECK_HEADER(
  208. kinsol_spbcgs.h,
  209. [AC_CHECK_HEADER(
  210. kinsol_sptfqmr.h,
  211. [AC_CHECK_HEADER(
  212. kinsol_spils.h,
  213. [AC_CHECK_HEADER(
  214. nvector_serial.h,
  215. [AC_DEFINE(
  216. [HAVE_KINSOL],
  217. 1,
  218. [Define for sundials]) LIBS="-lsundials_kinsol -lsundials_nvecserial "$LIBS],
  219. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  220. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  221. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  222. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  223. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  224. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  225. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  226. dnl [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  227. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  228. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  229. [AC_MSG_WARN(no kinsol headers so non-linear optimization disabled)])],
  230. [AC_MSG_WARN(no kinsol library so non-linear optimization disabled)],
  231. [])],
  232. [AC_MSG_WARN(no kinsol library so non-linear optimization disabled)],
  233. [])
  234. dnl checking for the Rmath header requires MATHLIB_STANDALONE to be defined or it won't work
  235. AC_CHECK_LIB(
  236. Rmath,
  237. bessel_i,
  238. CPPFLAGS="$CPPFLAGS -DMATHLIB_STANDALONE"; [AC_CHECK_HEADER(
  239. Rmath.h,
  240. [AC_DEFINE([HAVE_RMATH],1,[Define if you have the GNU R math library]) LIBS="-lRmath -lm "$LIBS],
  241. [AC_MSG_WARN(no Rmath.h header so statistical functions disabled)])],
  242. [AC_MSG_WARN(no Rmath library so statistical functions disabled)],
  243. [])
  244. dnl is there a right way to detect and link a shared library whose filename ends with .so.something?
  245. AC_CHECK_FILE(
  246. /usr/lib/libexpect.so.5,
  247. EXPATH=" /usr/lib/libexpect.so.5",
  248. [AC_CHECK_FILE(
  249. /usr/local/lib/libexpect.so.5,
  250. EXPATH=" /usr/local/lib/libexpect.so.5",
  251. [AC_CHECK_FILE(
  252. $HOME/lib/libexpect.so.5,
  253. EXPATH=" $HOME/lib/libexpect.so.5",
  254. [AC_CHECK_FILE(
  255. /lib/libexpect.so.5,
  256. EXPATH=" /lib/libexpect.so.5",
  257. [AC_CHECK_FILE(
  258. /usr/lib/libexpect.so,
  259. EXPATH=" /usr/lib/libexpect.so",
  260. [AC_CHECK_FILE(
  261. /usr/local/lib/libexpect.so,
  262. EXPATH=" /usr/local/lib/libexpect.so",
  263. [AC_CHECK_FILE(
  264. $HOME/lib/libexpect.so,
  265. EXPATH=" $HOME/lib/libexpect.so",
  266. [AC_CHECK_FILE(
  267. /lib/libexpect.so,
  268. EXPATH=" /lib/libexpect.so",
  269. [AC_CHECK_FILE(
  270. /usr/lib/libexpect5.43.so,
  271. EXPATH=" /usr/lib/libexpect5.43.so",
  272. [AC_CHECK_FILE(
  273. /usr/local/lib/libexpect5.43.so,
  274. EXPATH=" /usr/local/lib/libexpect5.43.so",
  275. [AC_CHECK_FILE(
  276. $HOME/lib/libexpect5.43.so,
  277. EXPATH=" $HOME/lib/libexpect5.43.so",
  278. [AC_CHECK_FILE(
  279. /lib/libexpect5.43.so,
  280. EXPATH=" /lib/libexpect5.43.so",
  281. [AC_CHECK_FILE(
  282. /lib/libexpect5.44.so,
  283. EXPATH=" /lib/libexpect5.44.so",
  284. [])])])])])])])])])])])])])
  285. AC_CHECK_LIB(
  286. util,
  287. openpty,
  288. [AC_CHECK_HEADER(
  289. tcl8.4/expect.h,
  290. AC_DEFINE([HAVE_EXPECT],1,[Define if you have libexpect]) LIBS="-lutil -ltcl8.4"$EXPATH" "$LIBS,
  291. [AC_CHECK_LIB(
  292. util,
  293. openpty,
  294. [AC_CHECK_HEADER(
  295. tcl8.5/expect.h,
  296. AC_DEFINE([HAVE_EXPECT],1,[Define if you have libexpect]) LIBS="-lutil -ltcl8.5"$EXPATH" "$LIBS,
  297. [AC_MSG_WARN(no libexpect so --interactive is disabled)])],
  298. [AC_MSG_WARN(no openpty in libutil so --interactive is disabled)])])],
  299. [AC_MSG_WARN(no openpty in libutil so --interactive is disabled)])
  300. dnl CPPFLAGS="$CPPFLAGS -pedantic -Wall"
  301. CFLAGS="-O3 -mtune=native -march=native"
  302. AC_OUTPUT(Makefile avram.lsm avram.spec avm/Makefile src/Makefile doc/Makefile)