Our OPTFLAGS variable contains stack protection options which are
intended to be overridable by distribution build scripts. When developers
just want to experiment with optimization levels, they often just want
to modify the `-O` level. Introduce a variable `OPT` that allows to do just
that by passing e.g. `OPT=-O0` to the `make` command line.

Signed-off-by: Martin Wilck <[email protected]>
---
 Makefile.inc | 5 ++++-
 README.md    | 6 ++++++
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/Makefile.inc b/Makefile.inc
index 8356254..c6aa6ed 100644
--- a/Makefile.inc
+++ b/Makefile.inc
@@ -12,6 +12,9 @@
 # Use ASAN=1 on make command line to enable address sanitizer
 ASAN := 
 #
+# Override on make command line if desired
+OPT := -O2
+
 # Readline library to use, libedit, libreadline, or empty
 # Caution: Using libreadline may make the multipathd binary undistributable,
 # see https://github.com/opensvc/multipath-tools/issues/36
@@ -105,7 +108,7 @@ SYSTEMD_LIBDEPS := $(if $(SYSTEMD),$(if $(shell test 
$(SYSTEMD) -gt 209 && echo
 MODPROBE_UNIT := $(shell test "0$(SYSTEMD)" -lt 245 2>/dev/null || \
                        echo "modprobe@dm_multipath.service")
 
-OPTFLAGS       := -O2 -g $(STACKPROT) --param=ssp-buffer-size=4
+OPTFLAGS       := $(OPT) -g $(STACKPROT) --param=ssp-buffer-size=4
 
 # Set WARN_ONLY=1 to avoid compilation erroring out due to warnings. Useful 
during development.
 WARN_ONLY       :=
diff --git a/README.md b/README.md
index 8ff139c..888998b 100644
--- a/README.md
+++ b/README.md
@@ -107,6 +107,12 @@ See "Passing standard compiler flags" below for an 
exception.
 The following variables can be passed to the `make` command line:
 
  * `V=1`: enable verbose build.
+ * `OPT=`: set optimization flags. You may want to set `OPT="-O0"` for
+   debugging, for example. The default is `-O2`. Note that it is also
+   possible to set `OPTFLAGS`, which takes precedence over `OPT`. `OPTFLAGS`
+   sets additional options by default, which are intended for distribution
+   build environments to override. For quick customization of the optimization
+   level, use `OPT`.
  * `ASAN=1`: Enable
    
[AddressSanitizer](https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizer)
    during build for debugging memory allocation. This is off by default.
-- 
2.52.0


Reply via email to