Permit make values to be indented or in env.
authorPhil Pennock <pdp@exim.org>
Fri, 28 Jan 2011 00:07:05 +0000 (19:07 -0500)
committerPhil Pennock <pdp@exim.org>
Fri, 28 Jan 2011 00:07:05 +0000 (19:07 -0500)
It appears some make(1)s are not complaining about variables defined
with leading whitespace on the line.  Permit that where we can, for the
lookups, but it's not tenable for CFLAGS_DYNAMIC.

Some people are specifying knobs on the make command-line, so we get
them via the environment.

Tested: indented LOOKUP_CDB and commented out LOOKUP_DNSDB, supplying it
via { make LOOKUP_DNSDB=yes }.  { exim -d --version } shows both are
built-in, no results from { fgrep DNSDB build-*/Makefile }.

doc/doc-txt/ChangeLog
src/scripts/lookups-Makefile

index b225b78..f196095 100644 (file)
@@ -16,6 +16,10 @@ TF/01 Update valgrind.h and memcheck.h to copies from valgrind-3.6.0.
 TF/02 Bugzilla 139: Avoid using the += operator in the modular lookup
       makefiles for portability to HP-UX and POSIX correctness.
 
+PP/01 Permit LOOKUP_foo enabling on the make command-line.
+      Also via indented variable definition in the Makefile.
+      (Debugging by Oliver Heesakkers).
+
 
 Exim version 4.74
 -----------------
index dd0472b..d5c450e 100755 (executable)
@@ -21,6 +21,9 @@ tab=' '
 # We always do something now, since there should always be a lookup,
 # and now we need to run in order to put the OBJ=$(OBJ)+ rules in.
 
+# nb: do not permit leading whitespace for this, as CFLAGS_DYNAMIC is exported
+# to the lookups subdir via a line with leading whitespace which otherwise
+# matches
 if grep -q "^CFLAGS_DYNAMIC[ $tab]*=" "$defs_source"
 then
   # we have a definition, we're good to go
@@ -32,14 +35,23 @@ fi
 
 tmp="$target.t"
 
+# For the want_ checks, we need to let the user override values from the make
+# command-line, not just check the Makefile.
+
 want_dynamic() {
   local dyn_name="$1"
-  grep -q "^LOOKUP_${dyn_name}[ $tab]*=[ $tab]*2" "$defs_source"
+  local re="LOOKUP_${dyn_name}[ $tab]*=[ $tab]*2"
+  env | grep -q "^$re"
+  if [ $? -eq 0 ]; then return 0; fi
+  grep -q "^[ $tab]*$re" "$defs_source"
 }
 
 want_at_all() {
   local want_name="$1"
-  grep -q "^LOOKUP_${want_name}[ $tab]*=[ $tab]*." "$defs_source"
+  local re="LOOKUP_${want_name}[ $tab]*=[ $tab]*."
+  env | grep -q "^$re"
+  if [ $? -eq 0 ]; then return 0; fi
+  grep -q "^[ $tab]*$re" "$defs_source"
 }
 
 # The values of these variables will be emitted into the Makefile.