diff --git a/Makefile b/Makefile index 5f1dc88..1ef6fcd 100644 --- a/Makefile +++ b/Makefile @@ -35,12 +35,12 @@ brick : all done a : - @if [ $${EUID} != 0 ]; then \ + @if [ "$$(id -u)" != 0 ]; then \ echo no 1>&2 ; \ exit 1 ; \ fi -GITTAG = $(shell bash -c "echo $$(($(VERSION) + 1))") +GITTAG = $(shell printf '%s\n' $$(( $(VERSION) + 1 ))) efivar.spec : | Makefile src/include/version.mk diff --git a/src/include/defaults.mk b/src/include/defaults.mk index 4da0cde..40f4d51 100644 --- a/src/include/defaults.mk +++ b/src/include/defaults.mk @@ -11,13 +11,15 @@ PKGS ?= CROSS_COMPILE ?= COMPILER ?= gcc -ifeq ($(origin CC),command line) -override COMPILER := $(CC) -override CC := $(CROSS_COMPILE)$(COMPILER) -endif + +tool-if-exists = $(strip $(shell command -v $(1) >/dev/null 2>&1 && printf '%s' '$(1)')) +cc-command = $(firstword $(filter-out ccache sccache distcc,$(foreach word,$(1),$(notdir $(word))))) +cc-name = $(patsubst $(CROSS_COMPILE)%,%,$(call cc-command,$(1))) + $(call set-if-undefined,CC,$(CROSS_COMPILE)$(COMPILER)) +override COMPILER := $(or $(call cc-name,$(CC)),$(COMPILER)) $(call set-if-undefined,CCLD,$(CC)) -$(call set-if-undefined,HOSTCC,$(COMPILER)) +$(call set-if-undefined,HOSTCC,$(call cc-name,$(CC))) $(call set-if-undefined,HOSTCCLD,$(HOSTCC)) # temporary, see https://sourceware.org/bugzilla/show_bug.cgi?id=28264 @@ -107,11 +109,11 @@ override HOST_LDFLAGS = $(HOST_CFLAGS) -L. \ $(call pkg-config-ccldflags) override HOST_CCLDFLAGS = $(HOST_LDFLAGS) -PKG_CONFIG ?= $(shell if [ -e "$$(env $(CROSS_COMPILE)pkg-config 2>&1)" ]; then echo $(CROSS_COMPILE)pkg-config ; else echo pkg-config ; fi) +PKG_CONFIG ?= $(or $(call tool-if-exists,$(CROSS_COMPILE)pkg-config),pkg-config) INSTALL ?= install -AR := $(CROSS_COMPILE)$(COMPILER)-ar -NM := $(CROSS_COMPILE)$(COMPILER)-nm -RANLIB := $(CROSS_COMPILE)$(COMPILER)-ranlib +$(call set-if-undefined,AR,$(or $(call tool-if-exists,$(CROSS_COMPILE)$(call cc-name,$(CC))-ar),$(if $(findstring clang,$(call cc-name,$(CC))),$(call tool-if-exists,$(CROSS_COMPILE)llvm-ar),$(call tool-if-exists,$(CROSS_COMPILE)gcc-ar)),$(call tool-if-exists,$(CROSS_COMPILE)ar),ar)) +$(call set-if-undefined,NM,$(or $(call tool-if-exists,$(CROSS_COMPILE)$(call cc-name,$(CC))-nm),$(if $(findstring clang,$(call cc-name,$(CC))),$(call tool-if-exists,$(CROSS_COMPILE)llvm-nm),$(call tool-if-exists,$(CROSS_COMPILE)gcc-nm)),$(call tool-if-exists,$(CROSS_COMPILE)nm),nm)) +$(call set-if-undefined,RANLIB,$(or $(call tool-if-exists,$(CROSS_COMPILE)$(call cc-name,$(CC))-ranlib),$(if $(findstring clang,$(call cc-name,$(CC))),$(call tool-if-exists,$(CROSS_COMPILE)llvm-ranlib),$(call tool-if-exists,$(CROSS_COMPILE)gcc-ranlib)),$(call tool-if-exists,$(CROSS_COMPILE)ranlib),ranlib)) ABIDW := abidw ABIDIFF := abidiff MANDOC := mandoc diff --git a/src/include/coverity.mk b/src/include/coverity.mk index 2e7024b..f852097 100644 --- a/src/include/coverity.mk +++ b/src/include/coverity.mk @@ -4,11 +4,11 @@ COV_URL=$(call get-config,coverity.url) COV_FILE=$(NAME)-coverity-$(VERSION)-$(COMMIT_ID).tar.bz2 cov-int : clean - cov-build --dir cov-int make all + cov-build --dir cov-int $(MAKE) all cov-clean : @rm -vf $(NAME)-coverity-*.tar.* - @if [[ -d cov-int ]]; then rm -rf cov-int && echo "removed 'cov-int'"; fi + @if [ -d cov-int ]; then rm -rf cov-int && echo "removed 'cov-int'"; fi cov-file : | $(COV_FILE) @@ -16,9 +16,9 @@ $(COV_FILE) : cov-int tar caf $@ cov-int cov-upload : - @if [[ -n "$(COV_URL)" ]] && \ - [[ -n "$(COV_TOKEN)" ]] && \ - [[ -n "$(COV_EMAIL)" ]] ; \ + @if [ -n "$(COV_URL)" ] && \ + [ -n "$(COV_TOKEN)" ] && \ + [ -n "$(COV_EMAIL)" ] ; \ then \ echo curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \ curl --form token=$(COV_TOKEN) --form email="$(COV_EMAIL)" --form file=@"$(COV_FILE)" --form version=$(VERSION).1 --form description="$(COMMIT_ID)" "$(COV_URL)" ; \ @@ -31,7 +31,7 @@ coverity : cov-file cov-upload clean : | cov-clean -COV_BUILD ?= $(shell x=$$(which --skip-alias --skip-functions cov-build 2>/dev/null) ; [ -n "$$x" ] && echo 1) +COV_BUILD ?= $(shell command -v cov-build >/dev/null 2>&1 && printf '%s' 1) ifeq ($(COV_BUILD),) COV_BUILD_ERROR = $(error cov-build not found) endif diff --git a/src/include/scan-build.mk b/src/include/scan-build.mk index 19da90c..125c85c 100644 --- a/src/include/scan-build.mk +++ b/src/include/scan-build.mk @@ -1,4 +1,4 @@ -SCAN_BUILD ?= $(shell x=$$(which --skip-alias --skip-functions scan-build 2>/dev/null) ; [ -n "$$x" ] && echo 1) +SCAN_BUILD ?= $(shell command -v scan-build >/dev/null 2>&1 && printf '%s' 1) ifeq ($(SCAN_BUILD),) SCAN_BUILD_ERROR = $(error scan-build not found) endif @@ -6,12 +6,12 @@ endif scan-test : ; $(SCAN_BUILD_ERROR) scan-clean : clean - @if [[ -d scan-results ]]; then rm -rf scan-results && echo "removed 'scan-results'"; fi + @if [ -d scan-results ]; then rm -rf scan-results && echo "removed 'scan-results'"; fi scan-build : | scan-test scan-build : clean $(MAKE) -C src makeguids - scan-build -o scan-results make $(DASHJ) CC=clang all + scan-build -o scan-results $(MAKE) $(DASHJ) CC=clang all scan-build-all: | scan-build scan : | scan-build