Files
asterisk/makeopts.in
Matthew Jordan 29304d10a0 Add support for the clang compiler; update RAII_VAR to use BlocksRuntime
RAII_VAR, which is used extensively in Asterisk to manage reference counted
resources, uses a GCC extension to automatically invoke a cleanup function
when a variable loses scope. While this functionality is incredibly useful
and has prevented a large number of memory leaks, it also prevents Asterisk
from being compiled with clang.

This patch updates the RAII_VAR macro such that it can be compiled with clang.
It makes use of the BlocksRuntime, which allows for a closure to be created
that performs the actual cleanup.

Note that this does not attempt to address the numerous warnings that the clang
compiler catches in Asterisk.

Much thanks for this patch goes to:
* The folks on StackOverflow who asked this question and Leushenko for
  providing the answer that formed the basis of this code:
  http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang
* Diederik de Groot, who has been extremely patient in working on getting this
  patch into Asterisk.

Review: https://reviewboard.asterisk.org/r/4370/

ASTERISK-24133
ASTERISK-23666
ASTERISK-20399
ASTERISK-20850 #close
Reported by: Diederik de Groot
patches:
  RAII_CLANG.patch uploaded by Diederik de Groot (License 6600)
........

Merged revisions 432807 from http://svn.asterisk.org/svn/asterisk/branches/11
........

Merged revisions 432808 from http://svn.asterisk.org/svn/asterisk/branches/13


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@432809 65c4cc65-6c06-0410-ace0-fbb531ad65f3
2015-03-12 12:40:23 +00:00

352 lines
7.0 KiB
Plaintext

