Function: verilog-getopt
verilog-getopt is a byte-compiled function defined in
verilog-mode.el.gz.
Signature
(verilog-getopt ARGLIST &optional DEFAULT-DIR)
Documentation
Parse -f, -v etc arguments in ARGLIST list or string.
Use DEFAULT-DIR to anchor paths if non-nil.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/verilog-mode.el.gz
;;
;; Argument file parsing
;;
(defun verilog-getopt (arglist &optional default-dir)
"Parse -f, -v etc arguments in ARGLIST list or string.
Use DEFAULT-DIR to anchor paths if non-nil."
(unless (listp arglist) (setq arglist (list arglist)))
(let ((space-args '())
arg next-param)
;; Split on spaces, so users can pass whole command lines
(while arglist
(setq arg (car arglist)
arglist (cdr arglist))
(while (string-match "^\\([^ \t\n\f]+\\)[ \t\n\f]*\\(.*$\\)" arg)
(setq space-args (append space-args
(list (match-string-no-properties 1 arg))))
(setq arg (match-string 2 arg))))
;; Parse arguments
(while space-args
(setq arg (car space-args)
space-args (cdr space-args))
(cond
;; Need another arg
((equal arg "-F")
(setq next-param arg))
((equal arg "-f")
(setq next-param arg))
((equal arg "-v")
(setq next-param arg))
((equal arg "-y")
(setq next-param arg))
;; +libext+(ext1)+(ext2)...
((string-match "^\\+libext\\+\\(.*\\)" arg)
(setq arg (match-string 1 arg))
(while (string-match "\\([^+]+\\)\\+?\\(.*\\)" arg)
(verilog-add-list-unique 'verilog-library-extensions
(match-string 1 arg))
(setq arg (match-string 2 arg))))
;;
((or (string-match "^-D\\([^+=]*\\)[+=]\\(.*\\)" arg) ; -Ddefine=val
(string-match "^-D\\([^+=]*\\)\\(\\)" arg) ; -Ddefine
(string-match "^\\+define\\([^+=]*\\)[+=]\\(.*\\)" arg) ; +define+val
(string-match "^\\+define\\([^+=]*\\)\\(\\)" arg)) ; +define+define
(verilog-set-define (match-string 1 arg) (match-string 2 arg)))
;;
((or (string-match "^\\+incdir\\+\\(.*\\)" arg) ; +incdir+dir
(string-match "^-I\\(.*\\)" arg)) ; -Idir
(verilog-add-list-unique 'verilog-library-directories
(substitute-in-file-name (match-string 1 arg))))
;; Ignore
((equal "+librescan" arg))
((string-match "^-U\\(.*\\)" arg)) ; -Udefine
;; Second parameters
((equal next-param "-F")
(setq next-param nil)
(verilog-getopt-file (verilog-substitute-file-name-path arg default-dir)
(file-name-directory (verilog-substitute-file-name-path arg default-dir))))
((equal next-param "-f")
(setq next-param nil)
(verilog-getopt-file (verilog-substitute-file-name-path arg default-dir) nil))
((equal next-param "-v")
(setq next-param nil)
(verilog-add-list-unique 'verilog-library-files
(verilog-substitute-file-name-path arg default-dir)))
((equal next-param "-y")
(setq next-param nil)
(verilog-add-list-unique 'verilog-library-directories
(verilog-substitute-file-name-path arg default-dir)))
;; Filename
((string-match "^[^-+]" arg)
(verilog-add-list-unique 'verilog-library-files
(verilog-substitute-file-name-path arg default-dir)))
;; Default - ignore; no warning
))))