From ddcf98c0d378feca24936d2bf9aa7dd9f24f87ff Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Thu, 30 Mar 2017 10:51:14 -0400 Subject: Build System: Fix --disable-xmldoc option. The configure option to disable XML documentation does not currently work. This patch makes it effective, but also causes an ABI change by removing the ast_xmldoc_* symbols. Disabling xmldoc also prevents docs from being automatically generated, but they can still be manually generated with 'make doc/core-en_US.xml'. ASTERISK-26639 Change-Id: Ifac562340c09f80c83e0203de098fcac93bf8c44 --- Makefile | 22 ++++++++++++++++++---- configure | 13 +++++++++---- configure.ac | 10 ++++++---- include/asterisk/autoconfig.h.in | 3 +++ include/asterisk/xml.h | 5 ----- main/config_options.c | 2 +- main/manager.c | 4 ++++ makeopts.in | 1 + 8 files changed, 42 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 85a1152ea..8048f5915 100644 --- a/Makefile +++ b/Makefile @@ -209,7 +209,9 @@ ifeq ($(AST_DEVMODE),yes) ifeq ($(AST_DEVMODE_STRICT),yes) _ASTCFLAGS+=-Wshadow endif - ADDL_TARGETS+=validate-docs + ifneq ($(DISABLE_XMLDOC),yes) + ADDL_TARGETS+=validate-docs + endif endif ifneq ($(findstring BSD,$(OSARCH)),) @@ -247,6 +249,14 @@ ifneq ($(wildcard .svn),) ASTERISKVERSIONNUM:=999999 endif +ifneq ($(DISABLE_XMLDOC),yes) + CORE_XMLDOC=doc/core-en_US.xml + FULL_XMLDOC=doc/full-en_US.xml +else + CORE_XMLDOC= + FULL_XMLDOC= +endif + _ASTCFLAGS+=$(OPTIONS) MOD_SUBDIRS:=third-party channels pbx apps codecs formats cdr cel bridges funcs tests main res addons $(LOCAL_MOD_SUBDIRS) @@ -327,9 +337,9 @@ full: _full @echo " +-------------------------------------------+" -_all: makeopts $(SUBDIRS) doc/core-en_US.xml $(ADDL_TARGETS) +_all: makeopts $(SUBDIRS) $(CORE_XMLDOC) $(ADDL_TARGETS) -_full: makeopts $(SUBDIRS) doc/full-en_US.xml $(ADDL_TARGETS) +_full: makeopts $(SUBDIRS) $(FULL_XMLDOC) $(ADDL_TARGETS) makeopts: configure @echo "****" @@ -424,7 +434,7 @@ distclean: $(SUBDIRS_DIST_CLEAN) _clean rm -f doc/asterisk-ng-doxygen rm -f build_tools/menuselect-deps -datafiles: _all doc/core-en_US.xml +datafiles: _all $(CORE_XMLDOC) CFLAGS="$(_ASTCFLAGS) $(ASTCFLAGS)" build_tools/mkpkgconfig "$(DESTDIR)$(libdir)/pkgconfig"; # # Recursively install contents of the static-http directory, in case @@ -436,8 +446,10 @@ datafiles: _all doc/core-en_US.xml $(INSTALL) -m 644 $$x "$(DESTDIR)$(ASTDATADIR)/$$x" ; \ fi \ done +ifneq ($(DISABLE_XMLDOC),yes) $(INSTALL) -m 644 doc/core-en_US.xml "$(DESTDIR)$(ASTDATADIR)/static-http"; $(INSTALL) -m 644 doc/appdocsxml.xslt "$(DESTDIR)$(ASTDATADIR)/static-http"; +endif if [ -d doc/tex/asterisk ] ; then \ $(INSTALL) -d "$(DESTDIR)$(ASTDATADIR)/static-http/docs" ; \ for n in doc/tex/asterisk/* ; do \ @@ -566,9 +578,11 @@ bininstall: _all installdirs $(SUBDIRS_INSTALL) main-bininstall for h in $(OLDHEADERS); do rm -f "$(DESTDIR)$(ASTHEADERDIR)/$$h"; done \ fi +ifneq ($(DISABLE_XMLDOC),yes) $(INSTALL) -m 644 doc/core-*.xml "$(DESTDIR)$(ASTDATADIR)/documentation" $(INSTALL) -m 644 doc/appdocsxml.xslt "$(DESTDIR)$(ASTDATADIR)/documentation" $(INSTALL) -m 644 doc/appdocsxml.dtd "$(DESTDIR)$(ASTDATADIR)/documentation" +endif $(INSTALL) -m 644 doc/asterisk.8 "$(DESTDIR)$(ASTMANDIR)/man8" $(INSTALL) -m 644 doc/astdb*.8 "$(DESTDIR)$(ASTMANDIR)/man8" $(INSTALL) -m 644 contrib/scripts/astgenkey.8 "$(DESTDIR)$(ASTMANDIR)/man8" diff --git a/configure b/configure index 588fbfd0b..8bcf93859 100755 --- a/configure +++ b/configure @@ -718,6 +718,7 @@ PBX_DYNAMIC_LIST POW_LIB PBX_WORKING_FORK LIBOBJS +DISABLE_XMLDOC CONFIG_LIBXML2 UUID_LIB UUID_INCLUDE @@ -14660,16 +14661,20 @@ fi # Check whether --enable-xmldoc was given. if test "${enable_xmldoc+set}" = set; then : enableval=$enable_xmldoc; case "${enableval}" in - y|ye|yes) disable_xmldoc=no ;; - n|no) disable_xmldoc=yes ;; + y|ye|yes) DISABLE_XMLDOC=no ;; + n|no) DISABLE_XMLDOC=yes ;; *) as_fn_error $? "bad value ${enableval} for --disable-xmldoc" "$LINENO" 5 ;; esac else - disable_xmldoc=no + DISABLE_XMLDOC=no fi -if test "${disable_xmldoc}" != "yes"; then + +if test "${DISABLE_XMLDOC}" != "yes"; then + +$as_echo "#define AST_XML_DOCS 1" >>confdefs.h + if test "x${PBX_LIBXSLT}" != "x1" -a "${USE_LIBXSLT}" != "no"; then pbxlibdir="" diff --git a/configure.ac b/configure.ac index c729b94ab..3fe904402 100644 --- a/configure.ac +++ b/configure.ac @@ -690,12 +690,14 @@ AC_ARG_ENABLE([xmldoc], [AS_HELP_STRING([--disable-xmldoc], [Explicitly disable XML documentation])], [case "${enableval}" in - y|ye|yes) disable_xmldoc=no ;; - n|no) disable_xmldoc=yes ;; + y|ye|yes) DISABLE_XMLDOC=no ;; + n|no) DISABLE_XMLDOC=yes ;; *) AC_MSG_ERROR(bad value ${enableval} for --disable-xmldoc) ;; - esac], [disable_xmldoc=no]) + esac], [DISABLE_XMLDOC=no]) -if test "${disable_xmldoc}" != "yes"; then +AC_SUBST([DISABLE_XMLDOC]) +if test "${DISABLE_XMLDOC}" != "yes"; then + AC_DEFINE([AST_XML_DOCS], 1, [Define to enable XML documentation.]) AST_EXT_LIB_CHECK([LIBXSLT], [xslt], [xsltLoadStylesheetPI], [libxslt/xsltInternals.h], [${LIBXML2_LIB}], [${LIBXML2_INCLUDE}]) AST_EXT_LIB_CHECK([LIBXSLT_CLEANUP], [xslt], [xsltCleanupGlobals], [libxslt/xsltInternals.h], [${LIBXML2_LIB}], [${LIBXML2_INCLUDE}]) diff --git a/include/asterisk/autoconfig.h.in b/include/asterisk/autoconfig.h.in index f85ad8d07..5865c0ad9 100644 --- a/include/asterisk/autoconfig.h.in +++ b/include/asterisk/autoconfig.h.in @@ -9,6 +9,9 @@ /* Define to 1 if internal poll should be used. */ #undef AST_POLL_COMPAT +/* Define to enable XML documentation. */ +#undef AST_XML_DOCS + /* Define to 1 if your system's implementation of mutexes supports comparison of a mutex to its initializer. */ #undef CAN_COMPARE_MUTEX_TO_INIT_VALUE diff --git a/include/asterisk/xml.h b/include/asterisk/xml.h index 063e8c0b3..ab7b630a2 100644 --- a/include/asterisk/xml.h +++ b/include/asterisk/xml.h @@ -246,10 +246,5 @@ struct ast_xml_node *ast_xml_xpath_get_first_result(struct ast_xml_xpath_results */ struct ast_xml_xpath_results *ast_xml_query(struct ast_xml_doc *doc, const char *xpath_str); -/* Features using ast_xml_ */ -#ifdef HAVE_LIBXML2 -#define AST_XML_DOCS -#endif - #endif /* _ASTERISK_XML_H */ diff --git a/main/config_options.c b/main/config_options.c index 8eacbda35..3c0959ea3 100644 --- a/main/config_options.c +++ b/main/config_options.c @@ -80,7 +80,6 @@ struct aco_option { #ifdef AST_XML_DOCS static struct ao2_container *xmldocs; -#endif /* AST_XML_DOCS */ /*! \brief Value of the aco_option_type enum as strings */ static char *aco_option_type_string[] = { @@ -98,6 +97,7 @@ static char *aco_option_type_string[] = { "Unsigned Integer", /* OPT_UINT_T, */ "Boolean", /* OPT_YESNO_T, */ }; +#endif /* AST_XML_DOCS */ void *aco_pending_config(struct aco_info *info) { diff --git a/main/manager.c b/main/manager.c index 5c0b318b9..079dab77f 100644 --- a/main/manager.c +++ b/main/manager.c @@ -1653,8 +1653,10 @@ static AST_RWLIST_HEAD_STATIC(actions, manager_action); /*! \brief list of hooks registered */ static AST_RWLIST_HEAD_STATIC(manager_hooks, manager_custom_hook); +#ifdef AST_XML_DOCS /*! \brief A container of event documentation nodes */ static AO2_GLOBAL_OBJ_STATIC(event_docs); +#endif static int __attribute__((format(printf, 9, 0))) __manager_event_sessions( struct ao2_container *sessions, @@ -2305,7 +2307,9 @@ static int manager_displayconnects(struct mansession_session *session) return ret; } +#ifdef AST_XML_DOCS static void print_event_instance(struct ast_cli_args *a, struct ast_xml_doc_item *instance); +#endif static char *handle_showmancmd(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { diff --git a/makeopts.in b/makeopts.in index 7d0347ddc..30bc2e274 100644 --- a/makeopts.in +++ b/makeopts.in @@ -108,6 +108,7 @@ 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@ -- cgit v1.2.3