;; -*- emacs-lisp -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; $Id: autoload-make.el,v 1.4 2004/04/13 18:45:59 ole Exp $
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; utility functions for autoload and compile
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;###autoload
(defun recompile-dir (dir)
  "recompile all files in a directory which are newer than their corresponding .elc files"
  (interactive (list (read-file-name "Directory: ")))
  (let ((files (directory-files dir t "^[^.]+\\.el$" nil)))
    (while files
    (let ((srcfile (car files))
          (dstfile (concat (car files) "c")))
      (if (or (not (file-exists-p dstfile)) 
              (file-newer-than-file-p srcfile dstfile))
          (progn 
            (byte-compile-file srcfile)
            (message (concat "Compiling " srcfile)))
        (message (concat dstfile " exists and is newer" ))))
    (setq files (cdr files)))))

;;;###autoload
(defun recompile-lisp-dir ()
  "recompile all files in the lisp directory which are newer than their corresponding .elc files"
  (interactive)
  (recompile-dir emacs-lisp-dir)
)

;;;###autoload
(defun update-autoloads-for-lisp-dir ()
  "generate autoloads.el in emacs-init-dir for all elips files in x-emacs-lisp-dir"
  (interactive)
  (require 'autoload)
  (let ((generated-autoload-file (concat emacs-init-dir "autoloads.el")))
    (if (file-exists-p generated-autoload-file)
        (delete-file generated-autoload-file))
    (cond ((fboundp 'update-autoloads-from-directory)
           (update-autoloads-from-directory emacs-lisp-dir))
          ((fboundp 'update-autoloads-from-directories)
           (update-autoloads-from-directories emacs-lisp-dir))
          ((fboundp 'update-directory-autoloads)
           (update-directory-autoloads emacs-lisp-dir emacs-mylisp-dir)))))

(provide 'autoload-make)