From cbd0dbcb524ad8298c3e3978294f03bffce3937d Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sat, 19 Dec 2015 02:29:06 +0100 Subject: update mk/lang-c.mk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- mk/lang-c.mk | 58 +++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 11 deletions(-) (limited to 'mk') diff --git a/mk/lang-c.mk b/mk/lang-c.mk index 7e9a15a..5bc5197 100644 --- a/mk/lang-c.mk +++ b/mk/lang-c.mk @@ -36,6 +36,20 @@ # that lists all objects files (without the # suffix and without the aux/ prefix) that # are required to build the command. +# +# Binary you want installed to /sbin rather than +# /bin shall be listed in _SBIN rather than in +# _BIN. _SBIN and _BIN may not list binaries +# with identical names. Analogically, you may +# add _LIBEXEC for binary to be installed to +# /libexec. +# +# If you only have one binary, you may select +# to define _BINDIR to name the variable with +# the pathname for the directory the binary +# shall be installed. For example, if you want +# the binary to be installed to /usr/sbin, +# define _BINDIR = SBINDIR. ifdef _C_STD @@ -110,9 +124,6 @@ endif # Add CPP definitions for all directories. _CPPFLAGS += $(foreach D,$(_ALL_DIRS),-D'$(D)="$($(D))"') - -# MORE HELP VARIABLES: - # Compilation and linking flags, and command. ifndef CPPFLAGS CPPFLAGS = @@ -147,11 +158,16 @@ endif endif endif +# Directory for the binary if there is only one binary. +ifndef _BINDIR +_BINDIR = BINDIR +endif + # BUILD RULES: .PHONY: cmd-c -cmd-c: $(foreach B,$(_BIN),bin/$(B)) +cmd-c: $(foreach B,$(_BIN) $(_SBIN) $(_LIBEXEC),bin/$(B)) # Compile a C file into an object file. aux/%.o: $(v)src/%.c $(foreach H,$(__H),$(v)$(H)) @@ -173,20 +189,31 @@ include aux/lang-c.mk aux/lang-c.mk: Makefile @$(MKDIR) -p aux @$(ECHO) > aux/lang-c.mk - @$(foreach B,$(_BIN),$(ECHO) bin/$(B): $(foreach O,$(_OBJ_$(B)),aux/$(O).o) >> aux/lang-c.mk &&) $(TRUE) + @$(foreach B,$(_BIN) $(_SBIN) $(_LIBEXEC),$(ECHO) bin/$(B): $(foreach O,$(_OBJ_$(B)),aux/$(O).o) >> aux/lang-c.mk &&) $(TRUE) # INSTALL RULES: .PHONY: install-cmd-c -install-cmd-c: $(foreach B,$(_BIN),bin/$(B)) +install-cmd-c: $(foreach B,$(_BIN) $(_SBIN) $(_LIBEXEC),bin/$(B)) @$(PRINTF_INFO) '\e[00;01;31mINSTALL\e[34m %s\e[00m\n' "$@" +ifndef COMMAND +ifdef _BIN $(Q)$(INSTALL_DIR) -- "$(DESTDIR)$(BINDIR)" -ifdef COMMAND - $(Q)$(INSTALL_PROGRAM) $(__STRIP) $^ -- "$(DESTDIR)$(BINDIR)" + $(Q)$(INSTALL_PROGRAM) $(__STRIP) $(foreach B,$(_BIN),bin/$(B)) -- "$(DESTDIR)$(BINDIR)" endif -ifndef COMMAND - $(Q)$(INSTALL_PROGRAM) $(__STRIP) $^ -- "$(DESTDIR)$(BINDIR)/$(COMMAND)" +ifdef _SBIN + $(Q)$(INSTALL_DIR) -- "$(DESTDIR)$(SBINDIR)" + $(Q)$(INSTALL_PROGRAM) $(__STRIP) $(foreach B,$(_SBIN),bin/$(B)) -- "$(DESTDIR)$(SBINDIR)" +endif +ifdef _LIBEXEC + $(Q)$(INSTALL_DIR) -- "$(DESTDIR)$(LIBEXECDIR)/$(PKGNAME)" + $(Q)$(INSTALL_PROGRAM) $(__STRIP) $(foreach B,$(_LIBEXEC),bin/$(B)) -- "$(DESTDIR)$(LIBEXECDIR)/$(PKGNAME)" +endif +endif +ifdef COMMAND + $(Q)$(INSTALL_DIR) -- "$(DESTDIR)$($(_BINDIR))" + $(Q)$(INSTALL_PROGRAM) $(__STRIP) $^ -- "$(DESTDIR)$($(_BINDIR))/$(COMMAND)" endif @$(ECHO_EMPTY) @@ -196,11 +223,20 @@ endif .PHONY: uninstall-cmd-c uninstall-cmd-c: ifdef COMMAND - -$(Q)$(RM) -- "$(DESTDIR)$(BINDIR)/$(COMMAND)" + -$(Q)$(RM) -- "$(DESTDIR)$($(_BINDIR))/$(COMMAND)" endif ifndef COMMAND +ifdef _BIN -$(Q)$(RM) -- $(foreach B,$(_BIN),"$(DESTDIR)$(BINDIR)/$(B)") endif +ifdef _SBIN + -$(Q)$(RM) -- $(foreach B,$(_SBIN),"$(DESTDIR)$(SBINDIR)/$(B)") +endif +ifdef _LIBEXEC + -$(Q)$(RM) -- $(foreach B,$(_LIBEXEC),"$(DESTDIR)$(LIBEXECDIR)/$(PKGNAME)/$(B)") + -$(Q)$(RMDIR) -- "$(DESTDIR)$(LIBEXECDIR)/$(PKGNAME)" +endif +endif endif -- cgit v1.2.3-70-g09d2