Mercurial > octave
diff m4/acinclude.m4 @ 29367:8608b7e50720
maint: sort m4 macros alphabetically in acinclude.m4.
* acinclude.m4: Sort AC_DEFUN macros alphabetically.
author | Rik <rik@octave.org> |
---|---|
date | Sat, 13 Feb 2021 11:48:09 -0800 |
parents | 8224cb664385 |
children | d35ed8538d69 |
line wrap: on
line diff
--- a/m4/acinclude.m4 Sat Feb 13 11:13:10 2021 -0800 +++ b/m4/acinclude.m4 Sat Feb 13 11:48:09 2021 -0800 @@ -100,6 +100,74 @@ fi ]) dnl +dnl Check if pthread stack size accounts for thread-local storage. +dnl +dnl This program should succeed if the pthread library allocates memory +dnl for thread-local (__thread) variables independently of the +dnl requested thread stack size. +dnl +dnl It will fail if (as in the current version of glibc) the storage +dnl for thread-local variables is subtracted from the memory allocated +dnl for the thread stack. (This can cause problems for Java and for +dnl other libraries.) +dnl +dnl This bug is tracked in glibc at: +dnl https://sourceware.org/bugzilla/show_bug.cgi?id=11787 +dnl +AC_DEFUN([OCTAVE_CHECK_BROKEN_PTHREAD_STACKSIZE], [ + AC_CACHE_CHECK([whether pthread stack size does not account for thread-local storage], + [octave_cv_broken_pthread_stacksize], + [AC_LANG_PUSH(C) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include <stdio.h> +#include <string.h> +#include <pthread.h> + +static char __thread data[100 * 1024]; + +static void * threadfunc(void *arg) +{ + return data; +} + ]], [[ + pthread_attr_t attr; + pthread_t thread; + int errnum; + + pthread_attr_init (&attr); + errnum = pthread_attr_setstacksize (&attr, 64 * 1024); + if (errnum != 0) + { + fprintf (stderr, "pthread_attr_setstacksize: %s\n", strerror(errnum)); + return 1; + } + errnum = pthread_create (&thread, &attr, &threadfunc, NULL); + if (errnum != 0) + { + fprintf (stderr, "pthread_create: %s\n", strerror(errnum)); + return 1; + } + errnum = pthread_join (thread, NULL); + if (errnum != 0) + { + fprintf (stderr, "pthread_join: %s\n", strerror(errnum)); + return 1; + } + + pthread_attr_destroy (&attr); + return 0; + ]])], + octave_cv_broken_pthread_stacksize=no, + octave_cv_broken_pthread_stacksize=yes, + octave_cv_broken_pthread_stacksize=no) + AC_LANG_POP(C) + ]) + if test $octave_cv_broken_pthread_stacksize = yes; then + AC_DEFINE(HAVE_BROKEN_PTHREAD_STACKSIZE, 1, + [Define to 1 if pthread stack size does not account for thread-local storage.]) + fi +]) +dnl dnl Check for broken stl_algo.h header file in gcc versions 4.8.0, 4.8.1, 4.8.2 dnl which leads to failures in nth_element. dnl @@ -187,74 +255,6 @@ fi ]) dnl -dnl Check if pthread stack size accounts for thread-local storage. -dnl -dnl This program should succeed if the pthread library allocates memory -dnl for thread-local (__thread) variables independently of the -dnl requested thread stack size. -dnl -dnl It will fail if (as in the current version of glibc) the storage -dnl for thread-local variables is subtracted from the memory allocated -dnl for the thread stack. (This can cause problems for Java and for -dnl other libraries.) -dnl -dnl This bug is tracked in glibc at: -dnl https://sourceware.org/bugzilla/show_bug.cgi?id=11787 -dnl -AC_DEFUN([OCTAVE_CHECK_BROKEN_PTHREAD_STACKSIZE], [ - AC_CACHE_CHECK([whether pthread stack size does not account for thread-local storage], - [octave_cv_broken_pthread_stacksize], - [AC_LANG_PUSH(C) - AC_RUN_IFELSE([AC_LANG_PROGRAM([[ -#include <stdio.h> -#include <string.h> -#include <pthread.h> - -static char __thread data[100 * 1024]; - -static void * threadfunc(void *arg) -{ - return data; -} - ]], [[ - pthread_attr_t attr; - pthread_t thread; - int errnum; - - pthread_attr_init (&attr); - errnum = pthread_attr_setstacksize (&attr, 64 * 1024); - if (errnum != 0) - { - fprintf (stderr, "pthread_attr_setstacksize: %s\n", strerror(errnum)); - return 1; - } - errnum = pthread_create (&thread, &attr, &threadfunc, NULL); - if (errnum != 0) - { - fprintf (stderr, "pthread_create: %s\n", strerror(errnum)); - return 1; - } - errnum = pthread_join (thread, NULL); - if (errnum != 0) - { - fprintf (stderr, "pthread_join: %s\n", strerror(errnum)); - return 1; - } - - pthread_attr_destroy (&attr); - return 0; - ]])], - octave_cv_broken_pthread_stacksize=no, - octave_cv_broken_pthread_stacksize=yes, - octave_cv_broken_pthread_stacksize=no) - AC_LANG_POP(C) - ]) - if test $octave_cv_broken_pthread_stacksize = yes; then - AC_DEFINE(HAVE_BROKEN_PTHREAD_STACKSIZE, 1, - [Define to 1 if pthread stack size does not account for thread-local storage.]) - fi -]) -dnl dnl Check whether CXSparse is version 2.2 or later dnl FIXME: This test uses a version number. It potentially could dnl be re-written to actually call a function, but is it worth it? @@ -343,6 +343,83 @@ LIBS="$ac_octave_save_LIBS" ]) dnl +dnl OCTAVE_CHECK_FORTRAN_SYMBOL_AND_CALLING_CONVENTIONS +dnl +dnl Set variables related to Fortran symbol names (append underscore, +dnl use uppercase names, etc.) and calling convention (mostly used for +dnl determining how character strings are passed). +dnl +AC_DEFUN([OCTAVE_CHECK_FORTRAN_SYMBOL_AND_CALLING_CONVENTIONS], [ + F77_TOLOWER=yes + F77_APPEND_UNDERSCORE=yes + F77_APPEND_EXTRA_UNDERSCORE=yes + + case $ac_cv_f77_mangling in + "upper case") F77_TOLOWER=no ;; + esac + case $ac_cv_f77_mangling in + "no underscore") F77_APPEND_UNDERSCORE=no ;; + esac + case $ac_cv_f77_mangling in + "no extra underscore") F77_APPEND_EXTRA_UNDERSCORE=no ;; + esac + + case $canonical_host_type in + i[[3456789]]86-*-*) + if test $ac_cv_f77_compiler_gnu = yes; then + OCTAVE_F77_FLAG([-mieee-fp]) + 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 $ac_cv_f77_compiler_gnu = yes; then + FORTRAN_CALLING_CONVENTION=gfortran + else + FORTRAN_CALLING_CONVENTION=unknown + fi + AC_ARG_ENABLE([fortran-calling-convention], + [AS_HELP_STRING([--enable-fortran-calling-convention=OPTION], + [Select C++ to Fortran calling convention. "gfortran" should be detected automatically. Other options are "cray", "visual-fortran", or "f2c".])], + [FORTRAN_CALLING_CONVENTION="$enableval"], []) + + case $FORTRAN_CALLING_CONVENTION in + gfortran) + AC_DEFINE(F77_USES_GFORTRAN_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the gfortran calling convention.]) + ;; + cray) + AC_DEFINE(F77_USES_CRAY_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the Cray Fortran calling convention.]) + ;; + visual-fortran) + AC_DEFINE(F77_USES_VISUAL_FORTRAN_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the Visual Fortran calling convention.]) + ;; + f2c) + AC_DEFINE(F77_USES_F2C_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the f2c calling convention.]) + ;; + *) + AC_MSG_ERROR([to build Octave, the C++ to Fortran calling convention must be known.]) + ;; + 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) +]) +dnl dnl Check if function gluTessCallback is called with "(...)". dnl AC_DEFUN([OCTAVE_CHECK_FUNC_GLUTESSCALLBACK_THREEDOTS], [ @@ -369,6 +446,39 @@ fi ]) dnl +dnl Check whether the Qt class QList has a constructor that accepts +dnl a pair of iterators. This constructor was introduced in Qt 5.14. +dnl +AC_DEFUN([OCTAVE_CHECK_FUNC_QFONTMETRICS_HORIZONTAL_ADVANCE], [ + AC_CACHE_CHECK([for QFontMetrics::horizontalAdvance function], + [octave_cv_func_qfontmetrics_horizontal_advance], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <QFont> + #include <QFontMetrics> + #include <QString> + ]], [[ + QFont font; + QFontMetrics fm (font); + fm.horizontalAdvance ('x'); + fm.horizontalAdvance (QString ("string")); + ]])], + octave_cv_func_qfontmetrics_horizontal_advance=yes, + octave_cv_func_qfontmetrics_horizontal_advance=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_func_qfontmetrics_horizontal_advance = yes; then + AC_DEFINE(HAVE_QFONTMETRICS_HORIZONTAL_ADVANCE, 1, + [Define to 1 if you have the `QFontMetrics::horizontalAdvance' function.]) + fi +]) +dnl dnl Check whether the Qt QGuiApplication class has the setDesktopFileName dnl static member function. This function was introduced in Qt 5.7. dnl @@ -399,6 +509,41 @@ fi ]) dnl +dnl Check whether the Qt class QHelpEngine has the documentsForIdentifier +dnl function. dnl This member function was introduced in Qt 5.15. +dnl +AC_DEFUN([OCTAVE_CHECK_FUNC_QHELPENGINE_DOCUMENTSFORIDENTIFIER], [ + AC_CACHE_CHECK([for QHelpEngine::documentsForIdentifier in <QHelpEngine>], + [octave_cv_func_qhelpengine_documentsforidentifier], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <QHelpEngine> + #include <QHelpLink> + #include <QList> + #include <QString> + #include <QUrl> + ]], [[ + QString collection_file; + QHelpEngine eng (collection_file); + QString id; + eng.documentsForIdentifier (id); + ]])], + octave_cv_func_qhelpengine_documentsforidentifier=yes, + octave_cv_func_qhelpengine_documentsforidentifier=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_func_qhelpengine_documentsforidentifier = yes; then + AC_DEFINE(HAVE_QHELPENGINE_DOCUMENTSFORIDENTIFIER, 1, + [Define to 1 if you have the `QHelpEngine::documentsForIdentifier' member function.]) + fi +]) +dnl dnl Check whether the Qt QHelpSearchQueryWidget class has the searchInput dnl member function. This function was introduced in Qt 5.9. dnl @@ -431,35 +576,32 @@ fi ]) dnl -dnl Check whether new API is used with QHelpIndexWidget. -dnl Under new API, QHelpIndexWidget emits documentActivates. -dnl Under old API, QHelpIndexWidget emits linkActivated. -dnl New structure/signal API was introduced in Qt 5.15. +dnl Check whether the Qt class QList has a constructor that accepts +dnl a pair of iterators. This constructor was introduced in Qt 5.14. dnl -dnl FIXME: Delete this entirely when we drop support for Qt 5.14 or older. -dnl -AC_DEFUN([OCTAVE_CHECK_NEW_QHELPINDEXWIDGET_API], [ - AC_CACHE_CHECK([for new QHelpIndexWidget API], - [octave_cv_new_qhelpindexwidget_api], +AC_DEFUN([OCTAVE_CHECK_FUNC_QLIST_ITERATOR_CONSTRUCTOR], [ + AC_CACHE_CHECK([for QList<T>::QList (iterator, iterator) constructor], + [octave_cv_func_qlist_iterator_constructor], [AC_LANG_PUSH(C++) ac_octave_save_CPPFLAGS="$CPPFLAGS" ac_octave_save_CXXFLAGS="$CXXFLAGS" CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" - CXXFLAGS="$CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include <QHelpLink> + #include <QList> ]], [[ - QHelpLink link; + QList<int> lst_one; + QList<int> lst_two (lst_one.begin (), lst_one.end ()); ]])], - octave_cv_new_qhelpindexwidget_api=yes, - octave_cv_new_qhelpindexwidget_api=no) + octave_cv_func_qlist_iterator_constructor=yes, + octave_cv_func_qlist_iterator_constructor=no) CPPFLAGS="$ac_octave_save_CPPFLAGS" CXXFLAGS="$ac_octave_save_CXXFLAGS" AC_LANG_POP(C++) ]) - if test $octave_cv_new_qhelpindexwidget_api = yes; then - AC_DEFINE(HAVE_NEW_QHELPINDEXWIDGET_API, 1, - [Define to 1 if using new QHelpIndexWidget API.]) + if test $octave_cv_func_qlist_iterator_constructor = yes; then + AC_DEFINE(HAVE_QLIST_ITERATOR_CONSTRUCTOR, 1, + [Define to 1 if you have the `QList<T>::QList (iterator, iterator)' constructor.]) fi ]) dnl @@ -527,41 +669,6 @@ fi ]) dnl -dnl Check whether the Qt class QHelpEngine has the documentsForIdentifier -dnl function. dnl This member function was introduced in Qt 5.15. -dnl -AC_DEFUN([OCTAVE_CHECK_FUNC_QHELPENGINE_DOCUMENTSFORIDENTIFIER], [ - AC_CACHE_CHECK([for QHelpEngine::documentsForIdentifier in <QHelpEngine>], - [octave_cv_func_qhelpengine_documentsforidentifier], - [AC_LANG_PUSH(C++) - ac_octave_save_CPPFLAGS="$CPPFLAGS" - ac_octave_save_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" - CXXFLAGS="$CXXPICFLAG $CXXFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include <QHelpEngine> - #include <QHelpLink> - #include <QList> - #include <QString> - #include <QUrl> - ]], [[ - QString collection_file; - QHelpEngine eng (collection_file); - QString id; - eng.documentsForIdentifier (id); - ]])], - octave_cv_func_qhelpengine_documentsforidentifier=yes, - octave_cv_func_qhelpengine_documentsforidentifier=no) - CPPFLAGS="$ac_octave_save_CPPFLAGS" - CXXFLAGS="$ac_octave_save_CXXFLAGS" - AC_LANG_POP(C++) - ]) - if test $octave_cv_func_qhelpengine_documentsforidentifier = yes; then - AC_DEFINE(HAVE_QHELPENGINE_DOCUMENTSFORIDENTIFIER, 1, - [Define to 1 if you have the `QHelpEngine::documentsForIdentifier' member function.]) - fi -]) -dnl dnl Check whether the Qt class QWheelEvent has the angleDelta member function. dnl This member function was introduced in Qt 5. dnl @@ -624,136 +731,6 @@ fi ]) dnl -dnl Check whether the Qt class QList has a constructor that accepts -dnl a pair of iterators. This constructor was introduced in Qt 5.14. -dnl -AC_DEFUN([OCTAVE_CHECK_FUNC_QLIST_ITERATOR_CONSTRUCTOR], [ - AC_CACHE_CHECK([for QList<T>::QList (iterator, iterator) constructor], - [octave_cv_func_qlist_iterator_constructor], - [AC_LANG_PUSH(C++) - ac_octave_save_CPPFLAGS="$CPPFLAGS" - ac_octave_save_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" - CXXFLAGS="$CXXPICFLAG $CXXFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include <QList> - ]], [[ - QList<int> lst_one; - QList<int> lst_two (lst_one.begin (), lst_one.end ()); - ]])], - octave_cv_func_qlist_iterator_constructor=yes, - octave_cv_func_qlist_iterator_constructor=no) - CPPFLAGS="$ac_octave_save_CPPFLAGS" - CXXFLAGS="$ac_octave_save_CXXFLAGS" - AC_LANG_POP(C++) - ]) - if test $octave_cv_func_qlist_iterator_constructor = yes; then - AC_DEFINE(HAVE_QLIST_ITERATOR_CONSTRUCTOR, 1, - [Define to 1 if you have the `QList<T>::QList (iterator, iterator)' constructor.]) - fi -]) -dnl -dnl Check whether the Qt class QList has a constructor that accepts -dnl a pair of iterators. This constructor was introduced in Qt 5.14. -dnl -AC_DEFUN([OCTAVE_CHECK_FUNC_QFONTMETRICS_HORIZONTAL_ADVANCE], [ - AC_CACHE_CHECK([for QFontMetrics::horizontalAdvance function], - [octave_cv_func_qfontmetrics_horizontal_advance], - [AC_LANG_PUSH(C++) - ac_octave_save_CPPFLAGS="$CPPFLAGS" - ac_octave_save_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" - CXXFLAGS="$CXXPICFLAG $CXXFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include <QFont> - #include <QFontMetrics> - #include <QString> - ]], [[ - QFont font; - QFontMetrics fm (font); - fm.horizontalAdvance ('x'); - fm.horizontalAdvance (QString ("string")); - ]])], - octave_cv_func_qfontmetrics_horizontal_advance=yes, - octave_cv_func_qfontmetrics_horizontal_advance=no) - CPPFLAGS="$ac_octave_save_CPPFLAGS" - CXXFLAGS="$ac_octave_save_CXXFLAGS" - AC_LANG_POP(C++) - ]) - if test $octave_cv_func_qfontmetrics_horizontal_advance = yes; then - AC_DEFINE(HAVE_QFONTMETRICS_HORIZONTAL_ADVANCE, 1, - [Define to 1 if you have the `QFontMetrics::horizontalAdvance' function.]) - fi -]) -dnl -dnl Check whether the Qt class QRegion has the iterators and related -dnl functions introduced in Qt 5.8. -dnl -AC_DEFUN([OCTAVE_CHECK_QREGION_ITERATORS], [ - AC_CACHE_CHECK([for QRegion iterators and related functions], - [octave_cv_qregion_iterators], - [AC_LANG_PUSH(C++) - ac_octave_save_CPPFLAGS="$CPPFLAGS" - ac_octave_save_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" - CXXFLAGS="$CXXPICFLAG $CXXFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include <QRegion> - ]], [[ - QRegion region; - QRegion::const_iterator it; - it = region.begin (); - it = region.end (); - it = region.cbegin (); - it = region.cend (); - QRegion::const_reverse_iterator rit; - rit = region.rbegin (); - rit = region.rend (); - rit = region.crbegin (); - rit = region.crend (); - ]])], - octave_cv_qregion_iterators=yes, - octave_cv_qregion_iterators=no) - CPPFLAGS="$ac_octave_save_CPPFLAGS" - CXXFLAGS="$ac_octave_save_CXXFLAGS" - AC_LANG_POP(C++) - ]) - if test $octave_cv_qregion_iterators = yes; then - AC_DEFINE(HAVE_QREGION_ITERATORS, 1, - [Define to 1 if you have the `QFontMetrics::horizontalAdvance' function.]) - fi -]) -dnl -dnl Check whether the Qt::SplitBehavior enum exists and has -dnl Qt::KeepEmptyParts and Qt::SkipEmptyParts members. This enum -dnl was introduced or modified in Qt 5.14. -dnl -AC_DEFUN([OCTAVE_CHECK_QT_SPLITBEHAVIOR_ENUM], [ - AC_CACHE_CHECK([for Qt::SplitBehavior enum], - [octave_cv_qt_splitbehavior_enum], - [AC_LANG_PUSH(C++) - ac_octave_save_CPPFLAGS="$CPPFLAGS" - ac_octave_save_CXXFLAGS="$CXXFLAGS" - CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" - CXXFLAGS="$CXXPICFLAG $CXXFLAGS" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ - #include <Qt> - ]], [[ - Qt::SplitBehavior sb_keep = Qt::KeepEmptyParts; - Qt::SplitBehavior sb_skip = Qt::SkipEmptyParts; - ]])], - octave_cv_qt_splitbehavior_enum=yes, - octave_cv_qt_splitbehavior_enum=no) - CPPFLAGS="$ac_octave_save_CPPFLAGS" - CXXFLAGS="$ac_octave_save_CXXFLAGS" - AC_LANG_POP(C++) - ]) - if test $octave_cv_qt_splitbehavior_enum = yes; then - AC_DEFINE(HAVE_QT_SPLITBEHAVIOR_ENUM, 1, - [Define to 1 if you have the `Qt::SplitBehavior' enum.]) - fi -]) -dnl dnl Check whether HDF5 library has version 1.6 API functions. dnl AC_DEFUN([OCTAVE_CHECK_HDF5_HAS_VER_16_API], [ @@ -1391,6 +1368,40 @@ fi ]) dnl +dnl Check whether PCRE is compiled with --enable-utf. +dnl +AC_DEFUN([OCTAVE_CHECK_LIB_PCRE_OK], [ + AC_CACHE_CHECK([whether PCRE library was compiled with UTF support], + [octave_cv_lib_pcre_ok], + [AC_LANG_PUSH(C++) + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ + #include <stdio.h> + #if defined (HAVE_PCRE_H) + # include <pcre.h> + #elif defined (HAVE_PCRE_PCRE_H) + # include <pcre/pcre.h> + #endif + ]], [[ + const char *pattern = "test"; + const char *err; + int erroffset; + pcre *data = pcre_compile (pattern, PCRE_UTF8, &err, &erroffset, nullptr); + return (! data); + ]])], + octave_cv_lib_pcre_ok=yes, + octave_cv_lib_pcre_ok=no, + octave_cv_lib_pcre_ok=yes) + AC_LANG_POP(C++) + ]) + if test $octave_cv_lib_pcre_ok = yes; then + $1 + : + else + $2 + : + fi +]) +dnl dnl Check whether Qhull works (does not crash). dnl AC_DEFUN([OCTAVE_CHECK_LIB_QHULL_OK], [ @@ -1448,40 +1459,6 @@ fi ]) dnl -dnl Check whether PCRE is compiled with --enable-utf. -dnl -AC_DEFUN([OCTAVE_CHECK_LIB_PCRE_OK], [ - AC_CACHE_CHECK([whether PCRE library was compiled with UTF support], - [octave_cv_lib_pcre_ok], - [AC_LANG_PUSH(C++) - AC_RUN_IFELSE([AC_LANG_PROGRAM([[ - #include <stdio.h> - #if defined (HAVE_PCRE_H) - # include <pcre.h> - #elif defined (HAVE_PCRE_PCRE_H) - # include <pcre/pcre.h> - #endif - ]], [[ - const char *pattern = "test"; - const char *err; - int erroffset; - pcre *data = pcre_compile (pattern, PCRE_UTF8, &err, &erroffset, nullptr); - return (! data); - ]])], - octave_cv_lib_pcre_ok=yes, - octave_cv_lib_pcre_ok=no, - octave_cv_lib_pcre_ok=yes) - AC_LANG_POP(C++) - ]) - if test $octave_cv_lib_pcre_ok = yes; then - $1 - : - else - $2 - : - fi -]) -dnl dnl Check whether sndfile library is modern enough to include things like Ogg dnl AC_DEFUN([OCTAVE_CHECK_LIB_SNDFILE_OK], [ @@ -1535,6 +1512,38 @@ AC_SUBST(TERM_LIBS) ]) dnl +dnl Check whether new API is used with QHelpIndexWidget. +dnl Under new API, QHelpIndexWidget emits documentActivates. +dnl Under old API, QHelpIndexWidget emits linkActivated. +dnl New structure/signal API was introduced in Qt 5.15. +dnl +dnl FIXME: Delete this entirely when we drop support for Qt 5.14 or older. +dnl +AC_DEFUN([OCTAVE_CHECK_NEW_QHELPINDEXWIDGET_API], [ + AC_CACHE_CHECK([for new QHelpIndexWidget API], + [octave_cv_new_qhelpindexwidget_api], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CPPFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <QHelpLink> + ]], [[ + QHelpLink link; + ]])], + octave_cv_new_qhelpindexwidget_api=yes, + octave_cv_new_qhelpindexwidget_api=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_new_qhelpindexwidget_api = yes; then + AC_DEFINE(HAVE_NEW_QHELPINDEXWIDGET_API, 1, + [Define to 1 if using new QHelpIndexWidget API.]) + fi +]) +dnl dnl Check for the Qhull version. dnl AC_DEFUN([OCTAVE_CHECK_QHULL_VERSION], [ @@ -1580,6 +1589,44 @@ fi ]) dnl +dnl Check whether the Qt class QRegion has the iterators and related +dnl functions introduced in Qt 5.8. +dnl +AC_DEFUN([OCTAVE_CHECK_QREGION_ITERATORS], [ + AC_CACHE_CHECK([for QRegion iterators and related functions], + [octave_cv_qregion_iterators], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <QRegion> + ]], [[ + QRegion region; + QRegion::const_iterator it; + it = region.begin (); + it = region.end (); + it = region.cbegin (); + it = region.cend (); + QRegion::const_reverse_iterator rit; + rit = region.rbegin (); + rit = region.rend (); + rit = region.crbegin (); + rit = region.crend (); + ]])], + octave_cv_qregion_iterators=yes, + octave_cv_qregion_iterators=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_qregion_iterators = yes; then + AC_DEFINE(HAVE_QREGION_ITERATORS, 1, + [Define to 1 if you have the `QFontMetrics::horizontalAdvance' function.]) + fi +]) +dnl dnl Check whether we have QScintilla for the given Qt VERSION. dnl AC_DEFUN([OCTAVE_CHECK_QSCINTILLA], [ @@ -1874,6 +1921,36 @@ fi ]) dnl +dnl Check whether the Qt::SplitBehavior enum exists and has +dnl Qt::KeepEmptyParts and Qt::SkipEmptyParts members. This enum +dnl was introduced or modified in Qt 5.14. +dnl +AC_DEFUN([OCTAVE_CHECK_QT_SPLITBEHAVIOR_ENUM], [ + AC_CACHE_CHECK([for Qt::SplitBehavior enum], + [octave_cv_qt_splitbehavior_enum], + [AC_LANG_PUSH(C++) + ac_octave_save_CPPFLAGS="$CPPFLAGS" + ac_octave_save_CXXFLAGS="$CXXFLAGS" + CPPFLAGS="$QT_CPPFLAGS $CXXPICFLAG $CPPFLAGS" + CXXFLAGS="$CXXPICFLAG $CXXFLAGS" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include <Qt> + ]], [[ + Qt::SplitBehavior sb_keep = Qt::KeepEmptyParts; + Qt::SplitBehavior sb_skip = Qt::SkipEmptyParts; + ]])], + octave_cv_qt_splitbehavior_enum=yes, + octave_cv_qt_splitbehavior_enum=no) + CPPFLAGS="$ac_octave_save_CPPFLAGS" + CXXFLAGS="$ac_octave_save_CXXFLAGS" + AC_LANG_POP(C++) + ]) + if test $octave_cv_qt_splitbehavior_enum = yes; then + AC_DEFINE(HAVE_QT_SPLITBEHAVIOR_ENUM, 1, + [Define to 1 if you have the `Qt::SplitBehavior' enum.]) + fi +]) +dnl dnl OCTAVE_CHECK_QT_TOOL(TOOL) dnl AC_DEFUN([OCTAVE_CHECK_QT_TOOL], [ @@ -2187,6 +2264,22 @@ fi ]) dnl +dnl Check whether SUNDIALS IDA library has the SUNLINSOL_DENSE linear solver. +dnl +AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SUNLINSOL_DENSE], [ + AC_CHECK_HEADERS([sunlinsol/sunlinsol_dense.h], + octave_cv_sundials_sunlinsol_dense=yes, + octave_cv_sundials_sunlinsol_dense=no) + ]) + if test $octave_cv_sundials_sunlinsol_dense = yes; then + AC_DEFINE(HAVE_SUNDIALS_SUNLINSOL_DENSE, 1, + [Define to 1 if SUNDIALS IDA includes the SUNLINSOL_DENSE linear solver.]) + else + warn_sundials_disabled="SUNDIALS IDA library does not include the SUNLINSOL_DENSE linear solver. The solvers ode15i and ode15s will be disabled." + OCTAVE_CONFIGURE_WARNING([warn_sundials_disabled]) + fi +]) +dnl dnl Check whether SUNDIALS IDA library is configured with SUNLINSOL_KLU dnl enabled. dnl @@ -2248,21 +2341,14 @@ fi ]) dnl -dnl Check whether SUNDIALS IDA library has the SUNLINSOL_DENSE linear solver. +dnl Like AC_CONFIG_FILES, but don't touch the output file if it already +dnl exists and hasn't changed. dnl -AC_DEFUN([OCTAVE_CHECK_SUNDIALS_SUNLINSOL_DENSE], [ - AC_CHECK_HEADERS([sunlinsol/sunlinsol_dense.h], - octave_cv_sundials_sunlinsol_dense=yes, - octave_cv_sundials_sunlinsol_dense=no) - ]) - if test $octave_cv_sundials_sunlinsol_dense = yes; then - AC_DEFINE(HAVE_SUNDIALS_SUNLINSOL_DENSE, 1, - [Define to 1 if SUNDIALS IDA includes the SUNLINSOL_DENSE linear solver.]) - else - warn_sundials_disabled="SUNDIALS IDA library does not include the SUNLINSOL_DENSE linear solver. The solvers ode15i and ode15s will be disabled." - OCTAVE_CONFIGURE_WARNING([warn_sundials_disabled]) - fi -]) +AC_DEFUN([OCTAVE_CONFIG_MOVE_IF_CHANGE_FILES], [ + m4_foreach_w([elt], [$1], [ + AC_CONFIG_FILES(elt[-tmp:]patsubst(elt, [.sh$], [.in.sh])) + AC_CONFIG_COMMANDS(elt, + [$SHELL $srcdir/build-aux/move-if-change ]elt[-tmp ]elt)])]) dnl dnl Add warning to final summary. dnl @@ -2281,15 +2367,6 @@ fi]) ]) dnl -dnl Like AC_CONFIG_FILES, but don't touch the output file if it already -dnl exists and hasn't changed. -dnl -AC_DEFUN([OCTAVE_CONFIG_MOVE_IF_CHANGE_FILES], [ - m4_foreach_w([elt], [$1], [ - AC_CONFIG_FILES(elt[-tmp:]patsubst(elt, [.sh$], [.in.sh])) - AC_CONFIG_COMMANDS(elt, - [$SHELL $srcdir/build-aux/move-if-change ]elt[-tmp ]elt)])]) -dnl dnl Check if the C++ library has the bit_and, bit_or, and bit_xor dnl templates defined. dnl @@ -2413,6 +2490,239 @@ fi ]) dnl +dnl OCTAVE_DEFINE_MKOCTFILE_DYNAMIC_LINK_OPTIONS +dnl +dnl Requires the following variables to already be set: +dnl +dnl AR +dnl CFLAGS +dnl CXX +dnl CXXFLAGS +dnl EXEEXT +dnl GCC +dnl GREP +dnl GXX +dnl LDFLAGS +dnl ac_cv_f77_compiler_gnu +dnl ac_top_build_prefix +dnl canonical_host_type +dnl have_msvc +dnl +AC_DEFUN_ONCE([OCTAVE_DEFINE_MKOCTFILE_DYNAMIC_LINK_OPTIONS], [ + ### Set system-dependent options for building shared libraries. + ### These are used by mkoctfile to create dynamically loadable + ### .oct and .mex files. It would be great if we could somehow + ### use libtool to get this information. + + CPICFLAG=-fPIC + CXXPICFLAG=-fPIC + FPICFLAG=-fPIC + SH_LDFLAGS=-shared + DL_LDFLAGS="${SH_LDFLAGS}" + MKOCTFILE_DL_LDFLAGS="${DL_LDFLAGS}" + NO_OCT_FILE_STRIP=false + TEMPLATE_AR="${AR}" + TEMPLATE_ARFLAGS="${ARFLAGS}" + EXTERNAL_DLL_DEFS= + OCTAVE_DLL_DEFS= + OCTINTERP_DLL_DEFS= + OCTGUI_DLL_DEFS= + OCTGRAPHICS_DLL_DEFS= + library_path_var=LD_LIBRARY_PATH + ldpreloadsep=" " + case $canonical_host_type in + *-*-386bsd* | *-*-netbsd*) + SH_LDFLAGS=-Bshareable + ;; + *-*-openbsd*) + SH_LDFLAGS="-shared -fPIC" + ;; + *-*-freebsd*) + SH_LDFLAGS="-shared -Wl,-x" + ;; + alpha*-dec-osf*) + CPICFLAG= + CXXPICFLAG= + FPICFLAG= + SH_LDFLAGS="-shared -Wl,-expect_unresolved -Wl,'*'" + ;; + *-*-darwin*) + DL_LDFLAGS="-bundle -bundle_loader ${ac_top_build_prefix}libinterp/octave ${LDFLAGS}" + dnl Contains variables that are defined and undefined at this point, so use + dnl appropriate quoting to defer expansion of ${bindir} and ${version}. + MKOCTFILE_DL_LDFLAGS='-bundle -bundle_loader ${bindir}/octave-${version}'"${EXEEXT}" + SH_LDFLAGS="-dynamiclib -single_module ${LDFLAGS}" + case $canonical_host_type in + powerpc-*) + CXXPICFLAG= + CPICFLAG= + FPICFLAG= + ;; + esac + NO_OCT_FILE_STRIP=true + library_path_var=DYLD_LIBRARY_PATH + ;; + *-*-cygwin*) + CPICFLAG= + CXXPICFLAG= + FPICFLAG= + 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" + ldpreloadsep=":" + ;; + *-*-mingw*) + if test $have_msvc = yes; then + DL_LDFLAGS="-shared" + CPICFLAG= + CXXPICFLAG= + FPICFLAG= + SH_LDFLAGS="-shared" + if test -n "`echo $CFLAGS | $GREP -e '-g'`" || test -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 + else + CPICFLAG= + CXXPICFLAG= + FPICFLAG= + 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" + library_path_var=PATH + fi + ## Extra compilation flags. + EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" + OCTAVE_DLL_DEFS="-DOCTAVE_DLL" + OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL" + OCTGUI_DLL_DEFS="-DOCTGUI_DLL" + OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" + ;; + *-*-msdosmsvc) + DL_LDFLAGS="-shared" + CPICFLAG= + CXXPICFLAG= + FPICFLAG= + SH_LDFLAGS="-shared" + if test -n "`echo $CFLAGS | $GREP -e '-g'`" || test -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 + ## Extra compilation flags. + EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" + OCTAVE_DLL_DEFS="-DOCTAVE_DLL" + OCTGUI_DLL_DEFS="-DOCTGUI_DLL" + OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" + ;; + *-*-linux* | *-*-gnu*) + MKOCTFILE_DL_LDFLAGS="-shared -Wl,-Bsymbolic" + EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" + OCTAVE_DLL_DEFS="-DOCTAVE_DLL" + OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL" + OCTGUI_DLL_DEFS="-DOCTGUI_DLL" + OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" + ;; + i[[3456]]86-*-sco3.2v5*) + 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 + SH_LDFLAGS="-shared -fPIC" + 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" + ;; + *-sgi-*) + CPICFLAG= + CXXPICFLAG= + FPICFLAG= + ;; + sparc-sun-sunos4*) + if test $ac_cv_f77_compiler_gnu = yes; then + FPICFLAG=-fPIC + else + FPICFLAG=-PIC + fi + SH_LDFLAGS="-assert nodefinitions" + ;; + 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 + ## Template closures in archive libraries need a different mechanism. + if test "$GXX" != yes; then + TEMPLATE_AR="${CXX}" + TEMPLATE_ARFLAGS="-xar -o" + fi + ;; + esac + + 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 SH_LDFLAGS to be $SH_LDFLAGS]) + 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 NO_OCT_FILE_STRIP to be $NO_OCT_FILE_STRIP]) + AC_MSG_NOTICE([defining TEMPLATE_AR to be $TEMPLATE_AR]) + AC_MSG_NOTICE([defining TEMPLATE_ARFLAGS to be $TEMPLATE_ARFLAGS]) + AC_MSG_NOTICE([defining EXTERNAL_DLL_DEFS to be $EXTERNAL_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 OCTGUI_DLL_DEFS to be $OCTGUI_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(SH_LDFLAGS) + AC_SUBST(DL_LDFLAGS) + AC_SUBST(MKOCTFILE_DL_LDFLAGS) + AC_SUBST(NO_OCT_FILE_STRIP) + AC_SUBST(TEMPLATE_AR) + AC_SUBST(TEMPLATE_ARFLAGS) + AC_SUBST(EXTERNAL_DLL_DEFS) + AC_SUBST(OCTAVE_DLL_DEFS) + AC_SUBST(OCTINTERP_DLL_DEFS) + AC_SUBST(OCTGUI_DLL_DEFS) + AC_SUBST(OCTGRAPHICS_DLL_DEFS) + AC_SUBST(library_path_var) + AC_SUBST(ldpreloadsep) + AM_SUBST_NOTMAKE(ldpreloadsep) +]) +dnl dnl Allow the user disable support for command line editing using GNU dnl readline. dnl @@ -2644,6 +2954,95 @@ fi ]) dnl +dnl Check for llvm::createAlwaysInlinerPass +dnl +AC_DEFUN([OCTAVE_LLVM_HAS_CREATEALWAYSINLINERPASS], [ + AC_CACHE_CHECK([if llvm::createAlwaysInlinerPass exists], + [octave_cv_llvm_has_createalwaysinlinerpass], + [AC_LANG_PUSH(C++) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ + #include <llvm/Transforms/IPO.h> + ]], [[ + llvm::Pass *p; + p = llvm::createAlwaysInlinerPass (); + ]])], + octave_cv_llvm_has_createalwaysinlinerpass=yes, + octave_cv_llvm_has_createalwaysinlinerpass=no) + AC_LANG_POP(C++) + ]) + if test $octave_cv_llvm_has_createalwaysinlinerpass = yes; then + AC_DEFINE(LLVM_HAS_CREATEALWAYSINLINERPASS, 1, + [Define to 1 if llvm::createAlwaysInlinerPass exists.]) + fi +]) +dnl +dnl Check llvm::IRBuilder API +dnl +AC_DEFUN([OCTAVE_LLVM_IRBUILDER_API], [ + AC_CACHE_CHECK([if llvm::IRBuilder has two template arguments], + [octave_cv_llvm_irbuilder_has_two_template_args], + [AC_LANG_PUSH(C++) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#if defined (HAVE_LLVM_IR_FUNCTION_H) + #include <llvm/IR/LLVMContext.h> +#else + #include <llvm/LLVMContext.h> +#endif +#if defined (HAVE_LLVM_IR_IRBUILDER_H) + #include <llvm/IR/IRBuilder.h> +#elif defined (HAVE_LLVM_SUPPORT_IRBUILDER_H) + #include <llvm/Support/IRBuilder.h> +#else + #include <llvm/IRBuilder.h> +#endif + using namespace llvm; + ]], [[ + LLVMContext c; + IRBuilder<ConstantFolder,IRBuilderDefaultInserter> irb (c); + ]])], + octave_cv_llvm_irbuilder_has_two_template_args=yes, + octave_cv_llvm_irbuilder_has_two_template_args=no) + AC_LANG_POP(C++) + ]) + if test $octave_cv_llvm_irbuilder_has_two_template_args = yes; then + AC_DEFINE(LLVM_IRBUILDER_HAS_TWO_TEMPLATE_ARGS, 1, + [Define to 1 if llvm::IRBuilder has two template arguments.]) + fi +]) +dnl +dnl Check llvm::IRBuilder::CreateConstInBoundsGEP1_32 API +dbl +AC_DEFUN([OCTAVE_LLVM_IRBUILDER_CREATECONSTINBOUNDSGEP1_32_API], [ + AC_CACHE_CHECK([if llvm::IRBuilder::CreateConstInBoundsGEP1_32 requires a type argument], + [octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type], + [AC_LANG_PUSH(C++) + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([[ +#if defined (HAVE_LLVM_IR_IRBUILDER_H) + #include <llvm/IR/IRBuilder.h> +#elif defined (HAVE_LLVM_SUPPORT_IRBUILDER_H) + #include <llvm/Support/IRBuilder.h> +#else + #include <llvm/IRBuilder.h> +#endif + ]], [[ + llvm::LLVMContext c; + llvm::IRBuilder<> irb (c); + llvm::Value *v; + v = irb.CreateConstInBoundsGEP1_32 ((llvm::Value *) nullptr, 0); + ]])], + octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type=no, + octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type=yes) + AC_LANG_POP(C++) + ]) + if test $octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type = yes; then + AC_DEFINE(LLVM_IRBUILDER_CREATECONSTINBOUNDSGEP1_32_REQUIRES_TYPE, 1, + [Define to 1 if llvm::IRBuilder::CreateConstInBoundsGEP1_32 requires a type argument.]) + fi +]) +dnl dnl Check for legacy::PassManager API dnl AC_DEFUN([OCTAVE_LLVM_LEGACY_PASSMANAGER_API], [ @@ -2696,95 +3095,6 @@ fi ]) dnl -dnl Check llvm::IRBuilder API -dnl -AC_DEFUN([OCTAVE_LLVM_IRBUILDER_API], [ - AC_CACHE_CHECK([if llvm::IRBuilder has two template arguments], - [octave_cv_llvm_irbuilder_has_two_template_args], - [AC_LANG_PUSH(C++) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ -#if defined (HAVE_LLVM_IR_FUNCTION_H) - #include <llvm/IR/LLVMContext.h> -#else - #include <llvm/LLVMContext.h> -#endif -#if defined (HAVE_LLVM_IR_IRBUILDER_H) - #include <llvm/IR/IRBuilder.h> -#elif defined (HAVE_LLVM_SUPPORT_IRBUILDER_H) - #include <llvm/Support/IRBuilder.h> -#else - #include <llvm/IRBuilder.h> -#endif - using namespace llvm; - ]], [[ - LLVMContext c; - IRBuilder<ConstantFolder,IRBuilderDefaultInserter> irb (c); - ]])], - octave_cv_llvm_irbuilder_has_two_template_args=yes, - octave_cv_llvm_irbuilder_has_two_template_args=no) - AC_LANG_POP(C++) - ]) - if test $octave_cv_llvm_irbuilder_has_two_template_args = yes; then - AC_DEFINE(LLVM_IRBUILDER_HAS_TWO_TEMPLATE_ARGS, 1, - [Define to 1 if llvm::IRBuilder has two template arguments.]) - fi -]) -dnl -dnl Check for llvm::createAlwaysInlinerPass -dnl -AC_DEFUN([OCTAVE_LLVM_HAS_CREATEALWAYSINLINERPASS], [ - AC_CACHE_CHECK([if llvm::createAlwaysInlinerPass exists], - [octave_cv_llvm_has_createalwaysinlinerpass], - [AC_LANG_PUSH(C++) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ - #include <llvm/Transforms/IPO.h> - ]], [[ - llvm::Pass *p; - p = llvm::createAlwaysInlinerPass (); - ]])], - octave_cv_llvm_has_createalwaysinlinerpass=yes, - octave_cv_llvm_has_createalwaysinlinerpass=no) - AC_LANG_POP(C++) - ]) - if test $octave_cv_llvm_has_createalwaysinlinerpass = yes; then - AC_DEFINE(LLVM_HAS_CREATEALWAYSINLINERPASS, 1, - [Define to 1 if llvm::createAlwaysInlinerPass exists.]) - fi -]) -dnl -dnl Check llvm::IRBuilder::CreateConstInBoundsGEP1_32 API -dbl -AC_DEFUN([OCTAVE_LLVM_IRBUILDER_CREATECONSTINBOUNDSGEP1_32_API], [ - AC_CACHE_CHECK([if llvm::IRBuilder::CreateConstInBoundsGEP1_32 requires a type argument], - [octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type], - [AC_LANG_PUSH(C++) - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM([[ -#if defined (HAVE_LLVM_IR_IRBUILDER_H) - #include <llvm/IR/IRBuilder.h> -#elif defined (HAVE_LLVM_SUPPORT_IRBUILDER_H) - #include <llvm/Support/IRBuilder.h> -#else - #include <llvm/IRBuilder.h> -#endif - ]], [[ - llvm::LLVMContext c; - llvm::IRBuilder<> irb (c); - llvm::Value *v; - v = irb.CreateConstInBoundsGEP1_32 ((llvm::Value *) nullptr, 0); - ]])], - octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type=no, - octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type=yes) - AC_LANG_POP(C++) - ]) - if test $octave_cv_llvm_irbuilder_createconstinboundsgep1_32_requires_type = yes; then - AC_DEFINE(LLVM_IRBUILDER_CREATECONSTINBOUNDSGEP1_32_REQUIRES_TYPE, 1, - [Define to 1 if llvm::IRBuilder::CreateConstInBoundsGEP1_32 requires a type argument.]) - fi -]) -dnl dnl Check if MIPS processor is target and quiet signalling NaN value is dnl opposite of IEEE 754-2008 standard used by all other architectures. dnl @@ -2819,316 +3129,6 @@ fi ]) dnl -dnl OCTAVE_CHECK_FORTRAN_SYMBOL_AND_CALLING_CONVENTIONS -dnl -dnl Set variables related to Fortran symbol names (append underscore, -dnl use uppercase names, etc.) and calling convention (mostly used for -dnl determining how character strings are passed). -dnl -AC_DEFUN([OCTAVE_CHECK_FORTRAN_SYMBOL_AND_CALLING_CONVENTIONS], [ - F77_TOLOWER=yes - F77_APPEND_UNDERSCORE=yes - F77_APPEND_EXTRA_UNDERSCORE=yes - - case $ac_cv_f77_mangling in - "upper case") F77_TOLOWER=no ;; - esac - case $ac_cv_f77_mangling in - "no underscore") F77_APPEND_UNDERSCORE=no ;; - esac - case $ac_cv_f77_mangling in - "no extra underscore") F77_APPEND_EXTRA_UNDERSCORE=no ;; - esac - - case $canonical_host_type in - i[[3456789]]86-*-*) - if test $ac_cv_f77_compiler_gnu = yes; then - OCTAVE_F77_FLAG([-mieee-fp]) - 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 $ac_cv_f77_compiler_gnu = yes; then - FORTRAN_CALLING_CONVENTION=gfortran - else - FORTRAN_CALLING_CONVENTION=unknown - fi - AC_ARG_ENABLE([fortran-calling-convention], - [AS_HELP_STRING([--enable-fortran-calling-convention=OPTION], - [Select C++ to Fortran calling convention. "gfortran" should be detected automatically. Other options are "cray", "visual-fortran", or "f2c".])], - [FORTRAN_CALLING_CONVENTION="$enableval"], []) - - case $FORTRAN_CALLING_CONVENTION in - gfortran) - AC_DEFINE(F77_USES_GFORTRAN_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the gfortran calling convention.]) - ;; - cray) - AC_DEFINE(F77_USES_CRAY_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the Cray Fortran calling convention.]) - ;; - visual-fortran) - AC_DEFINE(F77_USES_VISUAL_FORTRAN_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the Visual Fortran calling convention.]) - ;; - f2c) - AC_DEFINE(F77_USES_F2C_CALLING_CONVENTION, 1, [Define to 1 if calling Fortran from C++ should use the f2c calling convention.]) - ;; - *) - AC_MSG_ERROR([to build Octave, the C++ to Fortran calling convention must be known.]) - ;; - 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) -]) -dnl -dnl OCTAVE_DEFINE_MKOCTFILE_DYNAMIC_LINK_OPTIONS -dnl -dnl Requires the following variables to already be set: -dnl -dnl AR -dnl CFLAGS -dnl CXX -dnl CXXFLAGS -dnl EXEEXT -dnl GCC -dnl GREP -dnl GXX -dnl LDFLAGS -dnl ac_cv_f77_compiler_gnu -dnl ac_top_build_prefix -dnl canonical_host_type -dnl have_msvc -dnl -AC_DEFUN_ONCE([OCTAVE_DEFINE_MKOCTFILE_DYNAMIC_LINK_OPTIONS], [ - ### Set system-dependent options for building shared libraries. - ### These are used by mkoctfile to create dynamically loadable - ### .oct and .mex files. It would be great if we could somehow - ### use libtool to get this information. - - CPICFLAG=-fPIC - CXXPICFLAG=-fPIC - FPICFLAG=-fPIC - SH_LDFLAGS=-shared - DL_LDFLAGS="${SH_LDFLAGS}" - MKOCTFILE_DL_LDFLAGS="${DL_LDFLAGS}" - NO_OCT_FILE_STRIP=false - TEMPLATE_AR="${AR}" - TEMPLATE_ARFLAGS="${ARFLAGS}" - EXTERNAL_DLL_DEFS= - OCTAVE_DLL_DEFS= - OCTINTERP_DLL_DEFS= - OCTGUI_DLL_DEFS= - OCTGRAPHICS_DLL_DEFS= - library_path_var=LD_LIBRARY_PATH - ldpreloadsep=" " - case $canonical_host_type in - *-*-386bsd* | *-*-netbsd*) - SH_LDFLAGS=-Bshareable - ;; - *-*-openbsd*) - SH_LDFLAGS="-shared -fPIC" - ;; - *-*-freebsd*) - SH_LDFLAGS="-shared -Wl,-x" - ;; - alpha*-dec-osf*) - CPICFLAG= - CXXPICFLAG= - FPICFLAG= - SH_LDFLAGS="-shared -Wl,-expect_unresolved -Wl,'*'" - ;; - *-*-darwin*) - DL_LDFLAGS="-bundle -bundle_loader ${ac_top_build_prefix}libinterp/octave ${LDFLAGS}" - dnl Contains variables that are defined and undefined at this point, so use - dnl appropriate quoting to defer expansion of ${bindir} and ${version}. - MKOCTFILE_DL_LDFLAGS='-bundle -bundle_loader ${bindir}/octave-${version}'"${EXEEXT}" - SH_LDFLAGS="-dynamiclib -single_module ${LDFLAGS}" - case $canonical_host_type in - powerpc-*) - CXXPICFLAG= - CPICFLAG= - FPICFLAG= - ;; - esac - NO_OCT_FILE_STRIP=true - library_path_var=DYLD_LIBRARY_PATH - ;; - *-*-cygwin*) - CPICFLAG= - CXXPICFLAG= - FPICFLAG= - 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" - ldpreloadsep=":" - ;; - *-*-mingw*) - if test $have_msvc = yes; then - DL_LDFLAGS="-shared" - CPICFLAG= - CXXPICFLAG= - FPICFLAG= - SH_LDFLAGS="-shared" - if test -n "`echo $CFLAGS | $GREP -e '-g'`" || test -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 - else - CPICFLAG= - CXXPICFLAG= - FPICFLAG= - 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" - library_path_var=PATH - fi - ## Extra compilation flags. - EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" - OCTAVE_DLL_DEFS="-DOCTAVE_DLL" - OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL" - OCTGUI_DLL_DEFS="-DOCTGUI_DLL" - OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" - ;; - *-*-msdosmsvc) - DL_LDFLAGS="-shared" - CPICFLAG= - CXXPICFLAG= - FPICFLAG= - SH_LDFLAGS="-shared" - if test -n "`echo $CFLAGS | $GREP -e '-g'`" || test -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 - ## Extra compilation flags. - EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" - OCTAVE_DLL_DEFS="-DOCTAVE_DLL" - OCTGUI_DLL_DEFS="-DOCTGUI_DLL" - OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" - ;; - *-*-linux* | *-*-gnu*) - MKOCTFILE_DL_LDFLAGS="-shared -Wl,-Bsymbolic" - EXTERNAL_DLL_DEFS="-DEXTERNAL_DLL" - OCTAVE_DLL_DEFS="-DOCTAVE_DLL" - OCTINTERP_DLL_DEFS="-DOCTINTERP_DLL" - OCTGUI_DLL_DEFS="-DOCTGUI_DLL" - OCTGRAPHICS_DLL_DEFS="-DOCTGRAPHICS_DLL" - ;; - i[[3456]]86-*-sco3.2v5*) - 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 - SH_LDFLAGS="-shared -fPIC" - 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" - ;; - *-sgi-*) - CPICFLAG= - CXXPICFLAG= - FPICFLAG= - ;; - sparc-sun-sunos4*) - if test $ac_cv_f77_compiler_gnu = yes; then - FPICFLAG=-fPIC - else - FPICFLAG=-PIC - fi - SH_LDFLAGS="-assert nodefinitions" - ;; - 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 - ## Template closures in archive libraries need a different mechanism. - if test "$GXX" != yes; then - TEMPLATE_AR="${CXX}" - TEMPLATE_ARFLAGS="-xar -o" - fi - ;; - esac - - 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 SH_LDFLAGS to be $SH_LDFLAGS]) - 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 NO_OCT_FILE_STRIP to be $NO_OCT_FILE_STRIP]) - AC_MSG_NOTICE([defining TEMPLATE_AR to be $TEMPLATE_AR]) - AC_MSG_NOTICE([defining TEMPLATE_ARFLAGS to be $TEMPLATE_ARFLAGS]) - AC_MSG_NOTICE([defining EXTERNAL_DLL_DEFS to be $EXTERNAL_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 OCTGUI_DLL_DEFS to be $OCTGUI_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(SH_LDFLAGS) - AC_SUBST(DL_LDFLAGS) - AC_SUBST(MKOCTFILE_DL_LDFLAGS) - AC_SUBST(NO_OCT_FILE_STRIP) - AC_SUBST(TEMPLATE_AR) - AC_SUBST(TEMPLATE_ARFLAGS) - AC_SUBST(EXTERNAL_DLL_DEFS) - AC_SUBST(OCTAVE_DLL_DEFS) - AC_SUBST(OCTINTERP_DLL_DEFS) - AC_SUBST(OCTGUI_DLL_DEFS) - AC_SUBST(OCTGRAPHICS_DLL_DEFS) - AC_SUBST(library_path_var) - AC_SUBST(ldpreloadsep) - AM_SUBST_NOTMAKE(ldpreloadsep) -]) -dnl dnl Check for ar. dnl AC_DEFUN([OCTAVE_PROG_AR], [