mirror of
https://github.com/djcb/mu.git
synced 2024-06-29 07:51:04 +02:00
autotools: remove
Since 2008, autotools has served us well - thank you! However, mu is now using meson build, and it's time to remove the autotools support -- one build system is enough.
This commit is contained in:
parent
f2ab2f5083
commit
e416a5215f
60
Makefile.am
60
Makefile.am
|
@ -1,60 +0,0 @@
|
||||||
## Copyright (C) 2008-2022 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
if BUILD_GUILE
|
|
||||||
guile=guile
|
|
||||||
else
|
|
||||||
guile=
|
|
||||||
endif
|
|
||||||
|
|
||||||
if BUILD_MU4E
|
|
||||||
mu4e=mu4e
|
|
||||||
else
|
|
||||||
mu4e=
|
|
||||||
endif
|
|
||||||
|
|
||||||
SUBDIRS=m4 man lib $(guile) mu $(mu4e) contrib
|
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS=-I m4
|
|
||||||
|
|
||||||
# so we can say 'make test'
|
|
||||||
check: test cleanupnote
|
|
||||||
|
|
||||||
cleanupnote:
|
|
||||||
@echo -e "\nNote: you can remove the mu-test-<uid> dir in your tempdir"
|
|
||||||
@echo "after 'make check' has finished."
|
|
||||||
|
|
||||||
tags:
|
|
||||||
gtags
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
TODO \
|
|
||||||
README.org \
|
|
||||||
gtest.mk \
|
|
||||||
NEWS \
|
|
||||||
NEWS.org \
|
|
||||||
autogen.sh
|
|
||||||
|
|
||||||
doc_DATA = \
|
|
||||||
NEWS.org
|
|
||||||
|
|
||||||
include $(top_srcdir)/aminclude_static.am
|
|
||||||
|
|
||||||
CODE_COVERAGE_IGNORE_PATTERN= \
|
|
||||||
'/usr/*' \
|
|
||||||
'*test-*'
|
|
159
TODO
159
TODO
|
@ -1,159 +0,0 @@
|
||||||
#+STARTUP: showall
|
|
||||||
|
|
||||||
* TODO (fixes, ideas, etc.)
|
|
||||||
|
|
||||||
** Future stuff
|
|
||||||
|
|
||||||
*** mu
|
|
||||||
|
|
||||||
- put threading information in the database, and enable getting the complete
|
|
||||||
threads when searching
|
|
||||||
- refactor fill_database function in test cases
|
|
||||||
- don't show duplicate e-mails (i.e.. for Gmail); check the message-id
|
|
||||||
|
|
||||||
*** mu-guile
|
|
||||||
|
|
||||||
- move contact export to separate scm
|
|
||||||
- fix logging
|
|
||||||
|
|
||||||
*** mu4e
|
|
||||||
|
|
||||||
- special-case replying to messages sent by self
|
|
||||||
- identities (see Jacek's 'mu4e: From field in replies' mail)
|
|
||||||
==> [ workaround available, using mu4e-pre-compose-hook, dynamic folders ]
|
|
||||||
- new-mail warning
|
|
||||||
==> [ workaround available, using mu4e-index-updated-hook ]
|
|
||||||
- custom header fields in headers-view, message-view
|
|
||||||
- show maildirs as a tree, not a list in speed bar
|
|
||||||
- review emacs menus
|
|
||||||
- re-factor / separate window/buffer management
|
|
||||||
- enable keeping message view buffers around
|
|
||||||
- better naming for draft/view buffers
|
|
||||||
- header updating interferes with marks (when updating for 'mark as read',
|
|
||||||
when reading a marked message)
|
|
||||||
- set/unset flag editing command
|
|
||||||
- handling of database upgrades
|
|
||||||
- restore point after rerunning a search
|
|
||||||
- make the mu4e-bookmarks format similar to the other ones
|
|
||||||
- refresh current query after update?
|
|
||||||
- fix mu4e-mark-set to work from the view buffer as well
|
|
||||||
- open links to mails through headers-mode somehow (i.e..,
|
|
||||||
mu4e-view-message-with-msgid)
|
|
||||||
- improve mouse interaction (i.e., cursor vs point)
|
|
||||||
- show counts of messages in searches (in main view)
|
|
||||||
- show flush only if there's something to flush (and # of flushables)
|
|
||||||
- fix unsafe temp-file handling
|
|
||||||
- make copy paste name/address in mu4e-view possible
|
|
||||||
|
|
||||||
|
|
||||||
* Done (0.9.9.x)
|
|
||||||
|
|
||||||
- mu4e: scroll down –> go to next message
|
|
||||||
- mu: add contact: as a shortcut for matching from/to/cc/bcc:
|
|
||||||
- guile integration
|
|
||||||
- statistics
|
|
||||||
- 'human' dates in the headers view
|
|
||||||
- :tags in headers, message view
|
|
||||||
|
|
||||||
* Done
|
|
||||||
:PROPERTIES:
|
|
||||||
:VISIBILITY: folded
|
|
||||||
:END:
|
|
||||||
|
|
||||||
|
|
||||||
** Done (0.9.9)
|
|
||||||
|
|
||||||
- make contacts in the view clickable (toggle long/short display, compose message)
|
|
||||||
- opening urls is too eager (now use M-RET for opening url at point, not just
|
|
||||||
RET, which conflicted with using RET for scrolling)
|
|
||||||
- document quoting of queries
|
|
||||||
- use mu-error
|
|
||||||
- tooltips in header labels
|
|
||||||
- tooltip for flags field
|
|
||||||
- remove --summary option (for mu find, mu view); use --summary-len instead
|
|
||||||
- add sort buttons to header labels (and do the sorting)
|
|
||||||
- cleanup mu-cmd-find
|
|
||||||
- implement --after for mu find, to only show message files changed after a
|
|
||||||
certain time (mtime)
|
|
||||||
- add mu:timestamp for guile (referring to the message file's mtime)
|
|
||||||
- guile automated tests
|
|
||||||
- add 'mu verify'
|
|
||||||
- automated tests
|
|
||||||
- handle verbose/quiet/normal output 'mu verify'
|
|
||||||
- check gmime 2.4 does not break
|
|
||||||
- hook up mu4e with 'mu verify'
|
|
||||||
- add 'help' command
|
|
||||||
- refactor mu-msg-part
|
|
||||||
- move widgets/ into toys/mug2, remove toys/mug/, rename toys/mug2 -> toys/mug
|
|
||||||
- add guile mu:count
|
|
||||||
- don't show GPG/PKCS7 sigs as attachments
|
|
||||||
- fix address completion (quote names)
|
|
||||||
- add support for X-Keywords (in addition to X-Label)
|
|
||||||
- guile: add stats test cases
|
|
||||||
- fixed iso-2022-jp (japanese) decoding
|
|
||||||
- make address completion case-insensitive
|
|
||||||
- recognize '*' in urls
|
|
||||||
- handle exception 'The revision being read has been discarded - you should
|
|
||||||
call Xapian::Database::reopen() and retry the operation'
|
|
||||||
- handle passwords from get-mail shell command
|
|
||||||
- support fancy (non-ascii) chars for header flags, thread prefix strings
|
|
||||||
- improve performance of getting the list of maildirs
|
|
||||||
- fix setting wrapped/hide state in viewer
|
|
||||||
- fix ' realpath() failed for...' stuff
|
|
||||||
- allow for fancy chars (> ascii), make it configurable (mu4e-use-fancy-chars)
|
|
||||||
- don't user `error' for user-errors
|
|
||||||
- better echo-area reporting
|
|
||||||
- improve help feedback for user (command line)
|
|
||||||
- handling of encrypted messages
|
|
||||||
- improved checked for gmime-2.6 crypto funcs
|
|
||||||
- handling of command line options / help
|
|
||||||
- fix / add support for :size
|
|
||||||
- mu4e~view-wrap-lines (use visual-line-mode? see Jacek's mu4e~view-wrap-lines
|
|
||||||
mail)
|
|
||||||
- better help
|
|
||||||
- threading optimizations
|
|
||||||
- actions for /all/ headers, actions for /all/ attachment
|
|
||||||
- handle attached messages with attachments
|
|
||||||
|
|
||||||
** Done (0.8.9.5)
|
|
||||||
|
|
||||||
- make next/prev header respect prefix argument (Jacek's patch)
|
|
||||||
- make search results a stack (well, multiple stacks)
|
|
||||||
- optionally keep cc with user's email
|
|
||||||
- enable setting/unsetting 'Flagged' on messages
|
|
||||||
- allow narrowing of search results
|
|
||||||
- interactive split-view control (Jacek)
|
|
||||||
- view images inline
|
|
||||||
- *FIX* slow maildirs when there are many
|
|
||||||
- *FIX* ignore unrecognized maildir flag letters
|
|
||||||
- *FIX*: reply-to does not make it to the frontend
|
|
||||||
- *FIX* wrong buffer deleted after sending (see '(non mu) buffer is killed')
|
|
||||||
- rich text composing (with org-mode)
|
|
||||||
- let message-mode deal with burying/killing compose buffers
|
|
||||||
- *FIX* add runtime check for imagemagick
|
|
||||||
- *FIX* no error note if target message already exists (when moving)
|
|
||||||
- sorting + show / hide threads
|
|
||||||
- *FIX* having multiple header views visible
|
|
||||||
- *FIX* fix for strings where len (g_utf8_strdown (str)) > len (str)
|
|
||||||
- make sure marks correspond to the *current* message in message view (see
|
|
||||||
https://github.com/djcb/mu/issues/26)
|
|
||||||
- *FIX* don't remove unknown message flags when moving
|
|
||||||
- make guile/gtk/webkit dependency optional
|
|
||||||
- improve fringe marks (see https://github.com/djcb/mu/issues/21)
|
|
||||||
- mark message, decide what to do with them later (i.e.. 'deferred marking')
|
|
||||||
- custom predicate functions for marking
|
|
||||||
- make mu4e buffer killing less aggressive (i.e.., DWIM)
|
|
||||||
- about mu4e
|
|
||||||
- hide some headers when composing
|
|
||||||
- fix sorting subjects with ':' (but not 'Re:' or 'Fwd:')
|
|
||||||
- strip signature from original when replying
|
|
||||||
- make refresh after changing sort, threads the default
|
|
||||||
- contact completion (see Jacek's 'mu4e: using' mail)
|
|
||||||
- *FIX* emacs23 mailto: handling
|
|
||||||
- *FIX* message interference
|
|
||||||
- *FIX* emacs23.2+ auto-completion
|
|
||||||
|
|
||||||
|
|
||||||
# Local Variables:
|
|
||||||
# mode: org
|
|
||||||
# End:
|
|
|
@ -7,7 +7,6 @@ test -f mu/mu.cc || {
|
||||||
echo "*** Run this script from the top-level mu source directory"
|
echo "*** Run this script from the top-level mu source directory"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
BUILDDIR=build
|
BUILDDIR=build
|
||||||
|
|
||||||
command -v meson 2> /dev/null
|
command -v meson 2> /dev/null
|
||||||
|
@ -23,8 +22,5 @@ else
|
||||||
meson ${BUILDDIR} $@
|
meson ${BUILDDIR} $@
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add a Makefile with some useful target
|
|
||||||
cp Makefile.meson Makefile
|
|
||||||
|
|
||||||
echo "*** Now run 'ninja -C ${BUILDDIR}' to build mu"
|
echo "*** Now run 'ninja -C ${BUILDDIR}' to build mu"
|
||||||
echo "*** Or check the Makefile for some useful targets"
|
echo "*** Or check the Makefile for some useful targets"
|
||||||
|
|
320
configure.ac
320
configure.ac
|
@ -1,320 +0,0 @@
|
||||||
## Copyright (C) 2008-2022 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
AC_PREREQ([2.68])
|
|
||||||
AC_INIT([mu],[1.8.9],[https://github.com/djcb/mu/issues],[mu])
|
|
||||||
AC_COPYRIGHT([Copyright (C) 2008-2022 Dirk-Jan C. Binnema])
|
|
||||||
AC_CONFIG_HEADERS([config.h])
|
|
||||||
AC_CONFIG_SRCDIR([mu/mu.cc])
|
|
||||||
# libtoolize wants to put some stuff in here; if you have an old
|
|
||||||
# autotools/libtool setup. you can try to comment this out
|
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE([1.14 foreign no-dist-gzip tar-ustar dist-xz])
|
|
||||||
|
|
||||||
# silent build if we have a new enough automake
|
|
||||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
|
||||||
|
|
||||||
AS_IF([test x$prefix = xNONE],[prefix=/usr/local])
|
|
||||||
AC_SUBST(prefix)
|
|
||||||
|
|
||||||
# AC_PROG_CXX *before* AC_PROG_CC, otherwise configure won't error out
|
|
||||||
# when a c++ compiler is not found. Weird, huh?
|
|
||||||
AC_PROG_CXX
|
|
||||||
AC_PROG_CC
|
|
||||||
AC_PROG_CPP
|
|
||||||
AC_PROG_INSTALL
|
|
||||||
AC_CHECK_INCLUDES_DEFAULT
|
|
||||||
AC_PROG_EGREP
|
|
||||||
|
|
||||||
|
|
||||||
extra_flags="-Wformat-security \
|
|
||||||
-Wstack-protector \
|
|
||||||
-Wstack-protector-all \
|
|
||||||
-Wno-cast-function-type \
|
|
||||||
-Wno-bad-function-cast \
|
|
||||||
-Wno-switch-enum"
|
|
||||||
|
|
||||||
AX_CXX_COMPILE_STDCXX_17
|
|
||||||
AX_COMPILER_FLAGS_CXXFLAGS([],[],[${extra_cflags}])
|
|
||||||
AX_APPEND_COMPILE_FLAGS([-Wno-inline],[CXXFLAGS])
|
|
||||||
AX_VALGRIND_CHECK
|
|
||||||
|
|
||||||
LT_INIT
|
|
||||||
|
|
||||||
AX_CODE_COVERAGE
|
|
||||||
|
|
||||||
AC_PROG_AWK
|
|
||||||
AC_CHECK_PROG(SORT,sort,sort)
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS([wordexp.h])
|
|
||||||
|
|
||||||
# use the 64-bit versions
|
|
||||||
AC_SYS_LARGEFILE
|
|
||||||
|
|
||||||
# asan is somewhat similar to valgrind, but has low enough overhead so it
|
|
||||||
# can be used during normal operation.
|
|
||||||
AC_ARG_ENABLE([asan],[AS_HELP_STRING([--enable-asan],
|
|
||||||
[Enable Address Sanitizer])], [use_asan=$enableval], [use_asan=no])
|
|
||||||
AS_IF([test "x$use_asan" = "xyes"],[
|
|
||||||
AC_SUBST(ASAN_CFLAGS, "-fsanitize=address -static-libasan -fno-omit-frame-pointer")
|
|
||||||
AC_SUBST(ASAN_CXXFLAGS,"-fsanitize=address -static-libasan -fno-omit-frame-pointer")
|
|
||||||
AC_SUBST(ASAN_LDFLAGS, "-fsanitize=address -static-libasan -fno-omit-frame-pointer")
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
# check for makeinfo
|
|
||||||
AC_CHECK_PROG(have_makeinfo,makeinfo,yes,no)
|
|
||||||
AM_CONDITIONAL(HAVE_MAKEINFO,test "x$have_makeinfo" = "xyes")
|
|
||||||
AM_COND_IF(HAVE_MAKEINFO,[],[
|
|
||||||
# seems build *insists* on trying to makeinfo, erroring out
|
|
||||||
# if it does not exist. Let's work around that.
|
|
||||||
AC_SUBST(MAKEINFO,[true])
|
|
||||||
])
|
|
||||||
|
|
||||||
# we need emacs for byte-compiling mu4e
|
|
||||||
build_mu4e=no
|
|
||||||
AC_ARG_ENABLE([mu4e],
|
|
||||||
AS_HELP_STRING([--disable-mu4e],[Disable building mu4e]))
|
|
||||||
AS_IF([test "x$enable_mu4e" != "xno"], [
|
|
||||||
AM_PATH_LISPDIR
|
|
||||||
AS_IF([test "x$lispdir" != "xno"], [
|
|
||||||
emacs_version="$($EMACS --version | head -1)"
|
|
||||||
lispdir="${lispdir}/mu4e/"
|
|
||||||
])
|
|
||||||
AS_CASE([$emacs_version],
|
|
||||||
[*25.3*],[build_mu4e=yes],
|
|
||||||
[*26*|*27*|*28*|*29*],[build_mu4e=yes],
|
|
||||||
[AC_MSG_WARN(emacs is too old to build mu4e (need emacs >= 25.3))])
|
|
||||||
])
|
|
||||||
AM_CONDITIONAL(BUILD_MU4E, test "x$build_mu4e" = "xyes")
|
|
||||||
|
|
||||||
# we need some special tricks for filesystems that don't have d_type;
|
|
||||||
# e.g. Solaris. See mu-maildir.c. Explicitly disabling it is for
|
|
||||||
# testing purposes only
|
|
||||||
AC_ARG_ENABLE([dirent-d-type],
|
|
||||||
AS_HELP_STRING([--disable-dirent-d-type],[Don't use dirent->d_type, even if you have it]),
|
|
||||||
[], [AC_STRUCT_DIRENT_D_TYPE]
|
|
||||||
)
|
|
||||||
AS_IF([test "x$ac_cv_member_struct_dirent_d_type" != "xyes"],
|
|
||||||
[use_dirent_d_type="no"], [use_dirent_d_type="yes"])
|
|
||||||
|
|
||||||
# support for d_ino (inode) in struct dirent is optional; if it's
|
|
||||||
# available we can sort direntries by inode and access them in that
|
|
||||||
# order; this is much faster on some file systems (such as extfs3).
|
|
||||||
# Explicitly disabling it is for testing purposes only.
|
|
||||||
AC_ARG_ENABLE([dirent-d-ino],
|
|
||||||
AS_HELP_STRING([--disable-dirent-d-ino],[Don't use dirent->d_ino, even if you have it]),
|
|
||||||
[], [AC_STRUCT_DIRENT_D_INO]
|
|
||||||
)
|
|
||||||
AS_IF([test "x$ac_cv_member_struct_dirent_d_ino" != "xyes"],
|
|
||||||
[use_dirent_d_ino="no"], [use_dirent_d_ino="yes"])
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS([memset memcpy realpath setlocale strerror getpass setsid])
|
|
||||||
AC_CHECK_FUNCS([vasprintf strptime])
|
|
||||||
# timegm is no longer used in the source
|
|
||||||
# AC_CHECK_FUNC(timegm,[],AC_MSG_ERROR([missing required function timegm]))
|
|
||||||
|
|
||||||
# require pkg-config >= 0.28 (release in 2013; should be old enough...)
|
|
||||||
# with that version, we don't need the AC_SUBST stuff after PKG_CHECK.
|
|
||||||
m4_ifndef([PKG_PROG_PKG_CONFIG],
|
|
||||||
[m4_fatal([please install pkg-config >= 0.28 before running autoconf/autogen])])
|
|
||||||
PKG_PROG_PKG_CONFIG(0.28) # latest version in buildroot
|
|
||||||
AS_IF([test -z "$PKG_CONFIG"],
|
|
||||||
AC_MSG_ERROR([
|
|
||||||
*** pkg-config with version >= 0.28 could not be found.
|
|
||||||
***
|
|
||||||
*** Make sure it is in your path, or set the PKG_CONFIG environment variable
|
|
||||||
*** to the full path to pkg-config.])
|
|
||||||
)
|
|
||||||
|
|
||||||
# glib2?
|
|
||||||
PKG_CHECK_MODULES(GLIB,glib-2.0 >= 2.58 gobject-2.0 gio-2.0)
|
|
||||||
glib_version="$($PKG_CONFIG --modversion glib-2.0)"
|
|
||||||
|
|
||||||
# gmime, version 3.0 or higher
|
|
||||||
PKG_CHECK_MODULES(GMIME,gmime-3.0)
|
|
||||||
gmime_version="$($PKG_CONFIG --modversion gmime-3.0)"
|
|
||||||
|
|
||||||
# xapian checking - we need 1.4 at least
|
|
||||||
PKG_CHECK_MODULES(XAPIAN,xapian-core >= 1.4,[
|
|
||||||
have_xapian=yes
|
|
||||||
xapian_version=$($PKG_CONFIG xapian-core --modversion)
|
|
||||||
AC_SUBST(XAPIAN_CXXFLAGS,${XAPIAN_CFLAGS})
|
|
||||||
],[
|
|
||||||
# fall back to the xapian-config script. Not sure if there are cases where the
|
|
||||||
# pkgconfig does not work, but xapian-config does, so keep this for now.
|
|
||||||
AC_MSG_NOTICE([falling back to xapian-config])
|
|
||||||
AC_CHECK_PROG(XAPIAN_CONFIG,xapian-config,xapian-config,no)
|
|
||||||
AS_IF([test "x$XAPIAN_CONFIG" = "xno"],[
|
|
||||||
AC_MSG_ERROR([
|
|
||||||
*** xapian could not be found; please install it
|
|
||||||
*** e.g., in debian/ubuntu the package would be 'libxapian-dev'
|
|
||||||
*** If you compiled it yourself, you should ensure that xapian-config
|
|
||||||
*** is in your PATH.])],
|
|
||||||
[xapian_version=$($XAPIAN_CONFIG --version | sed -e 's/.* //')])
|
|
||||||
|
|
||||||
AS_CASE([$xapian_version],
|
|
||||||
[1.[[4-9]].[[0-9]]*],
|
|
||||||
[AC_MSG_NOTICE([xapian $xapian_version found.])],
|
|
||||||
[AC_MSG_ERROR([*** xapian version >= 1.4 needed, but version $xapian_version found.])])
|
|
||||||
|
|
||||||
XAPIAN_CXXFLAGS="$($XAPIAN_CONFIG --cxxflags)"
|
|
||||||
XAPIAN_LIBS="$($XAPIAN_CONFIG --libs)"
|
|
||||||
have_xapian="yes"
|
|
||||||
|
|
||||||
AC_SUBST(XAPIAN_CXXFLAGS)
|
|
||||||
AC_SUBST(XAPIAN_LIBS)
|
|
||||||
])
|
|
||||||
###############################################################################
|
|
||||||
# we set the set the version of the MuStore (Xapian database) layout
|
|
||||||
# here; it will become part of the db name, so we can automatically
|
|
||||||
# recreate the database when we have incompatible changes.
|
|
||||||
#
|
|
||||||
# note that MU_STORE_SCHEMA_VERSION does not follow mu versioning, as we
|
|
||||||
# hopefully don't have updates for each version; also, this has nothing to do
|
|
||||||
# with Xapian's software versionx
|
|
||||||
AC_DEFINE(MU_STORE_SCHEMA_VERSION,["465"],['Schema' version of the database])
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# should we try to build an emacs dynamic module?
|
|
||||||
#AC_CHECK_HEADER([emacs-module.h],[
|
|
||||||
# AC_DEFINE([HAVE_EMACS_MODULE_H],[1], [Whether we have the emacs-module header])],
|
|
||||||
# AC_MSG_NOTICE([emacs-module.h not found; not building module])
|
|
||||||
#)
|
|
||||||
#AM_CONDITIONAL([BUILD_EMACS_MODULE],[test "x$ac_cv_header_emacs_module_h" != "x"])
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# build with guile 3.0/2.2 when available and not disabled.
|
|
||||||
AC_ARG_ENABLE([guile], AS_HELP_STRING([--disable-guile],[Disable guile]))
|
|
||||||
AS_IF([test "x$enable_guile" != "xno"],[
|
|
||||||
|
|
||||||
PKG_CHECK_MODULES(GUILE, [guile-3.0], [have_guile=yes],[
|
|
||||||
PKG_CHECK_MODULES(GUILE, [guile-2.2], [have_guile=yes], [have_guile=no])])
|
|
||||||
AS_IF([test "x$have_guile" = "xyes"],[
|
|
||||||
GUILE_PKG([3.0 2.2])
|
|
||||||
GUILE_PROGS
|
|
||||||
GUILE_FLAGS
|
|
||||||
AC_DEFINE_UNQUOTED([GUILE_BINARY],"$GUILE",[guile binary])
|
|
||||||
vsnarf=guile-snarf${GUILE_EFFECTIVE_VERSION}
|
|
||||||
AC_CHECK_PROGS(GUILE_SNARF,[${vsnarf} guile-snarf], [no])
|
|
||||||
guile_version=$($PKG_CONFIG guile-$GUILE_EFFECTIVE_VERSION --modversion)
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
AM_CONDITIONAL(BUILD_GUILE,[test "x$have_guile" = "xyes" -a \
|
|
||||||
"x$ac_cv_prog_GUILE_SNARF" != "xno"])
|
|
||||||
AM_COND_IF([BUILD_GUILE],[AC_DEFINE(BUILD_GUILE,[1], [Do we support Guile?])])
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# optional readline
|
|
||||||
AC_ARG_ENABLE([readline], AS_HELP_STRING([--disable-readline],[Disable readline]))
|
|
||||||
AS_IF([test "x$enable_readline" != "xno"], [
|
|
||||||
saved_libs=$LIBS
|
|
||||||
AX_LIB_READLINE
|
|
||||||
AC_SUBST(READLINE_LIBS,${LIBS})
|
|
||||||
LIBS=$saved_libs
|
|
||||||
])
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# check for makeinfo
|
|
||||||
AC_CHECK_PROG(have_makeinfo,makeinfo,yes,no)
|
|
||||||
AM_CONDITIONAL(HAVE_MAKEINFO, [test "x$have_makeinfo" = "xyes"])
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
###############################################################################
|
|
||||||
# docdir, so we can use it in mu4e-meta.el.in
|
|
||||||
AC_SUBST(MU_DOC_DIR, "${prefix}/share/doc/mu")
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
|
||||||
Makefile
|
|
||||||
mu/Makefile
|
|
||||||
lib/Makefile
|
|
||||||
lib/doxyfile
|
|
||||||
lib/thirdparty/Makefile
|
|
||||||
lib/utils/Makefile
|
|
||||||
lib/message/Makefile
|
|
||||||
lib/index/Makefile
|
|
||||||
mu4e/Makefile
|
|
||||||
mu4e/mu4e-config.el
|
|
||||||
guile/Makefile
|
|
||||||
guile/mu/Makefile
|
|
||||||
guile/examples/Makefile
|
|
||||||
guile/scripts/Makefile
|
|
||||||
man/Makefile
|
|
||||||
m4/Makefile
|
|
||||||
contrib/Makefile
|
|
||||||
])
|
|
||||||
AC_CONFIG_FILES([mu/mu-memcheck], [chmod +x mu/mu-memcheck])
|
|
||||||
|
|
||||||
AC_OUTPUT
|
|
||||||
|
|
||||||
dnl toys/msg2pdf/Makefile
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "mu configuration is complete."
|
|
||||||
echo "------------------------------------------------"
|
|
||||||
|
|
||||||
echo "mu version : $VERSION"
|
|
||||||
echo
|
|
||||||
echo "Xapian version : $xapian_version"
|
|
||||||
echo "GLib version : $glib_version"
|
|
||||||
echo "GMime version : $gmime_version"
|
|
||||||
|
|
||||||
AM_COND_IF([BUILD_GUILE],[
|
|
||||||
echo "Guile version : $guile_version"
|
|
||||||
])
|
|
||||||
echo
|
|
||||||
echo "Have direntry->d_ino : $use_dirent_d_ino"
|
|
||||||
echo "Have direntry->d_type : $use_dirent_d_type"
|
|
||||||
echo "------------------------------------------------"
|
|
||||||
echo
|
|
||||||
|
|
||||||
#
|
|
||||||
# Warnings / notes
|
|
||||||
#
|
|
||||||
|
|
||||||
# makeinfo
|
|
||||||
if test "x$have_makeinfo" != "xyes"; then
|
|
||||||
echo "* You do not seem to have the makeinfo program; if you are building from git"
|
|
||||||
echo " you need that to create documentation for guile and emacs. It is in the"
|
|
||||||
echo " texinfo package in debian/ubuntu/fedora/... "
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
|
|
||||||
# wordexp
|
|
||||||
AS_IF([test "x$ac_cv_header_wordexp_h" != "xyes"],[
|
|
||||||
echo "* Your system does not seem to have the 'wordexp' function."
|
|
||||||
echo " This means that you cannot use shell-like expansion in options and "
|
|
||||||
echo " some other places. So, for example, instead of"
|
|
||||||
echo " --maildir=~/Maildir"
|
|
||||||
echo " you should use the complete path, something like:"
|
|
||||||
echo " --maildir=/home/user/Maildir"
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
echo "NOTE: autotools support has been deprecated and will be removed"
|
|
||||||
echo " after the next stable release. use the meson build instead"
|
|
||||||
|
|
||||||
echo
|
|
||||||
echo "Now, type 'make' (or 'gmake') to build mu"
|
|
||||||
echo
|
|
|
@ -1,26 +0,0 @@
|
||||||
## Copyright (C) 2008-2013 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
AM_CPPFLAGS=$(GMIME_CFLAGS) $(GLIB_CFLAGS) -I${prefix}/include
|
|
||||||
AM_CFLAGS=-Wall -Wextra -Wno-unused-parameter -Wdeclaration-after-statement -pedantic
|
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
mu-completion.zsh \
|
|
||||||
mu-sexp-convert \
|
|
||||||
mu.spec
|
|
34
gtest.mk
34
gtest.mk
|
@ -1,34 +0,0 @@
|
||||||
## Copyright (C) 2011 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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, or (at your option) any
|
|
||||||
## later version.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
TEST_PROGS=
|
|
||||||
|
|
||||||
|
|
||||||
# NOTE: we set the locale/tz to some well-know values, so the tests
|
|
||||||
# (at least when running under 'make check') run in a predictable
|
|
||||||
# environment. There are specific tests different timezone, though.
|
|
||||||
#
|
|
||||||
test: all $(TEST_PROGS)
|
|
||||||
@export LC_ALL="en_US.utf8"
|
|
||||||
@export TZ="Europe/Helsinki"
|
|
||||||
@test -z "$(TEST_PROGS)" || gtester --verbose $(TEST_PROGS) || exit $$?; \
|
|
||||||
test -z "$(SUBDIRS)" || \
|
|
||||||
for subdir in $(SUBDIRS); do \
|
|
||||||
test "$$subdir" = "." || \
|
|
||||||
(cd ./$$subdir && $(MAKE) $(AM_MAKEFLAGS) $@ ) || exit $$? ; \
|
|
||||||
done
|
|
||||||
|
|
||||||
.PHONY: test gprof
|
|
|
@ -1,97 +0,0 @@
|
||||||
## Copyright (C) 2011-2013 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
# note, we need top_builddir for snarfing with 'make distcheck' (ie.,
|
|
||||||
# with separate builddir)
|
|
||||||
SUBDIRS= . mu scripts examples
|
|
||||||
|
|
||||||
AM_CPPFLAGS= \
|
|
||||||
-I. -I${top_builddir} -I${top_srcdir}/lib \
|
|
||||||
${GUILE_CFLAGS} \
|
|
||||||
${GLIB_CFLAGS}
|
|
||||||
|
|
||||||
# don't use -Werror, as it might break on other compilers
|
|
||||||
# use -Wno-unused-parameters, because some callbacks may not
|
|
||||||
# really need all the params they get
|
|
||||||
AM_CFLAGS= \
|
|
||||||
$(ASAN_CFLAGS) \
|
|
||||||
${WARN_CFLAGS} \
|
|
||||||
-Wno-suggest-attribute=noreturn \
|
|
||||||
-Wno-missing-prototypes \
|
|
||||||
-Wno-missing-declarations
|
|
||||||
|
|
||||||
AM_CXXFLAGS= \
|
|
||||||
$(ASAN_CXXFLAGS) \
|
|
||||||
${WARN_CXXFLAGS} \
|
|
||||||
-Wno-redundant-decls \
|
|
||||||
-Wno-missing-declarations \
|
|
||||||
-Wno-suggest-attribute=noreturn
|
|
||||||
|
|
||||||
lib_LTLIBRARIES= \
|
|
||||||
libguile-mu.la
|
|
||||||
|
|
||||||
libguile_mu_la_SOURCES= \
|
|
||||||
mu-guile.cc \
|
|
||||||
mu-guile.hh \
|
|
||||||
mu-guile-message.cc \
|
|
||||||
mu-guile-message.hh
|
|
||||||
|
|
||||||
libguile_mu_la_CFLAGS=$(AM_CFLAGS)
|
|
||||||
libguile_mu_la_CXXFLAGS=$(AM_CXXFLAGS)
|
|
||||||
|
|
||||||
libguile_mu_la_LIBADD= \
|
|
||||||
${top_builddir}/lib/libmu.la \
|
|
||||||
${top_builddir}/lib/utils/libmu-utils.la \
|
|
||||||
$(READLINE_LIBS) \
|
|
||||||
${GUILE_LIBS}
|
|
||||||
|
|
||||||
libguile_mu_la_LDFLAGS= \
|
|
||||||
$(ASAN_LDFLAGS) \
|
|
||||||
-shared \
|
|
||||||
-export-dynamic
|
|
||||||
|
|
||||||
XFILES= \
|
|
||||||
mu-guile.x \
|
|
||||||
mu-guile-message.x
|
|
||||||
|
|
||||||
info_TEXINFOS= \
|
|
||||||
mu-guile.texi
|
|
||||||
mu_guile_TEXINFOS= \
|
|
||||||
fdl.texi
|
|
||||||
|
|
||||||
# we include pre-snarfed files now; see meson.build for explanation
|
|
||||||
#
|
|
||||||
# BUILT_SOURCES=$(XFILES)
|
|
||||||
# export CPP
|
|
||||||
# snarfcxxopts= $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
|
||||||
# SUFFIXES = .x .doc
|
|
||||||
# .cc.x:
|
|
||||||
# $(AM_V_GEN) $(GUILE_SNARF) -o $@ $< $(snarfcxxopts)
|
|
||||||
#SNARF_DATA=$(XFILES)
|
|
||||||
|
|
||||||
# FIXME: GUILE_SITEDIR would be better, but that
|
|
||||||
# breaks 'make distcheck'
|
|
||||||
scmdir=${prefix}/share/guile/site/${GUILE_EFFECTIVE_VERSION}
|
|
||||||
scm_DATA=mu.scm
|
|
||||||
|
|
||||||
EXTRA_DIST=$(scm_DATA) $(XFILES)
|
|
||||||
|
|
||||||
## Add -MG to make the .x magic work with auto-dep code.
|
|
||||||
MKDEP = $(CC) -M -MG $(snarfcppopts)
|
|
||||||
|
|
||||||
#CLEANFILES=$(XFILES)
|
|
|
@ -1,23 +0,0 @@
|
||||||
## Copyright (C) 2012-2013 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
msg-graphs \
|
|
||||||
contacts-export \
|
|
||||||
org2mu4e \
|
|
||||||
mu-biff
|
|
|
@ -1,26 +0,0 @@
|
||||||
## Copyright (C) 2008-2020 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
scmdir=${prefix}/share/guile/site/${GUILE_EFFECTIVE_VERSION}/mu/
|
|
||||||
|
|
||||||
scm_DATA= \
|
|
||||||
stats.scm \
|
|
||||||
plot.scm \
|
|
||||||
script.scm
|
|
||||||
|
|
||||||
EXTRA_DIST=$(scm_DATA)
|
|
|
@ -1,29 +0,0 @@
|
||||||
## Copyright (C) 2012-2013 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
msgs-count.scm \
|
|
||||||
msgs-per-year.scm \
|
|
||||||
msgs-per-hour.scm \
|
|
||||||
msgs-per-month.scm \
|
|
||||||
msgs-per-day.scm \
|
|
||||||
msgs-per-year-month.scm \
|
|
||||||
find-dups.scm
|
|
||||||
|
|
||||||
muguiledistscriptdir = $(pkgdatadir)/scripts/
|
|
||||||
muguiledistscript_SCRIPTS = $(EXTRA_DIST)
|
|
119
lib/Makefile.am
119
lib/Makefile.am
|
@ -1,119 +0,0 @@
|
||||||
## Copyright (C) 2010-2021 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
# enforce compiling guile (optionally) first,then this dir first
|
|
||||||
# before descending into tests/
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
SUBDIRS= thirdparty utils message index
|
|
||||||
|
|
||||||
TESTDEFS= \
|
|
||||||
-DMU_TESTMAILDIR=\"${abs_srcdir}/testdir\" \
|
|
||||||
-DMU_TESTMAILDIR2=\"${abs_srcdir}/testdir2\" \
|
|
||||||
-DMU_TESTMAILDIR4=\"${abs_srcdir}/testdir4\" \
|
|
||||||
-DABS_CURDIR=\"${abs_builddir}\" \
|
|
||||||
-DABS_SRCDIR=\"${abs_srcdir}\"
|
|
||||||
|
|
||||||
|
|
||||||
AM_CFLAGS= \
|
|
||||||
$(WARN_CFLAGS) \
|
|
||||||
$(GMIME_CFLAGS) \
|
|
||||||
$(XAPIAN_CFLAGS) \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(GUILE_CFLAGS) \
|
|
||||||
$(ASAN_CFLAGS) \
|
|
||||||
$(CODE_COVERAGE_CFLAGS) \
|
|
||||||
$(TESTDEFS) \
|
|
||||||
-Wno-format-nonliteral \
|
|
||||||
-Wno-switch-enum \
|
|
||||||
-Wno-deprecated-declarations \
|
|
||||||
-Wno-inline
|
|
||||||
|
|
||||||
AM_CXXFLAGS= \
|
|
||||||
$(GMIME_CFLAGS) \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(GUILE_CFLAGS) \
|
|
||||||
$(WARN_CXXFLAGS) \
|
|
||||||
$(XAPIAN_CXXFLAGS) \
|
|
||||||
$(ASAN_CXXFLAGS) \
|
|
||||||
$(CODE_COVERAGE_CFLAGS) \
|
|
||||||
$(TESTDEFS)
|
|
||||||
|
|
||||||
AM_CPPFLAGS= \
|
|
||||||
$(CODE_COVERAGE_CPPFLAGS)
|
|
||||||
|
|
||||||
noinst_LTLIBRARIES= \
|
|
||||||
libmu.la
|
|
||||||
|
|
||||||
libmu_la_SOURCES= \
|
|
||||||
mu-bookmarks.cc \
|
|
||||||
mu-bookmarks.hh \
|
|
||||||
mu-contacts-cache.cc \
|
|
||||||
mu-contacts-cache.hh \
|
|
||||||
mu-parser.cc \
|
|
||||||
mu-parser.hh \
|
|
||||||
mu-query.cc \
|
|
||||||
mu-query.hh \
|
|
||||||
mu-query-results.hh \
|
|
||||||
mu-query-match-deciders.cc \
|
|
||||||
mu-query-match-deciders.hh \
|
|
||||||
mu-query-threads.cc \
|
|
||||||
mu-query-threads.hh \
|
|
||||||
mu-runtime.cc \
|
|
||||||
mu-runtime.hh \
|
|
||||||
mu-script.cc \
|
|
||||||
mu-script.hh \
|
|
||||||
mu-server.cc \
|
|
||||||
mu-server.hh \
|
|
||||||
mu-store.cc \
|
|
||||||
mu-store.hh \
|
|
||||||
mu-tokenizer.cc \
|
|
||||||
mu-tokenizer.hh \
|
|
||||||
mu-tree.hh \
|
|
||||||
mu-xapian.cc \
|
|
||||||
mu-xapian.hh \
|
|
||||||
mu-maildir.cc \
|
|
||||||
mu-maildir.hh
|
|
||||||
|
|
||||||
libmu_la_LIBADD= \
|
|
||||||
$(XAPIAN_LIBS) \
|
|
||||||
$(GMIME_LIBS) \
|
|
||||||
$(GLIB_LIBS) \
|
|
||||||
$(GUILE_LIBS) \
|
|
||||||
${builddir}/message/libmu-message.la \
|
|
||||||
${builddir}/index/libmu-index.la \
|
|
||||||
$(CODE_COVERAGE_LIBS)
|
|
||||||
|
|
||||||
libmu_la_LDFLAGS= \
|
|
||||||
$(ASAN_LDFLAGS)
|
|
||||||
|
|
||||||
noinst_PROGRAMS= \
|
|
||||||
tokenize
|
|
||||||
|
|
||||||
tokenize_SOURCES= \
|
|
||||||
tokenize.cc
|
|
||||||
|
|
||||||
tokenize_LDADD= \
|
|
||||||
$(WARN_LDFLAGS) \
|
|
||||||
libmu.la \
|
|
||||||
utils/libmu-utils.la
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
doxyfile.in
|
|
||||||
|
|
||||||
CLEANFILES=*.log *.trs *core* *vgdump* *.gcda *.gcno
|
|
||||||
|
|
||||||
include $(top_srcdir)/aminclude_static.am
|
|
|
@ -1,46 +0,0 @@
|
||||||
## Copyright (C) 2020 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
AM_CPPFLAGS= \
|
|
||||||
$(CODE_COVERAGE_CPPFLAGS)
|
|
||||||
|
|
||||||
AM_CXXFLAGS= \
|
|
||||||
$(WARN_CXXFLAGS) \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(XAPIAN_CFLAGS) \
|
|
||||||
$(ASAN_CXXFLAGS) \
|
|
||||||
$(CODE_COVERAGE_CFLAGS) \
|
|
||||||
-I${top_srcdir}/lib
|
|
||||||
|
|
||||||
AM_LDFLAGS= \
|
|
||||||
$(ASAN_LDFLAGS)
|
|
||||||
|
|
||||||
noinst_LTLIBRARIES= \
|
|
||||||
libmu-index.la
|
|
||||||
|
|
||||||
libmu_index_la_SOURCES= \
|
|
||||||
mu-indexer.cc \
|
|
||||||
mu-indexer.hh \
|
|
||||||
mu-scanner.cc \
|
|
||||||
mu-scanner.hh
|
|
||||||
|
|
||||||
libmu_index_la_LIBADD= \
|
|
||||||
$(GLIB_LIBS) \
|
|
||||||
$(CODE_COVERAGE_LIBS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/aminclude_static.am
|
|
|
@ -1,51 +0,0 @@
|
||||||
## Copyright (C) 2022 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
AM_CXXFLAGS= \
|
|
||||||
$(WARN_CXXFLAGS) \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(GMIME_CFLAGS) \
|
|
||||||
$(XAPIAN_CFLAGS) \
|
|
||||||
-I${top_srcdir}/lib
|
|
||||||
|
|
||||||
noinst_LTLIBRARIES= \
|
|
||||||
libmu-message.la
|
|
||||||
|
|
||||||
libmu_message_la_SOURCES= \
|
|
||||||
mu-message.cc \
|
|
||||||
mu-message.hh \
|
|
||||||
mu-message-file.cc \
|
|
||||||
mu-message-file.hh \
|
|
||||||
mu-message-part.cc \
|
|
||||||
mu-message-part.hh \
|
|
||||||
mu-contact.hh \
|
|
||||||
mu-contact.cc \
|
|
||||||
mu-document.cc \
|
|
||||||
mu-document.hh \
|
|
||||||
mu-fields.hh \
|
|
||||||
mu-fields.cc \
|
|
||||||
mu-flags.hh \
|
|
||||||
mu-flags.cc \
|
|
||||||
mu-priority.hh \
|
|
||||||
mu-priority.cc \
|
|
||||||
mu-mime-object.cc \
|
|
||||||
mu-mime-object.hh
|
|
||||||
|
|
||||||
libmu_message_la_LIBADD= \
|
|
||||||
$(GLIB_LIBS) \
|
|
||||||
$(GMIME_LIBS) \
|
|
||||||
$(XAPIAN_LIBS)
|
|
22
lib/thirdparty/Makefile.am
vendored
22
lib/thirdparty/Makefile.am
vendored
|
@ -1,22 +0,0 @@
|
||||||
## Copyright (C) 2022 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
expected.hpp \
|
|
||||||
optional.hpp \
|
|
||||||
tabulate.hpp
|
|
|
@ -1,74 +0,0 @@
|
||||||
## Copyright (C) 2022 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
AM_CFLAGS= \
|
|
||||||
$(WARN_CFLAGS) \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(ASAN_CFLAGS) \
|
|
||||||
$(CODE_COVERAGE_CFLAGS) \
|
|
||||||
-DMU_TESTMAILDIR=\"${abs_top_srcdir}/lib/testdir\" \
|
|
||||||
-DMU_TESTMAILDIR2=\"${abs_top_srcdir}/lib/testdir2\" \
|
|
||||||
-Wno-format-nonliteral \
|
|
||||||
-Wno-switch-enum \
|
|
||||||
-Wno-deprecated-declarations \
|
|
||||||
-Wno-inline \
|
|
||||||
-I${top_srcdir}/lib
|
|
||||||
|
|
||||||
AM_CPPFLAGS= \
|
|
||||||
$(CODE_COVERAGE_CPPFLAGS)
|
|
||||||
|
|
||||||
AM_CXXFLAGS= \
|
|
||||||
$(WARN_CXXFLAGS) \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(ASAN_CXXFLAGS) \
|
|
||||||
$(CODE_COVERAGE_CFLAGS) \
|
|
||||||
-I${top_srcdir}/lib
|
|
||||||
|
|
||||||
AM_LDFLAGS= \
|
|
||||||
$(ASAN_LDFLAGS)
|
|
||||||
|
|
||||||
noinst_LTLIBRARIES= \
|
|
||||||
libmu-utils.la
|
|
||||||
|
|
||||||
libmu_utils_la_SOURCES= \
|
|
||||||
mu-async-queue.hh \
|
|
||||||
mu-command-parser.cc \
|
|
||||||
mu-command-parser.hh \
|
|
||||||
mu-error.hh \
|
|
||||||
mu-logger.cc \
|
|
||||||
mu-logger.hh \
|
|
||||||
mu-option.hh \
|
|
||||||
mu-option.cc \
|
|
||||||
mu-readline.cc \
|
|
||||||
mu-readline.hh \
|
|
||||||
mu-result.hh \
|
|
||||||
mu-sexp.cc \
|
|
||||||
mu-sexp.hh \
|
|
||||||
mu-util.c \
|
|
||||||
mu-util.h \
|
|
||||||
mu-utils.cc \
|
|
||||||
mu-utils.hh \
|
|
||||||
mu-utils-format.hh \
|
|
||||||
mu-xapian-utils.hh
|
|
||||||
|
|
||||||
libmu_utils_la_LIBADD= \
|
|
||||||
$(GLIB_LIBS) \
|
|
||||||
$(READLINE_LIBS) \
|
|
||||||
$(CODE_COVERAGE_LIBS)
|
|
||||||
|
|
||||||
include $(top_srcdir)/aminclude_static.am
|
|
|
@ -1,47 +0,0 @@
|
||||||
## Copyright (C) 2008-2022 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
ax_ac_append_to_file.m4 \
|
|
||||||
ax_ac_print_to_file.m4 \
|
|
||||||
ax_add_am_macro_static.m4 \
|
|
||||||
ax_am_macros_static.m4 \
|
|
||||||
ax_append_compile_flags.m4 \
|
|
||||||
ax_append_flag.m4 \
|
|
||||||
ax_append_link_flags.m4 \
|
|
||||||
ax_check_compile_flag.m4 \
|
|
||||||
ax_check_enable_debug.m4 \
|
|
||||||
ax_check_gnu_make.m4 \
|
|
||||||
ax_check_link_flag.m4 \
|
|
||||||
ax_code_coverage.m4 \
|
|
||||||
ax_compiler_flags.m4 \
|
|
||||||
ax_compiler_flags_cflags.m4 \
|
|
||||||
ax_compiler_flags_cxxflags.m4 \
|
|
||||||
ax_compiler_flags_gir.m4 \
|
|
||||||
ax_compiler_flags_ldflags.m4 \
|
|
||||||
ax_cxx_compile_stdcxx.m4 \
|
|
||||||
ax_cxx_compile_stdcxx_17.m4 \
|
|
||||||
ax_file_escapes.m4 \
|
|
||||||
ax_is_release.m4 \
|
|
||||||
ax_lib_readline.m4 \
|
|
||||||
ax_require_defined.m4 \
|
|
||||||
ax_valgrind_check.m4 \
|
|
||||||
guile.m4 \
|
|
||||||
lib-ld.m4 \
|
|
||||||
lib-link.m4 \
|
|
||||||
lib-prefix.m4
|
|
|
@ -1,32 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_ac_append_to_file.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_AC_APPEND_TO_FILE([FILE],[DATA])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Appends the specified data to the specified Autoconf is run. If you want
|
|
||||||
# to append to a file when configure is run use AX_APPEND_TO_FILE instead.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 10
|
|
||||||
|
|
||||||
AC_DEFUN([AX_AC_APPEND_TO_FILE],[
|
|
||||||
AC_REQUIRE([AX_FILE_ESCAPES])
|
|
||||||
m4_esyscmd(
|
|
||||||
AX_FILE_ESCAPES
|
|
||||||
[
|
|
||||||
printf "%s" "$2" >> "$1"
|
|
||||||
])
|
|
||||||
])
|
|
|
@ -1,32 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_ac_print_to_file.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_AC_PRINT_TO_FILE([FILE],[DATA])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Writes the specified data to the specified file when Autoconf is run. If
|
|
||||||
# you want to print to a file when configure is run use AX_PRINT_TO_FILE
|
|
||||||
# instead.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 10
|
|
||||||
|
|
||||||
AC_DEFUN([AX_AC_PRINT_TO_FILE],[
|
|
||||||
m4_esyscmd(
|
|
||||||
AC_REQUIRE([AX_FILE_ESCAPES])
|
|
||||||
[
|
|
||||||
printf "%s" "$2" > "$1"
|
|
||||||
])
|
|
||||||
])
|
|
|
@ -1,28 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_add_am_macro_static.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_ADD_AM_MACRO_STATIC([RULE])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Adds the specified rule to $AMINCLUDE.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2009 Tom Howard <tomhoward@users.sf.net>
|
|
||||||
# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 8
|
|
||||||
|
|
||||||
AC_DEFUN([AX_ADD_AM_MACRO_STATIC],[
|
|
||||||
AC_REQUIRE([AX_AM_MACROS_STATIC])
|
|
||||||
AX_AC_APPEND_TO_FILE(AMINCLUDE_STATIC,[$1])
|
|
||||||
])
|
|
|
@ -1,38 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_am_macros_static.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_AM_MACROS_STATIC
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Adds support for macros that create Automake rules. You must manually
|
|
||||||
# add the following line
|
|
||||||
#
|
|
||||||
# include $(top_srcdir)/aminclude_static.am
|
|
||||||
#
|
|
||||||
# to your Makefile.am files.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2009 Tom Howard <tomhoward@users.sf.net>
|
|
||||||
# Copyright (c) 2009 Allan Caffee <allan.caffee@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 11
|
|
||||||
|
|
||||||
AC_DEFUN([AMINCLUDE_STATIC],[aminclude_static.am])
|
|
||||||
|
|
||||||
AC_DEFUN([AX_AM_MACROS_STATIC],
|
|
||||||
[
|
|
||||||
AX_AC_PRINT_TO_FILE(AMINCLUDE_STATIC,[
|
|
||||||
# ]AMINCLUDE_STATIC[ generated automatically by Autoconf
|
|
||||||
# from AX_AM_MACROS_STATIC on ]m4_esyscmd([LC_ALL=C date])[
|
|
||||||
])
|
|
||||||
])
|
|
|
@ -1,46 +0,0 @@
|
||||||
# ============================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_append_compile_flags.html
|
|
||||||
# ============================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_APPEND_COMPILE_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# For every FLAG1, FLAG2 it is checked whether the compiler works with the
|
|
||||||
# flag. If it does, the flag is added FLAGS-VARIABLE
|
|
||||||
#
|
|
||||||
# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
|
|
||||||
# CFLAGS) is used. During the check the flag is always added to the
|
|
||||||
# current language's flags.
|
|
||||||
#
|
|
||||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
|
||||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
|
||||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
|
||||||
# force the compiler to issue an error when a bad flag is given.
|
|
||||||
#
|
|
||||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
|
||||||
#
|
|
||||||
# NOTE: This macro depends on the AX_APPEND_FLAG and
|
|
||||||
# AX_CHECK_COMPILE_FLAG. Please keep this macro in sync with
|
|
||||||
# AX_APPEND_LINK_FLAGS.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 7
|
|
||||||
|
|
||||||
AC_DEFUN([AX_APPEND_COMPILE_FLAGS],
|
|
||||||
[AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
||||||
for flag in $1; do
|
|
||||||
AX_CHECK_COMPILE_FLAG([$flag], [AX_APPEND_FLAG([$flag], [$2])], [], [$3], [$4])
|
|
||||||
done
|
|
||||||
])dnl AX_APPEND_COMPILE_FLAGS
|
|
|
@ -1,50 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
|
|
||||||
# added in between.
|
|
||||||
#
|
|
||||||
# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
|
|
||||||
# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
|
|
||||||
# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
|
|
||||||
# FLAG.
|
|
||||||
#
|
|
||||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
|
||||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 8
|
|
||||||
|
|
||||||
AC_DEFUN([AX_APPEND_FLAG],
|
|
||||||
[dnl
|
|
||||||
AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
|
|
||||||
AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
|
|
||||||
AS_VAR_SET_IF(FLAGS,[
|
|
||||||
AS_CASE([" AS_VAR_GET(FLAGS) "],
|
|
||||||
[*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
|
|
||||||
[
|
|
||||||
AS_VAR_APPEND(FLAGS,[" $1"])
|
|
||||||
AC_RUN_LOG([: FLAGS="$FLAGS"])
|
|
||||||
])
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AS_VAR_SET(FLAGS,[$1])
|
|
||||||
AC_RUN_LOG([: FLAGS="$FLAGS"])
|
|
||||||
])
|
|
||||||
AS_VAR_POPDEF([FLAGS])dnl
|
|
||||||
])dnl AX_APPEND_FLAG
|
|
|
@ -1,44 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# For every FLAG1, FLAG2 it is checked whether the linker works with the
|
|
||||||
# flag. If it does, the flag is added FLAGS-VARIABLE
|
|
||||||
#
|
|
||||||
# If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is
|
|
||||||
# used. During the check the flag is always added to the linker's flags.
|
|
||||||
#
|
|
||||||
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
|
|
||||||
# when the check is done. The check is thus made with the flags: "LDFLAGS
|
|
||||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
|
||||||
# issue an error when a bad flag is given.
|
|
||||||
#
|
|
||||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
|
||||||
#
|
|
||||||
# NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG.
|
|
||||||
# Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 7
|
|
||||||
|
|
||||||
AC_DEFUN([AX_APPEND_LINK_FLAGS],
|
|
||||||
[AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
||||||
for flag in $1; do
|
|
||||||
AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3], [$4])
|
|
||||||
done
|
|
||||||
])dnl AX_APPEND_LINK_FLAGS
|
|
|
@ -1,53 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Check whether the given FLAG works with the current language's compiler
|
|
||||||
# or gives an error. (Warnings, however, are ignored)
|
|
||||||
#
|
|
||||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
|
||||||
# success/failure.
|
|
||||||
#
|
|
||||||
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
|
||||||
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
|
||||||
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
|
||||||
# force the compiler to issue an error when a bad flag is given.
|
|
||||||
#
|
|
||||||
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
|
||||||
#
|
|
||||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
|
||||||
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
|
||||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 6
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
|
||||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
|
||||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
|
||||||
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
|
||||||
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
|
||||||
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
|
||||||
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
|
||||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
|
||||||
[AS_VAR_SET(CACHEVAR,[no])])
|
|
||||||
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
|
||||||
AS_VAR_IF(CACHEVAR,yes,
|
|
||||||
[m4_default([$2], :)],
|
|
||||||
[m4_default([$3], :)])
|
|
||||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
|
||||||
])dnl AX_CHECK_COMPILE_FLAGS
|
|
|
@ -1,124 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_check_enable_debug.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CHECK_ENABLE_DEBUG([enable by default=yes/info/profile/no], [ENABLE DEBUG VARIABLES ...], [DISABLE DEBUG VARIABLES NDEBUG ...], [IS-RELEASE])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Check for the presence of an --enable-debug option to configure, with
|
|
||||||
# the specified default value used when the option is not present. Return
|
|
||||||
# the value in the variable $ax_enable_debug.
|
|
||||||
#
|
|
||||||
# Specifying 'yes' adds '-g -O0' to the compilation flags for all
|
|
||||||
# languages. Specifying 'info' adds '-g' to the compilation flags.
|
|
||||||
# Specifying 'profile' adds '-g -pg' to the compilation flags and '-pg' to
|
|
||||||
# the linking flags. Otherwise, nothing is added.
|
|
||||||
#
|
|
||||||
# Define the variables listed in the second argument if debug is enabled,
|
|
||||||
# defaulting to no variables. Defines the variables listed in the third
|
|
||||||
# argument if debug is disabled, defaulting to NDEBUG. All lists of
|
|
||||||
# variables should be space-separated.
|
|
||||||
#
|
|
||||||
# If debug is not enabled, ensure AC_PROG_* will not add debugging flags.
|
|
||||||
# Should be invoked prior to any AC_PROG_* compiler checks.
|
|
||||||
#
|
|
||||||
# IS-RELEASE can be used to change the default to 'no' when making a
|
|
||||||
# release. Set IS-RELEASE to 'yes' or 'no' as appropriate. By default, it
|
|
||||||
# uses the value of $ax_is_release, so if you are using the AX_IS_RELEASE
|
|
||||||
# macro, there is no need to pass this parameter.
|
|
||||||
#
|
|
||||||
# AX_IS_RELEASE([git-directory])
|
|
||||||
# AX_CHECK_ENABLE_DEBUG()
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2011 Rhys Ulerich <rhys.ulerich@gmail.com>
|
|
||||||
# Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved.
|
|
||||||
|
|
||||||
#serial 9
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_ENABLE_DEBUG],[
|
|
||||||
AC_BEFORE([$0],[AC_PROG_CC])dnl
|
|
||||||
AC_BEFORE([$0],[AC_PROG_CXX])dnl
|
|
||||||
AC_BEFORE([$0],[AC_PROG_F77])dnl
|
|
||||||
AC_BEFORE([$0],[AC_PROG_FC])dnl
|
|
||||||
|
|
||||||
AC_MSG_CHECKING(whether to enable debugging)
|
|
||||||
|
|
||||||
ax_enable_debug_default=m4_tolower(m4_normalize(ifelse([$1],,[no],[$1])))
|
|
||||||
ax_enable_debug_is_release=m4_tolower(m4_normalize(ifelse([$4],,
|
|
||||||
[$ax_is_release],
|
|
||||||
[$4])))
|
|
||||||
|
|
||||||
# If this is a release, override the default.
|
|
||||||
AS_IF([test "$ax_enable_debug_is_release" = "yes"],
|
|
||||||
[ax_enable_debug_default="no"])
|
|
||||||
|
|
||||||
m4_define(ax_enable_debug_vars,[m4_normalize(ifelse([$2],,,[$2]))])
|
|
||||||
m4_define(ax_disable_debug_vars,[m4_normalize(ifelse([$3],,[NDEBUG],[$3]))])
|
|
||||||
|
|
||||||
AC_ARG_ENABLE(debug,
|
|
||||||
[AS_HELP_STRING([--enable-debug=]@<:@yes/info/profile/no@:>@,[compile with debugging])],
|
|
||||||
[],enable_debug=$ax_enable_debug_default)
|
|
||||||
|
|
||||||
# empty mean debug yes
|
|
||||||
AS_IF([test "x$enable_debug" = "x"],
|
|
||||||
[enable_debug="yes"])
|
|
||||||
|
|
||||||
# case of debug
|
|
||||||
AS_CASE([$enable_debug],
|
|
||||||
[yes],[
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
CFLAGS="${CFLAGS} -g -O0"
|
|
||||||
CXXFLAGS="${CXXFLAGS} -g -O0"
|
|
||||||
FFLAGS="${FFLAGS} -g -O0"
|
|
||||||
FCFLAGS="${FCFLAGS} -g -O0"
|
|
||||||
OBJCFLAGS="${OBJCFLAGS} -g -O0"
|
|
||||||
],
|
|
||||||
[info],[
|
|
||||||
AC_MSG_RESULT(info)
|
|
||||||
CFLAGS="${CFLAGS} -g"
|
|
||||||
CXXFLAGS="${CXXFLAGS} -g"
|
|
||||||
FFLAGS="${FFLAGS} -g"
|
|
||||||
FCFLAGS="${FCFLAGS} -g"
|
|
||||||
OBJCFLAGS="${OBJCFLAGS} -g"
|
|
||||||
],
|
|
||||||
[profile],[
|
|
||||||
AC_MSG_RESULT(profile)
|
|
||||||
CFLAGS="${CFLAGS} -g -pg"
|
|
||||||
CXXFLAGS="${CXXFLAGS} -g -pg"
|
|
||||||
FFLAGS="${FFLAGS} -g -pg"
|
|
||||||
FCFLAGS="${FCFLAGS} -g -pg"
|
|
||||||
OBJCFLAGS="${OBJCFLAGS} -g -pg"
|
|
||||||
LDFLAGS="${LDFLAGS} -pg"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
dnl Ensure AC_PROG_CC/CXX/F77/FC/OBJC will not enable debug flags
|
|
||||||
dnl by setting any unset environment flag variables
|
|
||||||
AS_IF([test "x${CFLAGS+set}" != "xset"],
|
|
||||||
[CFLAGS=""])
|
|
||||||
AS_IF([test "x${CXXFLAGS+set}" != "xset"],
|
|
||||||
[CXXFLAGS=""])
|
|
||||||
AS_IF([test "x${FFLAGS+set}" != "xset"],
|
|
||||||
[FFLAGS=""])
|
|
||||||
AS_IF([test "x${FCFLAGS+set}" != "xset"],
|
|
||||||
[FCFLAGS=""])
|
|
||||||
AS_IF([test "x${OBJCFLAGS+set}" != "xset"],
|
|
||||||
[OBJCFLAGS=""])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Define various variables if debugging is disabled.
|
|
||||||
dnl assert.h is a NOP if NDEBUG is defined, so define it by default.
|
|
||||||
AS_IF([test "x$enable_debug" = "xyes"],
|
|
||||||
[m4_map_args_w(ax_enable_debug_vars, [AC_DEFINE(], [,[1],[Define if debugging is enabled])])],
|
|
||||||
[m4_map_args_w(ax_disable_debug_vars, [AC_DEFINE(], [,[1],[Define if debugging is disabled])])])
|
|
||||||
ax_enable_debug=$enable_debug
|
|
||||||
])
|
|
|
@ -1,95 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_check_gnu_make.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CHECK_GNU_MAKE([run-if-true],[run-if-false])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# This macro searches for a GNU version of make. If a match is found:
|
|
||||||
#
|
|
||||||
# * The makefile variable `ifGNUmake' is set to the empty string, otherwise
|
|
||||||
# it is set to "#". This is useful for including a special features in a
|
|
||||||
# Makefile, which cannot be handled by other versions of make.
|
|
||||||
# * The makefile variable `ifnGNUmake' is set to #, otherwise
|
|
||||||
# it is set to the empty string. This is useful for including a special
|
|
||||||
# features in a Makefile, which can be handled
|
|
||||||
# by other versions of make or to specify else like clause.
|
|
||||||
# * The variable `_cv_gnu_make_command` is set to the command to invoke
|
|
||||||
# GNU make if it exists, the empty string otherwise.
|
|
||||||
# * The variable `ax_cv_gnu_make_command` is set to the command to invoke
|
|
||||||
# GNU make by copying `_cv_gnu_make_command`, otherwise it is unset.
|
|
||||||
# * If GNU Make is found, its version is extracted from the output of
|
|
||||||
# `make --version` as the last field of a record of space-separated
|
|
||||||
# columns and saved into the variable `ax_check_gnu_make_version`.
|
|
||||||
# * Additionally if GNU Make is found, run shell code run-if-true
|
|
||||||
# else run shell code run-if-false.
|
|
||||||
#
|
|
||||||
# Here is an example of its use:
|
|
||||||
#
|
|
||||||
# Makefile.in might contain:
|
|
||||||
#
|
|
||||||
# # A failsafe way of putting a dependency rule into a makefile
|
|
||||||
# $(DEPEND):
|
|
||||||
# $(CC) -MM $(srcdir)/*.c > $(DEPEND)
|
|
||||||
#
|
|
||||||
# @ifGNUmake@ ifeq ($(DEPEND),$(wildcard $(DEPEND)))
|
|
||||||
# @ifGNUmake@ include $(DEPEND)
|
|
||||||
# @ifGNUmake@ else
|
|
||||||
# fallback code
|
|
||||||
# @ifGNUmake@ endif
|
|
||||||
#
|
|
||||||
# Then configure.in would normally contain:
|
|
||||||
#
|
|
||||||
# AX_CHECK_GNU_MAKE()
|
|
||||||
# AC_OUTPUT(Makefile)
|
|
||||||
#
|
|
||||||
# Then perhaps to cause gnu make to override any other make, we could do
|
|
||||||
# something like this (note that GNU make always looks for GNUmakefile
|
|
||||||
# first):
|
|
||||||
#
|
|
||||||
# if ! test x$_cv_gnu_make_command = x ; then
|
|
||||||
# mv Makefile GNUmakefile
|
|
||||||
# echo .DEFAULT: > Makefile ;
|
|
||||||
# echo \ $_cv_gnu_make_command \$@ >> Makefile;
|
|
||||||
# fi
|
|
||||||
#
|
|
||||||
# Then, if any (well almost any) other make is called, and GNU make also
|
|
||||||
# exists, then the other make wraps the GNU make.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 John Darrington <j.darrington@elvis.murdoch.edu.au>
|
|
||||||
# Copyright (c) 2015 Enrico M. Crisostomo <enrico.m.crisostomo@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 11
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_GNU_MAKE],dnl
|
|
||||||
[AC_PROG_AWK
|
|
||||||
AC_CACHE_CHECK([for GNU make],[_cv_gnu_make_command],[dnl
|
|
||||||
_cv_gnu_make_command="" ;
|
|
||||||
dnl Search all the common names for GNU make
|
|
||||||
for a in "$MAKE" make gmake gnumake ; do
|
|
||||||
if test -z "$a" ; then continue ; fi ;
|
|
||||||
if "$a" --version 2> /dev/null | grep GNU 2>&1 > /dev/null ; then
|
|
||||||
_cv_gnu_make_command=$a ;
|
|
||||||
AX_CHECK_GNU_MAKE_HEADLINE=$("$a" --version 2> /dev/null | grep "GNU Make")
|
|
||||||
ax_check_gnu_make_version=$(echo ${AX_CHECK_GNU_MAKE_HEADLINE} | ${AWK} -F " " '{ print $(NF); }')
|
|
||||||
break ;
|
|
||||||
fi
|
|
||||||
done ;])
|
|
||||||
dnl If there was a GNU version, then set @ifGNUmake@ to the empty string, '#' otherwise
|
|
||||||
AS_VAR_IF([_cv_gnu_make_command], [""], [AS_VAR_SET([ifGNUmake], ["#"])], [AS_VAR_SET([ifGNUmake], [""])])
|
|
||||||
AS_VAR_IF([_cv_gnu_make_command], [""], [AS_VAR_SET([ifnGNUmake], [""])], [AS_VAR_SET([ifGNUmake], ["#"])])
|
|
||||||
AS_VAR_IF([_cv_gnu_make_command], [""], [AS_UNSET(ax_cv_gnu_make_command)], [AS_VAR_SET([ax_cv_gnu_make_command], [${_cv_gnu_make_command}])])
|
|
||||||
AS_VAR_IF([_cv_gnu_make_command], [""],[$2],[$1])
|
|
||||||
AC_SUBST([ifGNUmake])
|
|
||||||
AC_SUBST([ifnGNUmake])
|
|
||||||
])
|
|
|
@ -1,53 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Check whether the given FLAG works with the linker or gives an error.
|
|
||||||
# (Warnings, however, are ignored)
|
|
||||||
#
|
|
||||||
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
|
||||||
# success/failure.
|
|
||||||
#
|
|
||||||
# If EXTRA-FLAGS is defined, it is added to the linker's default flags
|
|
||||||
# when the check is done. The check is thus made with the flags: "LDFLAGS
|
|
||||||
# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
|
|
||||||
# issue an error when a bad flag is given.
|
|
||||||
#
|
|
||||||
# INPUT gives an alternative input source to AC_LINK_IFELSE.
|
|
||||||
#
|
|
||||||
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
|
||||||
# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
|
||||||
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 6
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CHECK_LINK_FLAG],
|
|
||||||
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
|
||||||
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
|
|
||||||
AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
|
|
||||||
ax_check_save_flags=$LDFLAGS
|
|
||||||
LDFLAGS="$LDFLAGS $4 $1"
|
|
||||||
AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
|
||||||
[AS_VAR_SET(CACHEVAR,[yes])],
|
|
||||||
[AS_VAR_SET(CACHEVAR,[no])])
|
|
||||||
LDFLAGS=$ax_check_save_flags])
|
|
||||||
AS_VAR_IF(CACHEVAR,yes,
|
|
||||||
[m4_default([$2], :)],
|
|
||||||
[m4_default([$3], :)])
|
|
||||||
AS_VAR_POPDEF([CACHEVAR])dnl
|
|
||||||
])dnl AX_CHECK_LINK_FLAGS
|
|
|
@ -1,272 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_code_coverage.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CODE_COVERAGE()
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Defines CODE_COVERAGE_CPPFLAGS, CODE_COVERAGE_CFLAGS,
|
|
||||||
# CODE_COVERAGE_CXXFLAGS and CODE_COVERAGE_LIBS which should be included
|
|
||||||
# in the CPPFLAGS, CFLAGS CXXFLAGS and LIBS/LIBADD variables of every
|
|
||||||
# build target (program or library) which should be built with code
|
|
||||||
# coverage support. Also add rules using AX_ADD_AM_MACRO_STATIC; and
|
|
||||||
# $enable_code_coverage which can be used in subsequent configure output.
|
|
||||||
# CODE_COVERAGE_ENABLED is defined and substituted, and corresponds to the
|
|
||||||
# value of the --enable-code-coverage option, which defaults to being
|
|
||||||
# disabled.
|
|
||||||
#
|
|
||||||
# Test also for gcov program and create GCOV variable that could be
|
|
||||||
# substituted.
|
|
||||||
#
|
|
||||||
# Note that all optimization flags in CFLAGS must be disabled when code
|
|
||||||
# coverage is enabled.
|
|
||||||
#
|
|
||||||
# Usage example:
|
|
||||||
#
|
|
||||||
# configure.ac:
|
|
||||||
#
|
|
||||||
# AX_CODE_COVERAGE
|
|
||||||
#
|
|
||||||
# Makefile.am:
|
|
||||||
#
|
|
||||||
# include $(top_srcdir)/aminclude_static.am
|
|
||||||
#
|
|
||||||
# my_program_LIBS = ... $(CODE_COVERAGE_LIBS) ...
|
|
||||||
# my_program_CPPFLAGS = ... $(CODE_COVERAGE_CPPFLAGS) ...
|
|
||||||
# my_program_CFLAGS = ... $(CODE_COVERAGE_CFLAGS) ...
|
|
||||||
# my_program_CXXFLAGS = ... $(CODE_COVERAGE_CXXFLAGS) ...
|
|
||||||
#
|
|
||||||
# clean-local: code-coverage-clean
|
|
||||||
# distclean-local: code-coverage-dist-clean
|
|
||||||
#
|
|
||||||
# This results in a "check-code-coverage" rule being added to any
|
|
||||||
# Makefile.am which do "include $(top_srcdir)/aminclude_static.am"
|
|
||||||
# (assuming the module has been configured with --enable-code-coverage).
|
|
||||||
# Running `make check-code-coverage` in that directory will run the
|
|
||||||
# module's test suite (`make check`) and build a code coverage report
|
|
||||||
# detailing the code which was touched, then print the URI for the report.
|
|
||||||
#
|
|
||||||
# This code was derived from Makefile.decl in GLib, originally licensed
|
|
||||||
# under LGPLv2.1+.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2012, 2016 Philip Withnall
|
|
||||||
# Copyright (c) 2012 Xan Lopez
|
|
||||||
# Copyright (c) 2012 Christian Persch
|
|
||||||
# Copyright (c) 2012 Paolo Borelli
|
|
||||||
# Copyright (c) 2012 Dan Winship
|
|
||||||
# Copyright (c) 2015,2018 Bastien ROUCARIES
|
|
||||||
#
|
|
||||||
# This library is free software; you can redistribute it and/or modify it
|
|
||||||
# under the terms of the GNU Lesser General Public License as published by
|
|
||||||
# the Free Software Foundation; either version 2.1 of the License, or (at
|
|
||||||
# your option) any later version.
|
|
||||||
#
|
|
||||||
# This library 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 Lesser
|
|
||||||
# General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU Lesser General Public License
|
|
||||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
#serial 33
|
|
||||||
|
|
||||||
m4_define(_AX_CODE_COVERAGE_RULES,[
|
|
||||||
AX_ADD_AM_MACRO_STATIC([
|
|
||||||
# Code coverage
|
|
||||||
#
|
|
||||||
# Optional:
|
|
||||||
# - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
|
|
||||||
# Multiple directories may be specified, separated by whitespace.
|
|
||||||
# (Default: \$(top_builddir))
|
|
||||||
# - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
|
|
||||||
# by lcov for code coverage. (Default:
|
|
||||||
# \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage.info)
|
|
||||||
# - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
|
|
||||||
# reports to be created. (Default:
|
|
||||||
# \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage)
|
|
||||||
# - CODE_COVERAGE_BRANCH_COVERAGE: Set to 1 to enforce branch coverage,
|
|
||||||
# set to 0 to disable it and leave empty to stay with the default.
|
|
||||||
# (Default: empty)
|
|
||||||
# - CODE_COVERAGE_LCOV_SHOPTS_DEFAULT: Extra options shared between both lcov
|
|
||||||
# instances. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
|
|
||||||
# - CODE_COVERAGE_LCOV_SHOPTS: Extra options to shared between both lcov
|
|
||||||
# instances. (Default: $CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
|
|
||||||
# - CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH: --gcov-tool pathtogcov
|
|
||||||
# - CODE_COVERAGE_LCOV_OPTIONS_DEFAULT: Extra options to pass to the
|
|
||||||
# collecting lcov instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
|
|
||||||
# - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the collecting lcov
|
|
||||||
# instance. (Default: $CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
|
|
||||||
# - CODE_COVERAGE_LCOV_RMOPTS_DEFAULT: Extra options to pass to the filtering
|
|
||||||
# lcov instance. (Default: empty)
|
|
||||||
# - CODE_COVERAGE_LCOV_RMOPTS: Extra options to pass to the filtering lcov
|
|
||||||
# instance. (Default: $CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
|
|
||||||
# - CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT: Extra options to pass to the
|
|
||||||
# genhtml instance. (Default: based on $CODE_COVERAGE_BRANCH_COVERAGE)
|
|
||||||
# - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
|
|
||||||
# instance. (Default: $CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
|
|
||||||
# - CODE_COVERAGE_IGNORE_PATTERN: Extra glob pattern of files to ignore
|
|
||||||
#
|
|
||||||
# The generated report will be titled using the \$(PACKAGE_NAME) and
|
|
||||||
# \$(PACKAGE_VERSION). In order to add the current git hash to the title,
|
|
||||||
# use the git-version-gen script, available online.
|
|
||||||
# Optional variables
|
|
||||||
# run only on top dir
|
|
||||||
if CODE_COVERAGE_ENABLED
|
|
||||||
ifeq (\$(abs_builddir), \$(abs_top_builddir))
|
|
||||||
CODE_COVERAGE_DIRECTORY ?= \$(top_builddir)
|
|
||||||
CODE_COVERAGE_OUTPUT_FILE ?= \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage.info
|
|
||||||
CODE_COVERAGE_OUTPUT_DIRECTORY ?= \$(PACKAGE_NAME)-\$(PACKAGE_VERSION)-coverage
|
|
||||||
|
|
||||||
CODE_COVERAGE_BRANCH_COVERAGE ?=
|
|
||||||
CODE_COVERAGE_LCOV_SHOPTS_DEFAULT ?= \$(if \$(CODE_COVERAGE_BRANCH_COVERAGE),\
|
|
||||||
--rc lcov_branch_coverage=\$(CODE_COVERAGE_BRANCH_COVERAGE))
|
|
||||||
CODE_COVERAGE_LCOV_SHOPTS ?= \$(CODE_COVERAGE_LCOV_SHOPTS_DEFAULT)
|
|
||||||
CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH ?= --gcov-tool \"\$(GCOV)\"
|
|
||||||
CODE_COVERAGE_LCOV_OPTIONS_DEFAULT ?= \$(CODE_COVERAGE_LCOV_OPTIONS_GCOVPATH)
|
|
||||||
CODE_COVERAGE_LCOV_OPTIONS ?= \$(CODE_COVERAGE_LCOV_OPTIONS_DEFAULT)
|
|
||||||
CODE_COVERAGE_LCOV_RMOPTS_DEFAULT ?=
|
|
||||||
CODE_COVERAGE_LCOV_RMOPTS ?= \$(CODE_COVERAGE_LCOV_RMOPTS_DEFAULT)
|
|
||||||
CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT ?=\
|
|
||||||
\$(if \$(CODE_COVERAGE_BRANCH_COVERAGE),\
|
|
||||||
--rc genhtml_branch_coverage=\$(CODE_COVERAGE_BRANCH_COVERAGE))
|
|
||||||
CODE_COVERAGE_GENHTML_OPTIONS ?= \$(CODE_COVERAGE_GENHTML_OPTIONS_DEFAULT)
|
|
||||||
CODE_COVERAGE_IGNORE_PATTERN ?=
|
|
||||||
|
|
||||||
GITIGNOREFILES = \$(GITIGNOREFILES) \$(CODE_COVERAGE_OUTPUT_FILE) \$(CODE_COVERAGE_OUTPUT_DIRECTORY)
|
|
||||||
code_coverage_v_lcov_cap = \$(code_coverage_v_lcov_cap_\$(V))
|
|
||||||
code_coverage_v_lcov_cap_ = \$(code_coverage_v_lcov_cap_\$(AM_DEFAULT_VERBOSITY))
|
|
||||||
code_coverage_v_lcov_cap_0 = @echo \" LCOV --capture\" \$(CODE_COVERAGE_OUTPUT_FILE);
|
|
||||||
code_coverage_v_lcov_ign = \$(code_coverage_v_lcov_ign_\$(V))
|
|
||||||
code_coverage_v_lcov_ign_ = \$(code_coverage_v_lcov_ign_\$(AM_DEFAULT_VERBOSITY))
|
|
||||||
code_coverage_v_lcov_ign_0 = @echo \" LCOV --remove /tmp/*\" \$(CODE_COVERAGE_IGNORE_PATTERN);
|
|
||||||
code_coverage_v_genhtml = \$(code_coverage_v_genhtml_\$(V))
|
|
||||||
code_coverage_v_genhtml_ = \$(code_coverage_v_genhtml_\$(AM_DEFAULT_VERBOSITY))
|
|
||||||
code_coverage_v_genhtml_0 = @echo \" GEN \" \"\$(CODE_COVERAGE_OUTPUT_DIRECTORY)\";
|
|
||||||
code_coverage_quiet = \$(code_coverage_quiet_\$(V))
|
|
||||||
code_coverage_quiet_ = \$(code_coverage_quiet_\$(AM_DEFAULT_VERBOSITY))
|
|
||||||
code_coverage_quiet_0 = --quiet
|
|
||||||
|
|
||||||
# sanitizes the test-name: replaces with underscores: dashes and dots
|
|
||||||
code_coverage_sanitize = \$(subst -,_,\$(subst .,_,\$(1)))
|
|
||||||
|
|
||||||
# Use recursive makes in order to ignore errors during check
|
|
||||||
check-code-coverage:
|
|
||||||
-\$(AM_V_at)\$(MAKE) \$(AM_MAKEFLAGS) -k check
|
|
||||||
\$(AM_V_at)\$(MAKE) \$(AM_MAKEFLAGS) code-coverage-capture
|
|
||||||
|
|
||||||
# Capture code coverage data
|
|
||||||
code-coverage-capture: code-coverage-capture-hook
|
|
||||||
\$(code_coverage_v_lcov_cap)\$(LCOV) \$(code_coverage_quiet) \$(addprefix --directory ,\$(CODE_COVERAGE_DIRECTORY)) --capture --output-file \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\" --test-name \"\$(call code_coverage_sanitize,\$(PACKAGE_NAME)-\$(PACKAGE_VERSION))\" --no-checksum --compat-libtool \$(CODE_COVERAGE_LCOV_SHOPTS) \$(CODE_COVERAGE_LCOV_OPTIONS)
|
|
||||||
\$(code_coverage_v_lcov_ign)\$(LCOV) \$(code_coverage_quiet) \$(addprefix --directory ,\$(CODE_COVERAGE_DIRECTORY)) --remove \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\" \"/tmp/*\" \$(CODE_COVERAGE_IGNORE_PATTERN) --output-file \"\$(CODE_COVERAGE_OUTPUT_FILE)\" \$(CODE_COVERAGE_LCOV_SHOPTS) \$(CODE_COVERAGE_LCOV_RMOPTS)
|
|
||||||
-@rm -f \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\"
|
|
||||||
\$(code_coverage_v_genhtml)LANG=C \$(GENHTML) \$(code_coverage_quiet) \$(addprefix --prefix ,\$(CODE_COVERAGE_DIRECTORY)) --output-directory \"\$(CODE_COVERAGE_OUTPUT_DIRECTORY)\" --title \"\$(PACKAGE_NAME)-\$(PACKAGE_VERSION) Code Coverage\" --legend --show-details \"\$(CODE_COVERAGE_OUTPUT_FILE)\" \$(CODE_COVERAGE_GENHTML_OPTIONS)
|
|
||||||
@echo \"file://\$(abs_builddir)/\$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html\"
|
|
||||||
|
|
||||||
code-coverage-clean:
|
|
||||||
-\$(LCOV) --directory \$(top_builddir) -z
|
|
||||||
-rm -rf \"\$(CODE_COVERAGE_OUTPUT_FILE)\" \"\$(CODE_COVERAGE_OUTPUT_FILE).tmp\" \"\$(CODE_COVERAGE_OUTPUT_DIRECTORY)\"
|
|
||||||
-find . \\( -name \"*.gcda\" -o -name \"*.gcno\" -o -name \"*.gcov\" \\) -delete
|
|
||||||
|
|
||||||
code-coverage-dist-clean:
|
|
||||||
|
|
||||||
A][M_DISTCHECK_CONFIGURE_FLAGS := \$(A][M_DISTCHECK_CONFIGURE_FLAGS) --disable-code-coverage
|
|
||||||
else # ifneq (\$(abs_builddir), \$(abs_top_builddir))
|
|
||||||
check-code-coverage:
|
|
||||||
|
|
||||||
code-coverage-capture: code-coverage-capture-hook
|
|
||||||
|
|
||||||
code-coverage-clean:
|
|
||||||
|
|
||||||
code-coverage-dist-clean:
|
|
||||||
endif # ifeq (\$(abs_builddir), \$(abs_top_builddir))
|
|
||||||
else #! CODE_COVERAGE_ENABLED
|
|
||||||
# Use recursive makes in order to ignore errors during check
|
|
||||||
check-code-coverage:
|
|
||||||
@echo \"Need to reconfigure with --enable-code-coverage\"
|
|
||||||
# Capture code coverage data
|
|
||||||
code-coverage-capture: code-coverage-capture-hook
|
|
||||||
@echo \"Need to reconfigure with --enable-code-coverage\"
|
|
||||||
|
|
||||||
code-coverage-clean:
|
|
||||||
|
|
||||||
code-coverage-dist-clean:
|
|
||||||
|
|
||||||
endif #CODE_COVERAGE_ENABLED
|
|
||||||
# Hook rule executed before code-coverage-capture, overridable by the user
|
|
||||||
code-coverage-capture-hook:
|
|
||||||
|
|
||||||
.PHONY: check-code-coverage code-coverage-capture code-coverage-dist-clean code-coverage-clean code-coverage-capture-hook
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([_AX_CODE_COVERAGE_ENABLED],[
|
|
||||||
AX_CHECK_GNU_MAKE([],[AC_MSG_ERROR([not using GNU make that is needed for coverage])])
|
|
||||||
AC_REQUIRE([AX_ADD_AM_MACRO_STATIC])
|
|
||||||
# check for gcov
|
|
||||||
AC_CHECK_TOOL([GCOV],
|
|
||||||
[$_AX_CODE_COVERAGE_GCOV_PROG_WITH],
|
|
||||||
[:])
|
|
||||||
AS_IF([test "X$GCOV" = "X:"],
|
|
||||||
[AC_MSG_ERROR([gcov is needed to do coverage])])
|
|
||||||
AC_SUBST([GCOV])
|
|
||||||
|
|
||||||
dnl Check if gcc is being used
|
|
||||||
AS_IF([ test "$GCC" = "no" ], [
|
|
||||||
AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_CHECK_PROG([LCOV], [lcov], [lcov])
|
|
||||||
AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
|
|
||||||
|
|
||||||
AS_IF([ test x"$LCOV" = x ], [
|
|
||||||
AC_MSG_ERROR([To enable code coverage reporting you must have lcov installed])
|
|
||||||
])
|
|
||||||
|
|
||||||
AS_IF([ test x"$GENHTML" = x ], [
|
|
||||||
AC_MSG_ERROR([Could not find genhtml from the lcov package])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Build the code coverage flags
|
|
||||||
dnl Define CODE_COVERAGE_LDFLAGS for backwards compatibility
|
|
||||||
CODE_COVERAGE_CPPFLAGS="-DNDEBUG"
|
|
||||||
CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
|
|
||||||
CODE_COVERAGE_CXXFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
|
|
||||||
CODE_COVERAGE_LIBS="-lgcov"
|
|
||||||
|
|
||||||
AC_SUBST([CODE_COVERAGE_CPPFLAGS])
|
|
||||||
AC_SUBST([CODE_COVERAGE_CFLAGS])
|
|
||||||
AC_SUBST([CODE_COVERAGE_CXXFLAGS])
|
|
||||||
AC_SUBST([CODE_COVERAGE_LIBS])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CODE_COVERAGE],[
|
|
||||||
dnl Check for --enable-code-coverage
|
|
||||||
|
|
||||||
# allow to override gcov location
|
|
||||||
AC_ARG_WITH([gcov],
|
|
||||||
[AS_HELP_STRING([--with-gcov[=GCOV]], [use given GCOV for coverage (GCOV=gcov).])],
|
|
||||||
[_AX_CODE_COVERAGE_GCOV_PROG_WITH=$with_gcov],
|
|
||||||
[_AX_CODE_COVERAGE_GCOV_PROG_WITH=gcov])
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([whether to build with code coverage support])
|
|
||||||
AC_ARG_ENABLE([code-coverage],
|
|
||||||
AS_HELP_STRING([--enable-code-coverage],
|
|
||||||
[Whether to enable code coverage support]),,
|
|
||||||
enable_code_coverage=no)
|
|
||||||
|
|
||||||
AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test "x$enable_code_coverage" = xyes])
|
|
||||||
AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage])
|
|
||||||
AC_MSG_RESULT($enable_code_coverage)
|
|
||||||
|
|
||||||
AS_IF([ test "x$enable_code_coverage" = xyes ], [
|
|
||||||
_AX_CODE_COVERAGE_ENABLED
|
|
||||||
])
|
|
||||||
|
|
||||||
_AX_CODE_COVERAGE_RULES
|
|
||||||
])
|
|
|
@ -1,158 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_COMPILER_FLAGS([CFLAGS-VARIABLE], [LDFLAGS-VARIABLE], [IS-RELEASE], [EXTRA-BASE-CFLAGS], [EXTRA-YES-CFLAGS], [UNUSED], [UNUSED], [UNUSED], [EXTRA-BASE-LDFLAGS], [EXTRA-YES-LDFLAGS], [UNUSED], [UNUSED], [UNUSED])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Check for the presence of an --enable-compile-warnings option to
|
|
||||||
# configure, defaulting to "error" in normal operation, or "yes" if
|
|
||||||
# IS-RELEASE is equal to "yes". Return the value in the variable
|
|
||||||
# $ax_enable_compile_warnings.
|
|
||||||
#
|
|
||||||
# Depending on the value of --enable-compile-warnings, different compiler
|
|
||||||
# warnings are checked to see if they work with the current compiler and,
|
|
||||||
# if so, are appended to CFLAGS-VARIABLE and LDFLAGS-VARIABLE. This
|
|
||||||
# allows a consistent set of baseline compiler warnings to be used across
|
|
||||||
# a code base, irrespective of any warnings enabled locally by individual
|
|
||||||
# developers. By standardising the warnings used by all developers of a
|
|
||||||
# project, the project can commit to a zero-warnings policy, using -Werror
|
|
||||||
# to prevent compilation if new warnings are introduced. This makes
|
|
||||||
# catching bugs which are flagged by warnings a lot easier.
|
|
||||||
#
|
|
||||||
# By providing a consistent --enable-compile-warnings argument across all
|
|
||||||
# projects using this macro, continuous integration systems can easily be
|
|
||||||
# configured the same for all projects. Automated systems or build
|
|
||||||
# systems aimed at beginners may want to pass the --disable-Werror
|
|
||||||
# argument to unconditionally prevent warnings being fatal.
|
|
||||||
#
|
|
||||||
# --enable-compile-warnings can take the values:
|
|
||||||
#
|
|
||||||
# * no: Base compiler warnings only; not even -Wall.
|
|
||||||
# * yes: The above, plus a broad range of useful warnings.
|
|
||||||
# * error: The above, plus -Werror so that all warnings are fatal.
|
|
||||||
# Use --disable-Werror to override this and disable fatal
|
|
||||||
# warnings.
|
|
||||||
#
|
|
||||||
# The set of base and enabled flags can be augmented using the
|
|
||||||
# EXTRA-*-CFLAGS and EXTRA-*-LDFLAGS variables, which are tested and
|
|
||||||
# appended to the output variable if --enable-compile-warnings is not
|
|
||||||
# "no". Flags should not be disabled using these arguments, as the entire
|
|
||||||
# point of AX_COMPILER_FLAGS is to enforce a consistent set of useful
|
|
||||||
# compiler warnings on code, using warnings which have been chosen for low
|
|
||||||
# false positive rates. If a compiler emits false positives for a
|
|
||||||
# warning, a #pragma should be used in the code to disable the warning
|
|
||||||
# locally. See:
|
|
||||||
#
|
|
||||||
# https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Diagnostic-Pragmas.html#Diagnostic-Pragmas
|
|
||||||
#
|
|
||||||
# The EXTRA-* variables should only be used to supply extra warning flags,
|
|
||||||
# and not general purpose compiler flags, as they are controlled by
|
|
||||||
# configure options such as --disable-Werror.
|
|
||||||
#
|
|
||||||
# IS-RELEASE can be used to disable -Werror when making a release, which
|
|
||||||
# is useful for those hairy moments when you just want to get the release
|
|
||||||
# done as quickly as possible. Set it to "yes" to disable -Werror. By
|
|
||||||
# default, it uses the value of $ax_is_release, so if you are using the
|
|
||||||
# AX_IS_RELEASE macro, there is no need to pass this parameter. For
|
|
||||||
# example:
|
|
||||||
#
|
|
||||||
# AX_IS_RELEASE([git-directory])
|
|
||||||
# AX_COMPILER_FLAGS()
|
|
||||||
#
|
|
||||||
# CFLAGS-VARIABLE defaults to WARN_CFLAGS, and LDFLAGS-VARIABLE defaults
|
|
||||||
# to WARN_LDFLAGS. Both variables are AC_SUBST-ed by this macro, but must
|
|
||||||
# be manually added to the CFLAGS and LDFLAGS variables for each target in
|
|
||||||
# the code base.
|
|
||||||
#
|
|
||||||
# If C++ language support is enabled with AC_PROG_CXX, which must occur
|
|
||||||
# before this macro in configure.ac, warning flags for the C++ compiler
|
|
||||||
# are AC_SUBST-ed as WARN_CXXFLAGS, and must be manually added to the
|
|
||||||
# CXXFLAGS variables for each target in the code base. EXTRA-*-CFLAGS can
|
|
||||||
# be used to augment the base and enabled flags.
|
|
||||||
#
|
|
||||||
# Warning flags for g-ir-scanner (from GObject Introspection) are
|
|
||||||
# AC_SUBST-ed as WARN_SCANNERFLAGS. This variable must be manually added
|
|
||||||
# to the SCANNERFLAGS variable for each GIR target in the code base. If
|
|
||||||
# extra g-ir-scanner flags need to be enabled, the AX_COMPILER_FLAGS_GIR
|
|
||||||
# macro must be invoked manually.
|
|
||||||
#
|
|
||||||
# AX_COMPILER_FLAGS may add support for other tools in future, in addition
|
|
||||||
# to the compiler and linker. No extra EXTRA-* variables will be added
|
|
||||||
# for those tools, and all extra support will still use the single
|
|
||||||
# --enable-compile-warnings configure option. For finer grained control
|
|
||||||
# over the flags for individual tools, use AX_COMPILER_FLAGS_CFLAGS,
|
|
||||||
# AX_COMPILER_FLAGS_LDFLAGS and AX_COMPILER_FLAGS_* for new tools.
|
|
||||||
#
|
|
||||||
# The UNUSED variables date from a previous version of this macro, and are
|
|
||||||
# automatically appended to the preceding non-UNUSED variable. They should
|
|
||||||
# be left empty in new uses of the macro.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
||||||
# Copyright (c) 2015 David King <amigadave@amigadave.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 14
|
|
||||||
|
|
||||||
# _AX_COMPILER_FLAGS_LANG([LANGNAME])
|
|
||||||
m4_defun([_AX_COMPILER_FLAGS_LANG],
|
|
||||||
[m4_ifdef([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [],
|
|
||||||
[m4_define([_AX_COMPILER_FLAGS_LANG_]$1[_enabled], [])dnl
|
|
||||||
AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_]$1[FLAGS])])dnl
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([AX_COMPILER_FLAGS],[
|
|
||||||
# C support is enabled by default.
|
|
||||||
_AX_COMPILER_FLAGS_LANG([C])
|
|
||||||
# Only enable C++ support if AC_PROG_CXX is called. The redefinition of
|
|
||||||
# AC_PROG_CXX is so that a fatal error is emitted if this macro is called
|
|
||||||
# before AC_PROG_CXX, which would otherwise cause no C++ warnings to be
|
|
||||||
# checked.
|
|
||||||
AC_PROVIDE_IFELSE([AC_PROG_CXX],
|
|
||||||
[_AX_COMPILER_FLAGS_LANG([CXX])],
|
|
||||||
[m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AX_COMPILER_FLAGS_LANG([CXX])])])
|
|
||||||
AX_REQUIRE_DEFINED([AX_COMPILER_FLAGS_LDFLAGS])
|
|
||||||
|
|
||||||
# Default value for IS-RELEASE is $ax_is_release
|
|
||||||
ax_compiler_flags_is_release=m4_tolower(m4_normalize(ifelse([$3],,
|
|
||||||
[$ax_is_release],
|
|
||||||
[$3])))
|
|
||||||
|
|
||||||
AC_ARG_ENABLE([compile-warnings],
|
|
||||||
AS_HELP_STRING([--enable-compile-warnings=@<:@no/yes/error@:>@],
|
|
||||||
[Enable compiler warnings and errors]),,
|
|
||||||
[AS_IF([test "$ax_compiler_flags_is_release" = "yes"],
|
|
||||||
[enable_compile_warnings="yes"],
|
|
||||||
[enable_compile_warnings="error"])])
|
|
||||||
AC_ARG_ENABLE([Werror],
|
|
||||||
AS_HELP_STRING([--disable-Werror],
|
|
||||||
[Unconditionally make all compiler warnings non-fatal]),,
|
|
||||||
[enable_Werror=maybe])
|
|
||||||
|
|
||||||
# Return the user's chosen warning level
|
|
||||||
AS_IF([test "$enable_Werror" = "no" -a \
|
|
||||||
"$enable_compile_warnings" = "error"],[
|
|
||||||
enable_compile_warnings="yes"
|
|
||||||
])
|
|
||||||
|
|
||||||
ax_enable_compile_warnings=$enable_compile_warnings
|
|
||||||
|
|
||||||
AX_COMPILER_FLAGS_CFLAGS([$1],[$ax_compiler_flags_is_release],
|
|
||||||
[$4],[$5 $6 $7 $8])
|
|
||||||
m4_ifdef([_AX_COMPILER_FLAGS_LANG_CXX_enabled],
|
|
||||||
[AX_COMPILER_FLAGS_CXXFLAGS([WARN_CXXFLAGS],
|
|
||||||
[$ax_compiler_flags_is_release],
|
|
||||||
[$4],[$5 $6 $7 $8])])
|
|
||||||
AX_COMPILER_FLAGS_LDFLAGS([$2],[$ax_compiler_flags_is_release],
|
|
||||||
[$9],[$10 $11 $12 $13])
|
|
||||||
AX_COMPILER_FLAGS_GIR([WARN_SCANNERFLAGS],[$ax_compiler_flags_is_release])
|
|
||||||
])dnl AX_COMPILER_FLAGS
|
|
|
@ -1,161 +0,0 @@
|
||||||
# =============================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_cflags.html
|
|
||||||
# =============================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_COMPILER_FLAGS_CFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Add warning flags for the C compiler to VARIABLE, which defaults to
|
|
||||||
# WARN_CFLAGS. VARIABLE is AC_SUBST-ed by this macro, but must be
|
|
||||||
# manually added to the CFLAGS variable for each target in the code base.
|
|
||||||
#
|
|
||||||
# This macro depends on the environment set up by AX_COMPILER_FLAGS.
|
|
||||||
# Specifically, it uses the value of $ax_enable_compile_warnings to decide
|
|
||||||
# which flags to enable.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
||||||
# Copyright (c) 2017, 2018 Reini Urban <rurban@cpan.org>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 17
|
|
||||||
|
|
||||||
AC_DEFUN([AX_COMPILER_FLAGS_CFLAGS],[
|
|
||||||
AC_REQUIRE([AC_PROG_SED])
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
||||||
AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
|
|
||||||
|
|
||||||
# Variable names
|
|
||||||
m4_define([ax_warn_cflags_variable],
|
|
||||||
[m4_normalize(ifelse([$1],,[WARN_CFLAGS],[$1]))])
|
|
||||||
|
|
||||||
AC_LANG_PUSH([C])
|
|
||||||
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
|
|
||||||
[#ifndef __cplusplus
|
|
||||||
#error "no C++"
|
|
||||||
#endif]])],
|
|
||||||
[ax_compiler_cxx=yes;],
|
|
||||||
[ax_compiler_cxx=no;])
|
|
||||||
|
|
||||||
# Always pass -Werror=unknown-warning-option to get Clang to fail on bad
|
|
||||||
# flags, otherwise they are always appended to the warn_cflags variable, and
|
|
||||||
# Clang warns on them for every compilation unit.
|
|
||||||
# If this is passed to GCC, it will explode, so the flag must be enabled
|
|
||||||
# conditionally.
|
|
||||||
AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
|
|
||||||
ax_compiler_flags_test="-Werror=unknown-warning-option"
|
|
||||||
],[
|
|
||||||
ax_compiler_flags_test=""
|
|
||||||
])
|
|
||||||
|
|
||||||
# Check that -Wno-suggest-attribute=format is supported
|
|
||||||
AX_CHECK_COMPILE_FLAG([-Wno-suggest-attribute=format],[
|
|
||||||
ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format"
|
|
||||||
],[
|
|
||||||
ax_compiler_no_suggest_attribute_flags=""
|
|
||||||
])
|
|
||||||
|
|
||||||
# Base flags
|
|
||||||
AX_APPEND_COMPILE_FLAGS([ dnl
|
|
||||||
-fno-strict-aliasing dnl
|
|
||||||
$3 dnl
|
|
||||||
],ax_warn_cflags_variable,[$ax_compiler_flags_test])
|
|
||||||
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" != "no"],[
|
|
||||||
if test "$ax_compiler_cxx" = "no" ; then
|
|
||||||
# C-only flags. Warn in C++
|
|
||||||
AX_APPEND_COMPILE_FLAGS([ dnl
|
|
||||||
-Wnested-externs dnl
|
|
||||||
-Wmissing-prototypes dnl
|
|
||||||
-Wstrict-prototypes dnl
|
|
||||||
-Wdeclaration-after-statement dnl
|
|
||||||
-Wimplicit-function-declaration dnl
|
|
||||||
-Wold-style-definition dnl
|
|
||||||
-Wjump-misses-init dnl
|
|
||||||
],ax_warn_cflags_variable,[$ax_compiler_flags_test])
|
|
||||||
fi
|
|
||||||
|
|
||||||
# "yes" flags
|
|
||||||
AX_APPEND_COMPILE_FLAGS([ dnl
|
|
||||||
-Wall dnl
|
|
||||||
-Wextra dnl
|
|
||||||
-Wundef dnl
|
|
||||||
-Wwrite-strings dnl
|
|
||||||
-Wpointer-arith dnl
|
|
||||||
-Wmissing-declarations dnl
|
|
||||||
-Wredundant-decls dnl
|
|
||||||
-Wno-unused-parameter dnl
|
|
||||||
-Wno-missing-field-initializers dnl
|
|
||||||
-Wformat=2 dnl
|
|
||||||
-Wcast-align dnl
|
|
||||||
-Wformat-nonliteral dnl
|
|
||||||
-Wformat-security dnl
|
|
||||||
-Wsign-compare dnl
|
|
||||||
-Wstrict-aliasing dnl
|
|
||||||
-Wshadow dnl
|
|
||||||
-Winline dnl
|
|
||||||
-Wpacked dnl
|
|
||||||
-Wmissing-format-attribute dnl
|
|
||||||
-Wmissing-noreturn dnl
|
|
||||||
-Winit-self dnl
|
|
||||||
-Wredundant-decls dnl
|
|
||||||
-Wmissing-include-dirs dnl
|
|
||||||
-Wunused-but-set-variable dnl
|
|
||||||
-Warray-bounds dnl
|
|
||||||
-Wreturn-type dnl
|
|
||||||
-Wswitch-enum dnl
|
|
||||||
-Wswitch-default dnl
|
|
||||||
-Wduplicated-cond dnl
|
|
||||||
-Wduplicated-branches dnl
|
|
||||||
-Wlogical-op dnl
|
|
||||||
-Wrestrict dnl
|
|
||||||
-Wnull-dereference dnl
|
|
||||||
-Wdouble-promotion dnl
|
|
||||||
$4 dnl
|
|
||||||
$5 dnl
|
|
||||||
$6 dnl
|
|
||||||
$7 dnl
|
|
||||||
],ax_warn_cflags_variable,[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" = "error"],[
|
|
||||||
# "error" flags; -Werror has to be appended unconditionally because
|
|
||||||
# it's not possible to test for
|
|
||||||
#
|
|
||||||
# suggest-attribute=format is disabled because it gives too many false
|
|
||||||
# positives
|
|
||||||
AX_APPEND_FLAG([-Werror],ax_warn_cflags_variable)
|
|
||||||
|
|
||||||
AX_APPEND_COMPILE_FLAGS([ dnl
|
|
||||||
[$ax_compiler_no_suggest_attribute_flags] dnl
|
|
||||||
],ax_warn_cflags_variable,[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
|
|
||||||
# In the flags below, when disabling specific flags, always add *both*
|
|
||||||
# -Wno-foo and -Wno-error=foo. This fixes the situation where (for example)
|
|
||||||
# we enable -Werror, disable a flag, and a build bot passes CFLAGS=-Wall,
|
|
||||||
# which effectively turns that flag back on again as an error.
|
|
||||||
for flag in $ax_warn_cflags_variable; do
|
|
||||||
AS_CASE([$flag],
|
|
||||||
[-Wno-*=*],[],
|
|
||||||
[-Wno-*],[
|
|
||||||
AX_APPEND_COMPILE_FLAGS([-Wno-error=$(AS_ECHO([$flag]) | $SED 's/^-Wno-//')],
|
|
||||||
ax_warn_cflags_variable,
|
|
||||||
[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
done
|
|
||||||
|
|
||||||
AC_LANG_POP([C])
|
|
||||||
|
|
||||||
# Substitute the variables
|
|
||||||
AC_SUBST(ax_warn_cflags_variable)
|
|
||||||
])dnl AX_COMPILER_FLAGS
|
|
|
@ -1,136 +0,0 @@
|
||||||
# ===============================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_cxxflags.html
|
|
||||||
# ===============================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_COMPILER_FLAGS_CXXFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Add warning flags for the C++ compiler to VARIABLE, which defaults to
|
|
||||||
# WARN_CXXFLAGS. VARIABLE is AC_SUBST-ed by this macro, but must be
|
|
||||||
# manually added to the CXXFLAGS variable for each target in the code
|
|
||||||
# base.
|
|
||||||
#
|
|
||||||
# This macro depends on the environment set up by AX_COMPILER_FLAGS.
|
|
||||||
# Specifically, it uses the value of $ax_enable_compile_warnings to decide
|
|
||||||
# which flags to enable.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2015 David King <amigadave@amigadave.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 10
|
|
||||||
|
|
||||||
AC_DEFUN([AX_COMPILER_FLAGS_CXXFLAGS],[
|
|
||||||
AC_REQUIRE([AC_PROG_SED])
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_COMPILE_FLAGS])
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
||||||
AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
|
|
||||||
|
|
||||||
# Variable names
|
|
||||||
m4_define([ax_warn_cxxflags_variable],
|
|
||||||
[m4_normalize(ifelse([$1],,[WARN_CXXFLAGS],[$1]))])
|
|
||||||
|
|
||||||
AC_LANG_PUSH([C++])
|
|
||||||
|
|
||||||
# Always pass -Werror=unknown-warning-option to get Clang to fail on bad
|
|
||||||
# flags, otherwise they are always appended to the warn_cxxflags variable,
|
|
||||||
# and Clang warns on them for every compilation unit.
|
|
||||||
# If this is passed to GCC, it will explode, so the flag must be enabled
|
|
||||||
# conditionally.
|
|
||||||
AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
|
|
||||||
ax_compiler_flags_test="-Werror=unknown-warning-option"
|
|
||||||
],[
|
|
||||||
ax_compiler_flags_test=""
|
|
||||||
])
|
|
||||||
|
|
||||||
# Check that -Wno-suggest-attribute=format is supported
|
|
||||||
AX_CHECK_COMPILE_FLAG([-Wno-suggest-attribute=format],[
|
|
||||||
ax_compiler_no_suggest_attribute_flags="-Wno-suggest-attribute=format"
|
|
||||||
],[
|
|
||||||
ax_compiler_no_suggest_attribute_flags=""
|
|
||||||
])
|
|
||||||
|
|
||||||
# Base flags
|
|
||||||
AX_APPEND_COMPILE_FLAGS([ dnl
|
|
||||||
-fno-strict-aliasing dnl
|
|
||||||
$3 dnl
|
|
||||||
],ax_warn_cxxflags_variable,[$ax_compiler_flags_test])
|
|
||||||
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" != "no"],[
|
|
||||||
# "yes" flags
|
|
||||||
AX_APPEND_COMPILE_FLAGS([ dnl
|
|
||||||
-Wall dnl
|
|
||||||
-Wextra dnl
|
|
||||||
-Wundef dnl
|
|
||||||
-Wwrite-strings dnl
|
|
||||||
-Wpointer-arith dnl
|
|
||||||
-Wmissing-declarations dnl
|
|
||||||
-Wredundant-decls dnl
|
|
||||||
-Wno-unused-parameter dnl
|
|
||||||
-Wno-missing-field-initializers dnl
|
|
||||||
-Wformat=2 dnl
|
|
||||||
-Wcast-align dnl
|
|
||||||
-Wformat-nonliteral dnl
|
|
||||||
-Wformat-security dnl
|
|
||||||
-Wsign-compare dnl
|
|
||||||
-Wstrict-aliasing dnl
|
|
||||||
-Wshadow dnl
|
|
||||||
-Winline dnl
|
|
||||||
-Wpacked dnl
|
|
||||||
-Wmissing-format-attribute dnl
|
|
||||||
-Wmissing-noreturn dnl
|
|
||||||
-Winit-self dnl
|
|
||||||
-Wredundant-decls dnl
|
|
||||||
-Wmissing-include-dirs dnl
|
|
||||||
-Wunused-but-set-variable dnl
|
|
||||||
-Warray-bounds dnl
|
|
||||||
-Wreturn-type dnl
|
|
||||||
-Wno-overloaded-virtual dnl
|
|
||||||
-Wswitch-enum dnl
|
|
||||||
-Wswitch-default dnl
|
|
||||||
$4 dnl
|
|
||||||
$5 dnl
|
|
||||||
$6 dnl
|
|
||||||
$7 dnl
|
|
||||||
],ax_warn_cxxflags_variable,[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" = "error"],[
|
|
||||||
# "error" flags; -Werror has to be appended unconditionally because
|
|
||||||
# it's not possible to test for
|
|
||||||
#
|
|
||||||
# suggest-attribute=format is disabled because it gives too many false
|
|
||||||
# positives
|
|
||||||
AX_APPEND_FLAG([-Werror],ax_warn_cxxflags_variable)
|
|
||||||
|
|
||||||
AX_APPEND_COMPILE_FLAGS([ dnl
|
|
||||||
[$ax_compiler_no_suggest_attribute_flags] dnl
|
|
||||||
],ax_warn_cxxflags_variable,[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
|
|
||||||
# In the flags below, when disabling specific flags, always add *both*
|
|
||||||
# -Wno-foo and -Wno-error=foo. This fixes the situation where (for example)
|
|
||||||
# we enable -Werror, disable a flag, and a build bot passes CXXFLAGS=-Wall,
|
|
||||||
# which effectively turns that flag back on again as an error.
|
|
||||||
for flag in $ax_warn_cxxflags_variable; do
|
|
||||||
AS_CASE([$flag],
|
|
||||||
[-Wno-*=*],[],
|
|
||||||
[-Wno-*],[
|
|
||||||
AX_APPEND_COMPILE_FLAGS([-Wno-error=$(AS_ECHO([$flag]) | $SED 's/^-Wno-//')],
|
|
||||||
ax_warn_cxxflags_variable,
|
|
||||||
[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
done
|
|
||||||
|
|
||||||
AC_LANG_POP([C++])
|
|
||||||
|
|
||||||
# Substitute the variables
|
|
||||||
AC_SUBST(ax_warn_cxxflags_variable)
|
|
||||||
])dnl AX_COMPILER_FLAGS_CXXFLAGS
|
|
|
@ -1,60 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_gir.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_COMPILER_FLAGS_GIR([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Add warning flags for the g-ir-scanner (from GObject Introspection) to
|
|
||||||
# VARIABLE, which defaults to WARN_SCANNERFLAGS. VARIABLE is AC_SUBST-ed
|
|
||||||
# by this macro, but must be manually added to the SCANNERFLAGS variable
|
|
||||||
# for each GIR target in the code base.
|
|
||||||
#
|
|
||||||
# This macro depends on the environment set up by AX_COMPILER_FLAGS.
|
|
||||||
# Specifically, it uses the value of $ax_enable_compile_warnings to decide
|
|
||||||
# which flags to enable.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 6
|
|
||||||
|
|
||||||
AC_DEFUN([AX_COMPILER_FLAGS_GIR],[
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
||||||
|
|
||||||
# Variable names
|
|
||||||
m4_define([ax_warn_scannerflags_variable],
|
|
||||||
[m4_normalize(ifelse([$1],,[WARN_SCANNERFLAGS],[$1]))])
|
|
||||||
|
|
||||||
# Base flags
|
|
||||||
AX_APPEND_FLAG([$3],ax_warn_scannerflags_variable)
|
|
||||||
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" != "no"],[
|
|
||||||
# "yes" flags
|
|
||||||
AX_APPEND_FLAG([ dnl
|
|
||||||
--warn-all dnl
|
|
||||||
$4 dnl
|
|
||||||
$5 dnl
|
|
||||||
$6 dnl
|
|
||||||
$7 dnl
|
|
||||||
],ax_warn_scannerflags_variable)
|
|
||||||
])
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" = "error"],[
|
|
||||||
# "error" flags
|
|
||||||
AX_APPEND_FLAG([ dnl
|
|
||||||
--warn-error dnl
|
|
||||||
],ax_warn_scannerflags_variable)
|
|
||||||
])
|
|
||||||
|
|
||||||
# Substitute the variables
|
|
||||||
AC_SUBST(ax_warn_scannerflags_variable)
|
|
||||||
])dnl AX_COMPILER_FLAGS
|
|
|
@ -1,111 +0,0 @@
|
||||||
# ==============================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_compiler_flags_ldflags.html
|
|
||||||
# ==============================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_COMPILER_FLAGS_LDFLAGS([VARIABLE], [IS-RELEASE], [EXTRA-BASE-FLAGS], [EXTRA-YES-FLAGS])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Add warning flags for the linker to VARIABLE, which defaults to
|
|
||||||
# WARN_LDFLAGS. VARIABLE is AC_SUBST-ed by this macro, but must be
|
|
||||||
# manually added to the LDFLAGS variable for each target in the code base.
|
|
||||||
#
|
|
||||||
# This macro depends on the environment set up by AX_COMPILER_FLAGS.
|
|
||||||
# Specifically, it uses the value of $ax_enable_compile_warnings to decide
|
|
||||||
# which flags to enable.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2014, 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
||||||
# Copyright (c) 2017, 2018 Reini Urban <rurban@cpan.org>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 9
|
|
||||||
|
|
||||||
AC_DEFUN([AX_COMPILER_FLAGS_LDFLAGS],[
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_LINK_FLAGS])
|
|
||||||
AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
|
|
||||||
AX_REQUIRE_DEFINED([AX_CHECK_COMPILE_FLAG])
|
|
||||||
AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
|
|
||||||
|
|
||||||
# Variable names
|
|
||||||
m4_define([ax_warn_ldflags_variable],
|
|
||||||
[m4_normalize(ifelse([$1],,[WARN_LDFLAGS],[$1]))])
|
|
||||||
|
|
||||||
# Always pass -Werror=unknown-warning-option to get Clang to fail on bad
|
|
||||||
# flags, otherwise they are always appended to the warn_ldflags variable,
|
|
||||||
# and Clang warns on them for every compilation unit.
|
|
||||||
# If this is passed to GCC, it will explode, so the flag must be enabled
|
|
||||||
# conditionally.
|
|
||||||
AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
|
|
||||||
ax_compiler_flags_test="-Werror=unknown-warning-option"
|
|
||||||
],[
|
|
||||||
ax_compiler_flags_test=""
|
|
||||||
])
|
|
||||||
|
|
||||||
AX_CHECK_LINK_FLAG([-Wl,--as-needed], [
|
|
||||||
AX_APPEND_LINK_FLAGS([-Wl,--as-needed],
|
|
||||||
[AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
AX_CHECK_LINK_FLAG([-Wl,-z,relro], [
|
|
||||||
AX_APPEND_LINK_FLAGS([-Wl,-z,relro],
|
|
||||||
[AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
AX_CHECK_LINK_FLAG([-Wl,-z,now], [
|
|
||||||
AX_APPEND_LINK_FLAGS([-Wl,-z,now],
|
|
||||||
[AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
AX_CHECK_LINK_FLAG([-Wl,-z,noexecstack], [
|
|
||||||
AX_APPEND_LINK_FLAGS([-Wl,-z,noexecstack],
|
|
||||||
[AM_LDFLAGS],[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
# textonly, retpolineplt not yet
|
|
||||||
|
|
||||||
# macOS and cygwin linker do not have --as-needed
|
|
||||||
AX_CHECK_LINK_FLAG([-Wl,--no-as-needed], [
|
|
||||||
ax_compiler_flags_as_needed_option="-Wl,--no-as-needed"
|
|
||||||
], [
|
|
||||||
ax_compiler_flags_as_needed_option=""
|
|
||||||
])
|
|
||||||
|
|
||||||
# macOS linker speaks with a different accent
|
|
||||||
ax_compiler_flags_fatal_warnings_option=""
|
|
||||||
AX_CHECK_LINK_FLAG([-Wl,--fatal-warnings], [
|
|
||||||
ax_compiler_flags_fatal_warnings_option="-Wl,--fatal-warnings"
|
|
||||||
])
|
|
||||||
AX_CHECK_LINK_FLAG([-Wl,-fatal_warnings], [
|
|
||||||
ax_compiler_flags_fatal_warnings_option="-Wl,-fatal_warnings"
|
|
||||||
])
|
|
||||||
|
|
||||||
# Base flags
|
|
||||||
AX_APPEND_LINK_FLAGS([ dnl
|
|
||||||
$ax_compiler_flags_as_needed_option dnl
|
|
||||||
$3 dnl
|
|
||||||
],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
|
|
||||||
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" != "no"],[
|
|
||||||
# "yes" flags
|
|
||||||
AX_APPEND_LINK_FLAGS([$4 $5 $6 $7],
|
|
||||||
ax_warn_ldflags_variable,
|
|
||||||
[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
AS_IF([test "$ax_enable_compile_warnings" = "error"],[
|
|
||||||
# "error" flags; -Werror has to be appended unconditionally because
|
|
||||||
# it's not possible to test for
|
|
||||||
#
|
|
||||||
# suggest-attribute=format is disabled because it gives too many false
|
|
||||||
# positives
|
|
||||||
AX_APPEND_LINK_FLAGS([ dnl
|
|
||||||
$ax_compiler_flags_fatal_warnings_option dnl
|
|
||||||
],ax_warn_ldflags_variable,[$ax_compiler_flags_test])
|
|
||||||
])
|
|
||||||
|
|
||||||
# Substitute the variables
|
|
||||||
AC_SUBST(ax_warn_ldflags_variable)
|
|
||||||
])dnl AX_COMPILER_FLAGS
|
|
|
@ -1,948 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CXX_COMPILE_STDCXX(VERSION, [ext|noext], [mandatory|optional])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Check for baseline language coverage in the compiler for the specified
|
|
||||||
# version of the C++ standard. If necessary, add switches to CXX and
|
|
||||||
# CXXCPP to enable support. VERSION may be '11' (for the C++11 standard)
|
|
||||||
# or '14' (for the C++14 standard).
|
|
||||||
#
|
|
||||||
# The second argument, if specified, indicates whether you insist on an
|
|
||||||
# extended mode (e.g. -std=gnu++11) or a strict conformance mode (e.g.
|
|
||||||
# -std=c++11). If neither is specified, you get whatever works, with
|
|
||||||
# preference for an extended mode.
|
|
||||||
#
|
|
||||||
# The third argument, if specified 'mandatory' or if left unspecified,
|
|
||||||
# indicates that baseline support for the specified C++ standard is
|
|
||||||
# required and that the macro should error out if no mode with that
|
|
||||||
# support is found. If specified 'optional', then configuration proceeds
|
|
||||||
# regardless, after defining HAVE_CXX${VERSION} if and only if a
|
|
||||||
# supporting mode is found.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
|
|
||||||
# Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
|
|
||||||
# Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
|
|
||||||
# Copyright (c) 2014, 2015 Google Inc.; contributed by Alexey Sokolov <sokolov@google.com>
|
|
||||||
# Copyright (c) 2015 Paul Norman <penorman@mac.com>
|
|
||||||
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
|
|
||||||
# Copyright (c) 2016, 2018 Krzesimir Nowak <qdlacz@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 10
|
|
||||||
|
|
||||||
dnl This macro is based on the code from the AX_CXX_COMPILE_STDCXX_11 macro
|
|
||||||
dnl (serial version number 13).
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CXX_COMPILE_STDCXX], [dnl
|
|
||||||
m4_if([$1], [11], [ax_cxx_compile_alternatives="11 0x"],
|
|
||||||
[$1], [14], [ax_cxx_compile_alternatives="14 1y"],
|
|
||||||
[$1], [17], [ax_cxx_compile_alternatives="17 1z"],
|
|
||||||
[m4_fatal([invalid first argument `$1' to AX_CXX_COMPILE_STDCXX])])dnl
|
|
||||||
m4_if([$2], [], [],
|
|
||||||
[$2], [ext], [],
|
|
||||||
[$2], [noext], [],
|
|
||||||
[m4_fatal([invalid second argument `$2' to AX_CXX_COMPILE_STDCXX])])dnl
|
|
||||||
m4_if([$3], [], [ax_cxx_compile_cxx$1_required=true],
|
|
||||||
[$3], [mandatory], [ax_cxx_compile_cxx$1_required=true],
|
|
||||||
[$3], [optional], [ax_cxx_compile_cxx$1_required=false],
|
|
||||||
[m4_fatal([invalid third argument `$3' to AX_CXX_COMPILE_STDCXX])])
|
|
||||||
AC_LANG_PUSH([C++])dnl
|
|
||||||
ac_success=no
|
|
||||||
|
|
||||||
m4_if([$2], [noext], [], [dnl
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
for alternative in ${ax_cxx_compile_alternatives}; do
|
|
||||||
switch="-std=gnu++${alternative}"
|
|
||||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
|
||||||
$cachevar,
|
|
||||||
[ac_save_CXX="$CXX"
|
|
||||||
CXX="$CXX $switch"
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
|
||||||
[eval $cachevar=yes],
|
|
||||||
[eval $cachevar=no])
|
|
||||||
CXX="$ac_save_CXX"])
|
|
||||||
if eval test x\$$cachevar = xyes; then
|
|
||||||
CXX="$CXX $switch"
|
|
||||||
if test -n "$CXXCPP" ; then
|
|
||||||
CXXCPP="$CXXCPP $switch"
|
|
||||||
fi
|
|
||||||
ac_success=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi])
|
|
||||||
|
|
||||||
m4_if([$2], [ext], [], [dnl
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
dnl HP's aCC needs +std=c++11 according to:
|
|
||||||
dnl http://h21007.www2.hp.com/portal/download/files/unprot/aCxx/PDF_Release_Notes/769149-001.pdf
|
|
||||||
dnl Cray's crayCC needs "-h std=c++11"
|
|
||||||
for alternative in ${ax_cxx_compile_alternatives}; do
|
|
||||||
for switch in -std=c++${alternative} +std=c++${alternative} "-h std=c++${alternative}"; do
|
|
||||||
cachevar=AS_TR_SH([ax_cv_cxx_compile_cxx$1_$switch])
|
|
||||||
AC_CACHE_CHECK(whether $CXX supports C++$1 features with $switch,
|
|
||||||
$cachevar,
|
|
||||||
[ac_save_CXX="$CXX"
|
|
||||||
CXX="$CXX $switch"
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_SOURCE([_AX_CXX_COMPILE_STDCXX_testbody_$1])],
|
|
||||||
[eval $cachevar=yes],
|
|
||||||
[eval $cachevar=no])
|
|
||||||
CXX="$ac_save_CXX"])
|
|
||||||
if eval test x\$$cachevar = xyes; then
|
|
||||||
CXX="$CXX $switch"
|
|
||||||
if test -n "$CXXCPP" ; then
|
|
||||||
CXXCPP="$CXXCPP $switch"
|
|
||||||
fi
|
|
||||||
ac_success=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test x$ac_success = xyes; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi])
|
|
||||||
AC_LANG_POP([C++])
|
|
||||||
if test x$ax_cxx_compile_cxx$1_required = xtrue; then
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
AC_MSG_ERROR([*** A compiler with support for C++$1 language features is required.])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test x$ac_success = xno; then
|
|
||||||
HAVE_CXX$1=0
|
|
||||||
AC_MSG_NOTICE([No compiler with C++$1 support was found])
|
|
||||||
else
|
|
||||||
HAVE_CXX$1=1
|
|
||||||
AC_DEFINE(HAVE_CXX$1,1,
|
|
||||||
[define if the compiler supports basic C++$1 syntax])
|
|
||||||
fi
|
|
||||||
AC_SUBST(HAVE_CXX$1)
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Test body for checking C++11 support
|
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_11],
|
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
dnl Test body for checking C++14 support
|
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_14],
|
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
|
||||||
)
|
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_17],
|
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_11
|
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_14
|
|
||||||
_AX_CXX_COMPILE_STDCXX_testbody_new_in_17
|
|
||||||
)
|
|
||||||
|
|
||||||
dnl Tests for new features in C++11
|
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_11], [[
|
|
||||||
|
|
||||||
// If the compiler admits that it is not ready for C++11, why torture it?
|
|
||||||
// Hopefully, this will speed up the test.
|
|
||||||
|
|
||||||
#ifndef __cplusplus
|
|
||||||
|
|
||||||
#error "This is not a C++ compiler"
|
|
||||||
|
|
||||||
#elif __cplusplus < 201103L
|
|
||||||
|
|
||||||
#error "This is not a C++11 compiler"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
namespace cxx11
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace test_static_assert
|
|
||||||
{
|
|
||||||
|
|
||||||
template <typename T>
|
|
||||||
struct check
|
|
||||||
{
|
|
||||||
static_assert(sizeof(int) <= sizeof(T), "not big enough");
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_final_override
|
|
||||||
{
|
|
||||||
|
|
||||||
struct Base
|
|
||||||
{
|
|
||||||
virtual void f() {}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Derived : public Base
|
|
||||||
{
|
|
||||||
virtual void f() override {}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_double_right_angle_brackets
|
|
||||||
{
|
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
struct check {};
|
|
||||||
|
|
||||||
typedef check<void> single_type;
|
|
||||||
typedef check<check<void>> double_type;
|
|
||||||
typedef check<check<check<void>>> triple_type;
|
|
||||||
typedef check<check<check<check<void>>>> quadruple_type;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_decltype
|
|
||||||
{
|
|
||||||
|
|
||||||
int
|
|
||||||
f()
|
|
||||||
{
|
|
||||||
int a = 1;
|
|
||||||
decltype(a) b = 2;
|
|
||||||
return a + b;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_type_deduction
|
|
||||||
{
|
|
||||||
|
|
||||||
template < typename T1, typename T2 >
|
|
||||||
struct is_same
|
|
||||||
{
|
|
||||||
static const bool value = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
struct is_same<T, T>
|
|
||||||
{
|
|
||||||
static const bool value = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
template < typename T1, typename T2 >
|
|
||||||
auto
|
|
||||||
add(T1 a1, T2 a2) -> decltype(a1 + a2)
|
|
||||||
{
|
|
||||||
return a1 + a2;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
test(const int c, volatile int v)
|
|
||||||
{
|
|
||||||
static_assert(is_same<int, decltype(0)>::value == true, "");
|
|
||||||
static_assert(is_same<int, decltype(c)>::value == false, "");
|
|
||||||
static_assert(is_same<int, decltype(v)>::value == false, "");
|
|
||||||
auto ac = c;
|
|
||||||
auto av = v;
|
|
||||||
auto sumi = ac + av + 'x';
|
|
||||||
auto sumf = ac + av + 1.0;
|
|
||||||
static_assert(is_same<int, decltype(ac)>::value == true, "");
|
|
||||||
static_assert(is_same<int, decltype(av)>::value == true, "");
|
|
||||||
static_assert(is_same<int, decltype(sumi)>::value == true, "");
|
|
||||||
static_assert(is_same<int, decltype(sumf)>::value == false, "");
|
|
||||||
static_assert(is_same<int, decltype(add(c, v))>::value == true, "");
|
|
||||||
return (sumf > 0.0) ? sumi : add(c, v);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_noexcept
|
|
||||||
{
|
|
||||||
|
|
||||||
int f() { return 0; }
|
|
||||||
int g() noexcept { return 0; }
|
|
||||||
|
|
||||||
static_assert(noexcept(f()) == false, "");
|
|
||||||
static_assert(noexcept(g()) == true, "");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_constexpr
|
|
||||||
{
|
|
||||||
|
|
||||||
template < typename CharT >
|
|
||||||
unsigned long constexpr
|
|
||||||
strlen_c_r(const CharT *const s, const unsigned long acc) noexcept
|
|
||||||
{
|
|
||||||
return *s ? strlen_c_r(s + 1, acc + 1) : acc;
|
|
||||||
}
|
|
||||||
|
|
||||||
template < typename CharT >
|
|
||||||
unsigned long constexpr
|
|
||||||
strlen_c(const CharT *const s) noexcept
|
|
||||||
{
|
|
||||||
return strlen_c_r(s, 0UL);
|
|
||||||
}
|
|
||||||
|
|
||||||
static_assert(strlen_c("") == 0UL, "");
|
|
||||||
static_assert(strlen_c("1") == 1UL, "");
|
|
||||||
static_assert(strlen_c("example") == 7UL, "");
|
|
||||||
static_assert(strlen_c("another\0example") == 7UL, "");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_rvalue_references
|
|
||||||
{
|
|
||||||
|
|
||||||
template < int N >
|
|
||||||
struct answer
|
|
||||||
{
|
|
||||||
static constexpr int value = N;
|
|
||||||
};
|
|
||||||
|
|
||||||
answer<1> f(int&) { return answer<1>(); }
|
|
||||||
answer<2> f(const int&) { return answer<2>(); }
|
|
||||||
answer<3> f(int&&) { return answer<3>(); }
|
|
||||||
|
|
||||||
void
|
|
||||||
test()
|
|
||||||
{
|
|
||||||
int i = 0;
|
|
||||||
const int c = 0;
|
|
||||||
static_assert(decltype(f(i))::value == 1, "");
|
|
||||||
static_assert(decltype(f(c))::value == 2, "");
|
|
||||||
static_assert(decltype(f(0))::value == 3, "");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_uniform_initialization
|
|
||||||
{
|
|
||||||
|
|
||||||
struct test
|
|
||||||
{
|
|
||||||
static const int zero {};
|
|
||||||
static const int one {1};
|
|
||||||
};
|
|
||||||
|
|
||||||
static_assert(test::zero == 0, "");
|
|
||||||
static_assert(test::one == 1, "");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_lambdas
|
|
||||||
{
|
|
||||||
|
|
||||||
void
|
|
||||||
test1()
|
|
||||||
{
|
|
||||||
auto lambda1 = [](){};
|
|
||||||
auto lambda2 = lambda1;
|
|
||||||
lambda1();
|
|
||||||
lambda2();
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
test2()
|
|
||||||
{
|
|
||||||
auto a = [](int i, int j){ return i + j; }(1, 2);
|
|
||||||
auto b = []() -> int { return '0'; }();
|
|
||||||
auto c = [=](){ return a + b; }();
|
|
||||||
auto d = [&](){ return c; }();
|
|
||||||
auto e = [a, &b](int x) mutable {
|
|
||||||
const auto identity = [](int y){ return y; };
|
|
||||||
for (auto i = 0; i < a; ++i)
|
|
||||||
a += b--;
|
|
||||||
return x + identity(a + b);
|
|
||||||
}(0);
|
|
||||||
return a + b + c + d + e;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
test3()
|
|
||||||
{
|
|
||||||
const auto nullary = [](){ return 0; };
|
|
||||||
const auto unary = [](int x){ return x; };
|
|
||||||
using nullary_t = decltype(nullary);
|
|
||||||
using unary_t = decltype(unary);
|
|
||||||
const auto higher1st = [](nullary_t f){ return f(); };
|
|
||||||
const auto higher2nd = [unary](nullary_t f1){
|
|
||||||
return [unary, f1](unary_t f2){ return f2(unary(f1())); };
|
|
||||||
};
|
|
||||||
return higher1st(nullary) + higher2nd(nullary)(unary);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_variadic_templates
|
|
||||||
{
|
|
||||||
|
|
||||||
template <int...>
|
|
||||||
struct sum;
|
|
||||||
|
|
||||||
template <int N0, int... N1toN>
|
|
||||||
struct sum<N0, N1toN...>
|
|
||||||
{
|
|
||||||
static constexpr auto value = N0 + sum<N1toN...>::value;
|
|
||||||
};
|
|
||||||
|
|
||||||
template <>
|
|
||||||
struct sum<>
|
|
||||||
{
|
|
||||||
static constexpr auto value = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
static_assert(sum<>::value == 0, "");
|
|
||||||
static_assert(sum<1>::value == 1, "");
|
|
||||||
static_assert(sum<23>::value == 23, "");
|
|
||||||
static_assert(sum<1, 2>::value == 3, "");
|
|
||||||
static_assert(sum<5, 5, 11>::value == 21, "");
|
|
||||||
static_assert(sum<2, 3, 5, 7, 11, 13>::value == 41, "");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// http://stackoverflow.com/questions/13728184/template-aliases-and-sfinae
|
|
||||||
// Clang 3.1 fails with headers of libstd++ 4.8.3 when using std::function
|
|
||||||
// because of this.
|
|
||||||
namespace test_template_alias_sfinae
|
|
||||||
{
|
|
||||||
|
|
||||||
struct foo {};
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
using member = typename T::member_type;
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
void func(...) {}
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
void func(member<T>*) {}
|
|
||||||
|
|
||||||
void test();
|
|
||||||
|
|
||||||
void test() { func<foo>(0); }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace cxx11
|
|
||||||
|
|
||||||
#endif // __cplusplus >= 201103L
|
|
||||||
|
|
||||||
]])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Tests for new features in C++14
|
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_14], [[
|
|
||||||
|
|
||||||
// If the compiler admits that it is not ready for C++14, why torture it?
|
|
||||||
// Hopefully, this will speed up the test.
|
|
||||||
|
|
||||||
#ifndef __cplusplus
|
|
||||||
|
|
||||||
#error "This is not a C++ compiler"
|
|
||||||
|
|
||||||
#elif __cplusplus < 201402L
|
|
||||||
|
|
||||||
#error "This is not a C++14 compiler"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
namespace cxx14
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace test_polymorphic_lambdas
|
|
||||||
{
|
|
||||||
|
|
||||||
int
|
|
||||||
test()
|
|
||||||
{
|
|
||||||
const auto lambda = [](auto&&... args){
|
|
||||||
const auto istiny = [](auto x){
|
|
||||||
return (sizeof(x) == 1UL) ? 1 : 0;
|
|
||||||
};
|
|
||||||
const int aretiny[] = { istiny(args)... };
|
|
||||||
return aretiny[0];
|
|
||||||
};
|
|
||||||
return lambda(1, 1L, 1.0f, '1');
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_binary_literals
|
|
||||||
{
|
|
||||||
|
|
||||||
constexpr auto ivii = 0b0000000000101010;
|
|
||||||
static_assert(ivii == 42, "wrong value");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_generalized_constexpr
|
|
||||||
{
|
|
||||||
|
|
||||||
template < typename CharT >
|
|
||||||
constexpr unsigned long
|
|
||||||
strlen_c(const CharT *const s) noexcept
|
|
||||||
{
|
|
||||||
auto length = 0UL;
|
|
||||||
for (auto p = s; *p; ++p)
|
|
||||||
++length;
|
|
||||||
return length;
|
|
||||||
}
|
|
||||||
|
|
||||||
static_assert(strlen_c("") == 0UL, "");
|
|
||||||
static_assert(strlen_c("x") == 1UL, "");
|
|
||||||
static_assert(strlen_c("test") == 4UL, "");
|
|
||||||
static_assert(strlen_c("another\0test") == 7UL, "");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_lambda_init_capture
|
|
||||||
{
|
|
||||||
|
|
||||||
int
|
|
||||||
test()
|
|
||||||
{
|
|
||||||
auto x = 0;
|
|
||||||
const auto lambda1 = [a = x](int b){ return a + b; };
|
|
||||||
const auto lambda2 = [a = lambda1(x)](){ return a; };
|
|
||||||
return lambda2();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_digit_separators
|
|
||||||
{
|
|
||||||
|
|
||||||
constexpr auto ten_million = 100'000'000;
|
|
||||||
static_assert(ten_million == 100000000, "");
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_return_type_deduction
|
|
||||||
{
|
|
||||||
|
|
||||||
auto f(int& x) { return x; }
|
|
||||||
decltype(auto) g(int& x) { return x; }
|
|
||||||
|
|
||||||
template < typename T1, typename T2 >
|
|
||||||
struct is_same
|
|
||||||
{
|
|
||||||
static constexpr auto value = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
template < typename T >
|
|
||||||
struct is_same<T, T>
|
|
||||||
{
|
|
||||||
static constexpr auto value = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
|
||||||
test()
|
|
||||||
{
|
|
||||||
auto x = 0;
|
|
||||||
static_assert(is_same<int, decltype(f(x))>::value, "");
|
|
||||||
static_assert(is_same<int&, decltype(g(x))>::value, "");
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace cxx14
|
|
||||||
|
|
||||||
#endif // __cplusplus >= 201402L
|
|
||||||
|
|
||||||
]])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Tests for new features in C++17
|
|
||||||
|
|
||||||
m4_define([_AX_CXX_COMPILE_STDCXX_testbody_new_in_17], [[
|
|
||||||
|
|
||||||
// If the compiler admits that it is not ready for C++17, why torture it?
|
|
||||||
// Hopefully, this will speed up the test.
|
|
||||||
|
|
||||||
#ifndef __cplusplus
|
|
||||||
|
|
||||||
#error "This is not a C++ compiler"
|
|
||||||
|
|
||||||
#elif __cplusplus < 201703L
|
|
||||||
|
|
||||||
#error "This is not a C++17 compiler"
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#include <initializer_list>
|
|
||||||
#include <utility>
|
|
||||||
#include <type_traits>
|
|
||||||
|
|
||||||
namespace cxx17
|
|
||||||
{
|
|
||||||
|
|
||||||
namespace test_constexpr_lambdas
|
|
||||||
{
|
|
||||||
|
|
||||||
constexpr int foo = [](){return 42;}();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test::nested_namespace::definitions
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_fold_expression
|
|
||||||
{
|
|
||||||
|
|
||||||
template<typename... Args>
|
|
||||||
int multiply(Args... args)
|
|
||||||
{
|
|
||||||
return (args * ... * 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<typename... Args>
|
|
||||||
bool all(Args... args)
|
|
||||||
{
|
|
||||||
return (args && ...);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_extended_static_assert
|
|
||||||
{
|
|
||||||
|
|
||||||
static_assert (true);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_auto_brace_init_list
|
|
||||||
{
|
|
||||||
|
|
||||||
auto foo = {5};
|
|
||||||
auto bar {5};
|
|
||||||
|
|
||||||
static_assert(std::is_same<std::initializer_list<int>, decltype(foo)>::value);
|
|
||||||
static_assert(std::is_same<int, decltype(bar)>::value);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_typename_in_template_template_parameter
|
|
||||||
{
|
|
||||||
|
|
||||||
template<template<typename> typename X> struct D;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_fallthrough_nodiscard_maybe_unused_attributes
|
|
||||||
{
|
|
||||||
|
|
||||||
int f1()
|
|
||||||
{
|
|
||||||
return 42;
|
|
||||||
}
|
|
||||||
|
|
||||||
[[nodiscard]] int f2()
|
|
||||||
{
|
|
||||||
[[maybe_unused]] auto unused = f1();
|
|
||||||
|
|
||||||
switch (f1())
|
|
||||||
{
|
|
||||||
case 17:
|
|
||||||
f1();
|
|
||||||
[[fallthrough]];
|
|
||||||
case 42:
|
|
||||||
f1();
|
|
||||||
}
|
|
||||||
return f1();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_extended_aggregate_initialization
|
|
||||||
{
|
|
||||||
|
|
||||||
struct base1
|
|
||||||
{
|
|
||||||
int b1, b2 = 42;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct base2
|
|
||||||
{
|
|
||||||
base2() {
|
|
||||||
b3 = 42;
|
|
||||||
}
|
|
||||||
int b3;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct derived : base1, base2
|
|
||||||
{
|
|
||||||
int d;
|
|
||||||
};
|
|
||||||
|
|
||||||
derived d1 {{1, 2}, {}, 4}; // full initialization
|
|
||||||
derived d2 {{}, {}, 4}; // value-initialized bases
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_general_range_based_for_loop
|
|
||||||
{
|
|
||||||
|
|
||||||
struct iter
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
int& operator* ()
|
|
||||||
{
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int& operator* () const
|
|
||||||
{
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
|
|
||||||
iter& operator++()
|
|
||||||
{
|
|
||||||
++i;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct sentinel
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool operator== (const iter& i, const sentinel& s)
|
|
||||||
{
|
|
||||||
return i.i == s.i;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator!= (const iter& i, const sentinel& s)
|
|
||||||
{
|
|
||||||
return !(i == s);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct range
|
|
||||||
{
|
|
||||||
iter begin() const
|
|
||||||
{
|
|
||||||
return {0};
|
|
||||||
}
|
|
||||||
|
|
||||||
sentinel end() const
|
|
||||||
{
|
|
||||||
return {5};
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
void f()
|
|
||||||
{
|
|
||||||
range r {};
|
|
||||||
|
|
||||||
for (auto i : r)
|
|
||||||
{
|
|
||||||
[[maybe_unused]] auto v = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_lambda_capture_asterisk_this_by_value
|
|
||||||
{
|
|
||||||
|
|
||||||
struct t
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int foo()
|
|
||||||
{
|
|
||||||
return [*this]()
|
|
||||||
{
|
|
||||||
return i;
|
|
||||||
}();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_enum_class_construction
|
|
||||||
{
|
|
||||||
|
|
||||||
enum class byte : unsigned char
|
|
||||||
{};
|
|
||||||
|
|
||||||
byte foo {42};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_constexpr_if
|
|
||||||
{
|
|
||||||
|
|
||||||
template <bool cond>
|
|
||||||
int f ()
|
|
||||||
{
|
|
||||||
if constexpr(cond)
|
|
||||||
{
|
|
||||||
return 13;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return 42;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_selection_statement_with_initializer
|
|
||||||
{
|
|
||||||
|
|
||||||
int f()
|
|
||||||
{
|
|
||||||
return 13;
|
|
||||||
}
|
|
||||||
|
|
||||||
int f2()
|
|
||||||
{
|
|
||||||
if (auto i = f(); i > 0)
|
|
||||||
{
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (auto i = f(); i + 4)
|
|
||||||
{
|
|
||||||
case 17:
|
|
||||||
return 2;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_template_argument_deduction_for_class_templates
|
|
||||||
{
|
|
||||||
|
|
||||||
template <typename T1, typename T2>
|
|
||||||
struct pair
|
|
||||||
{
|
|
||||||
pair (T1 p1, T2 p2)
|
|
||||||
: m1 {p1},
|
|
||||||
m2 {p2}
|
|
||||||
{}
|
|
||||||
|
|
||||||
T1 m1;
|
|
||||||
T2 m2;
|
|
||||||
};
|
|
||||||
|
|
||||||
void f()
|
|
||||||
{
|
|
||||||
[[maybe_unused]] auto p = pair{13, 42u};
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_non_type_auto_template_parameters
|
|
||||||
{
|
|
||||||
|
|
||||||
template <auto n>
|
|
||||||
struct B
|
|
||||||
{};
|
|
||||||
|
|
||||||
B<5> b1;
|
|
||||||
B<'a'> b2;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_structured_bindings
|
|
||||||
{
|
|
||||||
|
|
||||||
int arr[2] = { 1, 2 };
|
|
||||||
std::pair<int, int> pr = { 1, 2 };
|
|
||||||
|
|
||||||
auto f1() -> int(&)[2]
|
|
||||||
{
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto f2() -> std::pair<int, int>&
|
|
||||||
{
|
|
||||||
return pr;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct S
|
|
||||||
{
|
|
||||||
int x1 : 2;
|
|
||||||
volatile double y1;
|
|
||||||
};
|
|
||||||
|
|
||||||
S f3()
|
|
||||||
{
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
auto [ x1, y1 ] = f1();
|
|
||||||
auto& [ xr1, yr1 ] = f1();
|
|
||||||
auto [ x2, y2 ] = f2();
|
|
||||||
auto& [ xr2, yr2 ] = f2();
|
|
||||||
const auto [ x3, y3 ] = f3();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_exception_spec_type_system
|
|
||||||
{
|
|
||||||
|
|
||||||
struct Good {};
|
|
||||||
struct Bad {};
|
|
||||||
|
|
||||||
void g1() noexcept;
|
|
||||||
void g2();
|
|
||||||
|
|
||||||
template<typename T>
|
|
||||||
Bad
|
|
||||||
f(T*, T*);
|
|
||||||
|
|
||||||
template<typename T1, typename T2>
|
|
||||||
Good
|
|
||||||
f(T1*, T2*);
|
|
||||||
|
|
||||||
static_assert (std::is_same_v<Good, decltype(f(g1, g2))>);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace test_inline_variables
|
|
||||||
{
|
|
||||||
|
|
||||||
template<class T> void f(T)
|
|
||||||
{}
|
|
||||||
|
|
||||||
template<class T> inline T g(T)
|
|
||||||
{
|
|
||||||
return T{};
|
|
||||||
}
|
|
||||||
|
|
||||||
template<> inline void f<>(int)
|
|
||||||
{}
|
|
||||||
|
|
||||||
template<> int g<>(int)
|
|
||||||
{
|
|
||||||
return 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace cxx17
|
|
||||||
|
|
||||||
#endif // __cplusplus < 201703L
|
|
||||||
|
|
||||||
]])
|
|
|
@ -1,35 +0,0 @@
|
||||||
# =============================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_cxx_compile_stdcxx_17.html
|
|
||||||
# =============================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_CXX_COMPILE_STDCXX_17([ext|noext], [mandatory|optional])
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Check for baseline language coverage in the compiler for the C++17
|
|
||||||
# standard; if necessary, add switches to CXX and CXXCPP to enable
|
|
||||||
# support.
|
|
||||||
#
|
|
||||||
# This macro is a convenience alias for calling the AX_CXX_COMPILE_STDCXX
|
|
||||||
# macro with the version set to C++17. The two optional arguments are
|
|
||||||
# forwarded literally as the second and third argument respectively.
|
|
||||||
# Please see the documentation for the AX_CXX_COMPILE_STDCXX macro for
|
|
||||||
# more information. If you want to use this macro, you also need to
|
|
||||||
# download the ax_cxx_compile_stdcxx.m4 file.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
|
|
||||||
# Copyright (c) 2016 Krzesimir Nowak <qdlacz@gmail.com>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 2
|
|
||||||
|
|
||||||
AX_REQUIRE_DEFINED([AX_CXX_COMPILE_STDCXX])
|
|
||||||
AC_DEFUN([AX_CXX_COMPILE_STDCXX_17], [AX_CXX_COMPILE_STDCXX([17], [$1], [$2])])
|
|
|
@ -1,30 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_file_escapes.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_FILE_ESCAPES
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Writes the specified data to the specified file.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 Tom Howard <tomhoward@users.sf.net>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 8
|
|
||||||
|
|
||||||
AC_DEFUN([AX_FILE_ESCAPES],[
|
|
||||||
AX_DOLLAR="\$"
|
|
||||||
AX_SRB="\\135"
|
|
||||||
AX_SLB="\\133"
|
|
||||||
AX_BS="\\\\"
|
|
||||||
AX_DQ="\""
|
|
||||||
])
|
|
|
@ -1,80 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_is_release.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_IS_RELEASE(POLICY)
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Determine whether the code is being configured as a release, or from
|
|
||||||
# git. Set the ax_is_release variable to 'yes' or 'no'.
|
|
||||||
#
|
|
||||||
# If building a release version, it is recommended that the configure
|
|
||||||
# script disable compiler errors and debug features, by conditionalising
|
|
||||||
# them on the ax_is_release variable. If building from git, these
|
|
||||||
# features should be enabled.
|
|
||||||
#
|
|
||||||
# The POLICY parameter specifies how ax_is_release is determined. It can
|
|
||||||
# take the following values:
|
|
||||||
#
|
|
||||||
# * git-directory: ax_is_release will be 'no' if a '.git' directory exists
|
|
||||||
# * minor-version: ax_is_release will be 'no' if the minor version number
|
|
||||||
# in $PACKAGE_VERSION is odd; this assumes
|
|
||||||
# $PACKAGE_VERSION follows the 'major.minor.micro' scheme
|
|
||||||
# * micro-version: ax_is_release will be 'no' if the micro version number
|
|
||||||
# in $PACKAGE_VERSION is odd; this assumes
|
|
||||||
# $PACKAGE_VERSION follows the 'major.minor.micro' scheme
|
|
||||||
# * dash-version: ax_is_release will be 'no' if there is a dash '-'
|
|
||||||
# in $PACKAGE_VERSION, for example 1.2-pre3, 1.2.42-a8b9
|
|
||||||
# or 2.0-dirty (in particular this is suitable for use
|
|
||||||
# with git-version-gen)
|
|
||||||
# * always: ax_is_release will always be 'yes'
|
|
||||||
# * never: ax_is_release will always be 'no'
|
|
||||||
#
|
|
||||||
# Other policies may be added in future.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2015 Philip Withnall <philip@tecnocode.co.uk>
|
|
||||||
# Copyright (c) 2016 Collabora Ltd.
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved.
|
|
||||||
|
|
||||||
#serial 7
|
|
||||||
|
|
||||||
AC_DEFUN([AX_IS_RELEASE],[
|
|
||||||
AC_BEFORE([AC_INIT],[$0])
|
|
||||||
|
|
||||||
m4_case([$1],
|
|
||||||
[git-directory],[
|
|
||||||
# $is_release = (.git directory does not exist)
|
|
||||||
AS_IF([test -d ${srcdir}/.git],[ax_is_release=no],[ax_is_release=yes])
|
|
||||||
],
|
|
||||||
[minor-version],[
|
|
||||||
# $is_release = ($minor_version is even)
|
|
||||||
minor_version=`echo "$PACKAGE_VERSION" | sed 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
|
|
||||||
AS_IF([test "$(( $minor_version % 2 ))" -ne 0],
|
|
||||||
[ax_is_release=no],[ax_is_release=yes])
|
|
||||||
],
|
|
||||||
[micro-version],[
|
|
||||||
# $is_release = ($micro_version is even)
|
|
||||||
micro_version=`echo "$PACKAGE_VERSION" | sed 's/[[^.]]*\.[[^.]]*\.\([[^.]]*\).*/\1/'`
|
|
||||||
AS_IF([test "$(( $micro_version % 2 ))" -ne 0],
|
|
||||||
[ax_is_release=no],[ax_is_release=yes])
|
|
||||||
],
|
|
||||||
[dash-version],[
|
|
||||||
# $is_release = ($PACKAGE_VERSION has a dash)
|
|
||||||
AS_CASE([$PACKAGE_VERSION],
|
|
||||||
[*-*], [ax_is_release=no],
|
|
||||||
[*], [ax_is_release=yes])
|
|
||||||
],
|
|
||||||
[always],[ax_is_release=yes],
|
|
||||||
[never],[ax_is_release=no],
|
|
||||||
[
|
|
||||||
AC_MSG_ERROR([Invalid policy. Valid policies: git-directory, minor-version, micro-version, dash-version, always, never.])
|
|
||||||
])
|
|
||||||
])
|
|
|
@ -1,109 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_lib_readline.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_LIB_READLINE
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# Searches for a readline compatible library. If found, defines
|
|
||||||
# `HAVE_LIBREADLINE'. If the found library has the `add_history' function,
|
|
||||||
# sets also `HAVE_READLINE_HISTORY'. Also checks for the locations of the
|
|
||||||
# necessary include files and sets `HAVE_READLINE_H' or
|
|
||||||
# `HAVE_READLINE_READLINE_H' and `HAVE_READLINE_HISTORY_H' or
|
|
||||||
# 'HAVE_HISTORY_H' if the corresponding include files exists.
|
|
||||||
#
|
|
||||||
# The libraries that may be readline compatible are `libedit',
|
|
||||||
# `libeditline' and `libreadline'. Sometimes we need to link a termcap
|
|
||||||
# library for readline to work, this macro tests these cases too by trying
|
|
||||||
# to link with `libtermcap', `libcurses' or `libncurses' before giving up.
|
|
||||||
#
|
|
||||||
# Here is an example of how to use the information provided by this macro
|
|
||||||
# to perform the necessary includes or declarations in a C file:
|
|
||||||
#
|
|
||||||
# #ifdef HAVE_LIBREADLINE
|
|
||||||
# # if defined(HAVE_READLINE_READLINE_H)
|
|
||||||
# # include <readline/readline.h>
|
|
||||||
# # elif defined(HAVE_READLINE_H)
|
|
||||||
# # include <readline.h>
|
|
||||||
# # else /* !defined(HAVE_READLINE_H) */
|
|
||||||
# extern char *readline ();
|
|
||||||
# # endif /* !defined(HAVE_READLINE_H) */
|
|
||||||
# char *cmdline = NULL;
|
|
||||||
# #else /* !defined(HAVE_READLINE_READLINE_H) */
|
|
||||||
# /* no readline */
|
|
||||||
# #endif /* HAVE_LIBREADLINE */
|
|
||||||
#
|
|
||||||
# #ifdef HAVE_READLINE_HISTORY
|
|
||||||
# # if defined(HAVE_READLINE_HISTORY_H)
|
|
||||||
# # include <readline/history.h>
|
|
||||||
# # elif defined(HAVE_HISTORY_H)
|
|
||||||
# # include <history.h>
|
|
||||||
# # else /* !defined(HAVE_HISTORY_H) */
|
|
||||||
# extern void add_history ();
|
|
||||||
# extern int write_history ();
|
|
||||||
# extern int read_history ();
|
|
||||||
# # endif /* defined(HAVE_READLINE_HISTORY_H) */
|
|
||||||
# /* no history */
|
|
||||||
# #endif /* HAVE_READLINE_HISTORY */
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2008 Ville Laurikari <vl@iki.fi>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 8
|
|
||||||
|
|
||||||
AU_ALIAS([VL_LIB_READLINE], [AX_LIB_READLINE])
|
|
||||||
AC_DEFUN([AX_LIB_READLINE], [
|
|
||||||
AC_CACHE_CHECK([for a readline compatible library],
|
|
||||||
ax_cv_lib_readline, [
|
|
||||||
ORIG_LIBS="$LIBS"
|
|
||||||
# djcb: we need the _real_ readline_
|
|
||||||
#for readline_lib in readline edit editline; do
|
|
||||||
for readline_lib in readline; do
|
|
||||||
for termcap_lib in "" termcap curses ncurses; do
|
|
||||||
if test -z "$termcap_lib"; then
|
|
||||||
TRY_LIB="-l$readline_lib"
|
|
||||||
else
|
|
||||||
TRY_LIB="-l$readline_lib -l$termcap_lib"
|
|
||||||
fi
|
|
||||||
LIBS="$ORIG_LIBS $TRY_LIB"
|
|
||||||
AC_LINK_IFELSE([AC_LANG_CALL([], [readline])], [ax_cv_lib_readline="$TRY_LIB"])
|
|
||||||
if test -n "$ax_cv_lib_readline"; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -n "$ax_cv_lib_readline"; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$ax_cv_lib_readline"; then
|
|
||||||
ax_cv_lib_readline="no"
|
|
||||||
fi
|
|
||||||
LIBS="$ORIG_LIBS"
|
|
||||||
])
|
|
||||||
|
|
||||||
if test "$ax_cv_lib_readline" != "no"; then
|
|
||||||
LIBS="$LIBS $ax_cv_lib_readline"
|
|
||||||
AC_DEFINE(HAVE_LIBREADLINE, 1,
|
|
||||||
[Define if you have a readline compatible library])
|
|
||||||
AC_CHECK_HEADERS(readline.h readline/readline.h)
|
|
||||||
AC_CACHE_CHECK([whether readline supports history],
|
|
||||||
ax_cv_lib_readline_history, [
|
|
||||||
ax_cv_lib_readline_history="no"
|
|
||||||
AC_LINK_IFELSE([AC_LANG_CALL([], [add_history])], [ax_cv_lib_readline_history="yes"])
|
|
||||||
])
|
|
||||||
if test "$ax_cv_lib_readline_history" = "yes"; then
|
|
||||||
AC_DEFINE(HAVE_READLINE_HISTORY, 1,
|
|
||||||
[Define if your readline library has \`add_history'])
|
|
||||||
AC_CHECK_HEADERS(history.h readline/history.h)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])dnl
|
|
|
@ -1,37 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_REQUIRE_DEFINED(MACRO)
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
|
|
||||||
# been defined and thus are available for use. This avoids random issues
|
|
||||||
# where a macro isn't expanded. Instead the configure script emits a
|
|
||||||
# non-fatal:
|
|
||||||
#
|
|
||||||
# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
|
|
||||||
#
|
|
||||||
# It's like AC_REQUIRE except it doesn't expand the required macro.
|
|
||||||
#
|
|
||||||
# Here's an example:
|
|
||||||
#
|
|
||||||
# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 2
|
|
||||||
|
|
||||||
AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
|
|
||||||
m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
|
|
||||||
])dnl AX_REQUIRE_DEFINED
|
|
|
@ -1,239 +0,0 @@
|
||||||
# ===========================================================================
|
|
||||||
# https://www.gnu.org/software/autoconf-archive/ax_valgrind_check.html
|
|
||||||
# ===========================================================================
|
|
||||||
#
|
|
||||||
# SYNOPSIS
|
|
||||||
#
|
|
||||||
# AX_VALGRIND_DFLT(memcheck|helgrind|drd|sgcheck, on|off)
|
|
||||||
# AX_VALGRIND_CHECK()
|
|
||||||
#
|
|
||||||
# DESCRIPTION
|
|
||||||
#
|
|
||||||
# AX_VALGRIND_CHECK checks whether Valgrind is present and, if so, allows
|
|
||||||
# running `make check` under a variety of Valgrind tools to check for
|
|
||||||
# memory and threading errors.
|
|
||||||
#
|
|
||||||
# Defines VALGRIND_CHECK_RULES which should be substituted in your
|
|
||||||
# Makefile; and $enable_valgrind which can be used in subsequent configure
|
|
||||||
# output. VALGRIND_ENABLED is defined and substituted, and corresponds to
|
|
||||||
# the value of the --enable-valgrind option, which defaults to being
|
|
||||||
# enabled if Valgrind is installed and disabled otherwise. Individual
|
|
||||||
# Valgrind tools can be disabled via --disable-valgrind-<tool>, the
|
|
||||||
# default is configurable via the AX_VALGRIND_DFLT command or is to use
|
|
||||||
# all commands not disabled via AX_VALGRIND_DFLT. All AX_VALGRIND_DFLT
|
|
||||||
# calls must be made before the call to AX_VALGRIND_CHECK.
|
|
||||||
#
|
|
||||||
# If unit tests are written using a shell script and automake's
|
|
||||||
# LOG_COMPILER system, the $(VALGRIND) variable can be used within the
|
|
||||||
# shell scripts to enable Valgrind, as described here:
|
|
||||||
#
|
|
||||||
# https://www.gnu.org/software/gnulib/manual/html_node/Running-self_002dtests-under-valgrind.html
|
|
||||||
#
|
|
||||||
# Usage example:
|
|
||||||
#
|
|
||||||
# configure.ac:
|
|
||||||
#
|
|
||||||
# AX_VALGRIND_DFLT([sgcheck], [off])
|
|
||||||
# AX_VALGRIND_CHECK
|
|
||||||
#
|
|
||||||
# in each Makefile.am with tests:
|
|
||||||
#
|
|
||||||
# @VALGRIND_CHECK_RULES@
|
|
||||||
# VALGRIND_SUPPRESSIONS_FILES = my-project.supp
|
|
||||||
# EXTRA_DIST = my-project.supp
|
|
||||||
#
|
|
||||||
# This results in a "check-valgrind" rule being added. Running `make
|
|
||||||
# check-valgrind` in that directory will recursively run the module's test
|
|
||||||
# suite (`make check`) once for each of the available Valgrind tools (out
|
|
||||||
# of memcheck, helgrind and drd) while the sgcheck will be skipped unless
|
|
||||||
# enabled again on the commandline with --enable-valgrind-sgcheck. The
|
|
||||||
# results for each check will be output to test-suite-$toolname.log. The
|
|
||||||
# target will succeed if there are zero errors and fail otherwise.
|
|
||||||
#
|
|
||||||
# Alternatively, a "check-valgrind-$TOOL" rule will be added, for $TOOL in
|
|
||||||
# memcheck, helgrind, drd and sgcheck. These are useful because often only
|
|
||||||
# some of those tools can be ran cleanly on a codebase.
|
|
||||||
#
|
|
||||||
# The macro supports running with and without libtool.
|
|
||||||
#
|
|
||||||
# LICENSE
|
|
||||||
#
|
|
||||||
# Copyright (c) 2014, 2015, 2016 Philip Withnall <philip.withnall@collabora.co.uk>
|
|
||||||
#
|
|
||||||
# Copying and distribution of this file, with or without modification, are
|
|
||||||
# permitted in any medium without royalty provided the copyright notice
|
|
||||||
# and this notice are preserved. This file is offered as-is, without any
|
|
||||||
# warranty.
|
|
||||||
|
|
||||||
#serial 17
|
|
||||||
|
|
||||||
dnl Configured tools
|
|
||||||
m4_define([valgrind_tool_list], [[memcheck], [helgrind], [drd], [sgcheck]])
|
|
||||||
m4_set_add_all([valgrind_exp_tool_set], [sgcheck])
|
|
||||||
m4_foreach([vgtool], [valgrind_tool_list],
|
|
||||||
[m4_define([en_dflt_valgrind_]vgtool, [on])])
|
|
||||||
|
|
||||||
AC_DEFUN([AX_VALGRIND_DFLT],[
|
|
||||||
m4_define([en_dflt_valgrind_$1], [$2])
|
|
||||||
])dnl
|
|
||||||
|
|
||||||
AM_EXTRA_RECURSIVE_TARGETS([check-valgrind])
|
|
||||||
m4_foreach([vgtool], [valgrind_tool_list],
|
|
||||||
[AM_EXTRA_RECURSIVE_TARGETS([check-valgrind-]vgtool)])
|
|
||||||
|
|
||||||
AC_DEFUN([AX_VALGRIND_CHECK],[
|
|
||||||
dnl Check for --enable-valgrind
|
|
||||||
AC_ARG_ENABLE([valgrind],
|
|
||||||
[AS_HELP_STRING([--enable-valgrind], [Whether to enable Valgrind on the unit tests])],
|
|
||||||
[enable_valgrind=$enableval],[enable_valgrind=])
|
|
||||||
|
|
||||||
AS_IF([test "$enable_valgrind" != "no"],[
|
|
||||||
# Check for Valgrind.
|
|
||||||
AC_CHECK_PROG([VALGRIND],[valgrind],[valgrind])
|
|
||||||
AS_IF([test "$VALGRIND" = ""],[
|
|
||||||
AS_IF([test "$enable_valgrind" = "yes"],[
|
|
||||||
AC_MSG_ERROR([Could not find valgrind; either install it or reconfigure with --disable-valgrind])
|
|
||||||
],[
|
|
||||||
enable_valgrind=no
|
|
||||||
])
|
|
||||||
],[
|
|
||||||
enable_valgrind=yes
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
AM_CONDITIONAL([VALGRIND_ENABLED],[test "$enable_valgrind" = "yes"])
|
|
||||||
AC_SUBST([VALGRIND_ENABLED],[$enable_valgrind])
|
|
||||||
|
|
||||||
# Check for Valgrind tools we care about.
|
|
||||||
[valgrind_enabled_tools=]
|
|
||||||
m4_foreach([vgtool],[valgrind_tool_list],[
|
|
||||||
AC_ARG_ENABLE([valgrind-]vgtool,
|
|
||||||
m4_if(m4_defn([en_dflt_valgrind_]vgtool),[off],dnl
|
|
||||||
[AS_HELP_STRING([--enable-valgrind-]vgtool, [Whether to use ]vgtool[ during the Valgrind tests])],dnl
|
|
||||||
[AS_HELP_STRING([--disable-valgrind-]vgtool, [Whether to skip ]vgtool[ during the Valgrind tests])]),
|
|
||||||
[enable_valgrind_]vgtool[=$enableval],
|
|
||||||
[enable_valgrind_]vgtool[=])
|
|
||||||
AS_IF([test "$enable_valgrind" = "no"],[
|
|
||||||
enable_valgrind_]vgtool[=no],
|
|
||||||
[test "$enable_valgrind_]vgtool[" ]dnl
|
|
||||||
m4_if(m4_defn([en_dflt_valgrind_]vgtool), [off], [= "yes"], [!= "no"]),[
|
|
||||||
AC_CACHE_CHECK([for Valgrind tool ]vgtool,
|
|
||||||
[ax_cv_valgrind_tool_]vgtool,[
|
|
||||||
ax_cv_valgrind_tool_]vgtool[=no
|
|
||||||
m4_set_contains([valgrind_exp_tool_set],vgtool,
|
|
||||||
[m4_define([vgtoolx],[exp-]vgtool)],
|
|
||||||
[m4_define([vgtoolx],vgtool)])
|
|
||||||
AS_IF([`$VALGRIND --tool=]vgtoolx[ --help >/dev/null 2>&1`],[
|
|
||||||
ax_cv_valgrind_tool_]vgtool[=yes
|
|
||||||
])
|
|
||||||
])
|
|
||||||
AS_IF([test "$ax_cv_valgrind_tool_]vgtool[" = "no"],[
|
|
||||||
AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[
|
|
||||||
AC_MSG_ERROR([Valgrind does not support ]vgtool[; reconfigure with --disable-valgrind-]vgtool)
|
|
||||||
],[
|
|
||||||
enable_valgrind_]vgtool[=no
|
|
||||||
])
|
|
||||||
],[
|
|
||||||
enable_valgrind_]vgtool[=yes
|
|
||||||
])
|
|
||||||
])
|
|
||||||
AS_IF([test "$enable_valgrind_]vgtool[" = "yes"],[
|
|
||||||
valgrind_enabled_tools="$valgrind_enabled_tools ]m4_bpatsubst(vgtool,[^exp-])["
|
|
||||||
])
|
|
||||||
AC_SUBST([ENABLE_VALGRIND_]vgtool,[$enable_valgrind_]vgtool)
|
|
||||||
])
|
|
||||||
AC_SUBST([valgrind_tools],["]m4_join([ ], valgrind_tool_list)["])
|
|
||||||
AC_SUBST([valgrind_enabled_tools],[$valgrind_enabled_tools])
|
|
||||||
|
|
||||||
[VALGRIND_CHECK_RULES='
|
|
||||||
# Valgrind check
|
|
||||||
#
|
|
||||||
# Optional:
|
|
||||||
# - VALGRIND_SUPPRESSIONS_FILES: Space-separated list of Valgrind suppressions
|
|
||||||
# files to load. (Default: empty)
|
|
||||||
# - VALGRIND_FLAGS: General flags to pass to all Valgrind tools.
|
|
||||||
# (Default: --num-callers=30)
|
|
||||||
# - VALGRIND_$toolname_FLAGS: Flags to pass to Valgrind $toolname (one of:
|
|
||||||
# memcheck, helgrind, drd, sgcheck). (Default: various)
|
|
||||||
|
|
||||||
# Optional variables
|
|
||||||
VALGRIND_SUPPRESSIONS ?= $(addprefix --suppressions=,$(VALGRIND_SUPPRESSIONS_FILES))
|
|
||||||
VALGRIND_FLAGS ?= --num-callers=30
|
|
||||||
VALGRIND_memcheck_FLAGS ?= --leak-check=full --show-reachable=no
|
|
||||||
VALGRIND_helgrind_FLAGS ?= --history-level=approx
|
|
||||||
VALGRIND_drd_FLAGS ?=
|
|
||||||
VALGRIND_sgcheck_FLAGS ?=
|
|
||||||
|
|
||||||
# Internal use
|
|
||||||
valgrind_log_files = $(addprefix test-suite-,$(addsuffix .log,$(valgrind_tools)))
|
|
||||||
|
|
||||||
valgrind_memcheck_flags = --tool=memcheck $(VALGRIND_memcheck_FLAGS)
|
|
||||||
valgrind_helgrind_flags = --tool=helgrind $(VALGRIND_helgrind_FLAGS)
|
|
||||||
valgrind_drd_flags = --tool=drd $(VALGRIND_drd_FLAGS)
|
|
||||||
valgrind_sgcheck_flags = --tool=exp-sgcheck $(VALGRIND_sgcheck_FLAGS)
|
|
||||||
|
|
||||||
valgrind_quiet = $(valgrind_quiet_$(V))
|
|
||||||
valgrind_quiet_ = $(valgrind_quiet_$(AM_DEFAULT_VERBOSITY))
|
|
||||||
valgrind_quiet_0 = --quiet
|
|
||||||
valgrind_v_use = $(valgrind_v_use_$(V))
|
|
||||||
valgrind_v_use_ = $(valgrind_v_use_$(AM_DEFAULT_VERBOSITY))
|
|
||||||
valgrind_v_use_0 = @echo " USE " $(patsubst check-valgrind-%-am,%,$''@):;
|
|
||||||
|
|
||||||
# Support running with and without libtool.
|
|
||||||
ifneq ($(LIBTOOL),)
|
|
||||||
valgrind_lt = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=execute
|
|
||||||
else
|
|
||||||
valgrind_lt =
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Use recursive makes in order to ignore errors during check
|
|
||||||
check-valgrind-am:
|
|
||||||
ifeq ($(VALGRIND_ENABLED),yes)
|
|
||||||
$(A''M_V_at)$(MAKE) $(AM_MAKEFLAGS) -k \
|
|
||||||
$(foreach tool, $(valgrind_enabled_tools), check-valgrind-$(tool))
|
|
||||||
else
|
|
||||||
@echo "Need to reconfigure with --enable-valgrind"
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Valgrind running
|
|
||||||
VALGRIND_TESTS_ENVIRONMENT = \
|
|
||||||
$(TESTS_ENVIRONMENT) \
|
|
||||||
env VALGRIND=$(VALGRIND) \
|
|
||||||
G_SLICE=always-malloc,debug-blocks \
|
|
||||||
G_DEBUG=fatal-warnings,fatal-criticals,gc-friendly
|
|
||||||
|
|
||||||
VALGRIND_LOG_COMPILER = \
|
|
||||||
$(valgrind_lt) \
|
|
||||||
$(VALGRIND) $(VALGRIND_SUPPRESSIONS) --error-exitcode=1 $(VALGRIND_FLAGS)
|
|
||||||
|
|
||||||
define valgrind_tool_rule
|
|
||||||
check-valgrind-$(1)-am:
|
|
||||||
ifeq ($$(VALGRIND_ENABLED)-$$(ENABLE_VALGRIND_$(1)),yes-yes)
|
|
||||||
ifneq ($$(TESTS),)
|
|
||||||
$$(valgrind_v_use)$$(MAKE) check-TESTS \
|
|
||||||
TESTS_ENVIRONMENT="$$(VALGRIND_TESTS_ENVIRONMENT)" \
|
|
||||||
LOG_COMPILER="$$(VALGRIND_LOG_COMPILER)" \
|
|
||||||
LOG_FLAGS="$$(valgrind_$(1)_flags)" \
|
|
||||||
TEST_SUITE_LOG=test-suite-$(1).log
|
|
||||||
endif
|
|
||||||
else ifeq ($$(VALGRIND_ENABLED),yes)
|
|
||||||
@echo "Need to reconfigure with --enable-valgrind-$(1)"
|
|
||||||
else
|
|
||||||
@echo "Need to reconfigure with --enable-valgrind"
|
|
||||||
endif
|
|
||||||
endef
|
|
||||||
|
|
||||||
$(foreach tool,$(valgrind_tools),$(eval $(call valgrind_tool_rule,$(tool))))
|
|
||||||
|
|
||||||
A''M_DISTCHECK_CONFIGURE_FLAGS ?=
|
|
||||||
A''M_DISTCHECK_CONFIGURE_FLAGS += --disable-valgrind
|
|
||||||
|
|
||||||
MOSTLYCLEANFILES ?=
|
|
||||||
MOSTLYCLEANFILES += $(valgrind_log_files)
|
|
||||||
|
|
||||||
.PHONY: check-valgrind $(add-prefix check-valgrind-,$(valgrind_tools))
|
|
||||||
']
|
|
||||||
|
|
||||||
AC_SUBST([VALGRIND_CHECK_RULES])
|
|
||||||
m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([VALGRIND_CHECK_RULES])])
|
|
||||||
])
|
|
397
m4/guile.m4
397
m4/guile.m4
|
@ -1,397 +0,0 @@
|
||||||
## Autoconf macros for working with Guile.
|
|
||||||
##
|
|
||||||
## Copyright (C) 1998,2001, 2006, 2010, 2012, 2013, 2014 Free Software Foundation, Inc.
|
|
||||||
##
|
|
||||||
## This library is free software; you can redistribute it and/or
|
|
||||||
## modify it under the terms of the GNU Lesser General Public License
|
|
||||||
## as published by the Free Software Foundation; either version 3 of
|
|
||||||
## the License, or (at your option) any later version.
|
|
||||||
##
|
|
||||||
## This library 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
|
|
||||||
## Lesser General Public License for more details.
|
|
||||||
##
|
|
||||||
## You should have received a copy of the GNU Lesser General Public
|
|
||||||
## License along with this library; if not, write to the Free Software
|
|
||||||
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
## 02110-1301 USA
|
|
||||||
|
|
||||||
# serial 10
|
|
||||||
|
|
||||||
## Index
|
|
||||||
## -----
|
|
||||||
##
|
|
||||||
## GUILE_PKG -- find Guile development files
|
|
||||||
## GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
|
|
||||||
## GUILE_FLAGS -- set flags for compiling and linking with Guile
|
|
||||||
## GUILE_SITE_DIR -- find path to Guile "site" directories
|
|
||||||
## GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
|
|
||||||
## GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
|
|
||||||
## GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
|
|
||||||
## GUILE_MODULE_REQUIRED -- fail if a Guile Scheme module is unavailable
|
|
||||||
## GUILE_MODULE_EXPORTS -- check if a module exports a variable
|
|
||||||
## GUILE_MODULE_REQUIRED_EXPORT -- fail if a module doesn't export a variable
|
|
||||||
|
|
||||||
## Code
|
|
||||||
## ----
|
|
||||||
|
|
||||||
## NOTE: Comments preceding an AC_DEFUN (starting from "Usage:") are massaged
|
|
||||||
## into doc/ref/autoconf-macros.texi (see Makefile.am in that directory).
|
|
||||||
|
|
||||||
# GUILE_PKG -- find Guile development files
|
|
||||||
#
|
|
||||||
# Usage: GUILE_PKG([VERSIONS])
|
|
||||||
#
|
|
||||||
# This macro runs the @code{pkg-config} tool to find development files
|
|
||||||
# for an available version of Guile.
|
|
||||||
#
|
|
||||||
# By default, this macro will search for the latest stable version of
|
|
||||||
# Guile (e.g. 3.0), falling back to the previous stable version
|
|
||||||
# (e.g. 2.2) if it is available. If no guile-@var{VERSION}.pc file is
|
|
||||||
# found, an error is signalled. The found version is stored in
|
|
||||||
# @var{GUILE_EFFECTIVE_VERSION}.
|
|
||||||
#
|
|
||||||
# If @code{GUILE_PROGS} was already invoked, this macro ensures that the
|
|
||||||
# development files have the same effective version as the Guile
|
|
||||||
# program.
|
|
||||||
#
|
|
||||||
# @var{GUILE_EFFECTIVE_VERSION} is marked for substitution, as by
|
|
||||||
# @code{AC_SUBST}.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_PKG],
|
|
||||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
|
|
||||||
if test "x$PKG_CONFIG" = x; then
|
|
||||||
AC_MSG_ERROR([pkg-config is missing, please install it])
|
|
||||||
fi
|
|
||||||
_guile_versions_to_search="m4_default([$1], [3.0 2.2 2.0])"
|
|
||||||
if test -n "$GUILE_EFFECTIVE_VERSION"; then
|
|
||||||
_guile_tmp=""
|
|
||||||
for v in $_guile_versions_to_search; do
|
|
||||||
if test "$v" = "$GUILE_EFFECTIVE_VERSION"; then
|
|
||||||
_guile_tmp=$v
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$_guile_tmp"; then
|
|
||||||
AC_MSG_FAILURE([searching for guile development files for versions $_guile_versions_to_search, but previously found $GUILE version $GUILE_EFFECTIVE_VERSION])
|
|
||||||
fi
|
|
||||||
_guile_versions_to_search=$GUILE_EFFECTIVE_VERSION
|
|
||||||
fi
|
|
||||||
GUILE_EFFECTIVE_VERSION=""
|
|
||||||
_guile_errors=""
|
|
||||||
for v in $_guile_versions_to_search; do
|
|
||||||
if test -z "$GUILE_EFFECTIVE_VERSION"; then
|
|
||||||
AC_MSG_NOTICE([checking for guile $v])
|
|
||||||
PKG_CHECK_EXISTS([guile-$v], [GUILE_EFFECTIVE_VERSION=$v], [])
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if test -z "$GUILE_EFFECTIVE_VERSION"; then
|
|
||||||
AC_MSG_ERROR([
|
|
||||||
No Guile development packages were found.
|
|
||||||
|
|
||||||
Please verify that you have Guile installed. If you installed Guile
|
|
||||||
from a binary distribution, please verify that you have also installed
|
|
||||||
the development packages. If you installed it yourself, you might need
|
|
||||||
to adjust your PKG_CONFIG_PATH; see the pkg-config man page for more.
|
|
||||||
])
|
|
||||||
fi
|
|
||||||
AC_MSG_NOTICE([found guile $GUILE_EFFECTIVE_VERSION])
|
|
||||||
AC_SUBST([GUILE_EFFECTIVE_VERSION])
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_FLAGS -- set flags for compiling and linking with Guile
|
|
||||||
#
|
|
||||||
# Usage: GUILE_FLAGS
|
|
||||||
#
|
|
||||||
# This macro runs the @code{pkg-config} tool to find out how to compile
|
|
||||||
# and link programs against Guile. It sets four variables:
|
|
||||||
# @var{GUILE_CFLAGS}, @var{GUILE_LDFLAGS}, @var{GUILE_LIBS}, and
|
|
||||||
# @var{GUILE_LTLIBS}.
|
|
||||||
#
|
|
||||||
# @var{GUILE_CFLAGS}: flags to pass to a C or C++ compiler to build code that
|
|
||||||
# uses Guile header files. This is almost always just one or more @code{-I}
|
|
||||||
# flags.
|
|
||||||
#
|
|
||||||
# @var{GUILE_LDFLAGS}: flags to pass to the compiler to link a program
|
|
||||||
# against Guile. This includes @code{-lguile-@var{VERSION}} for the
|
|
||||||
# Guile library itself, and may also include one or more @code{-L} flag
|
|
||||||
# to tell the compiler where to find the libraries. But it does not
|
|
||||||
# include flags that influence the program's runtime search path for
|
|
||||||
# libraries, and will therefore lead to a program that fails to start,
|
|
||||||
# unless all necessary libraries are installed in a standard location
|
|
||||||
# such as @file{/usr/lib}.
|
|
||||||
#
|
|
||||||
# @var{GUILE_LIBS} and @var{GUILE_LTLIBS}: flags to pass to the compiler or to
|
|
||||||
# libtool, respectively, to link a program against Guile. It includes flags
|
|
||||||
# that augment the program's runtime search path for libraries, so that shared
|
|
||||||
# libraries will be found at the location where they were during linking, even
|
|
||||||
# in non-standard locations. @var{GUILE_LIBS} is to be used when linking the
|
|
||||||
# program directly with the compiler, whereas @var{GUILE_LTLIBS} is to be used
|
|
||||||
# when linking the program is done through libtool.
|
|
||||||
#
|
|
||||||
# The variables are marked for substitution, as by @code{AC_SUBST}.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_FLAGS],
|
|
||||||
[AC_REQUIRE([GUILE_PKG])
|
|
||||||
PKG_CHECK_MODULES(GUILE, [guile-$GUILE_EFFECTIVE_VERSION])
|
|
||||||
|
|
||||||
dnl GUILE_CFLAGS and GUILE_LIBS are already defined and AC_SUBST'd by
|
|
||||||
dnl PKG_CHECK_MODULES. But GUILE_LIBS to pkg-config is GUILE_LDFLAGS
|
|
||||||
dnl to us.
|
|
||||||
|
|
||||||
GUILE_LDFLAGS=$GUILE_LIBS
|
|
||||||
|
|
||||||
dnl Determine the platform dependent parameters needed to use rpath.
|
|
||||||
dnl AC_LIB_LINKFLAGS_FROM_LIBS is defined in gnulib/m4/lib-link.m4 and needs
|
|
||||||
dnl the file gnulib/build-aux/config.rpath.
|
|
||||||
AC_LIB_LINKFLAGS_FROM_LIBS([GUILE_LIBS], [$GUILE_LDFLAGS], [])
|
|
||||||
GUILE_LIBS="$GUILE_LDFLAGS $GUILE_LIBS"
|
|
||||||
AC_LIB_LINKFLAGS_FROM_LIBS([GUILE_LTLIBS], [$GUILE_LDFLAGS], [yes])
|
|
||||||
GUILE_LTLIBS="$GUILE_LDFLAGS $GUILE_LTLIBS"
|
|
||||||
|
|
||||||
AC_SUBST([GUILE_EFFECTIVE_VERSION])
|
|
||||||
AC_SUBST([GUILE_CFLAGS])
|
|
||||||
AC_SUBST([GUILE_LDFLAGS])
|
|
||||||
AC_SUBST([GUILE_LIBS])
|
|
||||||
AC_SUBST([GUILE_LTLIBS])
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_SITE_DIR -- find path to Guile site directories
|
|
||||||
#
|
|
||||||
# Usage: GUILE_SITE_DIR
|
|
||||||
#
|
|
||||||
# This looks for Guile's "site" directories. The variable @var{GUILE_SITE} will
|
|
||||||
# be set to Guile's "site" directory for Scheme source files (usually something
|
|
||||||
# like PREFIX/share/guile/site). @var{GUILE_SITE_CCACHE} will be set to the
|
|
||||||
# directory for compiled Scheme files also known as @code{.go} files
|
|
||||||
# (usually something like
|
|
||||||
# PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/site-ccache).
|
|
||||||
# @var{GUILE_EXTENSION} will be set to the directory for compiled C extensions
|
|
||||||
# (usually something like
|
|
||||||
# PREFIX/lib/guile/@var{GUILE_EFFECTIVE_VERSION}/extensions). The latter two
|
|
||||||
# are set to blank if the particular version of Guile does not support
|
|
||||||
# them. Note that this macro will run the macros @code{GUILE_PKG} and
|
|
||||||
# @code{GUILE_PROGS} if they have not already been run.
|
|
||||||
#
|
|
||||||
# The variables are marked for substitution, as by @code{AC_SUBST}.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_SITE_DIR],
|
|
||||||
[AC_REQUIRE([GUILE_PKG])
|
|
||||||
AC_REQUIRE([GUILE_PROGS])
|
|
||||||
AC_MSG_CHECKING(for Guile site directory)
|
|
||||||
GUILE_SITE=`$PKG_CONFIG --print-errors --variable=sitedir guile-$GUILE_EFFECTIVE_VERSION`
|
|
||||||
AC_MSG_RESULT($GUILE_SITE)
|
|
||||||
if test "$GUILE_SITE" = ""; then
|
|
||||||
AC_MSG_FAILURE(sitedir not found)
|
|
||||||
fi
|
|
||||||
AC_SUBST(GUILE_SITE)
|
|
||||||
AC_MSG_CHECKING([for Guile site-ccache directory using pkgconfig])
|
|
||||||
GUILE_SITE_CCACHE=`$PKG_CONFIG --variable=siteccachedir guile-$GUILE_EFFECTIVE_VERSION`
|
|
||||||
if test "$GUILE_SITE_CCACHE" = ""; then
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
AC_MSG_CHECKING([for Guile site-ccache directory using interpreter])
|
|
||||||
GUILE_SITE_CCACHE=`$GUILE -c "(display (if (defined? '%site-ccache-dir) (%site-ccache-dir) \"\"))"`
|
|
||||||
if test $? != "0" -o "$GUILE_SITE_CCACHE" = ""; then
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
GUILE_SITE_CCACHE=""
|
|
||||||
AC_MSG_WARN([siteccachedir not found])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT($GUILE_SITE_CCACHE)
|
|
||||||
AC_SUBST([GUILE_SITE_CCACHE])
|
|
||||||
AC_MSG_CHECKING(for Guile extensions directory)
|
|
||||||
GUILE_EXTENSION=`$PKG_CONFIG --print-errors --variable=extensiondir guile-$GUILE_EFFECTIVE_VERSION`
|
|
||||||
AC_MSG_RESULT($GUILE_EXTENSION)
|
|
||||||
if test "$GUILE_EXTENSION" = ""; then
|
|
||||||
GUILE_EXTENSION=""
|
|
||||||
AC_MSG_WARN(extensiondir not found)
|
|
||||||
fi
|
|
||||||
AC_SUBST(GUILE_EXTENSION)
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_PROGS -- set paths to Guile interpreter, config and tool programs
|
|
||||||
#
|
|
||||||
# Usage: GUILE_PROGS([VERSION])
|
|
||||||
#
|
|
||||||
# This macro looks for programs @code{guile} and @code{guild}, setting
|
|
||||||
# variables @var{GUILE} and @var{GUILD} to their paths, respectively.
|
|
||||||
# The macro will attempt to find @code{guile} with the suffix of
|
|
||||||
# @code{-X.Y}, followed by looking for it with the suffix @code{X.Y}, and
|
|
||||||
# then fall back to looking for @code{guile} with no suffix. If
|
|
||||||
# @code{guile} is still not found, signal an error. The suffix, if any,
|
|
||||||
# that was required to find @code{guile} will be used for @code{guild}
|
|
||||||
# as well.
|
|
||||||
#
|
|
||||||
# By default, this macro will search for the latest stable version of
|
|
||||||
# Guile (e.g. 3.0). x.y or x.y.z versions can be specified. If an older
|
|
||||||
# version is found, the macro will signal an error.
|
|
||||||
#
|
|
||||||
# The effective version of the found @code{guile} is set to
|
|
||||||
# @var{GUILE_EFFECTIVE_VERSION}. This macro ensures that the effective
|
|
||||||
# version is compatible with the result of a previous invocation of
|
|
||||||
# @code{GUILE_FLAGS}, if any.
|
|
||||||
#
|
|
||||||
# As a legacy interface, it also looks for @code{guile-config} and
|
|
||||||
# @code{guile-tools}, setting @var{GUILE_CONFIG} and @var{GUILE_TOOLS}.
|
|
||||||
#
|
|
||||||
# The variables are marked for substitution, as by @code{AC_SUBST}.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_PROGS],
|
|
||||||
[_guile_required_version="m4_default([$1], [$GUILE_EFFECTIVE_VERSION])"
|
|
||||||
if test -z "$_guile_required_version"; then
|
|
||||||
_guile_required_version=3.0
|
|
||||||
fi
|
|
||||||
|
|
||||||
_guile_candidates=guile
|
|
||||||
_tmp=
|
|
||||||
for v in `echo "$_guile_required_version" | tr . ' '`; do
|
|
||||||
if test -n "$_tmp"; then _tmp=$_tmp.; fi
|
|
||||||
_tmp=$_tmp$v
|
|
||||||
_guile_candidates="guile-$_tmp guile$_tmp $_guile_candidates"
|
|
||||||
done
|
|
||||||
|
|
||||||
AC_PATH_PROGS(GUILE,[$_guile_candidates])
|
|
||||||
if test -z "$GUILE"; then
|
|
||||||
AC_MSG_ERROR([guile required but not found])
|
|
||||||
fi
|
|
||||||
|
|
||||||
_guile_suffix=`echo "$GUILE" | sed -e 's,^.*/guile\(.*\)$,\1,'`
|
|
||||||
_guile_effective_version=`$GUILE -c "(display (effective-version))"`
|
|
||||||
if test -z "$GUILE_EFFECTIVE_VERSION"; then
|
|
||||||
GUILE_EFFECTIVE_VERSION=$_guile_effective_version
|
|
||||||
elif test "$GUILE_EFFECTIVE_VERSION" != "$_guile_effective_version"; then
|
|
||||||
AC_MSG_ERROR([found development files for Guile $GUILE_EFFECTIVE_VERSION, but $GUILE has effective version $_guile_effective_version])
|
|
||||||
fi
|
|
||||||
|
|
||||||
_guile_major_version=`$GUILE -c "(display (major-version))"`
|
|
||||||
_guile_minor_version=`$GUILE -c "(display (minor-version))"`
|
|
||||||
_guile_micro_version=`$GUILE -c "(display (micro-version))"`
|
|
||||||
_guile_prog_version="$_guile_major_version.$_guile_minor_version.$_guile_micro_version"
|
|
||||||
|
|
||||||
AC_MSG_CHECKING([for Guile version >= $_guile_required_version])
|
|
||||||
_major_version=`echo $_guile_required_version | cut -d . -f 1`
|
|
||||||
_minor_version=`echo $_guile_required_version | cut -d . -f 2`
|
|
||||||
_micro_version=`echo $_guile_required_version | cut -d . -f 3`
|
|
||||||
if test "$_guile_major_version" -gt "$_major_version"; then
|
|
||||||
true
|
|
||||||
elif test "$_guile_major_version" -eq "$_major_version"; then
|
|
||||||
if test "$_guile_minor_version" -gt "$_minor_version"; then
|
|
||||||
true
|
|
||||||
elif test "$_guile_minor_version" -eq "$_minor_version"; then
|
|
||||||
if test -n "$_micro_version"; then
|
|
||||||
if test "$_guile_micro_version" -lt "$_micro_version"; then
|
|
||||||
AC_MSG_ERROR([Guile $_guile_required_version required, but $_guile_prog_version found])
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif test "$GUILE_EFFECTIVE_VERSION" = "$_major_version.$_minor_version" -a -z "$_micro_version"; then
|
|
||||||
# Allow prereleases that have the right effective version.
|
|
||||||
true
|
|
||||||
else
|
|
||||||
as_fn_error $? "Guile $_guile_required_version required, but $_guile_prog_version found" "$LINENO" 5
|
|
||||||
fi
|
|
||||||
elif test "$GUILE_EFFECTIVE_VERSION" = "$_major_version.$_minor_version" -a -z "$_micro_version"; then
|
|
||||||
# Allow prereleases that have the right effective version.
|
|
||||||
true
|
|
||||||
else
|
|
||||||
AC_MSG_ERROR([Guile $_guile_required_version required, but $_guile_prog_version found])
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT([$_guile_prog_version])
|
|
||||||
|
|
||||||
AC_PATH_PROG(GUILD,[guild$_guile_suffix])
|
|
||||||
AC_SUBST(GUILD)
|
|
||||||
|
|
||||||
AC_PATH_PROG(GUILE_CONFIG,[guile-config$_guile_suffix])
|
|
||||||
AC_SUBST(GUILE_CONFIG)
|
|
||||||
if test -n "$GUILD"; then
|
|
||||||
GUILE_TOOLS=$GUILD
|
|
||||||
else
|
|
||||||
AC_PATH_PROG(GUILE_TOOLS,[guile-tools$_guile_suffix])
|
|
||||||
fi
|
|
||||||
AC_SUBST(GUILE_TOOLS)
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_CHECK -- evaluate Guile Scheme code and capture the return value
|
|
||||||
#
|
|
||||||
# Usage: GUILE_CHECK_RETVAL(var,check)
|
|
||||||
#
|
|
||||||
# @var{var} is a shell variable name to be set to the return value.
|
|
||||||
# @var{check} is a Guile Scheme expression, evaluated with "$GUILE -c", and
|
|
||||||
# returning either 0 or non-#f to indicate the check passed.
|
|
||||||
# Non-0 number or #f indicates failure.
|
|
||||||
# Avoid using the character "#" since that confuses autoconf.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_CHECK],
|
|
||||||
[AC_REQUIRE([GUILE_PROGS])
|
|
||||||
$GUILE -c "$2" > /dev/null 2>&1
|
|
||||||
$1=$?
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_MODULE_CHECK -- check feature of a Guile Scheme module
|
|
||||||
#
|
|
||||||
# Usage: GUILE_MODULE_CHECK(var,module,featuretest,description)
|
|
||||||
#
|
|
||||||
# @var{var} is a shell variable name to be set to "yes" or "no".
|
|
||||||
# @var{module} is a list of symbols, like: (ice-9 common-list).
|
|
||||||
# @var{featuretest} is an expression acceptable to GUILE_CHECK, q.v.
|
|
||||||
# @var{description} is a present-tense verb phrase (passed to AC_MSG_CHECKING).
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_MODULE_CHECK],
|
|
||||||
[AC_MSG_CHECKING([if $2 $4])
|
|
||||||
GUILE_CHECK($1,(use-modules $2) (exit ((lambda () $3))))
|
|
||||||
if test "$$1" = "0" ; then $1=yes ; else $1=no ; fi
|
|
||||||
AC_MSG_RESULT($$1)
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_MODULE_AVAILABLE -- check availability of a Guile Scheme module
|
|
||||||
#
|
|
||||||
# Usage: GUILE_MODULE_AVAILABLE(var,module)
|
|
||||||
#
|
|
||||||
# @var{var} is a shell variable name to be set to "yes" or "no".
|
|
||||||
# @var{module} is a list of symbols, like: (ice-9 common-list).
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_MODULE_AVAILABLE],
|
|
||||||
[GUILE_MODULE_CHECK($1,$2,0,is available)
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_MODULE_REQUIRED -- fail if a Guile Scheme module is unavailable
|
|
||||||
#
|
|
||||||
# Usage: GUILE_MODULE_REQUIRED(symlist)
|
|
||||||
#
|
|
||||||
# @var{symlist} is a list of symbols, WITHOUT surrounding parens,
|
|
||||||
# like: ice-9 common-list.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_MODULE_REQUIRED],
|
|
||||||
[GUILE_MODULE_AVAILABLE(ac_guile_module_required, ($1))
|
|
||||||
if test "$ac_guile_module_required" = "no" ; then
|
|
||||||
AC_MSG_ERROR([required guile module not found: ($1)])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_MODULE_EXPORTS -- check if a module exports a variable
|
|
||||||
#
|
|
||||||
# Usage: GUILE_MODULE_EXPORTS(var,module,modvar)
|
|
||||||
#
|
|
||||||
# @var{var} is a shell variable to be set to "yes" or "no".
|
|
||||||
# @var{module} is a list of symbols, like: (ice-9 common-list).
|
|
||||||
# @var{modvar} is the Guile Scheme variable to check.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_MODULE_EXPORTS],
|
|
||||||
[GUILE_MODULE_CHECK($1,$2,$3,exports `$3')
|
|
||||||
])
|
|
||||||
|
|
||||||
# GUILE_MODULE_REQUIRED_EXPORT -- fail if a module doesn't export a variable
|
|
||||||
#
|
|
||||||
# Usage: GUILE_MODULE_REQUIRED_EXPORT(module,modvar)
|
|
||||||
#
|
|
||||||
# @var{module} is a list of symbols, like: (ice-9 common-list).
|
|
||||||
# @var{modvar} is the Guile Scheme variable to check.
|
|
||||||
#
|
|
||||||
AC_DEFUN([GUILE_MODULE_REQUIRED_EXPORT],
|
|
||||||
[GUILE_MODULE_EXPORTS(guile_module_required_export,$1,$2)
|
|
||||||
if test "$guile_module_required_export" = "no" ; then
|
|
||||||
AC_MSG_ERROR([module $1 does not export $2; required])
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
## guile.m4 ends here
|
|
|
@ -1,675 +0,0 @@
|
||||||
# host-cpu-c-abi.m4 serial 13
|
|
||||||
dnl Copyright (C) 2002-2020 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software; the Free Software Foundation
|
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
dnl From Bruno Haible and Sam Steingold.
|
|
||||||
|
|
||||||
dnl Sets the HOST_CPU variable to the canonical name of the CPU.
|
|
||||||
dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
|
|
||||||
dnl C language ABI (application binary interface).
|
|
||||||
dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
|
|
||||||
dnl config.h.
|
|
||||||
dnl
|
|
||||||
dnl This canonical name can be used to select a particular assembly language
|
|
||||||
dnl source file that will interoperate with C code on the given host.
|
|
||||||
dnl
|
|
||||||
dnl For example:
|
|
||||||
dnl * 'i386' and 'sparc' are different canonical names, because code for i386
|
|
||||||
dnl will not run on SPARC CPUs and vice versa. They have different
|
|
||||||
dnl instruction sets.
|
|
||||||
dnl * 'sparc' and 'sparc64' are different canonical names, because code for
|
|
||||||
dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
|
|
||||||
dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
|
|
||||||
dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
|
|
||||||
dnl mode, but not both.
|
|
||||||
dnl * 'mips' and 'mipsn32' are different canonical names, because they use
|
|
||||||
dnl different argument passing and return conventions for C functions, and
|
|
||||||
dnl although the instruction set of 'mips' is a large subset of the
|
|
||||||
dnl instruction set of 'mipsn32'.
|
|
||||||
dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
|
|
||||||
dnl different sizes for the C types like 'int' and 'void *', and although
|
|
||||||
dnl the instruction sets of 'mipsn32' and 'mips64' are the same.
|
|
||||||
dnl * The same canonical name is used for different endiannesses. You can
|
|
||||||
dnl determine the endianness through preprocessor symbols:
|
|
||||||
dnl - 'arm': test __ARMEL__.
|
|
||||||
dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
|
|
||||||
dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
|
|
||||||
dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
|
|
||||||
dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
|
|
||||||
dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
|
|
||||||
dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
|
|
||||||
dnl assembly language source files use such instructions, you will
|
|
||||||
dnl need to make the distinction.
|
|
||||||
dnl - Speed of execution of the common instruction set is reasonable across
|
|
||||||
dnl the entire family of CPUs. If you have assembly language source files
|
|
||||||
dnl that are optimized for particular CPU types (like GNU gmp has), you
|
|
||||||
dnl will need to make the distinction.
|
|
||||||
dnl See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
|
|
||||||
AC_DEFUN([gl_HOST_CPU_C_ABI],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
||||||
AC_REQUIRE([gl_C_ASM])
|
|
||||||
AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
|
|
||||||
[case "$host_cpu" in
|
|
||||||
|
|
||||||
changequote(,)dnl
|
|
||||||
i[34567]86 )
|
|
||||||
changequote([,])dnl
|
|
||||||
gl_cv_host_cpu_c_abi=i386
|
|
||||||
;;
|
|
||||||
|
|
||||||
x86_64 )
|
|
||||||
# On x86_64 systems, the C compiler may be generating code in one of
|
|
||||||
# these ABIs:
|
|
||||||
# - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
|
|
||||||
# - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
|
|
||||||
# with native Windows (mingw, MSVC).
|
|
||||||
# - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
|
|
||||||
# - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if (defined __x86_64__ || defined __amd64__ \
|
|
||||||
|| defined _M_X64 || defined _M_AMD64)
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __ILP32__ || defined _ILP32
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=x86_64-x32],
|
|
||||||
[gl_cv_host_cpu_c_abi=x86_64])],
|
|
||||||
[gl_cv_host_cpu_c_abi=i386])
|
|
||||||
;;
|
|
||||||
|
|
||||||
changequote(,)dnl
|
|
||||||
alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
|
|
||||||
changequote([,])dnl
|
|
||||||
gl_cv_host_cpu_c_abi=alpha
|
|
||||||
;;
|
|
||||||
|
|
||||||
arm* | aarch64 )
|
|
||||||
# Assume arm with EABI.
|
|
||||||
# On arm64 systems, the C compiler may be generating code in one of
|
|
||||||
# these ABIs:
|
|
||||||
# - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
|
|
||||||
# - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
|
|
||||||
# - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#ifdef __aarch64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __ILP32__ || defined _ILP32
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=arm64-ilp32],
|
|
||||||
[gl_cv_host_cpu_c_abi=arm64])],
|
|
||||||
[# Don't distinguish little-endian and big-endian arm, since they
|
|
||||||
# don't require different machine code for simple operations and
|
|
||||||
# since the user can distinguish them through the preprocessor
|
|
||||||
# defines __ARMEL__ vs. __ARMEB__.
|
|
||||||
# But distinguish arm which passes floating-point arguments and
|
|
||||||
# return values in integer registers (r0, r1, ...) - this is
|
|
||||||
# gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
|
|
||||||
# passes them in float registers (s0, s1, ...) and double registers
|
|
||||||
# (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
|
|
||||||
# sets the preprocessor defines __ARM_PCS (for the first case) and
|
|
||||||
# __ARM_PCS_VFP (for the second case), but older GCC does not.
|
|
||||||
echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
|
|
||||||
# Look for a reference to the register d0 in the .s file.
|
|
||||||
AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
|
|
||||||
if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
|
|
||||||
gl_cv_host_cpu_c_abi=armhf
|
|
||||||
else
|
|
||||||
gl_cv_host_cpu_c_abi=arm
|
|
||||||
fi
|
|
||||||
rm -f conftest*
|
|
||||||
])
|
|
||||||
;;
|
|
||||||
|
|
||||||
hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
|
|
||||||
# On hppa, the C compiler may be generating 32-bit code or 64-bit
|
|
||||||
# code. In the latter case, it defines _LP64 and __LP64__.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#ifdef __LP64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=hppa64],
|
|
||||||
[gl_cv_host_cpu_c_abi=hppa])
|
|
||||||
;;
|
|
||||||
|
|
||||||
ia64* )
|
|
||||||
# On ia64 on HP-UX, the C compiler may be generating 64-bit code or
|
|
||||||
# 32-bit code. In the latter case, it defines _ILP32.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#ifdef _ILP32
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=ia64-ilp32],
|
|
||||||
[gl_cv_host_cpu_c_abi=ia64])
|
|
||||||
;;
|
|
||||||
|
|
||||||
mips* )
|
|
||||||
# We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
|
|
||||||
# at 32.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=mips64],
|
|
||||||
[# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
|
|
||||||
# may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
|
|
||||||
# In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
|
|
||||||
# may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if (_MIPS_SIM == _ABIN32)
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=mipsn32],
|
|
||||||
[gl_cv_host_cpu_c_abi=mips])])
|
|
||||||
;;
|
|
||||||
|
|
||||||
powerpc* )
|
|
||||||
# Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
|
|
||||||
# No need to distinguish them here; the caller may distinguish
|
|
||||||
# them based on the OS.
|
|
||||||
# On powerpc64 systems, the C compiler may still be generating
|
|
||||||
# 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
|
|
||||||
# be generating 64-bit code.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __powerpc64__ || defined _ARCH_PPC64
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[# On powerpc64, there are two ABIs on Linux: The AIX compatible
|
|
||||||
# one and the ELFv2 one. The latter defines _CALL_ELF=2.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined _CALL_ELF && _CALL_ELF == 2
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=powerpc64-elfv2],
|
|
||||||
[gl_cv_host_cpu_c_abi=powerpc64])
|
|
||||||
],
|
|
||||||
[gl_cv_host_cpu_c_abi=powerpc])
|
|
||||||
;;
|
|
||||||
|
|
||||||
rs6000 )
|
|
||||||
gl_cv_host_cpu_c_abi=powerpc
|
|
||||||
;;
|
|
||||||
|
|
||||||
riscv32 | riscv64 )
|
|
||||||
# There are 2 architectures (with variants): rv32* and rv64*.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if __riscv_xlen == 64
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[cpu=riscv64],
|
|
||||||
[cpu=riscv32])
|
|
||||||
# There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
|
|
||||||
# Size of 'long' and 'void *':
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __LP64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[main_abi=lp64],
|
|
||||||
[main_abi=ilp32])
|
|
||||||
# Float ABIs:
|
|
||||||
# __riscv_float_abi_double:
|
|
||||||
# 'float' and 'double' are passed in floating-point registers.
|
|
||||||
# __riscv_float_abi_single:
|
|
||||||
# 'float' are passed in floating-point registers.
|
|
||||||
# __riscv_float_abi_soft:
|
|
||||||
# No values are passed in floating-point registers.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __riscv_float_abi_double
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[float_abi=d],
|
|
||||||
[AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __riscv_float_abi_single
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[float_abi=f],
|
|
||||||
[float_abi=''])
|
|
||||||
])
|
|
||||||
gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
|
|
||||||
;;
|
|
||||||
|
|
||||||
s390* )
|
|
||||||
# On s390x, the C compiler may be generating 64-bit (= s390x) code
|
|
||||||
# or 31-bit (= s390) code.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __LP64__ || defined __s390x__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=s390x],
|
|
||||||
[gl_cv_host_cpu_c_abi=s390])
|
|
||||||
;;
|
|
||||||
|
|
||||||
sparc | sparc64 )
|
|
||||||
# UltraSPARCs running Linux have `uname -m` = "sparc64", but the
|
|
||||||
# C compiler still generates 32-bit code.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __sparcv9 || defined __arch64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi=sparc64],
|
|
||||||
[gl_cv_host_cpu_c_abi=sparc])
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
gl_cv_host_cpu_c_abi="$host_cpu"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
|
|
||||||
HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
|
|
||||||
HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
|
|
||||||
AC_SUBST([HOST_CPU])
|
|
||||||
AC_SUBST([HOST_CPU_C_ABI])
|
|
||||||
|
|
||||||
# This was
|
|
||||||
# AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
|
|
||||||
# AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
|
|
||||||
# earlier, but KAI C++ 3.2d doesn't like this.
|
|
||||||
sed -e 's/-/_/g' >> confdefs.h <<EOF
|
|
||||||
#ifndef __${HOST_CPU}__
|
|
||||||
#define __${HOST_CPU}__ 1
|
|
||||||
#endif
|
|
||||||
#ifndef __${HOST_CPU_C_ABI}__
|
|
||||||
#define __${HOST_CPU_C_ABI}__ 1
|
|
||||||
#endif
|
|
||||||
EOF
|
|
||||||
AH_TOP([/* CPU and C ABI indicator */
|
|
||||||
#ifndef __i386__
|
|
||||||
#undef __i386__
|
|
||||||
#endif
|
|
||||||
#ifndef __x86_64_x32__
|
|
||||||
#undef __x86_64_x32__
|
|
||||||
#endif
|
|
||||||
#ifndef __x86_64__
|
|
||||||
#undef __x86_64__
|
|
||||||
#endif
|
|
||||||
#ifndef __alpha__
|
|
||||||
#undef __alpha__
|
|
||||||
#endif
|
|
||||||
#ifndef __arm__
|
|
||||||
#undef __arm__
|
|
||||||
#endif
|
|
||||||
#ifndef __armhf__
|
|
||||||
#undef __armhf__
|
|
||||||
#endif
|
|
||||||
#ifndef __arm64_ilp32__
|
|
||||||
#undef __arm64_ilp32__
|
|
||||||
#endif
|
|
||||||
#ifndef __arm64__
|
|
||||||
#undef __arm64__
|
|
||||||
#endif
|
|
||||||
#ifndef __hppa__
|
|
||||||
#undef __hppa__
|
|
||||||
#endif
|
|
||||||
#ifndef __hppa64__
|
|
||||||
#undef __hppa64__
|
|
||||||
#endif
|
|
||||||
#ifndef __ia64_ilp32__
|
|
||||||
#undef __ia64_ilp32__
|
|
||||||
#endif
|
|
||||||
#ifndef __ia64__
|
|
||||||
#undef __ia64__
|
|
||||||
#endif
|
|
||||||
#ifndef __m68k__
|
|
||||||
#undef __m68k__
|
|
||||||
#endif
|
|
||||||
#ifndef __mips__
|
|
||||||
#undef __mips__
|
|
||||||
#endif
|
|
||||||
#ifndef __mipsn32__
|
|
||||||
#undef __mipsn32__
|
|
||||||
#endif
|
|
||||||
#ifndef __mips64__
|
|
||||||
#undef __mips64__
|
|
||||||
#endif
|
|
||||||
#ifndef __powerpc__
|
|
||||||
#undef __powerpc__
|
|
||||||
#endif
|
|
||||||
#ifndef __powerpc64__
|
|
||||||
#undef __powerpc64__
|
|
||||||
#endif
|
|
||||||
#ifndef __powerpc64_elfv2__
|
|
||||||
#undef __powerpc64_elfv2__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv32__
|
|
||||||
#undef __riscv32__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv64__
|
|
||||||
#undef __riscv64__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv32_ilp32__
|
|
||||||
#undef __riscv32_ilp32__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv32_ilp32f__
|
|
||||||
#undef __riscv32_ilp32f__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv32_ilp32d__
|
|
||||||
#undef __riscv32_ilp32d__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv64_ilp32__
|
|
||||||
#undef __riscv64_ilp32__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv64_ilp32f__
|
|
||||||
#undef __riscv64_ilp32f__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv64_ilp32d__
|
|
||||||
#undef __riscv64_ilp32d__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv64_lp64__
|
|
||||||
#undef __riscv64_lp64__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv64_lp64f__
|
|
||||||
#undef __riscv64_lp64f__
|
|
||||||
#endif
|
|
||||||
#ifndef __riscv64_lp64d__
|
|
||||||
#undef __riscv64_lp64d__
|
|
||||||
#endif
|
|
||||||
#ifndef __s390__
|
|
||||||
#undef __s390__
|
|
||||||
#endif
|
|
||||||
#ifndef __s390x__
|
|
||||||
#undef __s390x__
|
|
||||||
#endif
|
|
||||||
#ifndef __sh__
|
|
||||||
#undef __sh__
|
|
||||||
#endif
|
|
||||||
#ifndef __sparc__
|
|
||||||
#undef __sparc__
|
|
||||||
#endif
|
|
||||||
#ifndef __sparc64__
|
|
||||||
#undef __sparc64__
|
|
||||||
#endif
|
|
||||||
])
|
|
||||||
|
|
||||||
])
|
|
||||||
|
|
||||||
|
|
||||||
dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
|
|
||||||
dnl (application binary interface) is a 32-bit one, to 'no' if it is a 64-bit
|
|
||||||
dnl one, or to 'unknown' if unknown.
|
|
||||||
dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
|
|
||||||
AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
||||||
AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
|
|
||||||
[if test -n "$gl_cv_host_cpu_c_abi"; then
|
|
||||||
case "$gl_cv_host_cpu_c_abi" in
|
|
||||||
i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=yes ;;
|
|
||||||
x86_64 | alpha | arm64 | hppa64 | ia64 | mips64 | powerpc64 | powerpc64-elfv2 | riscv*-lp64* | s390x | sparc64 )
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=no ;;
|
|
||||||
*)
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=unknown ;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
case "$host_cpu" in
|
|
||||||
|
|
||||||
# CPUs that only support a 32-bit ABI.
|
|
||||||
arc \
|
|
||||||
| bfin \
|
|
||||||
| cris* \
|
|
||||||
| csky \
|
|
||||||
| epiphany \
|
|
||||||
| ft32 \
|
|
||||||
| h8300 \
|
|
||||||
| m68k \
|
|
||||||
| microblaze | microblazeel \
|
|
||||||
| nds32 | nds32le | nds32be \
|
|
||||||
| nios2 | nios2eb | nios2el \
|
|
||||||
| or1k* \
|
|
||||||
| or32 \
|
|
||||||
| sh | sh[1234] | sh[1234]e[lb] \
|
|
||||||
| tic6x \
|
|
||||||
| xtensa* )
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=yes
|
|
||||||
;;
|
|
||||||
|
|
||||||
# CPUs that only support a 64-bit ABI.
|
|
||||||
changequote(,)dnl
|
|
||||||
alpha | alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] \
|
|
||||||
| mmix )
|
|
||||||
changequote([,])dnl
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=no
|
|
||||||
;;
|
|
||||||
|
|
||||||
changequote(,)dnl
|
|
||||||
i[34567]86 )
|
|
||||||
changequote([,])dnl
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=yes
|
|
||||||
;;
|
|
||||||
|
|
||||||
x86_64 )
|
|
||||||
# On x86_64 systems, the C compiler may be generating code in one of
|
|
||||||
# these ABIs:
|
|
||||||
# - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
|
|
||||||
# - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
|
|
||||||
# with native Windows (mingw, MSVC).
|
|
||||||
# - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
|
|
||||||
# - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if (defined __x86_64__ || defined __amd64__ \
|
|
||||||
|| defined _M_X64 || defined _M_AMD64) \
|
|
||||||
&& !(defined __ILP32__ || defined _ILP32)
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
arm* | aarch64 )
|
|
||||||
# Assume arm with EABI.
|
|
||||||
# On arm64 systems, the C compiler may be generating code in one of
|
|
||||||
# these ABIs:
|
|
||||||
# - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
|
|
||||||
# - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
|
|
||||||
# - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
|
|
||||||
# On hppa, the C compiler may be generating 32-bit code or 64-bit
|
|
||||||
# code. In the latter case, it defines _LP64 and __LP64__.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#ifdef __LP64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
ia64* )
|
|
||||||
# On ia64 on HP-UX, the C compiler may be generating 64-bit code or
|
|
||||||
# 32-bit code. In the latter case, it defines _ILP32.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#ifdef _ILP32
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no])
|
|
||||||
;;
|
|
||||||
|
|
||||||
mips* )
|
|
||||||
# We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
|
|
||||||
# at 32.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
powerpc* )
|
|
||||||
# Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
|
|
||||||
# No need to distinguish them here; the caller may distinguish
|
|
||||||
# them based on the OS.
|
|
||||||
# On powerpc64 systems, the C compiler may still be generating
|
|
||||||
# 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
|
|
||||||
# be generating 64-bit code.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __powerpc64__ || defined _ARCH_PPC64
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
rs6000 )
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=yes
|
|
||||||
;;
|
|
||||||
|
|
||||||
riscv32 | riscv64 )
|
|
||||||
# There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
|
|
||||||
# Size of 'long' and 'void *':
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __LP64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
s390* )
|
|
||||||
# On s390x, the C compiler may be generating 64-bit (= s390x) code
|
|
||||||
# or 31-bit (= s390) code.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __LP64__ || defined __s390x__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
sparc | sparc64 )
|
|
||||||
# UltraSPARCs running Linux have `uname -m` = "sparc64", but the
|
|
||||||
# C compiler still generates 32-bit code.
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __sparcv9 || defined __arch64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=no],
|
|
||||||
[gl_cv_host_cpu_c_abi_32bit=yes])
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
gl_cv_host_cpu_c_abi_32bit=unknown
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
|
|
||||||
])
|
|
168
m4/lib-ld.m4
168
m4/lib-ld.m4
|
@ -1,168 +0,0 @@
|
||||||
# lib-ld.m4 serial 9
|
|
||||||
dnl Copyright (C) 1996-2003, 2009-2019 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software; the Free Software Foundation
|
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
dnl Subroutines of libtool.m4,
|
|
||||||
dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
|
|
||||||
dnl collision with libtool.m4.
|
|
||||||
|
|
||||||
dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no.
|
|
||||||
AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
|
||||||
[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
|
|
||||||
[# I'd rather use --version here, but apparently some GNU lds only accept -v.
|
|
||||||
case `$LD -v 2>&1 </dev/null` in
|
|
||||||
*GNU* | *'with BFD'*)
|
|
||||||
acl_cv_prog_gnu_ld=yes
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
acl_cv_prog_gnu_ld=no
|
|
||||||
;;
|
|
||||||
esac])
|
|
||||||
with_gnu_ld=$acl_cv_prog_gnu_ld
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl From libtool-2.4. Sets the variable LD.
|
|
||||||
AC_DEFUN([AC_LIB_PROG_LD],
|
|
||||||
[AC_REQUIRE([AC_PROG_CC])dnl
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
||||||
|
|
||||||
AC_ARG_WITH([gnu-ld],
|
|
||||||
[AS_HELP_STRING([--with-gnu-ld],
|
|
||||||
[assume the C compiler uses GNU ld [default=no]])],
|
|
||||||
[test "$withval" = no || with_gnu_ld=yes],
|
|
||||||
[with_gnu_ld=no])dnl
|
|
||||||
|
|
||||||
# Prepare PATH_SEPARATOR.
|
|
||||||
# The user is always right.
|
|
||||||
if test "${PATH_SEPARATOR+set}" != set; then
|
|
||||||
# Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
|
|
||||||
# contains only /bin. Note that ksh looks also at the FPATH variable,
|
|
||||||
# so we have to set that as well for the test.
|
|
||||||
PATH_SEPARATOR=:
|
|
||||||
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
|
|
||||||
&& { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
|
|
||||||
|| PATH_SEPARATOR=';'
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if test -n "$LD"; then
|
|
||||||
AC_MSG_CHECKING([for ld])
|
|
||||||
elif test "$GCC" = yes; then
|
|
||||||
AC_MSG_CHECKING([for ld used by $CC])
|
|
||||||
elif test "$with_gnu_ld" = yes; then
|
|
||||||
AC_MSG_CHECKING([for GNU ld])
|
|
||||||
else
|
|
||||||
AC_MSG_CHECKING([for non-GNU ld])
|
|
||||||
fi
|
|
||||||
if test -n "$LD"; then
|
|
||||||
# Let the user override the test with a path.
|
|
||||||
:
|
|
||||||
else
|
|
||||||
AC_CACHE_VAL([acl_cv_path_LD],
|
|
||||||
[
|
|
||||||
acl_cv_path_LD= # Final result of this test
|
|
||||||
ac_prog=ld # Program to search in $PATH
|
|
||||||
if test "$GCC" = yes; then
|
|
||||||
# Check if gcc -print-prog-name=ld gives a path.
|
|
||||||
case $host in
|
|
||||||
*-*-mingw*)
|
|
||||||
# gcc leaves a trailing carriage return which upsets mingw
|
|
||||||
acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
|
||||||
*)
|
|
||||||
acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
|
|
||||||
esac
|
|
||||||
case $acl_output in
|
|
||||||
# Accept absolute paths.
|
|
||||||
[[\\/]]* | ?:[[\\/]]*)
|
|
||||||
re_direlt='/[[^/]][[^/]]*/\.\./'
|
|
||||||
# Canonicalize the pathname of ld
|
|
||||||
acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
|
|
||||||
while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
|
|
||||||
acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
|
|
||||||
done
|
|
||||||
# Got the pathname. No search in PATH is needed.
|
|
||||||
acl_cv_path_LD="$acl_output"
|
|
||||||
ac_prog=
|
|
||||||
;;
|
|
||||||
"")
|
|
||||||
# If it fails, then pretend we aren't using GCC.
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# If it is relative, then search for the first ld in PATH.
|
|
||||||
with_gnu_ld=unknown
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
if test -n "$ac_prog"; then
|
|
||||||
# Search for $ac_prog in $PATH.
|
|
||||||
acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
|
|
||||||
for ac_dir in $PATH; do
|
|
||||||
IFS="$acl_save_ifs"
|
|
||||||
test -z "$ac_dir" && ac_dir=.
|
|
||||||
if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
|
||||||
acl_cv_path_LD="$ac_dir/$ac_prog"
|
|
||||||
# Check to see if the program is GNU ld. I'd rather use --version,
|
|
||||||
# but apparently some variants of GNU ld only accept -v.
|
|
||||||
# Break only if it was the GNU/non-GNU ld that we prefer.
|
|
||||||
case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
|
|
||||||
*GNU* | *'with BFD'*)
|
|
||||||
test "$with_gnu_ld" != no && break
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
test "$with_gnu_ld" != yes && break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$acl_save_ifs"
|
|
||||||
fi
|
|
||||||
case $host in
|
|
||||||
*-*-aix*)
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __powerpc64__ || defined _ARCH_PPC64
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[# The compiler produces 64-bit code. Add option '-b64' so that the
|
|
||||||
# linker groks 64-bit object files.
|
|
||||||
case "$acl_cv_path_LD " in
|
|
||||||
*" -b64 "*) ;;
|
|
||||||
*) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
|
|
||||||
esac
|
|
||||||
], [])
|
|
||||||
;;
|
|
||||||
sparc64-*-netbsd*)
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#if defined __sparcv9 || defined __arch64__
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[],
|
|
||||||
[# The compiler produces 32-bit code. Add option '-m elf32_sparc'
|
|
||||||
# so that the linker groks 32-bit object files.
|
|
||||||
case "$acl_cv_path_LD " in
|
|
||||||
*" -m elf32_sparc "*) ;;
|
|
||||||
*) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
|
|
||||||
esac
|
|
||||||
])
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
])
|
|
||||||
LD="$acl_cv_path_LD"
|
|
||||||
fi
|
|
||||||
if test -n "$LD"; then
|
|
||||||
AC_MSG_RESULT([$LD])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
|
||||||
fi
|
|
||||||
AC_LIB_PROG_LD_GNU
|
|
||||||
])
|
|
774
m4/lib-link.m4
774
m4/lib-link.m4
|
@ -1,774 +0,0 @@
|
||||||
# lib-link.m4 serial 28
|
|
||||||
dnl Copyright (C) 2001-2019 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software; the Free Software Foundation
|
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
dnl From Bruno Haible.
|
|
||||||
|
|
||||||
AC_PREREQ([2.61])
|
|
||||||
|
|
||||||
dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
|
||||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
|
||||||
dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
|
|
||||||
dnl augments the CPPFLAGS variable.
|
|
||||||
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
|
||||||
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
|
||||||
AC_DEFUN([AC_LIB_LINKFLAGS],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
||||||
AC_REQUIRE([AC_LIB_RPATH])
|
|
||||||
pushdef([Name],[m4_translit([$1],[./+-], [____])])
|
|
||||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
|
||||||
AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
|
||||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
|
||||||
ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
|
||||||
ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
|
|
||||||
ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
|
|
||||||
ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
|
|
||||||
])
|
|
||||||
LIB[]NAME="$ac_cv_lib[]Name[]_libs"
|
|
||||||
LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
|
|
||||||
INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
|
|
||||||
LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
|
|
||||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
|
||||||
AC_SUBST([LIB]NAME)
|
|
||||||
AC_SUBST([LTLIB]NAME)
|
|
||||||
AC_SUBST([LIB]NAME[_PREFIX])
|
|
||||||
dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
|
||||||
dnl results of this search when this library appears as a dependency.
|
|
||||||
HAVE_LIB[]NAME=yes
|
|
||||||
popdef([NAME])
|
|
||||||
popdef([Name])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
|
|
||||||
dnl searches for libname and the libraries corresponding to explicit and
|
|
||||||
dnl implicit dependencies, together with the specified include files and
|
|
||||||
dnl the ability to compile and link the specified testcode. The missing-message
|
|
||||||
dnl defaults to 'no' and may contain additional hints for the user.
|
|
||||||
dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
|
|
||||||
dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
|
||||||
dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
|
||||||
dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
|
||||||
dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
|
|
||||||
dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
|
||||||
AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
||||||
AC_REQUIRE([AC_LIB_RPATH])
|
|
||||||
pushdef([Name],[m4_translit([$1],[./+-], [____])])
|
|
||||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
|
||||||
|
|
||||||
dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
|
||||||
dnl accordingly.
|
|
||||||
AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
|
||||||
|
|
||||||
dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
|
|
||||||
dnl because if the user has installed lib[]Name and not disabled its use
|
|
||||||
dnl via --without-lib[]Name-prefix, he wants to use it.
|
|
||||||
ac_save_CPPFLAGS="$CPPFLAGS"
|
|
||||||
AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
|
||||||
|
|
||||||
AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
|
||||||
ac_save_LIBS="$LIBS"
|
|
||||||
dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
|
|
||||||
dnl because these -l options might require -L options that are present in
|
|
||||||
dnl LIBS. -l options benefit only from the -L options listed before it.
|
|
||||||
dnl Otherwise, add it to the front of LIBS, because it may be a static
|
|
||||||
dnl library that depends on another static library that is present in LIBS.
|
|
||||||
dnl Static libraries benefit only from the static libraries listed after
|
|
||||||
dnl it.
|
|
||||||
case " $LIB[]NAME" in
|
|
||||||
*" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
|
|
||||||
*) LIBS="$LIB[]NAME $LIBS" ;;
|
|
||||||
esac
|
|
||||||
AC_LINK_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM([[$3]], [[$4]])],
|
|
||||||
[ac_cv_lib[]Name=yes],
|
|
||||||
[ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
|
|
||||||
LIBS="$ac_save_LIBS"
|
|
||||||
])
|
|
||||||
if test "$ac_cv_lib[]Name" = yes; then
|
|
||||||
HAVE_LIB[]NAME=yes
|
|
||||||
AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
|
|
||||||
AC_MSG_CHECKING([how to link with lib[]$1])
|
|
||||||
AC_MSG_RESULT([$LIB[]NAME])
|
|
||||||
else
|
|
||||||
HAVE_LIB[]NAME=no
|
|
||||||
dnl If $LIB[]NAME didn't lead to a usable library, we don't need
|
|
||||||
dnl $INC[]NAME either.
|
|
||||||
CPPFLAGS="$ac_save_CPPFLAGS"
|
|
||||||
LIB[]NAME=
|
|
||||||
LTLIB[]NAME=
|
|
||||||
LIB[]NAME[]_PREFIX=
|
|
||||||
fi
|
|
||||||
AC_SUBST([HAVE_LIB]NAME)
|
|
||||||
AC_SUBST([LIB]NAME)
|
|
||||||
AC_SUBST([LTLIB]NAME)
|
|
||||||
AC_SUBST([LIB]NAME[_PREFIX])
|
|
||||||
popdef([NAME])
|
|
||||||
popdef([Name])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Determine the platform dependent parameters needed to use rpath:
|
|
||||||
dnl acl_libext,
|
|
||||||
dnl acl_shlibext,
|
|
||||||
dnl acl_libname_spec,
|
|
||||||
dnl acl_library_names_spec,
|
|
||||||
dnl acl_hardcode_libdir_flag_spec,
|
|
||||||
dnl acl_hardcode_libdir_separator,
|
|
||||||
dnl acl_hardcode_direct,
|
|
||||||
dnl acl_hardcode_minus_L.
|
|
||||||
AC_DEFUN([AC_LIB_RPATH],
|
|
||||||
[
|
|
||||||
dnl Complain if config.rpath is missing.
|
|
||||||
AC_REQUIRE_AUX_FILE([config.rpath])
|
|
||||||
AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
|
|
||||||
AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
|
||||||
AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
|
||||||
AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
|
|
||||||
CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
|
||||||
${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
|
||||||
. ./conftest.sh
|
|
||||||
rm -f ./conftest.sh
|
|
||||||
acl_cv_rpath=done
|
|
||||||
])
|
|
||||||
wl="$acl_cv_wl"
|
|
||||||
acl_libext="$acl_cv_libext"
|
|
||||||
acl_shlibext="$acl_cv_shlibext"
|
|
||||||
acl_libname_spec="$acl_cv_libname_spec"
|
|
||||||
acl_library_names_spec="$acl_cv_library_names_spec"
|
|
||||||
acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
|
|
||||||
acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
|
|
||||||
acl_hardcode_direct="$acl_cv_hardcode_direct"
|
|
||||||
acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
|
||||||
dnl Determine whether the user wants rpath handling at all.
|
|
||||||
AC_ARG_ENABLE([rpath],
|
|
||||||
[ --disable-rpath do not hardcode runtime library paths],
|
|
||||||
:, enable_rpath=yes)
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl AC_LIB_FROMPACKAGE(name, package)
|
|
||||||
dnl declares that libname comes from the given package. The configure file
|
|
||||||
dnl will then not have a --with-libname-prefix option but a
|
|
||||||
dnl --with-package-prefix option. Several libraries can come from the same
|
|
||||||
dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
|
|
||||||
dnl macro call that searches for libname.
|
|
||||||
AC_DEFUN([AC_LIB_FROMPACKAGE],
|
|
||||||
[
|
|
||||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
|
||||||
define([acl_frompackage_]NAME, [$2])
|
|
||||||
popdef([NAME])
|
|
||||||
pushdef([PACK],[$2])
|
|
||||||
pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
|
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
|
||||||
define([acl_libsinpackage_]PACKUP,
|
|
||||||
m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
|
|
||||||
popdef([PACKUP])
|
|
||||||
popdef([PACK])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
|
||||||
dnl the libraries corresponding to explicit and implicit dependencies.
|
|
||||||
dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
|
||||||
dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
|
|
||||||
dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
|
|
||||||
AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
|
||||||
pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
|
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
|
||||||
pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
|
|
||||||
pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
|
|
||||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
|
|
||||||
pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
|
|
||||||
dnl By default, look in $includedir and $libdir.
|
|
||||||
use_additional=yes
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([
|
|
||||||
eval additional_includedir=\"$includedir\"
|
|
||||||
eval additional_libdir=\"$libdir\"
|
|
||||||
])
|
|
||||||
AC_ARG_WITH(PACK[-prefix],
|
|
||||||
[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
|
|
||||||
--without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
|
|
||||||
[
|
|
||||||
if test "X$withval" = "Xno"; then
|
|
||||||
use_additional=no
|
|
||||||
else
|
|
||||||
if test "X$withval" = "X"; then
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([
|
|
||||||
eval additional_includedir=\"$includedir\"
|
|
||||||
eval additional_libdir=\"$libdir\"
|
|
||||||
])
|
|
||||||
else
|
|
||||||
additional_includedir="$withval/include"
|
|
||||||
additional_libdir="$withval/$acl_libdirstem"
|
|
||||||
if test "$acl_libdirstem2" != "$acl_libdirstem" \
|
|
||||||
&& test ! -d "$withval/$acl_libdirstem"; then
|
|
||||||
additional_libdir="$withval/$acl_libdirstem2"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
dnl Search the library and its dependencies in $additional_libdir and
|
|
||||||
dnl $LDFLAGS. Using breadth-first-seach.
|
|
||||||
LIB[]NAME=
|
|
||||||
LTLIB[]NAME=
|
|
||||||
INC[]NAME=
|
|
||||||
LIB[]NAME[]_PREFIX=
|
|
||||||
dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
|
|
||||||
dnl computed. So it has to be reset here.
|
|
||||||
HAVE_LIB[]NAME=
|
|
||||||
rpathdirs=
|
|
||||||
ltrpathdirs=
|
|
||||||
names_already_handled=
|
|
||||||
names_next_round='$1 $2'
|
|
||||||
while test -n "$names_next_round"; do
|
|
||||||
names_this_round="$names_next_round"
|
|
||||||
names_next_round=
|
|
||||||
for name in $names_this_round; do
|
|
||||||
already_handled=
|
|
||||||
for n in $names_already_handled; do
|
|
||||||
if test "$n" = "$name"; then
|
|
||||||
already_handled=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$already_handled"; then
|
|
||||||
names_already_handled="$names_already_handled $name"
|
|
||||||
dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
|
|
||||||
dnl or AC_LIB_HAVE_LINKFLAGS call.
|
|
||||||
uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
|
|
||||||
eval value=\"\$HAVE_LIB$uppername\"
|
|
||||||
if test -n "$value"; then
|
|
||||||
if test "$value" = yes; then
|
|
||||||
eval value=\"\$LIB$uppername\"
|
|
||||||
test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
|
|
||||||
eval value=\"\$LTLIB$uppername\"
|
|
||||||
test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
|
|
||||||
else
|
|
||||||
dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
|
|
||||||
dnl that this library doesn't exist. So just drop it.
|
|
||||||
:
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
dnl Search the library lib$name in $additional_libdir and $LDFLAGS
|
|
||||||
dnl and the already constructed $LIBNAME/$LTLIBNAME.
|
|
||||||
found_dir=
|
|
||||||
found_la=
|
|
||||||
found_so=
|
|
||||||
found_a=
|
|
||||||
eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
|
|
||||||
if test -n "$acl_shlibext"; then
|
|
||||||
shrext=".$acl_shlibext" # typically: shrext=.so
|
|
||||||
else
|
|
||||||
shrext=
|
|
||||||
fi
|
|
||||||
if test $use_additional = yes; then
|
|
||||||
dir="$additional_libdir"
|
|
||||||
dnl The same code as in the loop below:
|
|
||||||
dnl First look for a shared library.
|
|
||||||
if test -n "$acl_shlibext"; then
|
|
||||||
if test -f "$dir/$libname$shrext"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_so="$dir/$libname$shrext"
|
|
||||||
else
|
|
||||||
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
|
||||||
ver=`(cd "$dir" && \
|
|
||||||
for f in "$libname$shrext".*; do echo "$f"; done \
|
|
||||||
| sed -e "s,^$libname$shrext\\\\.,," \
|
|
||||||
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
|
||||||
| sed 1q ) 2>/dev/null`
|
|
||||||
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_so="$dir/$libname$shrext.$ver"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
eval library_names=\"$acl_library_names_spec\"
|
|
||||||
for f in $library_names; do
|
|
||||||
if test -f "$dir/$f"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_so="$dir/$f"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
dnl Then look for a static library.
|
|
||||||
if test "X$found_dir" = "X"; then
|
|
||||||
if test -f "$dir/$libname.$acl_libext"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_a="$dir/$libname.$acl_libext"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test "X$found_dir" != "X"; then
|
|
||||||
if test -f "$dir/$libname.la"; then
|
|
||||||
found_la="$dir/$libname.la"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test "X$found_dir" = "X"; then
|
|
||||||
for x in $LDFLAGS $LTLIB[]NAME; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
case "$x" in
|
|
||||||
-L*)
|
|
||||||
dir=`echo "X$x" | sed -e 's/^X-L//'`
|
|
||||||
dnl First look for a shared library.
|
|
||||||
if test -n "$acl_shlibext"; then
|
|
||||||
if test -f "$dir/$libname$shrext"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_so="$dir/$libname$shrext"
|
|
||||||
else
|
|
||||||
if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
|
|
||||||
ver=`(cd "$dir" && \
|
|
||||||
for f in "$libname$shrext".*; do echo "$f"; done \
|
|
||||||
| sed -e "s,^$libname$shrext\\\\.,," \
|
|
||||||
| sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
|
|
||||||
| sed 1q ) 2>/dev/null`
|
|
||||||
if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_so="$dir/$libname$shrext.$ver"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
eval library_names=\"$acl_library_names_spec\"
|
|
||||||
for f in $library_names; do
|
|
||||||
if test -f "$dir/$f"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_so="$dir/$f"
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
dnl Then look for a static library.
|
|
||||||
if test "X$found_dir" = "X"; then
|
|
||||||
if test -f "$dir/$libname.$acl_libext"; then
|
|
||||||
found_dir="$dir"
|
|
||||||
found_a="$dir/$libname.$acl_libext"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test "X$found_dir" != "X"; then
|
|
||||||
if test -f "$dir/$libname.la"; then
|
|
||||||
found_la="$dir/$libname.la"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
if test "X$found_dir" != "X"; then
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
if test "X$found_dir" != "X"; then
|
|
||||||
dnl Found the library.
|
|
||||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
|
|
||||||
if test "X$found_so" != "X"; then
|
|
||||||
dnl Linking with a shared library. We attempt to hardcode its
|
|
||||||
dnl directory into the executable's runpath, unless it's the
|
|
||||||
dnl standard /usr/lib.
|
|
||||||
if test "$enable_rpath" = no \
|
|
||||||
|| test "X$found_dir" = "X/usr/$acl_libdirstem" \
|
|
||||||
|| test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
|
|
||||||
dnl No hardcoding is needed.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
||||||
else
|
|
||||||
dnl Use an explicit option to hardcode DIR into the resulting
|
|
||||||
dnl binary.
|
|
||||||
dnl Potentially add DIR to ltrpathdirs.
|
|
||||||
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
|
||||||
haveit=
|
|
||||||
for x in $ltrpathdirs; do
|
|
||||||
if test "X$x" = "X$found_dir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
ltrpathdirs="$ltrpathdirs $found_dir"
|
|
||||||
fi
|
|
||||||
dnl The hardcoding into $LIBNAME is system dependent.
|
|
||||||
if test "$acl_hardcode_direct" = yes; then
|
|
||||||
dnl Using DIR/libNAME.so during linking hardcodes DIR into the
|
|
||||||
dnl resulting binary.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
||||||
else
|
|
||||||
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
|
||||||
dnl Use an explicit option to hardcode DIR into the resulting
|
|
||||||
dnl binary.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
||||||
dnl Potentially add DIR to rpathdirs.
|
|
||||||
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
|
||||||
haveit=
|
|
||||||
for x in $rpathdirs; do
|
|
||||||
if test "X$x" = "X$found_dir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
rpathdirs="$rpathdirs $found_dir"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
dnl Rely on "-L$found_dir".
|
|
||||||
dnl But don't add it if it's already contained in the LDFLAGS
|
|
||||||
dnl or the already constructed $LIBNAME
|
|
||||||
haveit=
|
|
||||||
for x in $LDFLAGS $LIB[]NAME; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
if test "X$x" = "X-L$found_dir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
|
|
||||||
fi
|
|
||||||
if test "$acl_hardcode_minus_L" != no; then
|
|
||||||
dnl FIXME: Not sure whether we should use
|
|
||||||
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
|
||||||
dnl here.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
||||||
else
|
|
||||||
dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
|
|
||||||
dnl here, because this doesn't fit in flags passed to the
|
|
||||||
dnl compiler. So give up. No hardcoding. This affects only
|
|
||||||
dnl very old systems.
|
|
||||||
dnl FIXME: Not sure whether we should use
|
|
||||||
dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
|
||||||
dnl here.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
if test "X$found_a" != "X"; then
|
|
||||||
dnl Linking with a static library.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
|
|
||||||
else
|
|
||||||
dnl We shouldn't come here, but anyway it's good to have a
|
|
||||||
dnl fallback.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
dnl Assume the include files are nearby.
|
|
||||||
additional_includedir=
|
|
||||||
case "$found_dir" in
|
|
||||||
*/$acl_libdirstem | */$acl_libdirstem/)
|
|
||||||
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
|
|
||||||
if test "$name" = '$1'; then
|
|
||||||
LIB[]NAME[]_PREFIX="$basedir"
|
|
||||||
fi
|
|
||||||
additional_includedir="$basedir/include"
|
|
||||||
;;
|
|
||||||
*/$acl_libdirstem2 | */$acl_libdirstem2/)
|
|
||||||
basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
|
|
||||||
if test "$name" = '$1'; then
|
|
||||||
LIB[]NAME[]_PREFIX="$basedir"
|
|
||||||
fi
|
|
||||||
additional_includedir="$basedir/include"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
if test "X$additional_includedir" != "X"; then
|
|
||||||
dnl Potentially add $additional_includedir to $INCNAME.
|
|
||||||
dnl But don't add it
|
|
||||||
dnl 1. if it's the standard /usr/include,
|
|
||||||
dnl 2. if it's /usr/local/include and we are using GCC on Linux,
|
|
||||||
dnl 3. if it's already present in $CPPFLAGS or the already
|
|
||||||
dnl constructed $INCNAME,
|
|
||||||
dnl 4. if it doesn't exist as a directory.
|
|
||||||
if test "X$additional_includedir" != "X/usr/include"; then
|
|
||||||
haveit=
|
|
||||||
if test "X$additional_includedir" = "X/usr/local/include"; then
|
|
||||||
if test -n "$GCC"; then
|
|
||||||
case $host_os in
|
|
||||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
for x in $CPPFLAGS $INC[]NAME; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
if test "X$x" = "X-I$additional_includedir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
if test -d "$additional_includedir"; then
|
|
||||||
dnl Really add $additional_includedir to $INCNAME.
|
|
||||||
INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
dnl Look for dependencies.
|
|
||||||
if test -n "$found_la"; then
|
|
||||||
dnl Read the .la file. It defines the variables
|
|
||||||
dnl dlname, library_names, old_library, dependency_libs, current,
|
|
||||||
dnl age, revision, installed, dlopen, dlpreopen, libdir.
|
|
||||||
save_libdir="$libdir"
|
|
||||||
case "$found_la" in
|
|
||||||
*/* | *\\*) . "$found_la" ;;
|
|
||||||
*) . "./$found_la" ;;
|
|
||||||
esac
|
|
||||||
libdir="$save_libdir"
|
|
||||||
dnl We use only dependency_libs.
|
|
||||||
for dep in $dependency_libs; do
|
|
||||||
case "$dep" in
|
|
||||||
-L*)
|
|
||||||
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
|
|
||||||
dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
|
|
||||||
dnl But don't add it
|
|
||||||
dnl 1. if it's the standard /usr/lib,
|
|
||||||
dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
|
|
||||||
dnl 3. if it's already present in $LDFLAGS or the already
|
|
||||||
dnl constructed $LIBNAME,
|
|
||||||
dnl 4. if it doesn't exist as a directory.
|
|
||||||
if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
|
|
||||||
&& test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
|
|
||||||
haveit=
|
|
||||||
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
|
|
||||||
|| test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
|
|
||||||
if test -n "$GCC"; then
|
|
||||||
case $host_os in
|
|
||||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
haveit=
|
|
||||||
for x in $LDFLAGS $LIB[]NAME; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
if test "X$x" = "X-L$additional_libdir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
if test -d "$additional_libdir"; then
|
|
||||||
dnl Really add $additional_libdir to $LIBNAME.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
haveit=
|
|
||||||
for x in $LDFLAGS $LTLIB[]NAME; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
if test "X$x" = "X-L$additional_libdir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
if test -d "$additional_libdir"; then
|
|
||||||
dnl Really add $additional_libdir to $LTLIBNAME.
|
|
||||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
-R*)
|
|
||||||
dir=`echo "X$dep" | sed -e 's/^X-R//'`
|
|
||||||
if test "$enable_rpath" != no; then
|
|
||||||
dnl Potentially add DIR to rpathdirs.
|
|
||||||
dnl The rpathdirs will be appended to $LIBNAME at the end.
|
|
||||||
haveit=
|
|
||||||
for x in $rpathdirs; do
|
|
||||||
if test "X$x" = "X$dir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
rpathdirs="$rpathdirs $dir"
|
|
||||||
fi
|
|
||||||
dnl Potentially add DIR to ltrpathdirs.
|
|
||||||
dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
|
||||||
haveit=
|
|
||||||
for x in $ltrpathdirs; do
|
|
||||||
if test "X$x" = "X$dir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
ltrpathdirs="$ltrpathdirs $dir"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
-l*)
|
|
||||||
dnl Handle this in the next round.
|
|
||||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
|
|
||||||
;;
|
|
||||||
*.la)
|
|
||||||
dnl Handle this in the next round. Throw away the .la's
|
|
||||||
dnl directory; it is already contained in a preceding -L
|
|
||||||
dnl option.
|
|
||||||
names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
dnl Most likely an immediate library name.
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
|
|
||||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
dnl Didn't find the library; assume it is in the system directories
|
|
||||||
dnl known to the linker and runtime loader. (All the system
|
|
||||||
dnl directories known to the linker should also be known to the
|
|
||||||
dnl runtime loader, otherwise the system is severely misconfigured.)
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
|
||||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
if test "X$rpathdirs" != "X"; then
|
|
||||||
if test -n "$acl_hardcode_libdir_separator"; then
|
|
||||||
dnl Weird platform: only the last -rpath option counts, the user must
|
|
||||||
dnl pass all path elements in one option. We can arrange that for a
|
|
||||||
dnl single library, but not when more than one $LIBNAMEs are used.
|
|
||||||
alldirs=
|
|
||||||
for found_dir in $rpathdirs; do
|
|
||||||
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
|
|
||||||
done
|
|
||||||
dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
|
|
||||||
acl_save_libdir="$libdir"
|
|
||||||
libdir="$alldirs"
|
|
||||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
|
||||||
libdir="$acl_save_libdir"
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
|
||||||
else
|
|
||||||
dnl The -rpath options are cumulative.
|
|
||||||
for found_dir in $rpathdirs; do
|
|
||||||
acl_save_libdir="$libdir"
|
|
||||||
libdir="$found_dir"
|
|
||||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
|
||||||
libdir="$acl_save_libdir"
|
|
||||||
LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test "X$ltrpathdirs" != "X"; then
|
|
||||||
dnl When using libtool, the option that works for both libraries and
|
|
||||||
dnl executables is -R. The -R options are cumulative.
|
|
||||||
for found_dir in $ltrpathdirs; do
|
|
||||||
LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
popdef([PACKLIBS])
|
|
||||||
popdef([PACKUP])
|
|
||||||
popdef([PACK])
|
|
||||||
popdef([NAME])
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
|
||||||
dnl unless already present in VAR.
|
|
||||||
dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
|
|
||||||
dnl contains two or three consecutive elements that belong together.
|
|
||||||
AC_DEFUN([AC_LIB_APPENDTOVAR],
|
|
||||||
[
|
|
||||||
for element in [$2]; do
|
|
||||||
haveit=
|
|
||||||
for x in $[$1]; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
if test "X$x" = "X$element"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
[$1]="${[$1]}${[$1]:+ }$element"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl For those cases where a variable contains several -L and -l options
|
|
||||||
dnl referring to unknown libraries and directories, this macro determines the
|
|
||||||
dnl necessary additional linker options for the runtime path.
|
|
||||||
dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
|
|
||||||
dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
|
|
||||||
dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
|
|
||||||
dnl otherwise linking without libtool is assumed.
|
|
||||||
AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
|
|
||||||
[
|
|
||||||
AC_REQUIRE([AC_LIB_RPATH])
|
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
|
||||||
$1=
|
|
||||||
if test "$enable_rpath" != no; then
|
|
||||||
if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
|
|
||||||
dnl Use an explicit option to hardcode directories into the resulting
|
|
||||||
dnl binary.
|
|
||||||
rpathdirs=
|
|
||||||
next=
|
|
||||||
for opt in $2; do
|
|
||||||
if test -n "$next"; then
|
|
||||||
dir="$next"
|
|
||||||
dnl No need to hardcode the standard /usr/lib.
|
|
||||||
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
|
||||||
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
|
||||||
rpathdirs="$rpathdirs $dir"
|
|
||||||
fi
|
|
||||||
next=
|
|
||||||
else
|
|
||||||
case $opt in
|
|
||||||
-L) next=yes ;;
|
|
||||||
-L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
|
|
||||||
dnl No need to hardcode the standard /usr/lib.
|
|
||||||
if test "X$dir" != "X/usr/$acl_libdirstem" \
|
|
||||||
&& test "X$dir" != "X/usr/$acl_libdirstem2"; then
|
|
||||||
rpathdirs="$rpathdirs $dir"
|
|
||||||
fi
|
|
||||||
next= ;;
|
|
||||||
*) next= ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test "X$rpathdirs" != "X"; then
|
|
||||||
if test -n ""$3""; then
|
|
||||||
dnl libtool is used for linking. Use -R options.
|
|
||||||
for dir in $rpathdirs; do
|
|
||||||
$1="${$1}${$1:+ }-R$dir"
|
|
||||||
done
|
|
||||||
else
|
|
||||||
dnl The linker is used for linking directly.
|
|
||||||
if test -n "$acl_hardcode_libdir_separator"; then
|
|
||||||
dnl Weird platform: only the last -rpath option counts, the user
|
|
||||||
dnl must pass all path elements in one option.
|
|
||||||
alldirs=
|
|
||||||
for dir in $rpathdirs; do
|
|
||||||
alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
|
|
||||||
done
|
|
||||||
acl_save_libdir="$libdir"
|
|
||||||
libdir="$alldirs"
|
|
||||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
|
||||||
libdir="$acl_save_libdir"
|
|
||||||
$1="$flag"
|
|
||||||
else
|
|
||||||
dnl The -rpath options are cumulative.
|
|
||||||
for dir in $rpathdirs; do
|
|
||||||
acl_save_libdir="$libdir"
|
|
||||||
libdir="$dir"
|
|
||||||
eval flag=\"$acl_hardcode_libdir_flag_spec\"
|
|
||||||
libdir="$acl_save_libdir"
|
|
||||||
$1="${$1}${$1:+ }$flag"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
AC_SUBST([$1])
|
|
||||||
])
|
|
249
m4/lib-prefix.m4
249
m4/lib-prefix.m4
|
@ -1,249 +0,0 @@
|
||||||
# lib-prefix.m4 serial 14
|
|
||||||
dnl Copyright (C) 2001-2005, 2008-2019 Free Software Foundation, Inc.
|
|
||||||
dnl This file is free software; the Free Software Foundation
|
|
||||||
dnl gives unlimited permission to copy and/or distribute it,
|
|
||||||
dnl with or without modifications, as long as this notice is preserved.
|
|
||||||
|
|
||||||
dnl From Bruno Haible.
|
|
||||||
|
|
||||||
dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
|
|
||||||
dnl to access previously installed libraries. The basic assumption is that
|
|
||||||
dnl a user will want packages to use other packages he previously installed
|
|
||||||
dnl with the same --prefix option.
|
|
||||||
dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
|
|
||||||
dnl libraries, but is otherwise very convenient.
|
|
||||||
AC_DEFUN([AC_LIB_PREFIX],
|
|
||||||
[
|
|
||||||
AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
|
|
||||||
AC_REQUIRE([AC_PROG_CC])
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
|
|
||||||
AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
||||||
dnl By default, look in $includedir and $libdir.
|
|
||||||
use_additional=yes
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([
|
|
||||||
eval additional_includedir=\"$includedir\"
|
|
||||||
eval additional_libdir=\"$libdir\"
|
|
||||||
])
|
|
||||||
AC_ARG_WITH([lib-prefix],
|
|
||||||
[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
|
|
||||||
--without-lib-prefix don't search for libraries in includedir and libdir]],
|
|
||||||
[
|
|
||||||
if test "X$withval" = "Xno"; then
|
|
||||||
use_additional=no
|
|
||||||
else
|
|
||||||
if test "X$withval" = "X"; then
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([
|
|
||||||
eval additional_includedir=\"$includedir\"
|
|
||||||
eval additional_libdir=\"$libdir\"
|
|
||||||
])
|
|
||||||
else
|
|
||||||
additional_includedir="$withval/include"
|
|
||||||
additional_libdir="$withval/$acl_libdirstem"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
if test $use_additional = yes; then
|
|
||||||
dnl Potentially add $additional_includedir to $CPPFLAGS.
|
|
||||||
dnl But don't add it
|
|
||||||
dnl 1. if it's the standard /usr/include,
|
|
||||||
dnl 2. if it's already present in $CPPFLAGS,
|
|
||||||
dnl 3. if it's /usr/local/include and we are using GCC on Linux,
|
|
||||||
dnl 4. if it doesn't exist as a directory.
|
|
||||||
if test "X$additional_includedir" != "X/usr/include"; then
|
|
||||||
haveit=
|
|
||||||
for x in $CPPFLAGS; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
if test "X$x" = "X-I$additional_includedir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
if test "X$additional_includedir" = "X/usr/local/include"; then
|
|
||||||
if test -n "$GCC"; then
|
|
||||||
case $host_os in
|
|
||||||
linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
if test -d "$additional_includedir"; then
|
|
||||||
dnl Really add $additional_includedir to $CPPFLAGS.
|
|
||||||
CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
dnl Potentially add $additional_libdir to $LDFLAGS.
|
|
||||||
dnl But don't add it
|
|
||||||
dnl 1. if it's the standard /usr/lib,
|
|
||||||
dnl 2. if it's already present in $LDFLAGS,
|
|
||||||
dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
|
|
||||||
dnl 4. if it doesn't exist as a directory.
|
|
||||||
if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
|
|
||||||
haveit=
|
|
||||||
for x in $LDFLAGS; do
|
|
||||||
AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
||||||
if test "X$x" = "X-L$additional_libdir"; then
|
|
||||||
haveit=yes
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
|
|
||||||
if test -n "$GCC"; then
|
|
||||||
case $host_os in
|
|
||||||
linux*) haveit=yes;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if test -z "$haveit"; then
|
|
||||||
if test -d "$additional_libdir"; then
|
|
||||||
dnl Really add $additional_libdir to $LDFLAGS.
|
|
||||||
LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
|
|
||||||
dnl acl_final_exec_prefix, containing the values to which $prefix and
|
|
||||||
dnl $exec_prefix will expand at the end of the configure script.
|
|
||||||
AC_DEFUN([AC_LIB_PREPARE_PREFIX],
|
|
||||||
[
|
|
||||||
dnl Unfortunately, prefix and exec_prefix get only finally determined
|
|
||||||
dnl at the end of configure.
|
|
||||||
if test "X$prefix" = "XNONE"; then
|
|
||||||
acl_final_prefix="$ac_default_prefix"
|
|
||||||
else
|
|
||||||
acl_final_prefix="$prefix"
|
|
||||||
fi
|
|
||||||
if test "X$exec_prefix" = "XNONE"; then
|
|
||||||
acl_final_exec_prefix='${prefix}'
|
|
||||||
else
|
|
||||||
acl_final_exec_prefix="$exec_prefix"
|
|
||||||
fi
|
|
||||||
acl_save_prefix="$prefix"
|
|
||||||
prefix="$acl_final_prefix"
|
|
||||||
eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
|
|
||||||
prefix="$acl_save_prefix"
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
|
|
||||||
dnl variables prefix and exec_prefix bound to the values they will have
|
|
||||||
dnl at the end of the configure script.
|
|
||||||
AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
|
|
||||||
[
|
|
||||||
acl_save_prefix="$prefix"
|
|
||||||
prefix="$acl_final_prefix"
|
|
||||||
acl_save_exec_prefix="$exec_prefix"
|
|
||||||
exec_prefix="$acl_final_exec_prefix"
|
|
||||||
$1
|
|
||||||
exec_prefix="$acl_save_exec_prefix"
|
|
||||||
prefix="$acl_save_prefix"
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl AC_LIB_PREPARE_MULTILIB creates
|
|
||||||
dnl - a variable acl_libdirstem, containing the basename of the libdir, either
|
|
||||||
dnl "lib" or "lib64" or "lib/64",
|
|
||||||
dnl - a variable acl_libdirstem2, as a secondary possible value for
|
|
||||||
dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
|
|
||||||
dnl "lib/amd64".
|
|
||||||
AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
|
|
||||||
[
|
|
||||||
dnl There is no formal standard regarding lib and lib64.
|
|
||||||
dnl On glibc systems, the current practice is that on a system supporting
|
|
||||||
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
|
||||||
dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
|
|
||||||
dnl the compiler's default mode by looking at the compiler's library search
|
|
||||||
dnl path. If at least one of its elements ends in /lib64 or points to a
|
|
||||||
dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
|
|
||||||
dnl Otherwise we use the default, namely "lib".
|
|
||||||
dnl On Solaris systems, the current practice is that on a system supporting
|
|
||||||
dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
|
|
||||||
dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
|
|
||||||
dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
|
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
||||||
AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
|
|
||||||
|
|
||||||
case "$host_os" in
|
|
||||||
solaris*)
|
|
||||||
AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
|
|
||||||
[AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_SOURCE(
|
|
||||||
[[#ifdef _LP64
|
|
||||||
int ok;
|
|
||||||
#else
|
|
||||||
error fail
|
|
||||||
#endif
|
|
||||||
]])],
|
|
||||||
[gl_cv_solaris_64bit=yes],
|
|
||||||
[gl_cv_solaris_64bit=no])
|
|
||||||
]);;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dnl Allow the user to override the result by setting acl_cv_libdirstems.
|
|
||||||
AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
|
|
||||||
[acl_cv_libdirstems],
|
|
||||||
[acl_libdirstem=lib
|
|
||||||
acl_libdirstem2=
|
|
||||||
case "$host_os" in
|
|
||||||
solaris*)
|
|
||||||
dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
|
|
||||||
dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
|
|
||||||
dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
|
|
||||||
dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
|
|
||||||
dnl symlink is missing, so we set acl_libdirstem2 too.
|
|
||||||
if test $gl_cv_solaris_64bit = yes; then
|
|
||||||
acl_libdirstem=lib/64
|
|
||||||
case "$host_cpu" in
|
|
||||||
sparc*) acl_libdirstem2=lib/sparcv9 ;;
|
|
||||||
i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
dnl If $CC generates code for a 32-bit ABI, the libraries are
|
|
||||||
dnl surely under $prefix/lib, not $prefix/lib64.
|
|
||||||
if test "$HOST_CPU_C_ABI_32BIT" != yes; then
|
|
||||||
dnl The result is a property of the system. However, non-system
|
|
||||||
dnl compilers sometimes have odd library search paths. Therefore
|
|
||||||
dnl prefer asking /usr/bin/gcc, if available, rather than $CC.
|
|
||||||
searchpath=`(if test -f /usr/bin/gcc \
|
|
||||||
&& LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \
|
|
||||||
LC_ALL=C /usr/bin/gcc -print-search-dirs; \
|
|
||||||
else \
|
|
||||||
LC_ALL=C $CC -print-search-dirs; \
|
|
||||||
fi) 2>/dev/null \
|
|
||||||
| sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
|
|
||||||
if test -n "$searchpath"; then
|
|
||||||
acl_save_IFS="${IFS= }"; IFS=":"
|
|
||||||
for searchdir in $searchpath; do
|
|
||||||
if test -d "$searchdir"; then
|
|
||||||
case "$searchdir" in
|
|
||||||
*/lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
|
|
||||||
*/../ | */.. )
|
|
||||||
# Better ignore directories of this form. They are misleading.
|
|
||||||
;;
|
|
||||||
*) searchdir=`cd "$searchdir" && pwd`
|
|
||||||
case "$searchdir" in
|
|
||||||
*/lib64 ) acl_libdirstem=lib64 ;;
|
|
||||||
esac ;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
IFS="$acl_save_IFS"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
|
|
||||||
acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
|
|
||||||
])
|
|
||||||
# Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
|
|
||||||
acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
|
|
||||||
acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
|
|
||||||
])
|
|
|
@ -1,38 +0,0 @@
|
||||||
## Copyright (C) 2008-2020 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
dist_man_MANS = \
|
|
||||||
mu-add.1 \
|
|
||||||
mu-bookmarks.5 \
|
|
||||||
mu-cfind.1 \
|
|
||||||
mu-easy.1 \
|
|
||||||
mu-extract.1 \
|
|
||||||
mu-fields.1 \
|
|
||||||
mu-find.1 \
|
|
||||||
mu-help.1 \
|
|
||||||
mu-index.1 \
|
|
||||||
mu-info.1 \
|
|
||||||
mu-init.1 \
|
|
||||||
mu-mkdir.1 \
|
|
||||||
mu-query.7 \
|
|
||||||
mu-remove.1 \
|
|
||||||
mu-server.1 \
|
|
||||||
mu-script.1 \
|
|
||||||
mu-verify.1 \
|
|
||||||
mu-view.1 \
|
|
||||||
mu.1
|
|
|
@ -172,7 +172,7 @@ version_texi_data.set('UPDATED',
|
||||||
version_texi_data.set('UPDATEDMONTH',
|
version_texi_data.set('UPDATEDMONTH',
|
||||||
run_command('date', '+%B %Y', check:true).stdout().strip())
|
run_command('date', '+%B %Y', check:true).stdout().strip())
|
||||||
|
|
||||||
configure_file(input: 'version.texi.in',
|
configure_file(input: join_paths('build-aux', 'version.texi.in'),
|
||||||
output: 'version.texi',
|
output: 'version.texi',
|
||||||
configuration: version_texi_data)
|
configuration: version_texi_data)
|
||||||
|
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
## Copyright (C) 2010-2020 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
AM_CPPFLAGS= \
|
|
||||||
-I${top_srcdir}/lib \
|
|
||||||
$(GLIB_CFLAGS) \
|
|
||||||
$(XAPIAN_CFLAGS) \
|
|
||||||
$(CODE_COVERAGE_CFLAGS)
|
|
||||||
|
|
||||||
AM_CXXFLAGS= \
|
|
||||||
$(GMIME_CFLAGS) \
|
|
||||||
-DMU_SCRIPTS_DIR="\"$(pkgdatadir)/scripts/\"" \
|
|
||||||
$(ASAN_CXXCFLAGS) \
|
|
||||||
$(WARN_CXXFLAGS) \
|
|
||||||
$(CODE_COVERAGE_CFLAGS) \
|
|
||||||
-Wno-switch-enum
|
|
||||||
|
|
||||||
AM_LDFLAGS= \
|
|
||||||
$(ASAN_LDFLAGS)
|
|
||||||
|
|
||||||
bin_PROGRAMS= \
|
|
||||||
mu
|
|
||||||
|
|
||||||
# note, mu.cc is only '.cc' and not '.c' because libmu must explicitly
|
|
||||||
# be linked as c++, not c.
|
|
||||||
mu_SOURCES= \
|
|
||||||
mu.cc \
|
|
||||||
mu-cmd-cfind.cc \
|
|
||||||
mu-config.cc \
|
|
||||||
mu-config.hh \
|
|
||||||
mu-cmd-extract.cc \
|
|
||||||
mu-cmd-find.cc \
|
|
||||||
mu-cmd-index.cc \
|
|
||||||
mu-cmd-server.cc \
|
|
||||||
mu-cmd-script.cc \
|
|
||||||
mu-cmd-fields.cc \
|
|
||||||
mu-cmd.cc \
|
|
||||||
mu-cmd.hh
|
|
||||||
|
|
||||||
BUILT_SOURCES= \
|
|
||||||
mu-help-strings.inc
|
|
||||||
|
|
||||||
mu-help-strings.inc: mu-help-strings.txt mu-help-strings.awk
|
|
||||||
$(AM_V_GEN) $(AWK) -f ${top_srcdir}/mu/mu-help-strings.awk < $< > $@
|
|
||||||
|
|
||||||
mu_LDADD= \
|
|
||||||
${top_builddir}/lib/libmu.la \
|
|
||||||
${top_builddir}/lib/utils/libmu-utils.la \
|
|
||||||
$(GLIB_LIBS) \
|
|
||||||
$(XAPIAN_LIBS) \
|
|
||||||
$(READLINE_LIBS) \
|
|
||||||
$(CODE_COVERAGE_LIBS)
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
mu-help-strings.awk \
|
|
||||||
mu-help-strings.txt
|
|
||||||
|
|
||||||
CLEANFILES= \
|
|
||||||
$(BUILT_SOURCES)
|
|
|
@ -1,68 +0,0 @@
|
||||||
## Copyright (C) 2008-2017 Dirk-Jan C. Binnema <djcb@djcbsoftware.nl>
|
|
||||||
##
|
|
||||||
## This program 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.
|
|
||||||
##
|
|
||||||
## This program 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 this program; if not, write to the Free Software Foundation,
|
|
||||||
## Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
||||||
|
|
||||||
include $(top_srcdir)/gtest.mk
|
|
||||||
|
|
||||||
SUBDIRS=
|
|
||||||
|
|
||||||
info_TEXINFOS=mu4e.texi
|
|
||||||
mu4e_TEXINFOS=fdl.texi
|
|
||||||
|
|
||||||
dist_lisp_LISP= \
|
|
||||||
mu4e-actions.el \
|
|
||||||
mu4e-bookmarks.el \
|
|
||||||
mu4e-compose.el \
|
|
||||||
mu4e-contacts.el \
|
|
||||||
mu4e-context.el \
|
|
||||||
mu4e-contrib.el \
|
|
||||||
mu4e-draft.el \
|
|
||||||
mu4e-folders.el \
|
|
||||||
mu4e-headers.el \
|
|
||||||
mu4e-icalendar.el \
|
|
||||||
mu4e-lists.el \
|
|
||||||
mu4e-helpers.el \
|
|
||||||
mu4e-main.el \
|
|
||||||
mu4e-mark.el \
|
|
||||||
mu4e-message.el \
|
|
||||||
mu4e-config.el \
|
|
||||||
mu4e-org.el \
|
|
||||||
mu4e-search.el \
|
|
||||||
mu4e-server.el \
|
|
||||||
mu4e-speedbar.el \
|
|
||||||
mu4e-update.el \
|
|
||||||
mu4e-vars.el \
|
|
||||||
mu4e-view.el \
|
|
||||||
mu4e.el \
|
|
||||||
obsolete/org-mu4e.el
|
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST= \
|
|
||||||
mu4e-about.org
|
|
||||||
|
|
||||||
CLEANFILES= \
|
|
||||||
*.elc
|
|
||||||
|
|
||||||
doc_DATA = \
|
|
||||||
mu4e-about.org
|
|
||||||
|
|
||||||
##
|
|
||||||
## Change as needed.
|
|
||||||
##
|
|
||||||
BUILDPATH=mu4e
|
|
||||||
TEXINFO_CSS_PATH=~/Sources/ext/texinfo-css
|
|
||||||
fancyhtml:
|
|
||||||
mkdir -p $(BUILDPATH) ; cp -R $(TEXINFO_CSS_PATH)/static $(BUILDPATH)
|
|
||||||
makeinfo --html --css-ref=static/css/texinfo-klare.css -o $(BUILDPATH) mu4e.texi
|
|
Loading…
Reference in New Issue
Block a user