about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Completion/Unix/Command/_make38
2 files changed, 35 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index d7cefb3c9..141f048d4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-12  Peter Stephenson  <p.stephenson@samsung.com>
+
+	* Nick Cross: 31512: Completion/Unix/Command/_make:
+	extra GNU options plus fix to makefile completion.
+
 2013-07-11  Peter Stephenson  <p.stephenson@samsung.com>
 
 	* users/17856: Completion/Command/Unix/_make: rewrite to use
diff --git a/Completion/Unix/Command/_make b/Completion/Unix/Command/_make
index 72d16bb7d..5dd0a21a4 100644
--- a/Completion/Unix/Command/_make
+++ b/Completion/Unix/Command/_make
@@ -158,13 +158,36 @@ _make() {
   if [[ $is_gnu == gnu ]]
   then
     incl="(-|)include"
-    # TBD: update option_specs
     option_specs=(
-      '-C[change directory first]:directory:->dir'
-      '-I[include directory for makefiles]:directory:->dir'
-      '-f[specify makefile]:makefile:->file'
-      '-o[specify file not to remake]:file not to remake:->file'
-      '-W[pretend file was modified]:file to treat as modified:->file'
+      {-B,--always-make}'[Unconditionally make all targets]'
+      {-C,--directory=}'[change directory first]:directory:->dir'
+      '-d[Print lots of debug information]'
+      '--debug=-[Print various types of debug information]:FLAGS'
+      {-e,--environment-overrides}'[Environment variables override makefiles]'
+      '--eval=-[Evaluate STRING as a makefile statement]:STRING'
+      {-f,--file=,--makefile=}'[Read FILE as a makefile]:file:->file'
+      '-h[Print this message and exit]'
+      {-i,--ignore-errors}'[Ignore errors from recipes]'
+      {-I,--include-dir=}'[Search DIRECTORY for included makefiles]:directory:->dir'
+      {-j,--jobs=}'[Allow N jobs at once; infinite jobs with no arg]:number of jobs'
+      {-k,--keep-going}"[Keep going when some targets can't be made]"
+      {-l,--load-average=,--max-load}"[Don't start multiple jobs unless load is below N]:load"
+      {-L,--check-symlink-times}'[Use the latest mtime between symlinks and target]'
+      {-n,--just-print,--dry-run,--recon}"[Don't actually run any recipe; just print them]"
+      {-o,--old-file=,--assume-old=}"[Consider FILE to be very old and don't remake it]:file not to remake:->file"
+      {-p,--print-data-base}'[Print makes internal database]'
+      {-q,--question}'[Run no recipe; exit status says if up to date]'
+      {-r,--no-builtin-rules}'[Disable the built-in implicit rules]'
+      {-R,--no-builtin-variables}'[Disable the built-in variable settings]'
+      {-s,--silent,--quiet}"[Don't echo recipes]"
+      {-S,--no-keep-going,--stop}'[Turns off -k]'
+      {-t,--touch}'[Touch targets instead of remaking them]'
+      {-v,--version}'[Print the version number of make and exit]'
+      {-w,--print-directory}'[Print the current directory]'
+      '--no-print-directory[Turn off -w, even if it was turned on implicitly]'
+      {-W,--what-if=,--new-file=,--asume-new=}'[Consider FILE to be infinitely new]:file to treat as modified:->file'
+      '--warn-undefined-variables[Warn when an undefined variable is referenced]'
+      '--warn-undefined-functions[Warn when an undefined user function is called]'
     )
   else
     # Basic make options only.
@@ -191,8 +214,7 @@ _make() {
     ;;
 
     (target)
-    file=($opt_args[(K)(-f|--file|--makefile)])
-    file=$file[1]
+    file=${(v)opt_args[(I)(-f|--file|--makefile)]}
     if [[ -n $file ]]
     then
       [[ $file == [^/]* ]] && file=${(q)$(_make-findBasedir $words)}/$file