123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- (declare-function inversion-check-version "inversion")
- (if (fboundp 'locate-file)
- (defsubst ede--find-executable (exec)
- "Return an expanded file name for a program EXEC on the exec path."
- (locate-file exec exec-path))
-
- (defsubst ede--find-executable (exec)
- "Return an expanded file name for a program EXEC on the exec path."
- (let ((p exec-path)
- (found nil))
- (while (and p (not found))
- (let ((f (expand-file-name exec (car p))))
- (if (file-exists-p f)
- (setq found f)))
- (setq p (cdr p)))
- found))
- )
- (defvar ede-make-min-version "3.0"
- "Minimum version of GNU make required.")
- (defcustom ede-make-command (cond ((ede--find-executable "gmake")
- "gmake")
- (t "make"))
- "The MAKE command to use for EDE when compiling.
- The makefile generated by EDE for C files uses syntax that depends on GNU Make,
- so this should be set to something that can execute GNU Make files."
- :group 'ede
- :type 'string)
- (defun ede-make-check-version (&optional noerror)
- "Check the version of GNU Make installed.
- The check passes if the MAKE version is no high enough, or if it
- is not GNU make.
- If NOERROR is non-nil, return t for success, nil for failure.
- If NOERROR is nil, then throw an error on failure. Return t otherwise."
- (interactive)
- (let ((b (get-buffer-create "*EDE Make Version*"))
- (cd default-directory)
- (rev nil)
- (ans nil)
- )
- (with-current-buffer b
-
- (setq default-directory cd)
- (erase-buffer)
- (call-process ede-make-command nil b nil
- "--version")
-
- (goto-char (point-min))
- (when (looking-at "GNU Make\\(?: version\\)? \\([0-9][^,]+\\),")
- (setq rev (match-string 1))
- (require 'inversion)
- (setq ans (not (inversion-check-version rev nil ede-make-min-version))))
-
- (when (and (called-interactively-p 'interactive) ans)
- (message "GNU Make version %s. Good enough for CEDET." rev))
- (when (and (not noerror) (not ans))
- (error "EDE requires GNU Make version %s or later. Configure `ede-make-command' to fix"
- ede-make-min-version))
- ans)))
- (provide 'ede/make)
|