asterisk/makeopts.in
George Joseph 2e00b5edbd Makefile: Allow XML documentation to exist outside source files
Moved the xmldoc build logic from the top-level Makefile into
its own script "make_xml_documentation" in the build_tools
directory.

Created a new utility script "get_sourceable_makeopts", also in
the build_tools directory, that dumps the top-level "makeopts"
file in a format that can be "sourced" from shell sscripts.
This allows scripts to easily get the values of common make
build variables such as the location of the GREP, SED, AWK, etc.
utilities as well as the AST* and library *_LIB and *_INCLUDE
variables.

Besides moving logic out of the Makefile, some optimizations
were done like removing "third-party" from the list of
subdirectories to be searched for documentation and changing some
assignments from "=" to ":=" so they're only evaluated once.
The speed increase is noticeable.

The makeopts.in file was updated to include the paths to
REALPATH and DIRNAME.  The ./conifgure script was setting them
but makeopts.in wasn't including them.

So...

With this change, you can now place documentation in any"c"
source file AND you can now place it in a separate XML file
altogether.  The following are examples of valid locations:

res/res_pjsip.c
    Using the existing /*** DOCUMENTATION ***/ fragment.

res/res_pjsip/pjsip_configuration.c
    Using the existing /*** DOCUMENTATION ***/ fragment.

res/res_pjsip/pjsip_doc.xml
    A fully-formed XML file.  The "configInfo", "manager",
    "managerEvent", etc. elements that would be in the "c"
    file DOCUMENTATION fragment should be wrapped in proper
    XML.  Example for "somemodule.xml":

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE docs SYSTEM "appdocsxml.dtd">
    <docs>
        <configInfo>
        ...
        </configInfo>
    </docs>

It's the "appdocsxml.dtd" that tells make_xml_documentation
that this is a documentation XML file and not some other XML file.
It also allows many XML-capable editors to do formatting and
validation.

Other than the ".xml" suffix, the name of the file is not
significant.

As a start... This change also moves the documentation that was
in res_pjsip.c to 2 new XML files in res/res_pjsip:
pjsip_config.xml and pjsip_manager.xml.  This cut the number of
lines in res_pjsip.c in half. :)

Change-Id: I486c16c0b5a44d7a8870008e10c941fb19b71ade
2022-02-28 08:13:11 -06:00

353 lines
7.1 KiB
Text

