make flags analysis: use simpler variable names
[platform/upstream/automake.git] / lib / am / header-vars.am
index 4ad1783..8698cd2 100644 (file)
@@ -36,71 +36,69 @@ am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
 ## no argument.  Actually, the only supported option at the moment
 ## is '-n' (support for '-k' will be added soon).
 am__make_running_with_option = \
-  { \
-    case $${am__target_option-} in \
-        ?) ;; \
-        *) echo "am__make_running_with_option: internal error: invalid" \
-                "target option '$${am__target_option-}' specified" >&2; \
-           exit 1;; \
-    esac; \
-    am__has_opt=no; \
-    if $(am__is_gnu_make); then \
-## GNU make: $(MAKEFLAGS) is quite tricky there, while the older variable
-## $(MFLAGS) behaves much better.  So use the latter.
-      for am__flg in $$MFLAGS; do \
-        case $$am__flg in \
-          *=*|--*) ;; \
-          -*$$am__target_option*) am__has_opt=yes; break;; \
-        esac; \
-      done; \
-    else \
+  case $${target_option-} in \
+      ?) ;; \
+      *) echo "am__make_running_with_option: internal error: invalid" \
+              "target option '$${target_option-}' specified" >&2; \
+         exit 1;; \
+  esac; \
+  has_opt=no; \
+  sane_makeflags=$$MAKEFLAGS; \
+  if $(am__is_gnu_make); then \
+## The format of $(MAKEFLAGS) is quite tricky with GNU make; the
+## variable $(MFLAGS) behaves much better in that regard.  So use it.
+    sane_makeflags=$$MFLAGS; \
+  else \
 ## Non-GNU make: we must rely on $(MAKEFLAGS).  This is tricker and more
 ## brittle, but is the best we can do.
-      case $$MAKEFLAGS in \
+    case $$MAKEFLAGS in \
 ## If we run "make TESTS='snooze nap'", FreeBSD make will export MAKEFLAGS
 ## to " TESTS=foo\ nap", so that the simpler loop below (on word-splitted
 ## $$MAKEFLAGS) would see a "make flag" equal to "nap", and would wrongly
 ## misinterpret that as and indication that make is running in dry mode.
 ## This has already happened in practice.  So we need this hack.
-         *\\[\ \       ]*) \
-## Extra indirection with ${am__bs} required by FreeBSD 8.x make.
+      *\\[\ \  ]*) \
+## Extra indirection with ${bs} required by FreeBSD 8.x make.
 ## Not sure why (so sorry for the cargo-cult programming here).
-           am__bs=\\; \
-           am__flags=`printf '%s\n' "$$MAKEFLAGS" \
-            | sed "s/$$am__bs$$am__bs[$$am__bs $$am__bs        ]*//g"`;; \
-         *) \
-           am__flags=$$MAKEFLAGS;; \
-      esac; \
-      am__skip_next=no; \
-      for am__flg in $$am__flags; do \
-        if test $$am__skip_next = yes; then \
-          am__skip_next=no; \
-          continue; \
-        fi; \
-        case $$am__flg in \
-          *=*|--*) ;; \
-## Quite ugly special-casing.  We might need other similar ones actually,
-## but let's wait until the need arises.
-          -I) am__skip_next=yes;; \
-          *$$am__target_option*) am__has_opt=yes; break;; \
-        esac; \
-      done;\
-    fi; \
-    unset am__skip_next am__flg am__flags am__target_option; \
-    test $$am__has_opt = yes; \
-  }
+        bs=\\; \
+        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
+          | sed "s/$$bs$$bs[$$bs $$bs  ]*//g"`;; \
+    esac; \
+  fi; \
+  skip_next=no; \
+  strip_trailopt () \
+  { \
+    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
+  }; \
+  for flg in $$sane_makeflags; do \
+    test $$skip_next = yes && { skip_next=no; continue; }; \
+    case $$flg in \
+      *=*|--*) continue;; \
+## GNU make 3.83 has changed the format of $MFLAGS, and removed the space
+## between an option and its argument (e.g., from "-I dir" to "-Idir").
+## So we need to handle both formats.
+## TODO: we might need to handle similar other cases as well; but let's
+##       wait until the need arises.
+        -*I) strip_trailopt 'I'; skip_next=yes;; \
+      -*I?*) strip_trailopt 'I';; \
+    esac; \
+    case $$flg in \
+      *$$target_option*) has_opt=yes; break;; \
+    esac; \
+  done; \
+  test $$has_opt = yes
 
 ## Shell code that determines whether make is running in "dry mode"
 ## ("make -n") or not.  Useful in rules that invoke make recursively,
 ## and are thus executed also with "make -n" -- either because they
 ## are declared as dependencies to '.MAKE' (NetBSD make), or because
 ## their recipes contain the "$(MAKE)" string (GNU and Solaris make).
-am__make_dryrun = { am__target_option=n; $(am__make_running_with_option); }
+am__make_dryrun = (target_option=n; $(am__make_running_with_option))
 
 ## Shell code that determines whether make is running in "keep-going mode"
 ## ("make -k") or not.  Useful in rules that must recursively descend into
 ## subdirectories, and decide whther to stop at the first error or not.
-am__make_keepgoing = { am__target_option=k; $(am__make_running_with_option); }
+am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
 
 ## Some derived variables that have been found to be useful.
 pkgdatadir = $(datadir)/@PACKAGE@