Add hooks for gcc handling
[gnus] / lisp / dgnushack.el
index a7f804a..3defe55 100644 (file)
@@ -1,7 +1,5 @@
 ;;; dgnushack.el --- a hack to set the load path for byte-compiling
-;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;;        Free Software Foundation, Inc.
+;; Copyright (C) 1994-2012 Free Software Foundation, Inc.
 
 ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org>
 ;; Version: 4.19
@@ -35,8 +33,9 @@
 (require 'cl)
 (require 'iswitchb)
 
-(ignore-errors
-  (require 'org-entities))
+(condition-case nil
+    (require 'org-entities)
+  (error nil))
 
 (defvar srcdir (or (getenv "srcdir") "."))
 (defvar loaddir (and load-file-name (file-name-directory load-file-name)))
 (defalias 'efs-re-read-dir 'ignore)
 (defalias 'ange-ftp-re-read-dir 'ignore)
 (defalias 'define-mail-user-agent 'ignore)
+(defalias 'debbugs-gnu-summary-mode 'ignore)
+(defvar debbugs-gnu-bug-number nil)
 
 (eval-and-compile
   (unless (featurep 'xemacs)
   (when (featurep 'xemacs)
     (unless (fboundp 'defadvice)
       (autoload 'defadvice "advice" nil nil 'macro))
+    (unless (boundp 'help-echo-owns-message)
+      (defvar help-echo-owns-message))
+    (unless (fboundp 'url-retrieve-synchronously)
+      (defalias 'url-retrieve-synchronously 'url-retrieve))
+    (unless (fboundp 'url-queue-retrieve)
+      (defun url-queue-retrieve (url callback &optional cbargs silent
+                                    inhibit-cookies)
+       (url-retrieve url callback cbargs)))
     (autoload 'Info-directory "info" nil t)
     (autoload 'Info-index "info" nil t)
     (autoload 'Info-index-next "info" nil t)
     (autoload 'customize-set-variable "cus-edit" nil t)
     (autoload 'customize-variable "cus-edit" nil t)
     (autoload 'debug "debug" nil t)
+    (autoload 'sha1 "sha1")
     (if (featurep 'mule)
        (unless (locate-library "mule-ccl")
          (autoload 'define-ccl-program "ccl" nil nil 'macro))
     (autoload 'read-passwd "passwd")
     (autoload 'regexp-opt "regexp-opt")
     (autoload 'reporter-submit-bug-report "reporter")
+    (if (condition-case nil
+           (progn
+             (require 'rot13)
+             (not (fboundp 'rot13-string)))
+         (error nil))
+       (defmacro rot13-string (string)
+         "Return ROT13 encryption of STRING."
+         `(let ((string ,string))
+            (with-temp-buffer
+              (insert string)
+              (translate-region (point-min) (point-max) ,rot13-display-table)
+              (buffer-string)))))
     (if (and (emacs-version>= 21 5)
             (not (featurep 'sxemacs)))
        (autoload 'setenv "process" nil t)
     (defalias 'overlays-in 'ignore)
     (defalias 'replace-dehighlight 'ignore)
     (defalias 'replace-highlight 'ignore)
+    (defalias 'gnutls-available-p 'ignore)
+    (defvar timer-list nil)
     (defalias 'w3-coding-system-for-mime-charset 'ignore)))
 
 (defun dgnushack-emacs-compile-defcustom-p ()
@@ -235,7 +259,8 @@ in `defcustom' forms."
            (search-forward " 'foo '(byte-code " nil t))
        (kill-buffer outbuf)))))
 
-(when (dgnushack-emacs-compile-defcustom-p)
+(when (and (featurep 'xemacs)
+          (dgnushack-emacs-compile-defcustom-p))
   (maybe-fbind '(defined-colors face-attribute))
   (maybe-bind '(idna-program installation-directory)))
 
@@ -256,12 +281,19 @@ dgnushack-compile-verbosely.  All other users should continue to use
 dgnushack-compile."
   (dgnushack-compile t))
 
-(defun dgnushack-compile (&optional warn)
+(defun dgnushack-compile-error-on-warn ()
+  "Call dgnushack-compile with minimal warnings, but with error-on-warn ENABLED.
+This means that every warning will be reported as an error."
+  (unless (dgnushack-compile nil t)
+    (error "Error during byte compilation (warnings were reported as errors!).")))
+
+(defun dgnushack-compile (&optional warn error-on-warn)
   ;;(setq byte-compile-dynamic t)
   (unless warn
     (setq byte-compile-warnings
          '(free-vars unresolved callargs redefine suspicious)))
   (let ((files (directory-files srcdir nil "^[^=].*\\.el$"))
+       (compilesuccess t)
        ;;(byte-compile-generate-call-tree t)
        file elc)
     ;; Avoid barfing (from gnus-xmas) because the etc directory is not yet
@@ -299,7 +331,10 @@ dgnushack-compile."
                 ;; lpath.el binds it.
                 (not (eq (symbol-function 'libxml-parse-html-region)
                          'ignore)))
-      (setq files (delete "shr.el" files)))
+      (dolist (file '("color.el" "shr-color.el" "shr.el"))
+       (setq files (delete file files))))
+    (unless (locate-library "epg")
+      (setq files (delete "plstore.el" files)))
 
     (dolist (file files)
       (setq file (expand-file-name file srcdir))
@@ -313,8 +348,14 @@ dgnushack-compile."
       (when (or (not (file-exists-p
                      (setq elc (concat (file-name-nondirectory file) "c"))))
                (file-newer-than-file-p file elc))
-       (ignore-errors
-         (byte-compile-file file))))))
+       (if error-on-warn
+           (let ((byte-compile-error-on-warn t))
+             (unless (ignore-errors
+                       (byte-compile-file file))
+               (setq compilesuccess nil)))
+         (ignore-errors
+           (byte-compile-file file)))))
+    compilesuccess))
 
 (defun dgnushack-recompile ()
   (require 'gnus)
@@ -509,4 +550,16 @@ or remove them using `make remove-installed-shadows'.\n\n"))))))))
              (error (princ "failed\n")))))
        (setq path (cdr path))))))
 
+(unless (fboundp 'with-demoted-errors)
+  (defmacro with-demoted-errors (&rest body)
+    "Run BODY and demote any errors to simple messages.
+If `debug-on-error' is non-nil, run BODY without catching its errors.
+This is to be used around code which is not expected to signal an error
+but which should be robust in the unexpected case that an error is signaled."
+    (declare (debug t) (indent 0))
+    (let ((err (make-symbol "err")))
+      `(condition-case ,err
+          (progn ,@body)
+        (error (message "Error: %S" ,err) nil)))))
+
 ;;; dgnushack.el ends here