# 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@
BASENAME=@BASENAME@
SHELL=@SHELL@
LN=@LN@
DOXYGEN=@DOXYGEN@
DOT=@DOT@
STRIP=@STRIP@
WGET=@WGET@
FETCH=@FETCH@
DOWNLOAD=@DOWNLOAD@
DOWNLOAD_TO_STDOUT=@DOWNLOAD_TO_STDOUT@
DOWNLOAD_TIMEOUT=@DOWNLOAD_TIMEOUT@
AST_DOWNLOAD_CACHE=@AST_DOWNLOAD_CACHE@
SOUNDS_CACHE_DIR=$(or @SOUNDS_CACHE_DIR@,${AST_DOWNLOAD_CACHE})
EXTERNALS_CACHE_DIR=$(or @EXTERNALS_CACHE_DIR@,${AST_DOWNLOAD_CACHE})
XMLLINT=@XMLLINT@
XMLSTARLET=@XMLSTARLET@
BASH=@BASH@
MD5=@MD5@
SHA1SUM=@SHA1SUM@
OPENSSL=@OPENSSL@
LDCONFIG=@LDCONFIG@
GIT=@GIT@
ALEMBIC=@ALEMBIC@
TAR=@TAR@
PATCH=@PATCH@
SED=@SED@
NM=@NM@
CAT=@CAT@
CUT=@CUT@
REALPATH=@REALPATH@
DIRNAME=@DIRNAME@
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@
BIND8_CFLAGS=@BIND8_CFLAGS@
CROSS_COMPILING=@CROSS_COMPILING@
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@
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@
ASTCACHEDIR = @astcachedir@
ASTDATADIR = @astdatadir@
ASTDBDIR = @astdbdir@
ASTKEYDIR = @astkeydir@
ASTSPOOLDIR = @astspooldir@
ASTLOGDIR = @astlogdir@
ASTVARRUNDIR = @astvarrundir@
AST_DEVMODE=@AST_DEVMODE@
AST_DEVMODE_STRICT=@AST_DEVMODE_STRICT@
DISABLE_XMLDOC=@DISABLE_XMLDOC@
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_NO_FORMAT_TRUNCATION=@AST_NO_FORMAT_TRUNCATION@
AST_NO_STRINGOP_TRUNCATION=@AST_NO_STRINGOP_TRUNCATION@
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@
C_COMPILER_FAMILY=@AST_C_COMPILER_FAMILY@
AST_RPATH=@AST_RPATH@
AST_FORTIFY_SOURCE=@AST_FORTIFY_SOURCE@
ALSA_INCLUDE=@ALSA_INCLUDE@
ALSA_LIB=@ALSA_LIB@
BFD_INCLUDE=@BFD_INCLUDE@
BFD_LIB=@BFD_LIB@
BLUETOOTH_INCLUDE=@BLUETOOTH_INCLUDE@
BLUETOOTH_LIB=@BLUETOOTH_LIB@
CODEC2_INCLUDE=@CODEC2_INCLUDE@
CODEC2_LIB=@CODEC2_LIB@
CURL_INCLUDE=@CURL_INCLUDE@
CURL_LIB=@CURL_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_BUNDLED=@JANSSON_BUNDLED@
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_INCLUDE=@LIBEDIT_INCLUDE@
LIBEDIT_LIB=@LIBEDIT_LIB@
LUA_INCLUDE=@LUA_INCLUDE@
LUA_LIB=@LUA_LIB@
MYSQLCLIENT_INCLUDE=@MYSQLCLIENT_INCLUDE@
MYSQLCLIENT_LIB=@MYSQLCLIENT_LIB@
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@
OPUSFILE_INCLUDE=@OPUSFILE_INCLUDE@
OPUSFILE_LIB=@OPUSFILE_LIB@
OSPTK_INCLUDE=@OSPTK_INCLUDE@
OSPTK_LIB=@OSPTK_LIB@
PGSQL_INCLUDE=@PGSQL_INCLUDE@
PGSQL_LIB=@PGSQL_LIB@
PJPROJECT_BUNDLED=@PJPROJECT_BUNDLED@
PJPROJECT_BUNDLED_OOT=@PJPROJECT_BUNDLED_OOT@
PJPROJECT_INCLUDE=@PJPROJECT_INCLUDE@
PJPROJECT_LIB=@PJPROJECT_LIB@
PJPROJECT_DIR=@PJPROJECT_DIR@
PJPROJECT_CONFIGURE_OPTS=@PJPROJECT_CONFIGURE_OPTS@
POPT_INCLUDE=@POPT_INCLUDE@
POPT_LIB=@POPT_LIB@
PORTAUDIO_INCLUDE=@PORTAUDIO_INCLUDE@
PORTAUDIO_LIB=@PORTAUDIO_LIB@
PRI_INCLUDE=@PRI_INCLUDE@
PRI_LIB=@PRI_LIB@
PYTHONDEV_INCLUDE=@PYTHONDEV_INCLUDE@
PYTHONDEV_LIB=@PYTHONDEV_LIB@
RESAMPLE_INCLUDE=@RESAMPLE_INCLUDE@
RESAMPLE_LIB=@RESAMPLE_LIB@
FFTW3_INCLUDE=@FFTW3_INCLUDE@
FFTW3_LIB=@FFTW3_LIB@
RT_LIB=@RT_LIB@
SS7_INCLUDE=@SS7_INCLUDE@
SS7_LIB=@SS7_LIB@
HAVE_SYSTEMD=@PBX_SYSTEMD@
SYSTEMD_INCLUDE=@SYSTEMD_INCLUDE@
SYSTEMD_LIB=@SYSTEMD_LIB@
OPENR2_INCLUDE=@OPENR2_INCLUDE@
OPENR2_LIB=@OPENR2_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@
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@
UNBOUND_INCLUDE=@UNBOUND_INCLUDE@
UNBOUND_LIB=@UNBOUND_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@
HAVE_DAHDI=@PBX_DAHDI@
DAHDI_INCLUDE=@DAHDI_INCLUDE@
ZLIB_INCLUDE=@ZLIB_INCLUDE@
ZLIB_LIB=@ZLIB_LIB@
CAP_LIB=@CAP_LIB@
CAP_INCLUDE=@CAP_INCLUDE@
BKTR_INCLUDE=@BKTR_INCLUDE@
BKTR_LIB=@BKTR_LIB@
LIBXML2_INCLUDE=@LIBXML2_INCLUDE@
LIBXML2_LIB=@LIBXML2_LIB@
LIBXSLT_INCLUDE=@LIBXSLT_INCLUDE@
LIBXSLT_LIB=@LIBXSLT_LIB@
# if poll is not present, let the makefile know.
POLL_AVAILABLE=@HAS_POLL@
TIMERFD_INCLUDE=@TIMERFD_INCLUDE@
SNDFILE_INCLUDE=@SNDFILE_INCLUDE@
SNDFILE_LIB=@SNDFILE_LIB@
BEANSTALK_INCLUDE=@BEANSTALK_INCLUDE@
BEANSTALK_LIB=@BEANSTALK_LIB@