Mercurial > octave-nkf
view configure.in @ 8968:91d53dc37f79
Add perm * sparse, perm \ sparse, sparse * perm, and sparse / perm operations.
Nothing terribly fancy in any of this. There probably is some
mechanism for using the permutation vectors and some assign or index
method in the sparse classes, but I've never understood all the
intricacies. I'm opting for a simple implementation at the cost of
possibly duplicating some functionality.
author | Jason Riedy <jason@acm.org> |
---|---|
date | Tue, 10 Mar 2009 21:54:44 -0400 |
parents | 6994961bf1f4 |
children | a48fba01e4ac |
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.57) 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_GNU_SOURCE AC_AIX AC_MINIX AC_ISC_POSIX ### 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.[[012345678]].*) AC_MSG_ERROR([g++ version $gxx_version will probably fail to compile Octave] ) ;; 2.9*) warn_gxx_version="g++ version $gxx_version is likely to cause problems" AC_MSG_WARN($warn_gxx_version) ;; 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) 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 $OPENGL_LIBS $FT2_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="$LIBS -lftgl" 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="$OPENGL_LIBS $FT2_LIBS -lftgl" 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 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 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*) LIBPRE=cyg SHLLIBPRE=cyg SHLBINPRE=lib SHLEXT=dll SHLLIB=dll.a SHLBIN=a 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 $(SHLLIBPRE)%,$(SHLBINPRE)%,$@).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 ;; *-*-msdosmsvc) DL_LDFLAGS="-shared" CPICFLAG= CXXPICFLAG= FPICFLAG= SHLEXT=dll SHLLIB=lib SHLBIN=dll LIBPRE= 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" ;; *-*-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= ;; 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)' ;; *-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 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(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) ### 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 -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 round roundl select setgrent setlocale \ setpwent setvbuf sigaction siglongjmp sigpending sigprocmask sigsuspend \ snprintf stat strcasecmp strdup strerror stricmp strncasecmp \ strnicmp strptime strsignal symlink tempnam tgamma tgammaf trunc umask \ uname unlink usleep utime vfprintf vsprintf vsnprintf waitpid \ _chmod _snprintf x_utime _utime32) 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) ## The %T format specifier for strftime is reportedly broken, ## so use our version. We could use an actual configure test ## for this. ;; *) AC_CHECK_FUNCS(strftime) ;; esac 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 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 exp2 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_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])]) fi GCC_STRICT_FLAGS="-Wcast-align -Wcast-qual -Wmissing-prototypes \ -Wpointer-arith -Wstrict-prototypes -Wwrite-strings" GXX_STRICT_FLAGS="-Wcast-align -Wcast-qual -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_F2C) && !defined(F77_FUNC) # define F77_FUNC(x,X) x ## _ # define F77_FUNC_(x,X) x ## __ #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 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. if test -z "$F77"; then FORT="$F2C $F2CFLAGS" else FORT="$F77 $FFLAGS" fi 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: $FORT 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 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.