From f62d9013c10cf5c677a61926696502639abc2fe0 Mon Sep 17 00:00:00 2001 From: George Joseph Date: Tue, 16 Jul 2019 07:15:14 -0600 Subject: [PATCH] Build: Add separate header install/uninstall targets Two new Makefile targets have been added... "install-headers" and "uninstall-headers" to separately control header installation. The existing behavior has not changed so "make install" and "make uninstall" will continue to also install/uninstall the headers. The new targets were added for forward compatibility with Asterisk 17 in which the headers are no longer installed/uninstalled with the "install" and "uninstall" targets. Also corrects an issue where /usr/include/asterisk.h was never being removed at all. Change-Id: Ia7399f3a0203a4825fc4a9f43b9034dae9a2b643 --- Makefile | 30 ++++++++++++++++--------- doc/CHANGES-staging/install_headers.txt | 9 ++++++++ 2 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 doc/CHANGES-staging/install_headers.txt diff --git a/Makefile b/Makefile index 8911c6a659..36b7ae1020 100644 --- a/Makefile +++ b/Makefile @@ -555,7 +555,6 @@ INSTALLDIRS="$(ASTLIBDIR)" "$(ASTMODDIR)" "$(ASTSBINDIR)" "$(ASTETCDIR)" "$(ASTV "$(ASTSPOOLDIR)" "$(ASTSPOOLDIR)/dictate" "$(ASTSPOOLDIR)/meetme" \ "$(ASTSPOOLDIR)/monitor" "$(ASTSPOOLDIR)/system" "$(ASTSPOOLDIR)/tmp" \ "$(ASTSPOOLDIR)/voicemail" "$(ASTSPOOLDIR)/recording" \ - "$(ASTHEADERDIR)" "$(ASTHEADERDIR)/doxygen" \ "$(ASTLOGDIR)" "$(ASTLOGDIR)/cdr-csv" "$(ASTLOGDIR)/cdr-custom" \ "$(ASTLOGDIR)/cel-custom" "$(ASTDATADIR)" "$(ASTDATADIR)/documentation" \ "$(ASTDATADIR)/documentation/thirdparty" "$(ASTDATADIR)/firmware" \ @@ -574,19 +573,13 @@ installdirs: main-bininstall: +@DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" ASTLIBDIR="$(ASTLIBDIR)" $(SUBMAKE) -C main bininstall -bininstall: _all installdirs $(SUBDIRS_INSTALL) main-bininstall +bininstall: _all installdirs $(SUBDIRS_INSTALL) main-bininstall install-headers $(INSTALL) -m 755 contrib/scripts/astversion "$(DESTDIR)$(ASTSBINDIR)/" $(INSTALL) -m 755 contrib/scripts/astgenkey "$(DESTDIR)$(ASTSBINDIR)/" $(INSTALL) -m 755 contrib/scripts/autosupport "$(DESTDIR)$(ASTSBINDIR)/" if [ ! -f /sbin/launchd ]; then \ ./build_tools/install_subst contrib/scripts/safe_asterisk "$(DESTDIR)$(ASTSBINDIR)/safe_asterisk"; \ fi - $(INSTALL) -m 644 include/asterisk.h "$(DESTDIR)$(includedir)" - $(INSTALL) -m 644 include/asterisk/*.h "$(DESTDIR)$(ASTHEADERDIR)" - $(INSTALL) -m 644 include/asterisk/doxygen/*.h "$(DESTDIR)$(ASTHEADERDIR)/doxygen" - if [ -n "$(OLDHEADERS)" ]; then \ - 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" @@ -799,6 +792,16 @@ define INSTALL_CONFIGS fi endef +install-headers: +# Will create all components of "$(DESTDIR)$(ASTHEADERDIR)/doxygen" including "$(DESTDIR)$(includedir)" + $(INSTALL) -d "$(DESTDIR)$(ASTHEADERDIR)/doxygen" + $(INSTALL) -m 644 include/asterisk.h "$(DESTDIR)$(includedir)" + $(INSTALL) -m 644 include/asterisk/*.h "$(DESTDIR)$(ASTHEADERDIR)" + $(INSTALL) -m 644 include/asterisk/doxygen/*.h "$(DESTDIR)$(ASTHEADERDIR)/doxygen" + if [ -n "$(OLDHEADERS)" ]; then \ + for h in $(OLDHEADERS); do rm -f "$(DESTDIR)$(ASTHEADERDIR)/$$h"; done \ + fi + install-configs: @if test -z "$(CONFIG_SRC)" -o ! -d "$(CONFIG_SRC)"; then \ >&2 echo "CONFIG_SRC must be set to a directory."; \ @@ -988,12 +991,15 @@ $(SUBDIRS_UNINSTALL): main-binuninstall: +@DESTDIR="$(DESTDIR)" ASTSBINDIR="$(ASTSBINDIR)" ASTLIBDIR="$(ASTLIBDIR)" $(SUBMAKE) -C main binuninstall -_uninstall: $(SUBDIRS_UNINSTALL) main-binuninstall +uninstall-headers: + rm -rf "$(DESTDIR)$(ASTHEADERDIR)" + rm -f "$(DESTDIR)$(includedir)/asterisk.h" + +_uninstall: $(SUBDIRS_UNINSTALL) main-binuninstall uninstall-headers rm -f "$(DESTDIR)$(ASTMODDIR)/"* test -n "$(_oldmoddir)" -a -d "$(_oldmoddir)" && rm -f "$(_oldmoddir)/"* || : rm -f "$(DESTDIR)$(ASTSBINDIR)/astgenkey" rm -f "$(DESTDIR)$(ASTSBINDIR)/autosupport" - rm -rf "$(DESTDIR)$(ASTHEADERDIR)" rm -rf "$(DESTDIR)$(ASTDATADIR)/firmware" rm -f "$(DESTDIR)$(ASTMANDIR)/man8/asterisk.8" rm -f "$(DESTDIR)$(ASTMANDIR)/man8/astgenkey.8" @@ -1023,7 +1029,7 @@ uninstall: _uninstall @echo " + $(mK) uninstall-all +" @echo " +-------------------------------------------+" -uninstall-all: _uninstall +uninstall-all: _uninstall uninstall-headers rm -rf "$(DESTDIR)$(ASTMODDIR)" test -n "$(_oldmoddir)" -a -d "$(_oldmoddir)" && rm -rf "$(_oldmoddir)" || : rm -rf "$(DESTDIR)$(ASTVARLIBDIR)" @@ -1117,6 +1123,7 @@ check-alembic: makeopts @ALEMBIC=$(ALEMBIC) build_tools/make_check_alembic config cdr voicemail >&2 .PHONY: install-configs +.PHONY: install-headers .PHONY: menuselect .PHONY: main .PHONY: sounds @@ -1130,6 +1137,7 @@ check-alembic: makeopts .PHONY: uninstall .PHONY: _uninstall .PHONY: uninstall-all +.PHONY: uninstall-headers .PHONY: badshell .PHONY: installdirs .PHONY: validate-docs diff --git a/doc/CHANGES-staging/install_headers.txt b/doc/CHANGES-staging/install_headers.txt new file mode 100644 index 0000000000..0957193794 --- /dev/null +++ b/doc/CHANGES-staging/install_headers.txt @@ -0,0 +1,9 @@ +Subject: Build + +Two new Makefile targets have been added... "install-headers" and +"uninstall-headers" to separately control header installation. +The existing behavior has not changed so "make install" and +"make uninstall" will continue to also install/uninstall the headers. +The new targets were added for forward compatibility with Asterisk 17 +in which the headers are no longer installed/uninstalled with the +"install" and "uninstall" targets.