proj-misc.el 3.11 KB
Newer Older
Glenn Morris's avatar
Glenn Morris committed
1
;;; ede-proj-misc.el --- EDE Generic Project Emacs Lisp support
2

Glenn Morris's avatar
Glenn Morris committed
3
;; Copyright (C) 1998, 1999, 2000, 2001, 2008, 2009, 2010
Glenn Morris's avatar
Glenn Morris committed
4
;;   Free Software Foundation, Inc.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

;; Author: Eric M. Ludlam <zappo@gnu.org>
;; Keywords: project, make

;; This file is part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:
;;
Glenn Morris's avatar
Glenn Morris committed
26
;; Handle miscellaneous compilable projects in and EDE Project file.
27 28 29
;; This misc target lets the user link in custom makefiles to an EDE
;; project.

Chong Yidong's avatar
Chong Yidong committed
30
(eval-when-compile (require 'cl))
31 32 33 34
(require 'ede/pmake)
(require 'ede/proj-comp)

;;; Code:
Glenn Morris's avatar
Glenn Morris committed
35 36

;; FIXME this isn't how you spell "miscellaneous". :(
37
(defclass ede-proj-target-makefile-miscelaneous (ede-proj-target-makefile)
Eric M. Ludlam's avatar
Eric M. Ludlam committed
38 39
  ((sourcetype :initform '(ede-misc-source))
   (availablecompilers :initform '(ede-misc-compile))
40 41 42 43 44 45 46 47
   (submakefile :initarg :submakefile
		:initform ""
		:type string
		:custom string
		:documentation
		"Miscellaneous sources which have a specialized makefile.
The sub-makefile is used to build this target.")
   )
Glenn Morris's avatar
Glenn Morris committed
48
   "Miscellaneous target type.
49 50 51 52 53 54 55
A user-written makefile is used to build this target.
All listed sources are included in the distribution.")

(defvar ede-misc-source
  (ede-sourcecode "ede-misc-source"
		  :name "Miscelaneous"
		  :sourcepattern ".*")
Glenn Morris's avatar
Glenn Morris committed
56
  "Miscellaneous field definition.")
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85

(defvar ede-misc-compile
  (ede-compiler "ede-misc-compile"
		:name "Sub Makefile"
		:commands
		'(
		  )
		:autoconf nil
		:sourcetype '(ede-misc-source)
		)
  "Compile code via a sub-makefile.")

(defmethod ede-proj-makefile-sourcevar ((this ede-proj-target-makefile-miscelaneous))
  "Return the variable name for THIS's sources."
  (concat (ede-pmake-varname this) "_MISC"))

(defmethod ede-proj-makefile-dependency-files
  ((this ede-proj-target-makefile-miscelaneous))
  "Return a list of files which THIS target depends on."
  (with-slots (submakefile) this
    (cond ((string= submakefile "")
	   nil)
	  ((not submakefile)
	   nil)
	  (t (list submakefile)))))

(defmethod ede-proj-makefile-insert-rules ((this ede-proj-target-makefile-miscelaneous))
  "Create the make rule needed to create an archive for THIS."
  ;; DO NOT call the next method.  We will never have any compilers,
Glenn Morris's avatar
Glenn Morris committed
86
  ;; or any dependencies, or stuff like this.  This rule will let us
87 88 89 90 91 92 93 94 95
  ;; deal with it in a nice way.
  (insert (ede-name this) ": ")
  (with-slots (submakefile) this
    (if (string= submakefile "")
	(insert "\n\t@\n\n")
      (insert submakefile "\n" "\t$(MAKE) -f " submakefile "\n\n"))))

(provide 'ede/proj-misc)

Miles Bader's avatar
Miles Bader committed
96
;; arch-tag: e5e5f8d2-9897-4a1b-8a29-5944ec5a892d
97
;;; ede/proj-misc.el ends here