Mercurial > hg > octave-nkf
view configure.in @ 12119:e320928eeb3a release-3-2-x release-3-2-4
version 3.2.4
author | Jaroslav Hajek <highegg@gmail.com> |
---|---|
date | Fri, 22 Jan 2010 12:43:12 +0100 |
parents | a691ccd72863 |
children |
line wrap: on
line source
dnl configure.in dnl dnl Process this file with autoconf to produce a configure script. dnl dnl Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, dnl 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, dnl 2009 John W. Eaton ### ### This file is part of Octave. ### ### Octave is free software; you can redistribute it and/or modify it ### under the terms of the GNU General Public License as published by the ### Free Software Foundation; either version 3 of the License, or (at ### your option) any later version. ### ### Octave is distributed in the hope that it will be useful, but WITHOUT ### ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ### FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ### for more details. ### ### You should have received a copy of the GNU General Public License ### along with Octave; see the file COPYING. If not, see ### <http://www.gnu.org/licenses/>. ### Preserve CFLAGS and CXXFLAGS from the environment before doing ### anything else because we don't know which macros might call ### AC_PROG_CC or AC_PROG_CXX. EXTERN_CFLAGS="$CFLAGS" EXTERN_CXXFLAGS="$CXXFLAGS" AC_INIT AC_REVISION($Revision: 1.603 $) AC_PREREQ(2.60) AC_CONFIG_SRCDIR([src/octave.cc]) AC_CONFIG_HEADER(config.h) OCTAVE_HOST_TYPE AC_DEFINE(OCTAVE_SOURCE, 1, [Define if this is Octave.]) dnl FIXME -- we should probably only generate this file if it is missing. ### Produce unistd.h for MSVC target, this simplifies changes in ### Octave source tree and avoid problems with lex-generated code. case "$canonical_host_type" in *-*-msdosmsvc) AC_MSG_NOTICE([Generating replacement for <unistd.h> for MSVC]) cat << \EOF > unistd.h /* File generated by configure script. */ #include <direct.h> #include <io.h> #include <process.h> EOF CPPFLAGS="-I. $CPPFLAGS" ;; esac AC_USE_SYSTEM_EXTENSIONS ### Path separator. sepchar=: AC_ARG_WITH(sepchar, [AS_HELP_STRING([--with-sepchar=<char>], [use <char> as the path separation character])]) case $with_sepchar in yes | "") case "$canonical_host_type" in *-*-mingw* | *-*-msdosmsvc) sepchar=';' ;; esac ;; no) AC_MSG_ERROR([You are required to define a path separation character]) ;; *) sepchar=$with_sepchar ;; esac AC_SUBST(sepchar) AC_DEFINE_UNQUOTED(SEPCHAR, ['$sepchar'], [Define this to be the path separator for your system, as a character constant.]) AC_DEFINE_UNQUOTED(SEPCHAR_STR, ["$sepchar"], [Define this to the path separator, as a string.]) ### some defaults OCTAVE_SET_DEFAULT(man1dir, '$(mandir)/man1') OCTAVE_SET_DEFAULT(man1ext, '.1') OCTAVE_SET_DEFAULT(doc_cache_file, '$(octetcdir)/doc-cache') OCTAVE_SET_DEFAULT(infofile, '$(infodir)/octave.info') OCTAVE_SET_DEFAULT(octincludedir, '$(includedir)/octave-$(version)') OCTAVE_SET_DEFAULT(fcnfiledir, '$(datadir)/octave/$(version)/m') OCTAVE_SET_DEFAULT(localfcnfiledir, '$(datadir)/octave/site/m') OCTAVE_SET_DEFAULT(localapifcnfiledir, '$(datadir)/octave/site/$(api_version)/m') OCTAVE_SET_DEFAULT(localverfcnfiledir, '$(datadir)/octave/$(version)/site/m') OCTAVE_SET_DEFAULT(octetcdir, '$(datadir)/octave/$(version)/etc') OCTAVE_SET_DEFAULT(octlibdir, '$(libdir)/octave-$(version)') OCTAVE_SET_DEFAULT(archlibdir, '$(libexecdir)/octave/$(version)/exec/$(canonical_host_type)') OCTAVE_SET_DEFAULT(localarchlibdir, '$(libexecdir)/octave/site/exec/$(canonical_host_type)') OCTAVE_SET_DEFAULT(localapiarchlibdir, '$(libexecdir)/octave/$(api_version)/site/exec/$(canonical_host_type)') OCTAVE_SET_DEFAULT(localverarchlibdir, '$(libexecdir)/octave/$(version)/site/exec/$(canonical_host_type)') OCTAVE_SET_DEFAULT(octfiledir, '$(libexecdir)/octave/$(version)/oct/$(canonical_host_type)') OCTAVE_SET_DEFAULT(localoctfiledir, '$(libexecdir)/octave/site/oct/$(canonical_host_type)') OCTAVE_SET_DEFAULT(localapioctfiledir, '$(libexecdir)/octave/site/oct/$(api_version)/$(canonical_host_type)') OCTAVE_SET_DEFAULT(localveroctfiledir, '$(libexecdir)/octave/$(version)/site/oct/$(canonical_host_type)') OCTAVE_SET_DEFAULT(imagedir, '$(datadir)/octave/$(version)/imagelib') ### Make configure args available for other uses. config_opts=$ac_configure_args AC_SUBST(config_opts) ### Make it possible to have Octave's array and matrix classes do bounds ### checking on element references. This slows some operations down a ### bit, so it is turned off by default. BOUNDS_CHECKING=false AC_ARG_ENABLE(bounds-check, [AS_HELP_STRING([--enable-bounds-check], [bounds checking for indexing in internal array classes (default is no)])], [if test "$enableval" = yes; then BOUNDS_CHECKING=true; fi], []) if $BOUNDS_CHECKING; then AC_DEFINE(BOUNDS_CHECKING, 1, [Define to use internal bounds checking.]) fi ### If possible, use a 64-bit integer type for array dimensions and indexing. USE_64_BIT_IDX_T=false OCTAVE_IDX_TYPE=int AC_ARG_ENABLE(64, [AS_HELP_STRING([--enable-64], [(EXPERIMENTAL) use 64-bit integers for array dimensions and indexing])], [if test "$enableval" = yes; then USE_64_BIT_IDX_T=true; fi], []) if $USE_64_BIT_IDX_T; then AC_CHECK_SIZEOF(void *) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) if test $ac_cv_sizeof_void_p -eq 8; then if test $ac_cv_sizeof_int -eq 8; then OCTAVE_IDX_TYPE=int elif test $ac_cv_sizeof_long -eq 8; then OCTAVE_IDX_TYPE=long AC_DEFINE(IDX_TYPE_LONG, 1, [Define to 1 if octave index type is long]) else warn_64_bit="no suitable type found for octave_idx_type so disabling 64-bit features" AC_MSG_WARN($warn_64_bit) USE_64_BIT_IDX_T=false fi else warn_64_bit="pointers are not 64-bits wide so disabling 64-bit features" AC_MSG_WARN($warn_64_bit) USE_64_BIT_IDX_T=false fi fi AC_SUBST(OCTAVE_IDX_TYPE) if $USE_64_BIT_IDX_T; then AC_DEFINE(USE_64_BIT_IDX_T, 1, [Define if using 64-bit integers for array dimensions and indexing]) fi AC_SUBST(USE_64_BIT_IDX_T) ### It seems that there are some broken inline assembly functions in ### the GNU libc. Since I'm not sure how to test whether we are using ### GNU libc, just disable them for all platforms. AC_MSG_NOTICE([defining __NO_MATH_INLINES avoids buggy GNU libc exp function]) AC_DEFINE(__NO_MATH_INLINES, 1, [Define if your version of GNU libc has buggy inline assembly code for math functions like exp.]) ### See which C++ compiler to use (we expect to find g++). AC_PROG_CXX AC_PROG_CXXCPP ### Do special things for g++. gxx_version=`$CXX -v 2>&1 | grep "^.*g.. version" | \ sed -e 's/^.*g.. version *//' -e 's/cygnus-//' -e 's/egcs-//' -e 's/ .*//'` case "$gxx_version" in 1.* | 2.[[0123456789]].* | 3.[[01234]].*) AC_MSG_ERROR([g++ version $gxx_version will probably fail to compile Octave] ) ;; esac CXX_VERSION= if test -n "$gxx_version"; then CXX_VERSION="$gxx_version" fi AC_SUBST(CXX_VERSION) OCTAVE_CXX_NEW_FRIEND_TEMPLATE_DECL OCTAVE_CXX_ISO_COMPLIANT_LIBRARY OCTAVE_CXX_BROKEN_REINTERPRET_CAST ### See which C compiler to use (we expect to find gcc). AC_PROG_CC AC_PROG_CPP AC_PROG_GCC_TRADITIONAL ### Do special things for gcc. gcc_version=`$CC -v 2>&1 | grep "^.*gcc version" | \ sed -e 's/^.*g.. version *//' -e 's/cygnus-//' -e 's/egcs-//'` case "$gcc_version" in 2.*) if test -z "$LDFLAGS"; then LDFLAGS="-g" AC_MSG_NOTICE([defining LDFLAGS to be $LDFLAGS]) fi ;; 1.*) warn_gcc_version="gcc version $gcc_version is likely to cause problems" AC_MSG_WARN($warn_gcc_version) ;; esac CC_VERSION= if test -n "$gcc_version"; then CC_VERSION="$gcc_version" fi AC_SUBST(CC_VERSION) ### The flag to create dependency varies depending on the compier. # Assume GCC. INCLUDE_DEPS=true DEPEND_FLAGS="-M" DEPEND_EXTRA_SED_PATTERN="" if test "$GCC" = yes; then true else case "$canonical_host_type" in sparc-sun-solaris2* | i386-pc-solaris2*) DEPEND_FLAGS="-xM1" DEPEND_EXTRA_SED_PATTERN="-e '/\/opt\/SUNWspro/d'" ;; *-*-msdosmsvc) ;; *) INCLUDE_DEPS=false ;; esac fi AC_SUBST(INCLUDE_DEPS) AC_SUBST(DEPEND_FLAGS) AC_SUBST(DEPEND_EXTRA_SED_PATTERN) sinclude(acx_pthread.m4) ACX_PTHREAD AC_PATH_X if test "$have_x"; then AC_DEFINE(HAVE_X_WINDOWS, 1, [Define if you have X11]) if test "$x_includes" != "NONE"; then X11_INCFLAGS="$x_includes" fi AC_SUBST(X11_INCFLAGS) if test -z $x_libraries; then AC_CHECK_LIB(X11, XrmInitialize, [X11_LIBS=-lX11], [X11_LIBS=]) elif test $x_libraries != "NONE"; then AC_CHECK_LIB(X11, XrmInitialize, [X11_LIBS="-L$x_libraries -lX11"], [X11_LIBS=], "-L$x_libraries") fi AC_SUBST(X11_LIBS) fi ### On MacOSX system the Carbon framework is used to determine ScreenSize OCTAVE_HAVE_FRAMEWORK(Carbon, [#include <Carbon/Carbon.h>], [CGMainDisplayID ()], [have_framework_carbon="yes"], [have_framework_carbon="no"]) if test $have_framework_carbon = "yes"; then AC_DEFINE(HAVE_FRAMEWORK_CARBON, 1, [Define if framework CARBON is available.]) CARBON_LIBS="-Wl,-framework -Wl,Carbon" AC_MSG_NOTICE([adding -Wl,-framework -Wl,Carbon to CARBON_LIBS]) AC_SUBST(CARBON_LIBS) fi ### On Intel systems with gcc, we may need to compile with -mieee-fp ### and -ffloat-store to get full support for IEEE floating point. ### ### On Alpha/OSF systems, we need -mieee. ieee_fp_flag= case "$canonical_host_type" in ## Keep this pattern first, so that it is preferred over the ## following pattern for x86. *-*-msdosmsvc) CXXFLAGS="$CXXFLAGS -EHs -MD" CFLAGS="$CFLAGS -MD" ;; i[[3456789]]86-*-*) if test "$GCC" = yes; then OCTAVE_CC_FLAG(-mieee-fp, [ ieee_fp_flag=-mieee-fp XTRA_CFLAGS="$XTRA_CFLAGS -mieee-fp" AC_MSG_NOTICE([adding -mieee-fp to XTRA_CFLAGS])]) ### OCTAVE_CC_FLAG(-ffloat-store, [ ### float_store_flag=-ffloat-store ### XTRA_CFLAGS="$XTRA_CFLAGS -ffloat-store" ### AC_MSG_RESULT([adding -ffloat-store to XTRA_CFLAGS])]) fi if test "$GXX" = yes; then OCTAVE_CXX_FLAG(-mieee-fp, [ ieee_fp_flag=-mieee-fp XTRA_CXXFLAGS="$XTRA_CXXFLAGS -mieee-fp" AC_MSG_NOTICE([adding -mieee-fp to XTRA_CXXFLAGS])]) ### OCTAVE_CXX_FLAG(-ffloat-store, [ ### float_store_flag=-ffloat-store ### XTRA_CXXFLAGS="$XTRA_CXXFLAGS -ffloat-store" ### AC_MSG_RESULT([adding -ffloat-store to XTRA_CXXFLAGS])]) fi ;; alpha*-*-*) if test "$GCC" = yes; then OCTAVE_CC_FLAG(-mieee, [ ieee_fp_flag=-mieee XTRA_CFLAGS="$XTRA_CFLAGS -mieee" AC_MSG_NOTICE([adding -mieee to XTRA_CFLAGS])]) else OCTAVE_CC_FLAG(-ieee, [ ieee_fp_flag=-ieee XTRA_CFLAGS="$XTRA_CFLAGS -ieee" AC_MSG_NOTICE([adding -ieee to XTRA_CFLAGS])]) fi if test "$GXX" = yes; then OCTAVE_CXX_FLAG(-mieee, [ ieee_fp_flag=-mieee XTRA_CXXFLAGS="$XTRA_CXXFLAGS -mieee" AC_MSG_NOTICE([adding -mieee to XTRA_CXXFLAGS])]) else OCTAVE_CXX_FLAG(-ieee, [ ieee_fp_flag=-ieee XTRA_CXXFLAGS="$XTRA_CXXFLAGS -ieee" AC_MSG_NOTICE([adding -ieee to XTRA_CXXFLAGS])]) fi ;; *ibm-aix4*) OCTAVE_CC_FLAG(-mminimal-toc, [ XTRA_CFLAGS="$XTRA_CFLAGS -mminimal-toc"]) OCTAVE_CXX_FLAG(-mminimal-toc, [ XTRA_CXXFLAGS="$XTRA_CXXFLAGS -mminimal-toc"]) ;; esac AC_SUBST(XTRA_CFLAGS) AC_SUBST(XTRA_CXXFLAGS) ### Use -static if compiling on Alpha OSF/1 1.3 systems. case "$canonical_host_type" in alpha*-dec-osf1.3) LD_STATIC_FLAG=-static ;; esac if test -n "$LD_STATIC_FLAG"; then AC_MSG_NOTICE([defining LD_STATIC_FLAG to be $LD_STATIC_FLAG]) fi AC_SUBST(LD_STATIC_FLAG) ### Defaults for cross compiling. BUILD_CC and BUILD_CXX are ### the compilers that we use for building tools on the build system. ### For now, we assume that the only cross compiling we can do is ### with gcc on a Unixy system, but the dedicated hacker can override these. if test "$cross_compiling" = yes; then BUILD_CC="gcc" BUILD_CFLAGS="-O2 -g" BUILD_CXX="g++" BUILD_CXXFLAGS="-O2 -g" BUILD_LDFLAGS="" BUILD_EXEEXT="" else BUILD_CC='$(CC)' BUILD_CFLAGS='$(CFLAGS)' BUILD_CXX='$(CXX)' BUILD_CXXFLAGS='$(CXXFLAGS)' BUILD_LDFLAGS='$(LDFLAGS)' case "$canonical_host_type" in sparc-sun-solaris2*) if test "$GCC" != yes; then ## The Sun C++ compiler never seems to complete compiling ## gendoc.cc unless we reduce the optimization level... BUILD_CXXFLAGS="-g -O1" fi ;; esac BUILD_EXEEXT='$(EXEEXT)' fi AC_ARG_VAR(BUILD_CC, [build system C compiler (used if cross compiling)]) AC_ARG_VAR(BUILD_CFLAGS, [build system C compiler flags (used if cross compiling)]) AC_ARG_VAR(BUILD_CXX, [build system C++ compiler (used if cross compiling)]) AC_ARG_VAR(BUILD_CXXFLAGS, [build system C++ compiler flags (used if cross compiling)]) AC_ARG_VAR(BUILD_LDFLAGS, [build system C++ compiler link flags (used if cross compiling)]) AC_ARG_VAR(BUILD_EXEEXT, [build system executable extension (used if cross compiling)]) dnl This is bogus. We shouldn't have to explicitly add libc too! ### Look for math library. If found, this will add -lm to LIBS. case "$canonical_host_type" in *-*-nextstep*) ;; *-*-linux*) AC_CHECK_LIB(m, sin, , , -lc) ;; *) AC_CHECK_LIB(m, sin) ;; esac ### Check for the QHull library AC_SUBST(QHULL_LIBS) AC_CHECK_HEADER(qhull/qhull_a.h, have_qhull=yes, have_qhull=no) if test "$have_qhull" = yes; then AC_CHECK_LIB(qhull, qh_qhull, have_qhull=yes, have_qhull=no) if test "$have_qhull" != yes; then AC_CHECK_QHULL_VERSION(have_qhull=yes, have_qhull=no) AC_DEFINE(NEED_QHULL_VERSION, 1, [Define if the QHull library needs a wh_version variable defined.]) fi if test "$have_qhull" = yes; then AC_CHECK_QHULL_OK(have_qhull=yes, have_qhull=bad) fi fi if test "$have_qhull" = yes; then AC_DEFINE(HAVE_QHULL, 1, [Define if the QHull library is used.]) QHULL_LIBS="-lqhull" TEXINFO_QHULL="@set HAVE_QHULL" else if test "$have_qhull" = bad; then warn_qhull="Qhull library found, but seems not to work properly --- This will result in loss of functionality of some geometry functions. Please try recompiling the library with -fno-strict-aliasing." else warn_qhull="Qhull library not found --- This will result in loss of functionality of some geometry functions." fi AC_MSG_WARN($warn_qhull) fi AC_SUBST(TEXINFO_QHULL) ### Check for pcre/regex library. ## check for pcre-config, and if so, set CPPFLAGS appropriately AC_CHECK_PROG(WITH_PCRE_CONFIG, pcre-config, yes, no) if test $WITH_PCRE_CONFIG = yes ; then CPPFLAGS="$CPPFLAGS $(pcre-config --cflags)" fi ## NB: no need to do separate check for pcre.h header -- checking macros is good enough AC_CACHE_CHECK([whether pcre.h defines the macros we need], [ac_cv_pcre_h_macros_present], [ AC_EGREP_CPP([PCRE_HAS_MACROS_WE_NEED], [ #include <pcre.h> #if defined (PCRE_INFO_NAMECOUNT) \ && defined (PCRE_INFO_NAMEENTRYSIZE) \ && defined (PCRE_INFO_NAMETABLE) PCRE_HAS_MACROS_WE_NEED #endif], ac_cv_pcre_h_macros_present=yes, ac_cv_pcre_h_macros_present=no)]) WITH_PCRE="$ac_cv_pcre_h_macros_present" REGEX_LIBS= using_pcre=no using_regex=no if test "$WITH_PCRE" = yes; then if test "$WITH_PCRE_CONFIG" = yes; then REGEX_LIBS=$(pcre-config --libs) else REGEX_LIBS=-lpcre fi save_LIBS="$LIBS" LIBS="$REGEX_LIBS $LIBS" AC_CHECK_FUNCS(pcre_compile, [using_pcre=yes AC_DEFINE(HAVE_PCRE, 1, [Define if PCRE library is available.])], [ REGEX_LIBS= warn_pcre="PCRE library not found. This will result in some loss of functionality for the regular expression matching functions." AC_MSG_WARN($warn_pcre)]) LIBS="$save_LIBS" else warn_pcre="PCRE library not found. This will result in some loss of functionality for the regular expression matching functions." AC_MSG_WARN($warn_pcre) fi AC_CHECK_FUNCS(regexec, [using_regex=yes], [ AC_CHECK_LIB(regex, regexec, [using_regex=yes REGEX_LIBS="-lregex $REGEX_LIBS"], [ warn_regex="regular expression functions not found. The regular expression matching functions will be disabled." AC_MSG_WARN($warn_regex)])]) if test "$using_regex" = yes; then AC_DEFINE(HAVE_REGEX, 1, [Define if regex library is available.]) fi AC_SUBST(REGEX_LIBS) ### Check for ZLIB library. WITH_ZLIB=true AC_ARG_WITH(zlib, [AS_HELP_STRING([--without-zlib], [don't use zlib])], with_zlib=$withval, with_zlib=yes) zlib_lib= if test "$with_zlib" = yes; then zlib_lib="z" elif test "$with_zlib" != no; then zlib_lib="$with_zlib" fi ZLIB_LIBS= WITH_ZLIB=false if test -n "$zlib_lib"; then AC_CHECK_LIB($zlib_lib, gzclearerr, [ AC_CHECK_HEADERS(zlib.h, [ WITH_ZLIB=true ZLIB_LIBS="-l$zlib_lib" LIBS="$ZLIB_LIBS $LIBS" AC_DEFINE(HAVE_ZLIB, 1, [Define if ZLIB is available.])])]) fi if $WITH_ZLIB; then ### Check for HDF5 library. WITH_HDF5=true AC_ARG_WITH(hdf5, [AS_HELP_STRING([--without-hdf5], [don't use HDF5])], with_hdf5=$withval, with_hdf5=yes) hdf5_lib= if test "$with_hdf5" = yes; then hdf5_lib="hdf5" elif test "$with_hdf5" != no; then hdf5_lib="$with_hdf5" fi HDF5_LIBS= WITH_HDF5=false if test -n "$hdf5_lib"; then AC_CHECK_LIB($hdf5_lib, H5Pcreate, [ AC_CHECK_HEADERS(hdf5.h, [ WITH_HDF5=true HDF5_LIBS="-l$hdf5_lib" LIBS="$HDF5_LIBS $LIBS" AC_CHECK_LIB($hdf5_lib, H5Gget_num_objs, [ OCTAVE_HDF5_HAS_REQUIRED_API if test $WITH_HDF5; then AC_DEFINE(HAVE_HDF5, 1, [Define if HDF5 is available.]) AC_DEFINE(HAVE_H5GGET_NUM_OBJS, 1, [Define if HDF5 has H5Gget_num_objs.]) fi])])]) fi if $WITH_HDF5; then case "$canonical_host_type" in *-*-msdosmsvc) OCTAVE_HDF5_DLL ;; esac true fi else warn_zlib="ZLIB library not found. Octave will not be able to save or load compressed data files or HDF5 files." AC_MSG_WARN($warn_zlib) fi # Checks for FFTW header and library. # subdirectories of libcruft to build if they aren't found on the system: FFT_DIR="fftpack" AC_SUBST(FFT_DIR) # Installed fftw library, if any. FFTW_LIBS='' AC_SUBST(FFTW_LIBS) AC_ARG_WITH(fftw, [AS_HELP_STRING([--without-fftw], [use included fftpack instead of installed fftw])], with_fftw=$withval, with_fftw=yes) if test "$with_fftw" = yes; then have_fftw3_header=no with_fftw3=no AC_CHECK_HEADER(fftw3.h, [have_fftw3_header=yes]) if test "$have_fftw3_header" = yes; then AC_CHECK_LIB(fftw3, fftw_plan_dft_1d, [ AC_CHECK_LIB(fftw3f, fftwf_plan_dft_1d, [FFTW_LIBS="-lfftw3 -lfftw3f"; with_fftw3=yes])]) fi fi if test "$with_fftw" = yes && test "$with_fftw3" = yes; then FFT_DIR='' AC_DEFINE(HAVE_FFTW3, 1, [Define if the FFTW3 library is used.]) else warn_fftw="FFTW library not found. Octave will use the (slower) FFTPACK library instead." AC_MSG_RESULT($warn_fftw) fi # Checks for GLPK header and library. AC_ARG_WITH(glpk, [AS_HELP_STRING([--without-glpk], [don't use GLPK])], with_glpk=$withval, with_glpk=yes) glpk_lib= if test "$with_glpk" = yes; then glpk_lib="glpk" elif test "$with_glpk" != no; then glpk_lib="$with_glpk" fi GLPK_LIBS= if test -n "$glpk_lib"; then AC_CHECK_HEADERS([glpk/glpk.h glpk.h], [ AC_CHECK_LIB($glpk_lib, glp_lpx_simplex, [ GLPK_LIBS="-l$glpk_lib" AC_DEFINE(GLPK_PRE_4_14, 1, [Define if GLPK version is less than 4.14.])], [ AC_CHECK_LIB($glpk_lib, _glp_lpx_simplex, [ GLPK_LIBS="-l$glpk_lib"], [])]) if test -n "$GLPK_LIBS"; then AC_DEFINE(HAVE_GLPK, 1, [Define if GLPK is available.]) fi break]) fi AC_SUBST(GLPK_LIBS) if test -z "$GLPK_LIBS"; then warn_glpk="GLPK library not found. The glpk function for solving linear programs will be disabled." fi # Checks for CURL header and library. AC_ARG_WITH(curl, [AS_HELP_STRING([--without-curl], [don't use CURL])], with_curl=$withval, with_curl=yes) curl_lib= if test "$with_curl" = yes; then curl_lib="curl" elif test "$with_curl" != no; then curl_lib="$with_curl" else curl_missing=yes fi CURL_LIBS= if test -n "$curl_lib"; then AC_CHECK_LIB($curl_lib, curl_easy_escape, [ AC_CHECK_HEADERS(curl/curl.h, [ CURL_LIBS="-l$curl_lib" AC_DEFINE(HAVE_CURL, 1, [Define if CURL is available.])], [ curl_missing=yes])]) fi AC_SUBST(CURL_LIBS) if test "$curl_missing" = yes; then warn_curl="cURL library not found. The urlread and urlwrite functions will be disabled." fi # GraphicsMagick++ warn_magick= AC_CHECK_PROGS(MAGICK_CONFIG, [GraphicsMagick++-config GraphicsMagick-config]) if test -z "$MAGICK_CONFIG"; then warn_magick="GraphicsMagick++ config script not found. Assuming GraphicsMagic++ library and header files are missing, so imread will not be fully functional" else AC_DEFINE(HAVE_MAGICK, 1, [Define if GraphicsMagick++ is available.]) fi # --------------------------------------------------------------------- ## libraries needed for graphics warn_freetype="" warn_ftgl="" OCTAVE_OPENGL if test -n "$OPENGL_LIBS"; then AC_DEFINE(HAVE_OPENGL, 1, [Define if OpenGL is available]) ## ftgl (needs freetype 2) AC_CHECK_FT2([9.0.3],[], [warn_freetype="FreeType library not found. Native renderer will not have on-screen text"]) if test -z "$warn_freetype"; then AC_LANG_PUSH(C++) save_LIBS="$LIBS" save_CXXFLAGS="$CXXFLAGS" save_CPPFLAGS="$CPPFLAGS" LIBS="$LIBS $FT2_LIBS $OPENGL_LIBS" CXXFLAGS="$CXXFLAGS $FT2_CFLAGS" CPPFLAGS="$CPPFLAGS $FT2_CFLAGS" has_ftgl_h=yes AC_CHECK_HEADERS([FTGL/ftgl.h ftgl.h], break, [ AC_CHECK_HEADERS([FTGL/FTGL.h FTGL.h], [ AC_DEFINE(HAVE_FTGL_UPPERCASE, 1, [Define to 1 if you have FTGL.h or FTGL/FTGL.h]) break ], has_ftgl_h=no)]) if test "$has_ftgl_h" = yes; then AC_MSG_CHECKING([for FTGLTextureFont in -lftgl]) LIBS="$save_LIBS -lftgl $FT2_LIBS $OPENGL_LIBS" AC_TRY_LINK([ #ifdef HAVE_FTGL_FTGL_H #ifdef HAVE_FTGL_UPPERCASE #include <FTGL/FTGL.h> #else #include <FTGL/ftgl.h> #endif #include <FTGL/FTGLTextureFont.h> #elif HAVE_FTGL_H #ifdef HAVE_FTGL_UPPERCASE #include <FTGL.h> #else #include <ftgl.h> #endif #include <FTGLTextureFont.h> #endif], [ FTGLTextureFont font("");], [ OPENGL_LIBS="-lftgl $FT2_LIBS $OPENGL_LIBS" LIBS="$save_LIBS" CPPFLAGS="$save_CPPFLAGS" AC_DEFINE(HAVE_FTGL, 1, [Define to 1 if FTGL is present]) AC_MSG_RESULT(yes) XTRA_CXXFLAGS="$XTRA_CXXFLAGS $FT2_CFLAGS"], [ AC_MSG_RESULT(no) warn_ftgl="FTGL library not found. Native renderer will not have on-screen text" ]) LIBS="$save_LIBS" CXXFLAGS="$save_CXXFLAGS" CPPFLAGS="$save_CPPFLAGS" else warn_ftgl="FTGL headers not found. Native renderer will not have on-screen text" fi AC_LANG_POP(C++) fi fi GRAPHICS_LIBS= GRAPHICS_CFLAGS= ## fltk (www.fltk.org) AC_ARG_WITH(fltk-prefix, [ --with-fltk-prefix=PFX Prefix where FLTK is installed (optional)], fltk_prefix="$withval", fltk_prefix="") AC_ARG_WITH(fltk-exec-prefix, [ --with-fltk-exec-prefix=PFX Exec prefix where FLTK is installed (optional)], fltk_exec_prefix="$withval", fltk_exec_prefix="") if test -n "$fltk_exec_prefix"; then fltk_args="$fltk_args --exec-prefix=$fltk_exec_prefix" if test "x${FLTK_CONFIG+set}" != xset ; then FLTK_CONFIG="$fltk_exec_prefix/bin/fltk-config" fi fi if test -n "$fltk_prefix"; then fltk_args="$fltk_args --prefix=$fltk_prefix" if test x${FLTK_CONFIG+set} != xset ; then FLTK_CONFIG="$fltk_prefix/bin/fltk-config" fi fi AC_PATH_PROG(FLTK_CONFIG, fltk-config, no) warn_fltk_config="" warn_fltk_opengl="" if test "$FLTK_CONFIG" = "no" ; then warn_fltk_config="FLTK config script not found. Native graphics will be disabled." else FLTK_CFLAGS="`$FLTK_CONFIG $fltkconf_args --use-gl --cflags`" FLTK_LDFLAGS="`$FLTK_CONFIG $fltkconf_args --use-gl --ldflags`" AC_MSG_CHECKING(for OpenGL support in FLTK) cat > conftest.cc <<EOF #include <FL/gl.h> int nothing=0; EOF $CXX $CXXFLAGS $FLTK_CFLAGS -c conftest.cc || \ warn_fltk_opengl="FLTK does not have OpenGL support. Native graphics will be disabled." if test -z "$warn_fltk_opengl"; then AC_MSG_RESULT(yes) AC_DEFINE(HAVE_FLTK, 1, [Define if FLTK is available]) GRAPHICS_CFLAGS="$FLTK_CFLAGS" GRAPHICS_LIBS="$FLTK_LDFLAGS" else AC_MSG_RESULT(no) fi fi AC_SUBST(GRAPHICS_CFLAGS) AC_SUBST(GRAPHICS_LIBS) OCTAVE_IEEE754_DATA_FORMAT # ---------------------------------------------------------------------- OCTAVE_PROG_AR AC_PROG_RANLIB ## Default FFLAGS is -O. if test "x$FFLAGS" = x; then FFLAGS="-O" fi ## the F77 variable, if set, overrides AC_PROG_F77 automatically AC_PROG_F77 AC_F77_LIBRARY_LDFLAGS AC_F77_DUMMY_MAIN AC_F77_WRAPPERS F77_TOLOWER=true F77_APPEND_UNDERSCORE=true F77_APPEND_EXTRA_UNDERSCORE=true case "$ac_cv_f77_mangling" in "upper case") F77_TOLOWER=false ;; esac case "$ac_cv_f77_mangling" in "no underscore") F77_APPEND_UNDERSCORE=false ;; esac case "$ac_cv_f77_mangling" in "no extra underscore") F77_APPEND_EXTRA_UNDERSCORE=false ;; esac case "$canonical_host_type" in i[[3456789]]86-*-*) if test "$ac_cv_f77_compiler_gnu" = yes; then OCTAVE_F77_FLAG(-mieee-fp) ### OCTAVE_F77_FLAG(-ffloat-store) fi ;; alpha*-*-*) if test "$ac_cv_f77_compiler_gnu" = yes; then OCTAVE_F77_FLAG(-mieee) else OCTAVE_F77_FLAG(-ieee) OCTAVE_F77_FLAG(-fpe1) fi ;; powerpc-apple-machten*) FFLAGS= ;; esac if test -n "$FFLAGS"; then AC_MSG_NOTICE([defining FFLAGS to be $FFLAGS]) fi AC_SUBST(F77_TOLOWER) AC_SUBST(F77_APPEND_UNDERSCORE) AC_SUBST(F77_APPEND_EXTRA_UNDERSCORE) if test -z "$F77"; then AC_MSG_WARN([in order to build octave, you must have a compatible]) AC_MSG_WARN([Fortran compiler or wrapper script for f2c that functions]) AC_MSG_WARN([as a Fortran compiler installed and in your path.]) AC_MSG_ERROR([See the file INSTALL for more information.]) fi XTRA_CRUFT_SH_LDFLAGS= case "$canonical_host_type" in *-*-msdosmsvc) FLIBS="$FLIBS -lkernel32" XTRA_CRUFT_SH_LDFLAGS="-Wl,-def:cruft.def" ;; esac AC_SUBST(XTRA_CRUFT_SH_LDFLAGS) FC=$F77 AC_SUBST(FC) OCTAVE_F77_FLAG(-ffloat-store, [ AC_MSG_RESULT([setting F77_FLOAT_STORE_FLAG to -ffloat-store]) F77_FLOAT_STORE_FLAG=-ffloat-store AC_SUBST(F77_FLOAT_STORE_FLAG) ]) ### Checks for BLAS and LAPACK libraries: # (Build subdirectories of libcruft if they aren't found on the system.) sinclude(acx_blas.m4) sinclude(acx_blas_f77_func.m4) sinclude(acx_lapack.m4) ACX_BLAS_WITH_F77_FUNC([], [BLAS_DIR="blas"]) ACX_LAPACK([BLAS_LIBS="$LAPACK_LIBS $BLAS_LIBS"], [LAPACK_DIR="lapack"]) AC_SUBST(BLAS_DIR) AC_SUBST(LAPACK_DIR) if test "x$acx_blas_f77_func_ok" = "xno"; then warn_blas_f77_incompatible="A BLAS library was detected but found incompatible with your Fortran 77 compiler. The reference BLAS implementation will be used. To improve performance, consider using a different Fortran compiler or a switch like -ff2c to make your Fortran compiler use a calling convention compatible with the way your BLAS library was compiled, or use a different BLAS library." AC_MSG_WARN($warn_blas_f77_incompatible) fi QRUPDATE_LIBS= AC_SUBST(QRUPDATE_LIBS) # Check for the qrupdate library AC_ARG_WITH(qrupdate, [AS_HELP_STRING([--without-qrupdate], [don't use qrupdate, disable QR & Cholesky updating functions])], with_qrupdate=$withval, with_qrupdate=yes) warn_qrupdate="qrupdate not found. The QR & Cholesky updating functions will be slow." if test "$with_qrupdate" = yes; then with_qrupdate=no if $have_fortran_compiler; then AC_F77_FUNC(sqr1up) elif $have_f2c; then sqr1up=sqr1up_ fi AC_CHECK_LIB(qrupdate, $sqr1up, [QRUPDATE_LIBS="-lqrupdate"; with_qrupdate=yes], [], [$BLAS_LIBS $FLIBS]) if test "$with_qrupdate" = yes; then AC_DEFINE(HAVE_QRUPDATE, 1, [Define if the qrupdate library is used.]) warn_qrupdate= fi fi if test -n "$warn_qrupdate"; then AC_MSG_WARN($warn_qrupdate) fi # Check for AMD library AMD_LIBS= AC_SUBST(AMD_LIBS) AC_ARG_WITH(amd, [AS_HELP_STRING([--without-amd], [don't use AMD, disable some sparse functionality])], with_amd=$withval, with_amd=yes) warn_amd="AMD not found. This will result in some lack of functionality for sparse matrices." if test "$with_amd" = yes; then with_amd=no AC_CHECK_HEADERS([suitesparse/amd.h ufsparse/amd.h amd/amd.h amd.h], [ AC_CHECK_LIB(amd, amd_postorder, [AMD_LIBS="-lamd"; with_amd=yes]) if test "$with_amd" = yes; then AC_DEFINE(HAVE_AMD, 1, [Define if the AMD library is used.]) warn_amd= fi break]) fi if test -n "$warn_amd"; then AC_MSG_WARN($warn_amd) fi # Check for CAMD library CAMD_LIBS= AC_SUBST(CAMD_LIBS) AC_CHECK_LIB(camd, camd_postorder, [CAMD_LIBS="-lcamd"; with_camd=yes],[with_camd=no]) # Check for UMFPACK library. UMFPACK_LIBS= AC_SUBST(UMFPACK_LIBS) AC_ARG_WITH(umfpack, [AS_HELP_STRING([--without-umfpack], [don't use UMFPACK, disable some sparse functionality])], with_umfpack=$withval, with_umfpack=yes) warn_umfpack="UMFPACK not found. This will result in some lack of functionality for sparse matrices." if test "$with_umfpack" = yes && test "$with_amd" = yes; then with_umfpack=no AC_CHECK_HEADERS([suitesparse/umfpack.h ufsparse/umfpack.h umfpack/umfpack.h umfpack.h], [ AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [ UMFPACK_LIBS="-lumfpack"; with_umfpack=yes], [ ## Invalidate the cache. $as_unset ac_cv_lib_umfpack_umfpack_zi_get_determinant AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [ UMFPACK_LIBS="-lumfpack"; with_umfpack=yes], [ ## Invalidate the cache. $as_unset ac_cv_lib_umfpack_umfpack_zi_get_determinant AC_CHECK_LIB(umfpack, umfpack_zi_get_determinant, [ UMFPACK_LIBS="-lumfpack -lcblas"; with_umfpack=yes], [], $AMD_LIBS -lcblas $BLAS_LIBS)], $AMD_LIBS $BLAS_LIBS $FLIBS)], $AMD_LIBS) if test "$with_umfpack" = yes; then AC_DEFINE(HAVE_UMFPACK, 1, [Define if the UMFPACK library is used.]) OLD_LIBS=$LIBS LIBS="$LIBS $UMFPACK_LIBS $AMD_LIBS $BLAS_LIBS $FLIBS" OCTAVE_UMFPACK_SEPERATE_SPLIT LIBS=$OLD_LIBS TEXINFO_UMFPACK="@set HAVE_UMFPACK" warn_umfpack= fi break]) fi if test -n "$warn_umfpack"; then AC_MSG_WARN($warn_umfpack) fi AC_SUBST(TEXINFO_UMFPACK) COLAMD_LIBS= AC_SUBST(COLAMD_LIBS) AC_ARG_WITH(colamd, [AS_HELP_STRING([--without-colamd], [don't use COLAMD, disable some sparse functionality])], with_colamd=$withval, with_colamd=yes) warn_colamd="COLAMD not found. This will result in some lack of functionality for sparse matrices." if test "$with_colamd" = yes; then with_colamd=no AC_CHECK_HEADERS([suitesparse/colamd.h ufsparse/colamd.h colamd/colamd.h colamd.h], [ AC_CHECK_LIB(colamd, colamd, [COLAMD_LIBS="-lcolamd"; with_colamd=yes]) if test "$with_colamd" = yes; then AC_DEFINE(HAVE_COLAMD, 1, [Define if the COLAMD library is used.]) TEXINFO_COLAMD="@set HAVE_COLAMD" warn_colamd= fi break]) fi if test -n "$warn_colamd"; then AC_MSG_WARN($warn_colamd) fi AC_SUBST(TEXINFO_COLAMD) CCOLAMD_LIBS= AC_SUBST(CCOLAMD_LIBS) AC_ARG_WITH(ccolamd, [AS_HELP_STRING([--without-ccolamd], [don't use CCOLAMD, disable some sparse functionality])], with_ccolamd=$withval, with_ccolamd=yes) warn_ccolamd="CCOLAMD not found. This will result in some lack of functionality for sparse matrices." if test "$with_ccolamd" = yes; then with_ccolamd=no AC_CHECK_HEADERS([suitesparse/ccolamd.h ufsparse/ccolamd.h ccolamd/ccolamd.h ccolamd.h], [ AC_CHECK_LIB(ccolamd, ccolamd, [CCOLAMD_LIBS="-lccolamd"; with_ccolamd=yes]) if test "$with_ccolamd" = yes; then AC_DEFINE(HAVE_CCOLAMD, 1, [Define if the CCOLAMD library is used.]) warn_ccolamd= fi break]) fi if test -n "$warn_ccolamd"; then AC_MSG_WARN($warn_ccolamd) fi CHOLMOD_LIBS= AC_SUBST(CHOLMOD_LIBS) AC_ARG_WITH(cholmod, [AS_HELP_STRING([--without-cholmod], [don't use CHOLMOD, disable some sparse functionality])], with_cholmod=$withval, with_cholmod=yes) warn_cholmod="CHOLMOD not found. This will result in some lack of functionality for sparse matrices." if test "$with_cholmod" = yes && test "$with_colamd" = yes && test "$with_ccolamd" = yes && test "$with_amd" = yes; then with_cholmod=no AC_CHECK_HEADERS([suitesparse/cholmod.h ufsparse/cholmod.h cholmod/cholmod.h cholmod.h], [ AC_CHECK_LIB(cholmod, cholmod_start, [CHOLMOD_LIBS="-lcholmod"; with_cholmod=yes], [ AC_CHECK_LIB(cholmod, cholmod_start, [CHOLMOD_LIBS="-lcholmod -cblas"; with_cholmod=yes], [], $CAMD_LIBS $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS)], $CAMD_LIBS $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS) if test "$with_cholmod" = yes; then AC_DEFINE(HAVE_CHOLMOD, 1, [Define if the CHOLMOD library is used.]) TEXINFO_CHOLMOD="@set HAVE_CHOLMOD" warn_cholmod= fi break]) fi if test -n "$warn_cholmod"; then AC_MSG_WARN($warn_cholmod) fi AC_SUBST(TEXINFO_CHOLMOD) CXSPARSE_LIBS= AC_SUBST(CXSPARSE_LIBS) AC_ARG_WITH(cxsparse, [AS_HELP_STRING([--without-cxsparse], [don't use CXSparse, disable some sparse functionality])], with_cxsparse=$withval, with_cxsparse=yes) warn_cxsparse="CXSparse not found. This will result in some lack of functionality for sparse matrices." if test "$with_cxsparse" = yes; then with_cxsparse=no AC_LANG_PUSH(C++) AC_CHECK_HEADERS([suitesparse/cs.h ufsparse/cs.h cxsparse/cs.h cs.h], [ AC_CHECK_LIB(cxsparse, cs_di_sqr, [CXSPARSE_LIBS="-lcxsparse"; with_cxsparse=yes]) if test "$with_cxsparse" = yes; then AC_DEFINE(HAVE_CXSPARSE, 1, [Define if the CXSparse library is used.]) warn_cxsparse= fi break]) AC_LANG_POP(C++) fi if test -n "$warn_cxsparse"; then AC_MSG_WARN($warn_cxsparse) fi ARPACK_LIBS= AC_SUBST(ARPACK_LIBS) AC_ARG_WITH(arpack, [AS_HELP_STRING([--without-arpack], [don't use ARPACK, disable some sparse functionality])], with_arpack=$withval, with_arpack=yes) warn_arpack="arpack not found. This will result in a lack of the eigs function." if test "$with_arpack" = yes; then with_arpack=no AC_CHECK_LIB(arpack, F77_FUNC(dseupd,DSEUPD), [ARPACK_LIBS="-larpack"; with_arpack=yes], , $LAPACK_LIBS $FLIBS) if test "$with_arpack" = yes; then AC_DEFINE(HAVE_ARPACK, 1, [Define if the ARPACK library is used.]) warn_arpack= fi fi if test -n "$warn_arpack"; then AC_MSG_WARN($warn_arpack) fi ### Handle shared library options. ### Enable creation of static libraries. AC_ARG_ENABLE(static, [AS_HELP_STRING([--enable-static], [create static libraries])], [if test "$enableval" = no; then STATIC_LIBS=false; else STATIC_LIBS=true; fi], STATIC_LIBS=false) AC_SUBST(STATIC_LIBS) ### Enable creation of shared libraries. Currently only works with ### gcc on some systems. AC_ARG_ENABLE(shared, [AS_HELP_STRING([--enable-shared], [create shared libraries (not all systems)])], [if test "$enableval" = no; then SHARED_LIBS=false; else SHARED_LIBS=true; fi], SHARED_LIBS=true) AC_SUBST(SHARED_LIBS) ### Enable dynamic linking. --enable-shared implies this, so ### --enable-dl is only need if you are only building static libraries ### and want to try dynamic linking too (works on some systems, for ### example, OS X and Windows). AC_ARG_ENABLE(dl, [AS_HELP_STRING([--enable-dl], [create shared libraries (not all systems)])], [if test "$enableval" = no; then ENABLE_DYNAMIC_LINKING=false; else ENABLE_DYNAMIC_LINKING=true; fi], ENABLE_DYNAMIC_LINKING=true) if $STATIC_LIBS || $SHARED_LIBS; then true else AC_MSG_ERROR([You can't disable building static AND shared libraries!]) fi AC_ARG_ENABLE(rpath, [AS_HELP_STRING([--enable-rpath], [override the default link options for rpath; e.g., --enable-rpath='-rpath $(octlibdir)'])], [ if test "$enableval" = no; then use_rpath=false; else use_rpath=true if test "$enableval" = yes; then true; else enable_rpath_arg="$enableval"; fi fi], [use_rpath=true]) CPICFLAG=-fPIC CXXPICFLAG=-fPIC FPICFLAG=-fPIC SHLEXT=so SHLLIB='$(SHLEXT)' SHLBIN= SHLEXT_VER='$(SHLEXT).$(version)' SHLLIB_VER='$(SHLLIB).$(version)' SHLBIN_VER='$(SHLBIN).$(version)' SHLLINKEXT= LIBPRE=lib SHLPRE=lib SHLLIBPRE=lib SHLBINPRE=lib SH_LD='$(CXX)' SH_LDFLAGS=-shared DL_LD='$(SH_LD)' DL_LDFLAGS='$(SH_LDFLAGS)' MKOCTFILE_DL_LDFLAGS='$(DL_LDFLAGS)' SONAME_FLAGS= RLD_FLAG= NO_OCT_FILE_STRIP=false TEMPLATE_AR='$(AR)' TEMPLATE_ARFLAGS="$ARFLAGS" CRUFT_DLL_DEFS= OCTAVE_DLL_DEFS= OCTINTERP_DLL_DEFS= OCTGRAPHICS_DLL_DEFS= library_path_var=LD_LIBRARY_PATH SCRIPTS_EXE_SUFFIX= case "$canonical_host_type" in *-*-386bsd* | *-*-netbsd*) SH_LD=ld SH_LDFLAGS=-Bshareable ;; *-*-openbsd*) SH_LDFLAGS='-shared -fPIC' ;; *-*-freebsd*) SH_LDFLAGS="-shared -Wl,-x" RLD_FLAG='-Wl,-rpath -Wl,$(octlibdir)' ;; alpha*-dec-osf*) CPICFLAG= CXXPICFLAG= FPICFLAG= SH_LDFLAGS="-shared -Wl,-expect_unresolved -Wl,'*'" RLD_FLAG='-Wl,-rpath -Wl,$(octlibdir)' ;; *-*-darwin*) DL_LDFLAGS='-bundle -bundle_loader $(TOPDIR)/src/octave $(LDFLAGS)' MKOCTFILE_DL_LDFLAGS='-bundle -bundle_loader $$BINDIR/octave-$$OCTAVE_VERSION$$EXEEXT' SH_LDFLAGS='-dynamiclib -single_module $(LDFLAGS)' case "$canonical_host_type" in powerpc-*) CXXPICFLAG= CPICFLAG= FPICFLAG= ;; esac SHLEXT=dylib SHLLIB='$(SHLEXT)' SHLEXT_VER='$(version).$(SHLEXT)' SHLLIB_VER='$(version).$(SHLLIB)' NO_OCT_FILE_STRIP=true SONAME_FLAGS='-install_name $(octlibdir)/$@' library_path_var=DYLD_LIBRARY_PATH ;; *-*-cygwin*) CPICFLAG= CXXPICFLAG= FPICFLAG= LIBPRE=lib SHLPRE=cyg SHLBINPRE=cyg SHLEXT=dll SHLLIB=dll.a SHLBIN=dll DL_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc" SH_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-auto-image-base" SONAME_FLAGS='-Wl,--out-implib=$(patsubst $(SHLPRE)%,$(LIBPRE)%,$@).a' ;; *-*-mingw*) CPICFLAG= CXXPICFLAG= FPICFLAG= SHLEXT=dll SHLLIB=dll.a SHLBIN=dll DL_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-runtime-pseudo-reloc" SH_LDFLAGS="-shared -Wl,--export-all-symbols -Wl,--enable-auto-import -Wl,--enable-auto-image-base" SONAME_FLAGS='-Wl,--out-implib=$@.a' library_path_var=PATH SCRIPTS_EXE_SUFFIX='$(EXEEXT)' ;; *-*-msdosmsvc) DL_LDFLAGS="-shared" CPICFLAG= CXXPICFLAG= FPICFLAG= SHLEXT=dll SHLLIB=lib SHLBIN=dll LIBPRE= SHLPRE= SHLLIBPRE= SHLBINPRE= SH_LDFLAGS="-shared" if test -n "`echo $CFLAGS | grep -e '-g'`" -o -n "`echo $CXXFLAGS | grep -e '-g'`"; then DL_LDFLAGS="$DL_LDFLAGS -g" SH_LDFLAGS="$SH_LDFLAGS -g" fi NO_OCT_FILE_STRIP=true library_path_var=PATH NO_OCT_FILE_STRIP=true ## Extra compilation flags. CRUFT_DLL_DEFS="-DCRUFT_DLL" OCTAVE_DLL_DEFS="-DOCTAVE_DLL" OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL" OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" SCRIPTS_EXE_SUFFIX='$(EXEEXT)' ;; *-*-linux* | *-*-gnu*) MKOCTFILE_DL_LDFLAGS="-shared -Wl,-Bsymbolic" SONAME_FLAGS='-Wl,-soname -Wl,$@' RLD_FLAG='-Wl,-rpath -Wl,$(octlibdir)' ;; i[[3456]]86-*-sco3.2v5*) SONAME_FLAGS='-Wl,-h -Wl,$@' RLD_FLAG= SH_LDFLAGS=-G ;; rs6000-ibm-aix* | powerpc-ibm-aix*) CPICFLAG= CXXPICFLAG= FPICFLAG= library_path_var=LIBPATH ;; hppa*-hp-hpux*) if test "$ac_cv_f77_compiler_gnu" = yes; then FPICFLAG=-fPIC else FPICFLAG=+Z fi SHLEXT=sl SH_LDFLAGS="-shared -fPIC" RLD_FLAG='-Wl,+b -Wl,$(octlibdir)' library_path_var=SHLIB_PATH ;; ia64*-hp-hpux*) if test "$ac_cv_f77_compiler_gnu" = yes; then FPICFLAG=-fPIC else FPICFLAG=+Z fi SH_LDFLAGS="-shared -fPIC" RLD_FLAG='-Wl,+b -Wl,$(octlibdir)' ;; *-sgi-*) CPICFLAG= CXXPICFLAG= FPICFLAG= RLD_FLAG='-rpath $(octlibdir)' ;; sparc-sun-sunos4*) if test "$ac_cv_f77_compiler_gnu" = yes; then FPICFLAG=-fPIC else FPICFLAG=-PIC fi SH_LD=ld SH_LDFLAGS="-assert nodefinitions" RLD_FLAG='-L$(octlibdir)' ;; sparc-sun-solaris2* | i386-pc-solaris2*) if test "$ac_cv_f77_compiler_gnu" = yes; then FPICFLAG=-fPIC else FPICFLAG=-KPIC fi if test "$GCC" = yes; then CPICFLAG=-fPIC else CPICFLAG=-KPIC fi if test "$GXX" = yes; then CXXPICFLAG=-fPIC SH_LDFLAGS=-shared else CXXPICFLAG=-KPIC SH_LDFLAGS=-G fi RLD_FLAG='-R $(octlibdir)' ## Template closures in archive libraries need a different mechanism. if test "$GXX" = yes; then true else TEMPLATE_AR='$(CXX)' TEMPLATE_ARFLAGS="-xar -o" fi ;; esac if $use_rpath; then if test -n "$enable_rpath_arg"; then RLD_FLAG="$enable_rpath_arg" fi else RLD_FLAG="" fi AC_MSG_NOTICE([defining FPICFLAG to be $FPICFLAG]) AC_MSG_NOTICE([defining CPICFLAG to be $CPICFLAG]) AC_MSG_NOTICE([defining CXXPICFLAG to be $CXXPICFLAG]) AC_MSG_NOTICE([defining SHLEXT to be $SHLEXT]) AC_MSG_NOTICE([defining SHLLIB to be $SHLLIB]) AC_MSG_NOTICE([defining SHLBIN to be $SHLBIN]) AC_MSG_NOTICE([defining SHLEXT_VER to be $SHLEXT_VER]) AC_MSG_NOTICE([defining SHLLIB_VER to be $SHLLIB_VER]) AC_MSG_NOTICE([defining SHLBIN_VER to be $SHLBIN_VER]) AC_MSG_NOTICE([defining SHLLINKEXT to be $SHLLINKEXT]) AC_MSG_NOTICE([defining LIBPRE to be $LIBPRE]) AC_MSG_NOTICE([defining SHLPRE to be $SHLPRE]) AC_MSG_NOTICE([defining SHLLIBPRE to be $SHLLIBPRE]) AC_MSG_NOTICE([defining SHLBINPRE to be $SHLBINPRE]) AC_MSG_NOTICE([defining SH_LD to be $SH_LD]) AC_MSG_NOTICE([defining SH_LDFLAGS to be $SH_LDFLAGS]) AC_MSG_NOTICE([defining DL_LD to be $DL_LD]) AC_MSG_NOTICE([defining DL_LDFLAGS to be $DL_LDFLAGS]) AC_MSG_NOTICE([defining MKOCTFILE_DL_LDFLAGS to be $MKOCTFILE_DL_LDFLAGS]) AC_MSG_NOTICE([defining SONAME_FLAGS to be $SONAME_FLAGS]) AC_MSG_NOTICE([defining NO_OCT_FILE_STRIP to be $NO_OCT_FILE_STRIP]) AC_MSG_NOTICE([defining RLD_FLAG to be $RLD_FLAG]) AC_MSG_NOTICE([defining TEMPLATE_AR to be $TEMPLATE_AR]) AC_MSG_NOTICE([defining TEMPLATE_ARFLAGS to be $TEMPLATE_ARFLAGS]) AC_MSG_NOTICE([defining CRUFT_DLL_DEFS to be $CRUFT_DLL_DEFS]) AC_MSG_NOTICE([defining OCTAVE_DLL_DEFS to be $OCTAVE_DLL_DEFS]) AC_MSG_NOTICE([defining OCTINTERP_DLL_DEFS to be $OCTINTERP_DLL_DEFS]) AC_MSG_NOTICE([defining OCTGRAPHICS_DLL_DEFS to be $OCTGRAPHICS_DLL_DEFS]) AC_MSG_NOTICE([defining library_path_var to be $library_path_var]) AC_SUBST(FPICFLAG) AC_SUBST(CPICFLAG) AC_SUBST(CXXPICFLAG) AC_SUBST(SHLEXT) AC_SUBST(SHLLIB) AC_SUBST(SHLBIN) AC_SUBST(SHLEXT_VER) AC_SUBST(SHLLIB_VER) AC_SUBST(SHLBIN_VER) AC_SUBST(SHLLINKEXT) AC_SUBST(LIBPRE) AC_SUBST(SHLPRE) AC_SUBST(SHLLIBPRE) AC_SUBST(SHLBINPRE) AC_SUBST(SH_LD) AC_SUBST(SH_LDFLAGS) AC_SUBST(DL_LD) AC_SUBST(DL_LDFLAGS) AC_SUBST(MKOCTFILE_DL_LDFLAGS) AC_SUBST(SONAME_FLAGS) AC_SUBST(NO_OCT_FILE_STRIP) AC_SUBST(RLD_FLAG) AC_SUBST(TEMPLATE_AR) AC_SUBST(TEMPLATE_ARFLAGS) AC_SUBST(CRUFT_DLL_DEFS) AC_SUBST(OCTAVE_DLL_DEFS) AC_SUBST(OCTINTERP_DLL_DEFS) AC_SUBST(OCTGRAPHICS_DLL_DEFS) AC_SUBST(library_path_var) AC_SUBST(SCRIPTS_EXE_SUFFIX) ### special checks for odd OS specific things. ### ### I am told that on some SCO systems, the only place to find some ### functions like gethostname and gettimeofday is in libsocket. AC_CHECK_FUNCS(gethostname, [], [AC_CHECK_LIB(socket, gethostname)]) AC_CHECK_FUNCS(getpwnam, [], [AC_CHECK_LIB(sun, getpwnam)]) case "$canonical_host_type" in *-*-cygwin*) AC_CHECK_LIB(wsock32, gethostname) LIBS="$LIBS -lwsock32" ;; *-*-msdosmsvc* | *-*-mingw*) LIBS="$LIBS -lgdi32 -lws2_32 -luser32 -lkernel32" ;; esac ### Type stuff. AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UID_T AC_CHECK_TYPES([dev_t, ino_t, nlink_t, nlink_t]) AC_CHECK_TYPES([long long int, unsigned long long int]) AC_CHECK_TYPES([sigset_t, sig_atomic_t], , , [ #if defined (HAVE_SYS_TYPES_H) #include <sys/types.h> #endif #include <signal.h>]) ### How big are ints and how are they oriented? These could probably ### be eliminated in favor of run-time checks. AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) AC_CHECK_SIZEOF(long long) ### Does the C compiler handle alloca() and const correctly? AC_FUNC_ALLOCA AC_C_CONST ### See if we should use placement delete. OCTAVE_PLACEMENT_DELETE ### See if we can auto allocate variable sized arrays. OCTAVE_DYNAMIC_AUTO_ARRAYS ### See if we can use fast integer arithmetics OCTAVE_FAST_INT_OPS ### Check for long double type (for 64-bit integers) AC_CHECK_SIZEOF(long double) ### Checks for header files. AC_HEADER_STDC AC_HEADER_DIRENT AC_HEADER_TIME AC_HEADER_SYS_WAIT ### C headers AC_CHECK_HEADERS(assert.h curses.h direct.h dlfcn.h fcntl.h float.h \ floatingpoint.h grp.h ieeefp.h inttypes.h limits.h locale.h memory.h nan.h \ ncurses.h poll.h pthread.h pwd.h stdint.h stdlib.h string.h sunmath.h sys/ioctl.h \ sys/param.h sys/poll.h sys/resource.h sys/select.h sys/stat.h \ sys/time.h sys/times.h sys/types.h sys/utsname.h sys/utime.h termcap.h \ unistd.h utime.h varargs.h) ### C++ headers AC_LANG_PUSH(C++) AC_CHECK_HEADERS(sstream) AC_LANG_POP(C++) have_termios_h=no AC_CHECK_HEADERS(termios.h, have_termios_h=yes) AC_CHECK_HEADERS(termio.h, have_termio_h=yes, have_termio_h=no) AC_CHECK_HEADERS(sgtty.h, have_sgtty_h=yes, have_sgtty_h=no) AC_CHECK_HEADERS(glob.h, have_glob_h=yes, have_glob_h=no) AC_CHECK_HEADERS(fnmatch.h, have_fnmatch_h=yes, have_fnmatch_h=no) AC_CHECK_HEADERS(conio.h, have_conio_h=yes, have_conio_h=no) ### I'm told that termios.h is broken on NeXT systems. case "$canonical_host_type" in *-*-nextstep*) if test "$have_termios_h" = yes; then AC_MSG_WARN([Ignoring termios.h on NeXT systems.]) have_termios_h=no fi ;; esac if test "$have_termios_h" = yes \ || test "$have_termio_h" = yes \ || test "$have_sgtty_h" = yes; then true else AC_MSG_WARN([I couldn't find termios.h, termio.h, or sgtty.h!]) fi LIBGLOB= AC_SUBST(LIBGLOB) if test "$have_fnmatch_h" = yes && test "$have_glob_h" = yes; then AC_CHECK_FUNCS(fnmatch, have_fnmatch=yes, [ AC_CHECK_LIB(glob, fnmatch, [have_fnmatch=yes; LIBGLOB=-lglob], have_fnmatch=no)]) AC_CHECK_FUNCS(glob, have_glob=yes, [ AC_CHECK_LIB(glob, glob, [have_glob=yes; LIBGLOB=-lglob], have_glob=no)]) if test "$have_fnmatch" != yes || test "$have_glob" != yes; then AC_MSG_ERROR([You are required to have fnmatch and glob]) fi else AC_MSG_ERROR([You are required to have fnmatch.h and glob.h]) fi ### Checks for functions and variables. AC_CHECK_FUNCS(atexit basename bcopy bzero canonicalize_file_name \ chmod dup2 endgrent endpwent execvp expm1 expm1f fcntl fork fstat getcwd \ getegid geteuid getgid getgrent getgrgid getgrnam getpgrp getpid \ getppid getpwent getpwuid gettimeofday getuid getwd _kbhit kill \ lgamma lgammaf lgamma_r lgammaf_r link localtime_r log1p log1pf lstat \ memmove mkdir mkfifo mkstemp on_exit pipe poll putenv raise readlink \ realpath rename resolvepath rindex rmdir roundl select setgrent setlocale \ setpwent setvbuf sigaction siglongjmp sigpending sigprocmask sigsuspend \ snprintf stat strcasecmp strdup strerror stricmp strncasecmp \ strnicmp strptime strsignal symlink tempnam tgammaf trunc umask \ uname unlink usleep utime vfprintf vsprintf vsnprintf waitpid \ _chmod _snprintf x_utime _utime32) AC_LANG_PUSH(C++) AC_CHECK_DECLS([exp2, round, tgamma], [], [], [[#include <cmath>]]) AC_CHECK_FUNCS([exp2 round tgamma]) AH_VERBATIM([Z_FUNCS_AND_DECLS], [ #if defined (__cplusplus) extern "C" { #endif #if HAVE_EXP2 && ! HAVE_DECL_EXP2 double exp2 (double ); #endif #if HAVE_ROUND && ! HAVE_DECL_ROUND double round (double); #endif #if HAVE_TGAMMA && ! HAVE_DECL_TGAMMA double tgamma (double); #endif #if defined (__cplusplus) } #endif ]) AC_LANG_POP(C++) case "$canonical_host_type" in *-*-mingw*) ## MinGW does not provide a mkstemp function. However, it provides ## the mkstemps function in libiberty. AC_MSG_CHECKING(for mkstemps in libiberty) save_LIBS="$LIBS" LIBS="-liberty $LIBS" AC_LINK_IFELSE([ AC_LANG_PROGRAM([[int mkstemps (char *pattern, int suffix_len);]], [[mkstemps ("XXXXXX", 0);]] )], [AC_MSG_RESULT(yes) HAVE_MKSTEMPS=yes AC_DEFINE(HAVE_MKSTEMPS, 1, [Define if mkstemps is available in libiberty.]) ], [AC_MSG_RESULT(no) HAVE_MKSTEMPS=no LIBS="$save_LIBS" ]) ;; esac case "$canonical_host_type" in *-*-msdosmsvc | *-*-mingw*) ## The %T and %e format specifiers for strftime are not implemented ## so use our version. We could use an actual configure test ## for this. ;; *) AC_CHECK_FUNCS(strftime) ;; esac OCTAVE_HAVE_C99_VSNPRINTF OCTAVE_STRPTIME_BROKEN OCTAVE_SMART_PUTENV case "$canonical_host_type" in *-*-msdosmsvc | *-*-mingw*) AC_MSG_CHECKING([for required _WIN32_WINNT]) AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[ #include <windows.h> #if _WIN32_WINNT < 0x0403 #error "Wrong version" #endif]], []), AC_MSG_RESULT([none]), [ AC_DEFINE(_WIN32_WINNT, 0x0403, [Define to 0x0403 to access InitializeCriticalSectionAndSpinCount]) AC_MSG_RESULT([0x0403])]) AC_MSG_CHECKING([whether _USE_MATH_DEFINES needs to be defined]) AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include <math.h>]], [[int x = M_LN2;]]), AC_MSG_RESULT([no]), [ AC_DEFINE(_USE_MATH_DEFINES, 1, [Define if your system needs it to define math constants like M_LN2]) AC_MSG_RESULT([yes])]) ;; esac ### Dynamic linking is now enabled only if we are building shared ### libs and some API for dynamic linking is detected. LD_CXX='$(CXX)' RDYNAMIC_FLAG= DL_API_MSG="" dlopen_api=false shl_load_api=false loadlibrary_api=false dyld_api=false if $SHARED_LIBS || $ENABLE_DYNAMIC_LINKING; then ## Check for dyld first since OS X can have a non-standard libdl AC_CHECK_HEADER(mach-o/dyld.h) if test "$ac_cv_header_mach_o_dyld_h" = yes; then dyld_api=true else AC_CHECK_LIB(dld, shl_load) AC_CHECK_FUNCS(shl_load shl_findsym) if test "$ac_cv_func_shl_load" = yes \ && test "$ac_cv_func_shl_findsym" = yes; then shl_load_api=true else AC_CHECK_LIB(wsock32, LoadLibrary) AC_CHECK_FUNCS(LoadLibrary) if test "$ac_cv_func_loadlibrary" = yes; then loadlibrary_api=true else AC_CHECK_LIB(dl, dlopen) AC_CHECK_FUNCS(dlopen dlsym dlerror dlclose) if test "$ac_cv_func_dlclose" = yes \ && test "$ac_cv_func_dlerror" = yes \ && test "$ac_cv_func_dlopen" = yes \ && test "$ac_cv_func_dlsym" = yes; then dlopen_api=true else case "$canonical_host_type" in i[[3456]]86-*-sco3.2v5*) LD_CXX='LD_RUN_PATH=$LD_RUN_PATH:$(octlibdir) $(CXX)' dlopen_api=true ;; esac fi fi fi fi ## autoconf test for LoadLibrary appears broken. Bypass for cygwin/mingw if $dlopen_api || $shl_load_api || $loadlibrary_api || $dyld_api; then true else case "$canonical_host_type" in *-*-cygwin* | *-*-mingw* | *-*-msdosmsvc) loadlibrary_api=true; ;; esac fi if $dlopen_api; then DL_API_MSG="(dlopen)" AC_DEFINE(HAVE_DLOPEN_API, 1, [Define if your system has dlopen, dlsym, dlerror, and dlclose for dynamic linking]) OCTAVE_CXX_FLAG(-rdynamic, [RDYNAMIC_FLAG=-rdynamic]) elif $shl_load_api; then DL_API_MSG="(shl_load)" AC_DEFINE(HAVE_SHL_LOAD_API, 1, [Define if your system has shl_load and shl_findsym for dynamic linking]) elif $loadlibrary_api; then DL_API_MSG="(LoadLibrary)" AC_DEFINE(HAVE_LOADLIBRARY_API, 1, [Define if your system has LoadLibrary for dynamic linking]) elif $dyld_api; then DL_API_MSG="(dyld)" AC_DEFINE(HAVE_DYLD_API, 1, [Define if your system has dyld for dynamic linking]) fi if $dlopen_api || $shl_load_api || $loadlibrary_api || $dyld_api; then ENABLE_DYNAMIC_LINKING=true AC_DEFINE(ENABLE_DYNAMIC_LINKING, 1, [Define if using dynamic linking]) fi fi if $SHARED_LIBS; then LIBOCTINTERP=-loctinterp$SHLLINKEXT LIBOCTAVE=-loctave$SHLLINKEXT LIBCRUFT=-lcruft$SHLLINKEXT else LIBOCTINTERP='$(TOPDIR)/src/liboctinterp.$(LIBEXT)' LIBOCTAVE='$(TOPDIR)/liboctave/liboctave.$(LIBEXT)' LIBCRUFT='$(TOPDIR)/libcruft/libcruft.$(LIBEXT)' fi AC_SUBST(LD_CXX) AC_SUBST(RDYNAMIC_FLAG) AC_SUBST(ENABLE_DYNAMIC_LINKING) AC_SUBST(LIBOCTINTERP) AC_SUBST(LIBOCTAVE) AC_SUBST(LIBCRUFT) ### There is more than one possible prototype for gettimeofday. See ### which one (if any) appears in sys/time.h. These tests are from ### Emacs 19. AC_MSG_CHECKING(for struct timeval) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME #include <sys/time.h> #include <time.h> #else #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #else #include <time.h> #endif #endif]], [[static struct timeval x; x.tv_sec = x.tv_usec;]])], [AC_MSG_RESULT(yes) HAVE_TIMEVAL=yes AC_DEFINE(HAVE_TIMEVAL, 1, [Define if struct timeval is defined.])], [AC_MSG_RESULT(no) HAVE_TIMEVAL=no]) if test "x$HAVE_TIMEVAL" = xyes; then AC_MSG_CHECKING(whether gettimeofday can't accept two arguments) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef TIME_WITH_SYS_TIME #include <sys/time.h> #include <time.h> #else #ifdef HAVE_SYS_TIME_H #include <sys/time.h> #else #include <time.h> #endif #endif]], [[struct timeval time; struct timezone dummy; gettimeofday (&time, &dummy);]])], [AC_MSG_RESULT(no)], [AC_MSG_RESULT(yes) AC_DEFINE(GETTIMEOFDAY_NO_TZ, 1, [Define if your system has a single-arg prototype for gettimeofday.])]) fi dnl Maybe <cmath> defines the IEEE functions we need. OCTAVE_CMATH_FUNC(isnan) OCTAVE_CMATH_FUNC(isinf) OCTAVE_CMATH_FUNC(isfinite) dnl Would like to get rid of this cruft, and just have dnl dnl AC_CHECK_FUNCS(finite isnan isinf) dnl dnl instead, but that used to fail on some systems... dnl dnl Also just using AC_CHECK_FUNCS doesn't seem to work to find isinf dnl and isnan on Linux systems, so we use AC_CHECK_FUNC, and if that dnl fails, we try again by including math.h and invoking the function dnl with an argument. ### I am told that Inf and NaN don't work on m68k HP sytems, and that ### on SCO systems, isnan and isinf don't work, but they can be ### replaced by something that does. case "$canonical_host_type" in m68k-hp-hpux*) ;; *-*-sco*) AC_MSG_NOTICE([defining SCO to be 1]) AC_DEFINE(SCO, 1, [Define if using an SCO system.]) AC_MSG_NOTICE([forcing HAVE_ISINF for SCO]) AC_DEFINE(HAVE_ISINF, 1, [Define if you have isinf().]) AC_MSG_NOTICE([forcing HAVE_ISNAN for SCO]) AC_DEFINE(HAVE_ISNAN, 1, [Define if you have isnan().]) ;; *) AC_CHECK_FUNCS(finite isnan isinf copysign signbit) AC_CHECK_FUNCS(_finite _isnan _copysign) AC_CHECK_DECLS(signbit, , , [#include <math.h>]) ;; esac ### Check for nonstandard but common math functions that we need. AC_CHECK_FUNCS(acosh acoshf asinh asinhf atanh atanhf erf erff erfc erfcf exp2f log2 log2f) AC_CHECK_FUNCS(hypotf _hypotf) ### Checks for OS specific cruft. AC_CHECK_MEMBERS([struct stat.st_blksize, struct stat.st_blocks, struct stat.st_rdev]) AC_STRUCT_TM AC_STRUCT_TIMEZONE AC_FUNC_CLOSEDIR_VOID AC_CHECK_MEMBERS(struct group.gr_passwd) # mkdir takes a single argument on some systems. OCTAVE_MKDIR_TAKES_ONE_ARG octave_found_termlib=no for termlib in ncurses curses termcap terminfo termlib; do AC_CHECK_LIB(${termlib}, tputs, [TERMLIBS="${TERMLIBS} -l${termlib}"]) case "${TERMLIBS}" in *-l${termlib}*) LIBS="$TERMLIBS $LIBS" AC_SUBST(TERMLIBS) octave_found_termlib=yes break ;; esac done if test "$octave_found_termlib" = no; then warn_termlibs="I couldn't find -ltermcap, -lterminfo, -lncurses, -lcurses, o\ r -ltermlib!" AC_MSG_WARN($warn_termlibs) fi OCTAVE_ENABLE_READLINE AC_MSG_CHECKING([for struct exception in math.h]) AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[struct exception *x; x->type; x->name;]])], [AC_MSG_RESULT(yes) AC_DEFINE(EXCEPTION_IN_MATH, 1, [Define if your math.h declares struct exception for matherr().])], [AC_MSG_RESULT(no)]) ### Signal stuff. AC_TYPE_SIGNAL AC_CHECK_DECLS([sys_siglist], [], [], [#include <signal.h> /* NetBSD declares sys_siglist in unistd.h. */ #if HAVE_UNISTD_H # include <unistd.h> #endif ]) OCTAVE_SIGNAL_CHECK OCTAVE_REINSTALL_SIGHANDLERS if test "$ac_cv_type_signal" = "void"; then AC_DEFINE(RETSIGTYPE_IS_VOID, 1, [Define if this if RETSIGTYPE is defined to be void. Needed because preprocessor comparisons to void fail on some systems.]) fi ### A system dependent kluge or two. AC_CHECK_FUNCS(getrusage times) case "$canonical_host_type" in *-*-cygwin*) AC_DEFINE(RUSAGE_TIMES_ONLY, 1, [Define if your struct rusage only has time information.]) ;; esac ### Checks for other programs used for building, testing, installing, ### and running Octave. AC_PROG_AWK OCTAVE_PROG_FIND OCTAVE_PROG_SED OCTAVE_PROG_PERL OCTAVE_PROG_PYTHON OCTAVE_PROG_FLEX OCTAVE_PROG_BISON AC_PROG_LN_S AC_PROG_INSTALL INSTALL_SCRIPT='${INSTALL}' AC_SUBST(INSTALL_SCRIPT) OCTAVE_PROG_DESKTOP_FILE_INSTALL OCTAVE_PROG_GNUPLOT OCTAVE_PROG_PAGER OCTAVE_PROG_GPERF OCTAVE_PROG_GHOSTSCRIPT OCTAVE_PROG_MAKEINFO OCTAVE_PROG_TEXI2DVI OCTAVE_PROG_TEXI2PDF ### Even though we include config.h, we need to have the preprocessor ### defines available in a variable for the octave-bug script. Use ### UGLY_DEFS for that. AC_OUTPUT_MAKE_DEFS ### We have to insert extra levels of backslash quoting here so that ### the right thing ends up in oct-conf.h. UGLY_DEFS=`echo $DEFS | $SED 's,\\",\\\\\\\\\\\\\\\\\\",g'` AC_MSG_NOTICE([defining UGLY_DEFS to be $UGLY_DEFS]) AC_SUBST(UGLY_DEFS) ### Maybe add -Wall, -W, and -Wshadow to compiler flags now that we're ### done feature testing. try_extra_warning_flags=true AC_ARG_ENABLE(extra-warning-flags, [AS_HELP_STRING([--enable-extra-warning-flags], [add -Wall, -W, -Wshadow, and -Wold-style-cast options to CFLAGS and CXXFLAGS (on by default, but only if the compiler appears to accept them)])], [if test "$enableval" = no; then try_extra_warning_flags=false fi], []) if $try_extra_warning_flags; then OCTAVE_CC_FLAG(-Wall, [ WARN_CFLAGS="$WARN_CFLAGS -Wall"; AC_MSG_RESULT([adding -Wall to WARN_CFLAGS])]) OCTAVE_CC_FLAG(-W, [ WARN_CFLAGS="$WARN_CFLAGS -W"; AC_MSG_RESULT([adding -W to WARN_CFLAGS])]) OCTAVE_CC_FLAG(-Wshadow, [ WARN_CFLAGS="$WARN_CFLAGS -Wshadow"; AC_MSG_RESULT([adding -Wshadow to WARN_CFLAGS])]) OCTAVE_CC_FLAG(-Wformat, [ WARN_CFLAGS="$WARN_CFLAGS -Wformat"; AC_MSG_RESULT([adding -Wformat to WARN_CFLAGS])]) OCTAVE_CXX_FLAG(-Wall, [ WARN_CXXFLAGS="$WARN_CXXFLAGS -Wall"; AC_MSG_RESULT([adding -Wall to WARN_CXXFLAGS])]) OCTAVE_CXX_FLAG(-W, [ WARN_CXXFLAGS="$WARN_CXXFLAGS -W"; AC_MSG_RESULT([adding -W to WARN_CXXFLAGS])]) OCTAVE_CXX_FLAG(-Wshadow, [ WARN_CXXFLAGS="$WARN_CXXFLAGS -Wshadow"; AC_MSG_RESULT([adding -Wshadow to WARN_CXXFLAGS])]) OCTAVE_CXX_FLAG(-Wold-style-cast, [ WARN_CXXFLAGS="$WARN_CXXFLAGS -Wold-style-cast"; AC_MSG_RESULT([adding -Wold-style-cast to WARN_CXXFLAGS])]) OCTAVE_CXX_FLAG(-Wformat, [ WARN_CXXFLAGS="$WARN_CXXFLAGS -Wformat"; AC_MSG_RESULT([adding -Wformat to WARN_CXXFLAGS])]) fi GCC_STRICT_FLAGS="-Wcast-align -Wcast-qual -Wconversion -Wmissing-prototypes \ -Wpointer-arith -Wstrict-prototypes -Wwrite-strings" GXX_STRICT_FLAGS="-Wcast-align -Wcast-qual -Wconversion -Wpointer-arith \ -Wwrite-strings -Weffc++" try_strict_warning_flags=false AC_ARG_ENABLE(strict-warning-flags, [AS_HELP_STRING([--enable-strict-warning-flags], [add extra strict warning options to CFLAGS and CXXFLAGS (off by default)])], [if test "$enableval" = yes; then try_strict_warning_flags=true fi], []) if $try_strict_warning_flags; then for flag in $GCC_STRICT_FLAGS; do OCTAVE_CC_FLAG($flag, [ WARN_CFLAGS="$WARN_CFLAGS $flag"; AC_MSG_RESULT([adding $flag to WARN_CFLAGS])]) done for flag in $GXX_STRICT_FLAGS; do OCTAVE_CXX_FLAG($flag, [ WARN_CXXFLAGS="$WARN_CXXFLAGS $flag"; AC_MSG_RESULT([adding $flag to WARN_CXXFLAGS])]) done fi AC_SUBST(WARN_CFLAGS) AC_SUBST(WARN_CXXFLAGS) ### Run configure in subdirectories. export CC export CXX export F77 AC_CONFIG_SUBDIRS(scripts) ### Some things to add to the bottom of config.h. AH_BOTTOM([ #if defined (__GNUC__) #define GCC_ATTR_DEPRECATED __attribute__ ((__deprecated__)) #define GCC_ATTR_NORETURN __attribute__ ((__noreturn__)) #define GCC_ATTR_UNUSED __attribute__ ((__unused__)) #else #define GCC_ATTR_DEPRECATED #define GCC_ATTR_NORETURN #define GCC_ATTR_UNUSED #endif #define X_CAST(T, E) (T) (E) #if defined (CXX_BROKEN_REINTERPRET_CAST) #define FCN_PTR_CAST(T, E) (T) (E) #else #define FCN_PTR_CAST(T, E) reinterpret_cast<T> (E) #endif #if !defined(HAVE_DEV_T) typedef short dev_t; #endif #if !defined(HAVE_INO_T) typedef unsigned long ino_t; #endif #if !defined(HAVE_NLINK_T) typedef short nlink_t; #endif #if !defined(HAVE_SIGSET_T) typedef int sigset_t; #endif #if !defined(HAVE_SIG_ATOMIC_T) typedef int sig_atomic_t; #endif #if defined (_MSC_VER) #define __WIN32__ #define WIN32 /* missing parameters in macros */ #pragma warning (disable: 4003) /* missing implementations in template instantiation */ #pragma warning (disable: 4996) /* deprecated function names (FIXME?) */ #pragma warning (disable: 4661) #endif #if defined (__WIN32__) && ! defined (__CYGWIN__) #define OCTAVE_HAVE_WINDOWS_FILESYSTEM 1 #elif defined (__CYGWIN__) #define OCTAVE_HAVE_WINDOWS_FILESYSTEM 1 #define OCTAVE_HAVE_POSIX_FILESYSTEM 1 #else #define OCTAVE_HAVE_POSIX_FILESYSTEM 1 #endif /* Define if we expect to have <windows.h>, Sleep, etc. */ #if defined (__WIN32__) && ! defined (__CYGWIN__) #define OCTAVE_USE_WINDOWS_API 1 #endif #if defined (__APPLE__) && defined (__MACH__) #define OCTAVE_USE_OS_X_API 1 #endif /* sigsetjmp is a macro, not a function. */ #if defined (sigsetjmp) && defined (HAVE_SIGLONGJMP) #define OCTAVE_HAVE_SIG_JUMP #endif #if defined (__DECCXX) #define __USE_STD_IOSTREAM #endif #if defined (_UNICOS) #define F77_USES_CRAY_CALLING_CONVENTION #endif #if 0 #define F77_USES_VISUAL_FORTRAN_CALLING_CONVENTION #endif #ifdef USE_64_BIT_IDX_T #define SIZEOF_OCTAVE_IDX_TYPE 8 #else #define SIZEOF_OCTAVE_IDX_TYPE SIZEOF_INT #endif // To be able to use long doubles for 64-bit mixed arithmetics, we need them at // least 80 bits wide and we need roundl declared in math.h. // FIXME -- maybe substitute this by a more precise check in the future. #if (SIZEOF_LONG_DOUBLE >= 10) && defined (HAVE_ROUNDL) #define OCTAVE_INT_USE_LONG_DOUBLE #endif #define OCTAVE_EMPTY_CPP_ARG #include "oct-dlldefs.h" #include "oct-types.h" ]) ### Do the substitutions in all the Makefiles. AC_CONFIG_COMMANDS([Makefile], [if test "$ac_srcdir" != "."; then cp $srcdir/Makefile . fi]) AC_SUBST(ac_config_files) AC_CONFIG_FILES([octMakefile Makeconf test/Makefile doc/Makefile doc/faq/Makefile doc/interpreter/Makefile doc/liboctave/Makefile doc/refcard/Makefile emacs/Makefile examples/Makefile examples/@polynomial/Makefile examples/@FIRfilter/Makefile liboctave/Makefile liboctave/oct-types.h src/Makefile src/mxarray.h libcruft/Makefile libcruft/Makerules libcruft/amos/Makefile libcruft/blas/Makefile libcruft/daspk/Makefile libcruft/dasrt/Makefile libcruft/dassl/Makefile libcruft/fftpack/Makefile libcruft/lapack/Makefile libcruft/misc/Makefile libcruft/odepack/Makefile libcruft/ordered-qz/Makefile libcruft/quadpack/Makefile libcruft/ranlib/Makefile libcruft/slatec-fn/Makefile libcruft/slatec-err/Makefile libcruft/villad/Makefile libcruft/blas-xtra/Makefile libcruft/lapack-xtra/Makefile]) AC_OUTPUT ### Print a summary so that important information isn't missed. AC_MSG_NOTICE([ Octave is now configured for $canonical_host_type Source directory: $srcdir Installation prefix: $prefix C compiler: $CC $XTRA_CFLAGS $WARN_CFLAGS $CFLAGS C++ compiler: $CXX $XTRA_CXXFLAGS $WARN_CXXFLAGS $CXXFLAGS Fortran compiler: $F77 $FFLAGS Fortran libraries: $FLIBS BLAS libraries: $BLAS_LIBS FFTW libraries: $FFTW_LIBS GLPK libraries: $GLPK_LIBS UMFPACK libraries: $UMFPACK_LIBS AMD libraries: $AMD_LIBS CAMD libraries: $CAMD_LIBS COLAMD libraries: $COLAMD_LIBS CCOLAMD libraries: $CCOLAMD_LIBS CHOLMOD libraries: $CHOLMOD_LIBS CXSPARSE libraries: $CXSPARSE_LIBS ARPACK libraries: $ARPACK_LIBS QRUPDATE libraries: $QRUPDATE_LIBS HDF5 libraries: $HDF5_LIBS CURL libraries: $CURL_LIBS REGEX libraries: $REGEX_LIBS QHULL libraries: $QHULL_LIBS OPENGL libraries: $OPENGL_LIBS FLTK backend libs: $GRAPHICS_LIBS X11 include flags: $X11_INCFLAGS X11 libraries: $X11_LIBS CARBON libraries: $CARBON_LIBS PTHREAD flags $PTHREAD_CFLAGS PTHREAD libraries $PTHREAD_LIBS LIBS: $LIBS Default pager: $DEFAULT_PAGER gnuplot: $GNUPLOT Magick config: $MAGICK_CONFIG Do internal array bounds checking: $BOUNDS_CHECKING Build static libraries: $STATIC_LIBS Build shared libraries: $SHARED_LIBS Dynamic Linking: $ENABLE_DYNAMIC_LINKING $DL_API_MSG Include support for GNU readline: $USE_READLINE 64-bit array dims and indexing: $USE_64_BIT_IDX_T ]) warn_msg_printed=false if $ENABLE_DYNAMIC_LINKING; then if $SHARED_LIBS; then true else AC_MSG_WARN([You used --enable-dl but not --enable-shared.]) AC_MSG_WARN([Are you sure that is what you want to do?]) warn_msg_printed=true fi fi if test -n "$gxx_only"; then AC_MSG_WARN($gxx_only) warn_msg_printed=true fi if test -n "$warn_gcc_version"; then AC_MSG_WARN($warn_gcc_version) warn_msg_printed=true fi if test -n "$warn_gcc_only"; then AC_MSG_WARN($warn_gcc_only) warn_msg_printed=true fi if test -n "$warn_readline"; then AC_MSG_WARN($warn_readline) warn_msg_printed=true fi if test -n "$warn_termlibs"; then AC_MSG_WARN($warn_termlibs) warn_msg_printed=true fi if test -n "$warn_gperf"; then AC_MSG_WARN($warn_gperf) warn_msg_printed=true fi if test -n "$warn_flex"; then AC_MSG_WARN($warn_flex) warn_msg_printed=true fi if test -n "$warn_bison"; then AC_MSG_WARN($warn_bison) warn_msg_printed=true fi if test -n "$warn_less"; then AC_MSG_WARN($warn_less) warn_msg_printed=true fi if test -n "$warn_blas_f77_incompatible"; then AC_MSG_WARN($warn_blas_f77_incompatible) warn_msg_printed=true fi if test -n "$warn_umfpack"; then AC_MSG_WARN($warn_umfpack) warn_msg_printed=true fi if test -n "$warn_qrupdate"; then AC_MSG_WARN($warn_qrupdate) warn_msg_printed=true fi if test -n "$warn_amd"; then AC_MSG_WARN($warn_amd) warn_msg_printed=true fi if test -n "$warn_colamd"; then AC_MSG_WARN($warn_colamd) warn_msg_printed=true fi if test -n "$warn_ccolamd"; then AC_MSG_WARN($warn_ccolamd) warn_msg_printed=true fi if test -n "$warn_cholmod"; then AC_MSG_WARN($warn_cholmod) warn_msg_printed=true fi if test -n "$warn_cxsparse"; then AC_MSG_WARN($warn_cxsparse) warn_msg_printed=true fi if test -n "$warn_arpack"; then AC_MSG_WARN($warn_arpack) warn_msg_printed=true fi if test -n "$warn_curl"; then AC_MSG_WARN($warn_curl) warn_msg_printed=true fi if test -n "$warn_fftw"; then AC_MSG_WARN($warn_fftw) warn_msg_printed=true fi if test -n "$warn_glpk"; then AC_MSG_WARN($warn_glpk) warn_msg_printed=true fi if test -n "$warn_magick"; then AC_MSG_WARN($warn_magick) warn_msg_printed=true fi if test -n "$warn_hdf5"; then AC_MSG_WARN($warn_hdf5) warn_msg_printed=true fi if test -n "$warn_regex"; then AC_MSG_WARN($warn_regex) warn_msg_printed=true fi if test -n "$warn_pcre"; then AC_MSG_WARN($warn_pcre) warn_msg_printed=true fi if test -n "$warn_qhull"; then AC_MSG_WARN($warn_qhull) warn_msg_printed=true fi if test -n "$warn_zlib"; then AC_MSG_WARN($warn_zlib) warn_msg_printed=true fi if test -n "$warn_ghostscript"; then AC_MSG_WARN($warn_ghostscript) warn_msg_printed=true fi if test -n "$warn_makeinfo"; then AC_MSG_WARN($warn_makeinfo) warn_msg_printed=true fi if test -n "$warn_texi2dvi"; then AC_MSG_WARN($warn_texi2dvi) warn_msg_printed=true fi if test -n "$warn_texi2pdf"; then AC_MSG_WARN($warn_texi2pdf) warn_msg_printed=true fi if test -n "$warn_64_bit"; then AC_MSG_WARN($warn_64_bit) warn_msg_printed=true fi if test -n "$warn_gnuplot"; then ## If you change this text, be sure to also change the corresponding ## set of warnings above. AC_MSG_WARN([]) AC_MSG_WARN([I didn't find gnuplot. It isn't necessary to have gnuplot]) AC_MSG_WARN([installed, but you won't be able to use any of Octave's]) AC_MSG_WARN([plotting commands without it.]) AC_MSG_WARN([]) AC_MSG_WARN([If gnuplot is installed but it isn't in your path, you can]) AC_MSG_WARN([tell Octave where to find it by typing the command]) AC_MSG_WARN([]) AC_MSG_WARN([gnuplot_binary = "/full/path/to/gnuplot/binary"]) AC_MSG_WARN([]) AC_MSG_WARN([at the Octave prompt.]) AC_MSG_WARN([]) warn_msg_printed=true fi if $USE_64_BIT_IDX_T; then AC_MSG_WARN([]) AC_MSG_WARN([You used the EXPERIMENTAL --enable-64 option.]) AC_MSG_WARN([Are you sure that is what you want to do?]) AC_MSG_WARN([]) AC_MSG_WARN([You must ensure that the Fortran compiler generates]) AC_MSG_WARN([code with 8 byte signed INTEGER values, and that your]) AC_MSG_WARN([BLAS and LAPACK libraries are compiled to use 8 byte]) AC_MSG_WARN([signed integers for array indexing.]) AC_MSG_WARN([]) warn_msg_printed=true fi native_graphics=true if test -n "$warn_freetype"; then AC_MSG_WARN("$warn_freetype") native_graphics=false warn_msg_printed=true fi if test -n "$warn_ftgl"; then AC_MSG_WARN("$warn_ftgl") native_graphics=false warn_msg_printed=true fi if test -n "$warn_fltk_config"; then AC_MSG_WARN("$warn_fltk_config") native_graphics=false warn_msg_printed=true fi if test -n "$warn_fltk_opengl"; then AC_MSG_WARN("$warn_fltk_opengl") native_graphics=false warn_msg_printed=true fi if $native_graphics; then true; else AC_MSG_WARN([]) AC_MSG_WARN([I didn't find the necessary libraries to compile native]) AC_MSG_WARN([graphics. It isn't necessary to have native graphics]) AC_MSG_WARN([but you will have to use gnuplot or you won't be able]) AC_MSG_WARN([to use any of Octave's plotting commands]) AC_MSG_WARN([]) warn_msg_printed=true fi if $warn_msg_printed; then AC_MSG_NOTICE([ NOTE: libraries may be skipped if a library is not found OR if the library on your system is missing required features. ]) fi ### End of configure.