# NOTE: Names of _INCLUDE and _LIB entries in this file must be
# the exact uppercase equivalents of the names used for
# dependencies in menuselect for the same package.
CC=@PTHREAD_CC@
HOST_CC=cc
BUILD_CC=cc
CXX=@CXX@
INSTALL=@INSTALL@
AWK=@AWK@
BISON=@BISON@
FLEX=@FLEX@
GREP=@GREP@
PYTHON=@PYTHON@
MAKE=@GNU_MAKE@
AR=@AR@
RANLIB=@RANLIB@
FIND=@FIND@
COMPRESS=@COMPRESS@
BASENAME=@BASENAME@
SHELL=@SHELL@
LN=@LN@
DOXYGEN=@DOXYGEN@
DOT=@DOT@
STRIP=@STRIP@
WGET=@WGET@
FETCH=@FETCH@
DOWNLOAD=@DOWNLOAD@
SOUNDS_CACHE_DIR=@SOUNDS_CACHE_DIR@
RUBBER=@RUBBER@
CATDVI=@CATDVI@
KPATHSEA=@KPATHSEA@
XMLLINT=@XMLLINT@
XMLSTARLET=@XMLSTARLET@
MD5=@MD5@
SHA1SUM=@SHA1SUM@
OPENSSL=@OPENSSL@
LDCONFIG=@LDCONFIG@
GIT=@GIT@
BUILD_PLATFORM=@BUILD_PLATFORM@
BUILD_CPU=@BUILD_CPU@
BUILD_VENDOR=@BUILD_VENDOR@
BUILD_OS=@BUILD_OS@
HOST_PLATFORM=@HOST_PLATFORM@
HOST_CPU=@HOST_CPU@
HOST_VENDOR=@HOST_VENDOR@
HOST_OS=@HOST_OS@
OSARCH=@OSARCH@
OSREV=@PBX_OSREV@
GC_CFLAGS=@GC_CFLAGS@
GC_LDFLAGS=@GC_LDFLAGS@
PTHREAD_CFLAGS=@PTHREAD_CFLAGS@
PTHREAD_LIBS=@PTHREAD_LIBS@
CONFIG_CFLAGS=@CONFIG_CFLAGS@
CONFIG_LDFLAGS=@CONFIG_LDFLAGS@
CONFIG_SIGNED_CHAR=@CONFIG_SIGNED_CHAR@
GNU_LD=@GNU_LD@
WEAKREF=@PBX_WEAKREF@
HAVE_DYNAMIC_LIST=@PBX_DYNAMIC_LIST@
prefix = @prefix@
exec_prefix = @exec_prefix@
datarootdir = @datarootdir@
datadir = @datadir@
includedir = @includedir@
infodir = @infodir@
libdir = @libdir@
libexecdir = @libexecdir@
localstatedir = @localstatedir@
mandir = @mandir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
ASTSBINDIR = @astsbindir@
ASTETCDIR = @astetcdir@
ASTHEADERDIR = @astheaderdir@
ASTLIBDIR = @astlibdir@
ASTMODDIR = @astmoddir@
ASTMANDIR = @astmandir@
astvarlibdir = @astvarlibdir@
ASTVARLIBDIR = @astvarlibdir@
ASTDATADIR = @astdatadir@
ASTDBDIR = @astdbdir@
ASTKEYDIR = @astkeydir@
ASTSPOOLDIR = @astspooldir@
ASTLOGDIR = @astlogdir@
ASTVARRUNDIR = @astvarrundir@
AST_DEVMODE=@AST_DEVMODE@
AST_DEVMODE_STRICT=@AST_DEVMODE_STRICT@
NOISY_BUILD=@NOISY_BUILD@
AST_CODE_COVERAGE=@AST_CODE_COVERAGE@
AST_ASTERISKSSL=@AST_ASTERISKSSL@
AST_DECLARATION_AFTER_STATEMENT=@AST_DECLARATION_AFTER_STATEMENT@
AST_TRAMPOLINES=@AST_TRAMPOLINES@
AST_NO_STRICT_OVERFLOW=@AST_NO_STRICT_OVERFLOW@
AST_SHADOW_WARNINGS=@AST_SHADOW_WARNINGS@
AST_NESTED_FUNCTIONS=@AST_NESTED_FUNCTIONS@
AST_CLANG_BLOCKS=@AST_CLANG_BLOCKS@
AST_CLANG_BLOCKS_LIBS=@AST_CLANG_BLOCKS_LIBS@
AST_RPATH=@AST_RPATH@
AST_FORTIFY_SOURCE=@AST_FORTIFY_SOURCE@
AST_MARCH_NATIVE=@AST_MARCH_NATIVE@
ALSA_INCLUDE=@ALSA_INCLUDE@
ALSA_LIB=@ALSA_LIB@
BFD_INCLUDE=@BFD_INCLUDE@
BFD_LIB=@BFD_LIB@
BLUETOOTH_INCLUDE=@BLUETOOTH_INCLUDE@
BLUETOOTH_LIB=@BLUETOOTH_LIB@
CURL_INCLUDE=@CURL_INCLUDE@
CURL_LIB=@CURL_LIB@
CURSES_INCLUDE=@CURSES_INCLUDE@
CURSES_LIB=@CURSES_LIB@
CURSES_DIR=@CURSES_DIR@
EDITLINE_LIB=@EDITLINE_LIB@
FREETDS_INCLUDE=@FREETDS_INCLUDE@
FREETDS_LIB=@FREETDS_LIB@
GENERIC_ODBC_INCLUDE=@GENERIC_ODBC_INCLUDE@
GENERIC_ODBC_LIB=@GENERIC_ODBC_LIB@
GMIME_INCLUDE=@GMIME_INCLUDE@
GMIME_LIB=@GMIME_LIB@
HOARD_LIB=@HOARD_LIB@
GSM_INTERNAL=@GSM_INTERNAL@
GSM_INCLUDE=@GSM_INCLUDE@
GSM_LIB=@GSM_LIB@
ILBC_INTERNAL=@ILBC_INTERNAL@
ILBC_INCLUDE=@ILBC_INCLUDE@
ILBC_LIB=@ILBC_LIB@
GTK2_INCLUDE=@GTK2_INCLUDE@
GTK2_LIB=@GTK2_LIB@
ICAL_INCLUDE=@ICAL_INCLUDE@
ICAL_LIB=@ICAL_LIB@
ICONV_INCLUDE=@ICONV_INCLUDE@
ICONV_LIB=@ICONV_LIB@
IKSEMEL_INCLUDE=@IKSEMEL_INCLUDE@
IKSEMEL_LIB=@IKSEMEL_LIB@
IMAP_TK_INCLUDE=@IMAP_TK_INCLUDE@
IMAP_TK_LIB=@IMAP_TK_LIB@
IODBC_INCLUDE=@IODBC_INCLUDE@
IODBC_LIB=@IODBC_LIB@
JACK_INCLUDE=@JACK_INCLUDE@
JACK_LIB=@JACK_LIB@
JANSSON_INCLUDE=@JANSSON_INCLUDE@
JANSSON_LIB=@JANSSON_LIB@
URIPARSER_INCLUDE=@URIPARSER_INCLUDE@
URIPARSER_LIB=@URIPARSER_LIB@
LDAP_INCLUDE=@LDAP_INCLUDE@
LDAP_LIB=@LDAP_LIB@
LIBEDIT_INTERNAL=@LIBEDIT_INTERNAL@
LIBEDIT_INCLUDE=@LIBEDIT_INCLUDE@
LIBEDIT_LIB=@LIBEDIT_LIB@
LUA_INCLUDE=@LUA_INCLUDE@
LUA_LIB=@LUA_LIB@
MYSQLCLIENT_INCLUDE=@MYSQLCLIENT_INCLUDE@
MYSQLCLIENT_LIB=@MYSQLCLIENT_LIB@
NBS_INCLUDE=@NBS_INCLUDE@
NBS_LIB=@NBS_LIB@
NCURSES_INCLUDE=@NCURSES_INCLUDE@
NCURSES_LIB=@NCURSES_LIB@
NCURSES_DIR=@NCURSES_DIR@
NEON_INCLUDE=@NEON_INCLUDE@
NEON_LIB=@NEON_LIB@
NEON29_INCLUDE=@NEON_INCLUDE@
NEON29_LIB=@NEON_LIB@
NETSNMP_INCLUDE=@NETSNMP_INCLUDE@
NETSNMP_LIB=@NETSNMP_LIB@
NEWT_INCLUDE=@NEWT_INCLUDE@
NEWT_LIB=@NEWT_LIB@
OGG_INCLUDE=@OGG_INCLUDE@
OGG_LIB=@OGG_LIB@
OPUS_INCLUDE=@OPUS_INCLUDE@
OPUS_LIB=@OPUS_LIB@
OSPTK_INCLUDE=@OSPTK_INCLUDE@
OSPTK_LIB=@OSPTK_LIB@
# ossaudio can optionally use ffmpeg, x11, sdl and sdl_image.
# Because sdl_image in turn depends on sdl, we don't duplicate the include
OSS_INCLUDE=@OSS_INCLUDE@ @FFMPEG_INCLUDE@ @SDL_INCLUDE@ @X11_INCLUDE@
OSS_LIB=@OSS_LIB@ @FFMPEG_LIB@ @SDL_LIB@ @SDL_IMAGE_LIB@ @X11_LIB@
PGSQL_INCLUDE=@PGSQL_INCLUDE@
PGSQL_LIB=@PGSQL_LIB@
PJPROJECT_INCLUDE=@PJPROJECT_INCLUDE@
PJPROJECT_LIB=@PJPROJECT_LIB@
POPT_INCLUDE=@POPT_INCLUDE@
POPT_LIB=@POPT_LIB@
PORTAUDIO_INCLUDE=@PORTAUDIO_INCLUDE@
PORTAUDIO_LIB=@PORTAUDIO_LIB@
PRI_INCLUDE=@PRI_INCLUDE@
PRI_LIB=@PRI_LIB@
RESAMPLE_INCLUDE=@RESAMPLE_INCLUDE@
RESAMPLE_LIB=@RESAMPLE_LIB@
SS7_INCLUDE=@SS7_INCLUDE@
SS7_LIB=@SS7_LIB@
OPENR2_INCLUDE=@OPENR2_INCLUDE@
OPENR2_LIB=@OPENR2_LIB@
PWLIB_INCLUDE=@PWLIB_INCLUDE@
PWLIB_LIB=@PWLIB_LIB@
COROSYNC_INCLUDE=@COROSYNC_INCLUDE@
COROSYNC_LIB=@COROSYNC_LIB@
RADIUS_INCLUDE=@RADIUS_INCLUDE@
RADIUS_LIB=@RADIUS_LIB@
FFMPEG_INCLUDE=@FFMPEG_INCLUDE@
FFMPEG_LIB=@FFMPEG_LIB@
X11_INCLUDE=@X11_INCLUDE@
X11_LIB=@X11_LIB@
SDL_INCLUDE=@SDL_INCLUDE@
SDL_LIB=@SDL_LIB@
SDL_IMAGE_INCLUDE=@SDL_IMAGE_INCLUDE@
SDL_IMAGE_LIB=@SDL_IMAGE_LIB@
SPANDSP_INCLUDE=@SPANDSP_INCLUDE@
SPANDSP_LIB=@SPANDSP_LIB@
SPEEX_INCLUDE=@SPEEX_INCLUDE@
SPEEX_LIB=@SPEEX_LIB@
SPEEXDSP_INCLUDE=@SPEEXDSP_INCLUDE@
SPEEXDSP_LIB=@SPEEXDSP_LIB@
SQLITE_INCLUDE=@SQLITE_INCLUDE@
SQLITE_LIB=@SQLITE_LIB@
SQLITE3_INCLUDE=@SQLITE3_INCLUDE@
SQLITE3_LIB=@SQLITE3_LIB@
SRTP_LIB=@SRTP_LIB@
SRTP_INCLUDE=@SRTP_INCLUDE@
OPENSSL_INCLUDE=@OPENSSL_INCLUDE@
OPENSSL_LIB=@OPENSSL_LIB@
CRYPT_INCLUDE=@CRYPT_INCLUDE@
CRYPT_LIB=@CRYPT_LIB@
CRYPTO_INCLUDE=@CRYPTO_INCLUDE@
CRYPTO_LIB=@CRYPTO_LIB@
TONEZONE_INCLUDE=@TONEZONE_INCLUDE@
TONEZONE_LIB=@TONEZONE_LIB@
UNIXODBC_INCLUDE=@UNIXODBC_INCLUDE@
UNIXODBC_LIB=@UNIXODBC_LIB@
UUID_INCLUDE=@UUID_INCLUDE@
UUID_LIB=@UUID_LIB@
VORBIS_INCLUDE=@VORBIS_INCLUDE@
VORBIS_LIB=@VORBIS_LIB@
VPB_INCLUDE=@VPB_INCLUDE@
VPB_LIB=@VPB_LIB@
HAVE_DAHDI=@PBX_DAHDI@
DAHDI_INCLUDE=@DAHDI_INCLUDE@
ZLIB_INCLUDE=@ZLIB_INCLUDE@
ZLIB_LIB=@ZLIB_LIB@
ISDNNET_INCLUDE=@ISDNNET_INCLUDE@
ISDNNET_LIB=@ISDNNET_LIB@
MISDN_INCLUDE=@MISDN_INCLUDE@
MISDN_LIB=@MISDN_LIB@
SUPPSERV_INCLUDE=@SUPPSERV_INCLUDE@
SUPPSERV_LIB=@SUPPSERV_LIB@
CAP_LIB=@CAP_LIB@
CAP_INCLUDE=@CAP_INCLUDE@
BKTR_INCLUDE=@BKTR_INCLUDE@
BKTR_LIB=@BKTR_LIB@
TERMCAP_INCLUDE=@TERMCAP_INCLUDE@
TERMCAP_LIB=@TERMCAP_LIB@
TERMCAP_DIR=@TERMCAP_DIR@
LIBXML2_INCLUDE=@LIBXML2_INCLUDE@
LIBXML2_LIB=@LIBXML2_LIB@
LIBXSLT_INCLUDE=@LIBXSLT_INCLUDE@
LIBXSLT_LIB=@LIBXSLT_LIB@
TINFO_INCLUDE=@TINFO_INCLUDE@
TINFO_LIB=@TINFO_LIB@
TINFO_DIR=@TINFO_DIR@
# if poll is not present, let the makefile know.
POLL_AVAILABLE=@HAS_POLL@
TIMERFD_INCLUDE=@TIMERFD_INCLUDE@