BUILD: Makefile: also report disabled options in the BUILD_OPTIONS variable
Now we iterate over all known variables and report in the BUILD_OPTIONS
string all those which differ from the target's defaults. This means that
if a target sets a variable by default (e.g. USE_THREAD in linux2628) and
the user disables it on the command line, the BUILD_OPTIONS string will
now properly report "USE_THREAD=".
diff --git a/Makefile b/Makefile
index 80a5223..561b9cc 100644
--- a/Makefile
+++ b/Makefile
@@ -6,8 +6,9 @@
# By default the detailed commands are hidden for a cleaner output, but you may
# see them by appending "V=1" to the make command.
#
-# Valid USE_* options are the following. Most of them are automatically set by
-# the TARGET, others have to be explicitly specified :
+# Valid USE_* options are enumerated in the "use_opts" variable and are listed
+# below. Most of them are automatically set by the TARGET, others have to be
+# explicitly specified :
# USE_EPOLL : enable epoll() on Linux 2.6. Automatic.
# USE_KQUEUE : enable kqueue() on BSD. Automatic.
# USE_MY_EPOLL : redefine epoll_* syscalls. Automatic.
@@ -268,12 +269,27 @@
# option at the beginning of the ld command line.
LDFLAGS = $(ARCH_FLAGS) -g
+#### list of all "USE_*" options. These ones must be updated if new options are
+# added, so that the relevant options are properly added to the CFLAGS and to
+# the reported build options.
+use_opts = USE_EPOLL USE_KQUEUE USE_MY_EPOLL USE_MY_SPLICE USE_NETFILTER \
+ USE_PCRE USE_PCRE_JIT USE_PCRE2 USE_PCRE2_JIT USE_POLL \
+ USE_PRIVATE_CACHE USE_THREAD USE_PTHREAD_PSHARED USE_REGPARM \
+ USE_STATIC_PCRE USE_STATIC_PCRE2 USE_TPROXY USE_LINUX_TPROXY \
+ USE_LINUX_SPLICE USE_LIBCRYPT USE_CRYPT_H USE_VSYSCALL \
+ USE_GETADDRINFO USE_OPENSSL USE_LUA USE_FUTEX USE_ACCEPT4 \
+ USE_MY_ACCEPT4 USE_ZLIB USE_SLZ USE_CPU_AFFINITY USE_TFO USE_NS \
+ USE_DL USE_RT USE_DEVICEATLAS USE_51DEGREES USE_SYSTEMD
+
#### Target system options
# Depending on the target platform, some options are set, as well as some
-# CFLAGS and LDFLAGS. The USE_* values are set to "implicit" so that they are
-# not reported in the build options string. You should not have to change
-# anything there. poll() is always supported, unless explicitly disabled by
-# passing USE_POLL="" on the make command line.
+# CFLAGS and LDFLAGS. All variables pre-set here will not appear in the build
+# options string. They may be set to any value, but are historically set to
+# "implicit" which eases debugging. You should not have to change anything
+# there unless you're adding support for a new platform.
+
+# poll() is always supported, unless explicitly disabled by passing USE_POLL=""
+# on the make command line.
USE_POLL = default
# Always enable threads support by default and let the Makefile detect if
@@ -464,11 +480,6 @@
#### Extra objects to be built and integrated (used only for development)
EXTRA_OBJS =
-# This variable collects all USE_* values except those set to "implicit". This
-# is used to report a list of all flags which were used to build this version.
-# Do not assign anything to it.
-BUILD_OPTIONS =
-
# Return USE_xxx=$(USE_xxx) if the variable was set from the environment or the
# command line.
# Usage:
@@ -478,35 +489,34 @@
$(1)=$($(1))), \
$(1)=$($(1))) \
+# This variable collects all USE_* values except those set to "implicit". This
+# is used to report a list of all flags which were used to build this version.
+# Do not assign anything to it.
+BUILD_OPTIONS := $(foreach opt,$(use_opts),$(call ignore_implicit,$(opt)))
+
ifneq ($(USE_LINUX_SPLICE),)
OPTIONS_CFLAGS += -DCONFIG_HAP_LINUX_SPLICE
-BUILD_OPTIONS += $(call ignore_implicit,USE_LINUX_SPLICE)
endif
ifneq ($(USE_TPROXY),)
OPTIONS_CFLAGS += -DTPROXY
-BUILD_OPTIONS += $(call ignore_implicit,USE_TPROXY)
endif
ifneq ($(USE_LINUX_TPROXY),)
OPTIONS_CFLAGS += -DCONFIG_HAP_LINUX_TPROXY
-BUILD_OPTIONS += $(call ignore_implicit,USE_LINUX_TPROXY)
endif
ifneq ($(USE_LIBCRYPT),)
OPTIONS_CFLAGS += -DCONFIG_HAP_CRYPT
-BUILD_OPTIONS += $(call ignore_implicit,USE_LIBCRYPT)
OPTIONS_LDFLAGS += -lcrypt
endif
ifneq ($(USE_CRYPT_H),)
OPTIONS_CFLAGS += -DNEED_CRYPT_H
-BUILD_OPTIONS += $(call ignore_implicit,USE_CRYPT_H)
endif
ifneq ($(USE_GETADDRINFO),)
OPTIONS_CFLAGS += -DUSE_GETADDRINFO
-BUILD_OPTIONS += $(call ignore_implicit,USE_GETADDRINFO)
endif
ifneq ($(USE_SLZ),)
@@ -514,7 +524,6 @@
SLZ_INC =
SLZ_LIB =
OPTIONS_CFLAGS += -DUSE_SLZ $(if $(SLZ_INC),-I$(SLZ_INC))
-BUILD_OPTIONS += $(call ignore_implicit,USE_SLZ)
OPTIONS_LDFLAGS += $(if $(SLZ_LIB),-L$(SLZ_LIB)) -lslz
endif
@@ -523,87 +532,71 @@
ZLIB_INC =
ZLIB_LIB =
OPTIONS_CFLAGS += -DUSE_ZLIB $(if $(ZLIB_INC),-I$(ZLIB_INC))
-BUILD_OPTIONS += $(call ignore_implicit,USE_ZLIB)
OPTIONS_LDFLAGS += $(if $(ZLIB_LIB),-L$(ZLIB_LIB)) -lz
endif
ifneq ($(USE_POLL),)
OPTIONS_CFLAGS += -DENABLE_POLL
OPTIONS_OBJS += src/ev_poll.o
-BUILD_OPTIONS += $(call ignore_implicit,USE_POLL)
endif
ifneq ($(USE_EPOLL),)
OPTIONS_CFLAGS += -DENABLE_EPOLL
OPTIONS_OBJS += src/ev_epoll.o
-BUILD_OPTIONS += $(call ignore_implicit,USE_EPOLL)
endif
ifneq ($(USE_MY_EPOLL),)
OPTIONS_CFLAGS += -DUSE_MY_EPOLL
-BUILD_OPTIONS += $(call ignore_implicit,USE_MY_EPOLL)
endif
ifneq ($(USE_KQUEUE),)
OPTIONS_CFLAGS += -DENABLE_KQUEUE
OPTIONS_OBJS += src/ev_kqueue.o
-BUILD_OPTIONS += $(call ignore_implicit,USE_KQUEUE)
endif
ifneq ($(USE_VSYSCALL),)
OPTIONS_OBJS += src/i386-linux-vsys.o
OPTIONS_CFLAGS += -DCONFIG_HAP_LINUX_VSYSCALL
-BUILD_OPTIONS += $(call ignore_implicit,USE_VSYSCALL)
endif
ifneq ($(USE_CPU_AFFINITY),)
OPTIONS_CFLAGS += -DUSE_CPU_AFFINITY
-BUILD_OPTIONS += $(call ignore_implicit,USE_CPU_AFFINITY)
endif
ifneq ($(USE_MY_SPLICE),)
OPTIONS_CFLAGS += -DUSE_MY_SPLICE
-BUILD_OPTIONS += $(call ignore_implicit,USE_MY_SPLICE)
endif
ifneq ($(ASSUME_SPLICE_WORKS),)
OPTIONS_CFLAGS += -DASSUME_SPLICE_WORKS
-BUILD_OPTIONS += $(call ignore_implicit,ASSUME_SPLICE_WORKS)
endif
ifneq ($(USE_ACCEPT4),)
OPTIONS_CFLAGS += -DUSE_ACCEPT4
-BUILD_OPTIONS += $(call ignore_implicit,USE_ACCEPT4)
endif
ifneq ($(USE_MY_ACCEPT4),)
OPTIONS_CFLAGS += -DUSE_MY_ACCEPT4
-BUILD_OPTIONS += $(call ignore_implicit,USE_MY_ACCEPT4)
endif
ifneq ($(USE_NETFILTER),)
OPTIONS_CFLAGS += -DNETFILTER
-BUILD_OPTIONS += $(call ignore_implicit,USE_NETFILTER)
endif
ifneq ($(USE_REGPARM),)
OPTIONS_CFLAGS += -DCONFIG_REGPARM=3
-BUILD_OPTIONS += $(call ignore_implicit,USE_REGPARM)
endif
ifneq ($(USE_DL),)
-BUILD_OPTIONS += $(call ignore_implicit,USE_DL)
OPTIONS_LDFLAGS += -ldl
endif
ifneq ($(USE_THREAD),)
-BUILD_OPTIONS += $(call ignore_implicit,USE_THREAD)
OPTIONS_CFLAGS += -DUSE_THREAD
OPTIONS_LDFLAGS += -lpthread
endif
ifneq ($(USE_RT),)
-BUILD_OPTIONS += $(call ignore_implicit,USE_RT)
OPTIONS_LDFLAGS += -lrt
endif
@@ -613,7 +606,6 @@
# reason why it's added by default. Some even need -lz, then you'll need to
# pass it in the "ADDLIB" variable if needed. If your SSL libraries are not
# in the usual path, use SSL_INC=/path/to/inc and SSL_LIB=/path/to/lib.
-BUILD_OPTIONS += $(call ignore_implicit,USE_OPENSSL)
OPTIONS_CFLAGS += -DUSE_OPENSSL $(if $(SSL_INC),-I$(SSL_INC))
OPTIONS_LDFLAGS += $(if $(SSL_LIB),-L$(SSL_LIB)) -lssl -lcrypto
ifneq ($(USE_DL),)
@@ -644,7 +636,6 @@
check_lua_lib = $(shell echo "int main(){}" | $(CC) -o /dev/null -x c - $(2) -l$(1) 2>/dev/null && echo $(1))
check_lua_inc = $(shell if [ -d $(2)$(1) ]; then echo $(2)$(1); fi;)
-BUILD_OPTIONS += $(call ignore_implicit,USE_LUA)
OPTIONS_CFLAGS += -DUSE_LUA $(if $(LUA_INC),-I$(LUA_INC))
LUA_LD_FLAGS := -Wl,$(if $(EXPORT_SYMBOL),$(EXPORT_SYMBOL),--export-dynamic) $(if $(LUA_LIB),-L$(LUA_LIB))
ifeq ($(LUA_LIB_NAME),)
@@ -683,7 +674,6 @@
endif
OPTIONS_OBJS += src/da.o
OPTIONS_CFLAGS += -DUSE_DEVICEATLAS $(if $(DEVICEATLAS_INC),-I$(DEVICEATLAS_INC))
-BUILD_OPTIONS += $(call ignore_implicit,USE_DEVICEATLAS)
endif
ifneq ($(USE_51DEGREES),)
@@ -702,12 +692,10 @@
OPTIONS_OBJS += $(51DEGREES_LIB)/../threading.o
endif
-BUILD_OPTIONS += $(call ignore_implicit,USE_51DEGREES)
OPTIONS_LDFLAGS += $(if $(51DEGREES_LIB),-L$(51DEGREES_LIB)) -lm
endif
ifneq ($(USE_SYSTEMD),)
-BUILD_OPTIONS += $(call ignore_implicit,USE_SYSTEMD)
OPTIONS_CFLAGS += -DUSE_SYSTEMD
OPTIONS_LDFLAGS += -lsystemd
endif
@@ -734,17 +722,14 @@
# dynamic PCRE
OPTIONS_CFLAGS += -DUSE_PCRE $(if $(PCRE_INC),-I$(PCRE_INC))
OPTIONS_LDFLAGS += $(if $(PCRE_LIB),-L$(PCRE_LIB)) -lpcreposix -lpcre
-BUILD_OPTIONS += $(call ignore_implicit,USE_PCRE)
else
# static PCRE
OPTIONS_CFLAGS += -DUSE_PCRE $(if $(PCRE_INC),-I$(PCRE_INC))
OPTIONS_LDFLAGS += $(if $(PCRE_LIB),-L$(PCRE_LIB)) -Wl,-Bstatic -lpcreposix -lpcre -Wl,-Bdynamic
-BUILD_OPTIONS += $(call ignore_implicit,USE_STATIC_PCRE)
endif
# JIT PCRE
ifneq ($(USE_PCRE_JIT),)
OPTIONS_CFLAGS += -DUSE_PCRE_JIT
-BUILD_OPTIONS += $(call ignore_implicit,USE_PCRE_JIT)
endif
endif
@@ -783,15 +768,12 @@
ifneq ($(USE_STATIC_PCRE2),)
OPTIONS_LDFLAGS += $(if $(PCRE2_LIB),-L$(PCRE2_LIB)) -Wl,-Bstatic -L$(PCRE2_LIB) $(PCRE2_LDFLAGS) -Wl,-Bdynamic
-BUILD_OPTIONS += $(call ignore_implicit,USE_STATIC_PCRE2)
else
OPTIONS_LDFLAGS += $(if $(PCRE2_LIB),-L$(PCRE2_LIB)) -L$(PCRE2_LIB) $(PCRE2_LDFLAGS)
-BUILD_OPTIONS += $(call ignore_implicit,USE_PCRE2)
endif
ifneq ($(USE_PCRE2_JIT),)
OPTIONS_CFLAGS += -DUSE_PCRE2_JIT
-BUILD_OPTIONS += $(call ignore_implicit,USE_PCRE2_JIT)
endif
endif
@@ -800,7 +782,6 @@
# TCP Fast Open
ifneq ($(USE_TFO),)
OPTIONS_CFLAGS += -DUSE_TFO
-BUILD_OPTIONS += $(call ignore_implicit,USE_TFO)
endif
# This one can be changed to look for ebtree files in an external directory
@@ -833,7 +814,6 @@
ifneq ($(USE_NS),)
OPTIONS_CFLAGS += -DCONFIG_HAP_NS
-BUILD_OPTIONS += $(call ignore_implicit,USE_NS)
OPTIONS_OBJS += src/namespace.o
endif