INSTALL ?= install
CROSS_COMPILE ?=
-PKG_CONFIG = $(CROSS_COMPILE)pkg-config
-CC := $(if $(filter default,$(origin CC)),$(CROSS_COMPILE)gcc,$(CC))
+COMPILER ?= gcc
+PKG_CONFIG = $(shell if [ -e "$$(env $(CROSS_COMPILE)pkg-config 2>&1)" ]; then echo $(CROSS_COMPILE)pkg-config ; else echo pkg-config ; fi)
+CC := $(if $(filter default,$(origin CC)),$(CROSS_COMPILE)$(COMPILER),$(CC))
CCLD := $(if $(filter undefined,$(origin CCLD)),$(CC),$(CCLD))
-CFLAGS ?= -O2 -g
+OPTIMIZE ?= -O2 -flto
+CFLAGS ?= $(OPTIMIZE) -g3
CFLAGS := $(CFLAGS)
LDFLAGS ?=
LDFLAGS := $(LDFLAGS)
-AR := $(CROSS_COMPILE)gcc-ar
-NM := $(CROSS_COMPILE)gcc-nm
-RANLIB := $(CROSS_COMPILE)gcc-ranlib
+AR := $(CROSS_COMPILE)$(COMPILER)-ar
+NM := $(CROSS_COMPILE)$(COMPILER)-nm
+RANLIB := $(CROSS_COMPILE)$(COMPILER)-ranlib
+ABIDW := abidw
+ABIDIFF := abidiff
PKGS =
-clang_cflags =
+clang_cflags = -D_GNU_SOURCE -std=gnu11 -Wno-address-of-packed-member
gcc_cflags = -specs=$(TOPDIR)/gcc.specs
-cflags = $(CFLAGS) -I${TOPDIR}/src/include/efivar/ \
- $(if $(filter $(CC),clang),$(clang_cflags),) \
- $(if $(filter $(CC),gcc),$(gcc_cflags),) \
+cflags = $(CFLAGS) -I${TOPDIR}/src/include/ \
+ $(if $(findstring clang,$(CC)),$(clang_cflags),) \
+ $(if $(findstring gcc,$(CC)),$(gcc_cflags),) \
$(call pkg-config-cflags)
clang_ccldflags =
gcc_ccldflags =
-ccldflags = $(cflags) $(CCLDFLAGS) $(LDFLAGS) \
- $(if $(filter $(CCLD),clang),$(clang_ccldflags),) \
- $(if $(filter $(CCLD),gcc),$(gcc_ccldflags),) \
+ccldflags = $(cflags) -L. $(CCLDFLAGS) $(LDFLAGS) \
+ -Wl,-z,muldefs \
+ $(if $(findstring clang,$(CCLD)),$(clang_ccldflags),) \
+ $(if $(findstring gcc,$(CCLD)),$(gcc_ccldflags),) \
$(call pkg-config-ccldflags)
SOFLAGS=-shared
LDLIBS=$(foreach lib,$(LIBS),-l$(lib)) $(call pkg-config-ldlibs)
+
+COMMIT_ID=$(shell git log -1 --pretty=%H 2>/dev/null || echo master)
+
+NAME=efivar