comparison lisp/cedet/ede/proj-prog.el @ 110526:b150a06c6999

Synch EDE to CEDET 1.0. * cedet-idutils.el (cedet-idutils-make-command): New option. (cedet-idutils-mkid-call): (cedet-idutils-create/update-database): New functions. * cedet-cscope.el (cedet-cscope-create): (cedet-cscope-create/update-database): New functions. (cedet-cscope-support-for-directory): Make interactive. * cedet-global.el (cedet-global-gtags-command): New option. (cedet-gnu-global-gtags-call) (cedet-gnu-global-create/update-database): New functions. * ede.el (ede-save-cache): Fix recentf-exclude expression. (ede-make-dist): Always use toplevel project. (ede-buffer-object): If we fail to find an object in the current project, loop upward looking for a match. If no target is found, use most local project. (ede-buffer-belongs-to-target-p) (ede-buffer-belongs-to-project-p): New functions. (ede-initialize-state-current-buffer): New function. (ede-target-forms-menu, ede-project-buffers): Use them. (ede-minor-mode, ede-reset-all-buffers): Use it. (project-interactive-select-target, project-add-file): Don't use ede-project-force-load. (ede-buffer-object): New arg PROJSYM. (ede-minor-mode): Remove ede-directory-project-p test. (ede-initialize-state-current-buffer): Don't test for ede-directory-project-p if there is a matching open project. (ede-customize-forms-menu): Prevent error if there is no project. (ede-load-project-file): Set ede-constructing to the thing being constructed, instead of t. (ede-project-force-load): Deleted. * ede/base.el: * ede/auto.el: * ede/custom.el: New files. * ede/autoconf-edit.el (autoconf-find-last-macro) (autoconf-parameters-for-macro): Parse multiline parameters of macros. Optionally ignore case and at bol for macro. (autoconf-parameter-strip): Use greedy match for newlines. (autoconf-new-automake-string): Deleted. (autoconf-new-program): Use SRecode to fill an empty file. * ede/cpp-root.el (ede-create-lots-of-projects-under-dir): New function. * ede/files.el (ede-flush-project-hash): New command. (ede-convert-path): Add optional PROJECT arg. (ede-directory-project-p): Obey ".ede-ignore". (ede-expand-filename-local) (ede-expand-filename-impl-via-subproj): New methods. (ede-expand-filename-impl): Use them. (ede-project-root, ede-project-root-directory): Move to ede/auto.el. * ede/locate.el (ede-locate-flush-hash): (ede-locate-create/update-root-database): New methods. (initialize-instance): Use ede-locate-flush-hash. * ede/pmake.el (ede-proj-makefile-insert-variables): If this is the top project and not a metasubproject, set TOP to CURDIR. (ede-proj-makefile-insert-variables): Output a target's object list whether or not the vars are already in the Makefile. (ede-pmake-insert-variable-once): New macro. * ede/project-am.el (project-am-with-makefile-current): Add recentf-exclude. (project-am-load-makefile): Obey an optional suggested name. (project-am-expand-subdirlist): New function. (project-am-makefile::project-rescan): Use it. Combine SUBDIRS and DIST_SUBDIRS. (project-am-meta-type-alist): A list to scan better Makefile.am (project-am-scan-for-targets): Scan also over project-am-meta-type-alist. (ede-system-include-path): Simple implementation. (ede-find-target): Deleted. EDE core takes care of this. (ede-buffer-mine): Create the searched filename as relative. (project-am-load): Simplify, using autoconf-edit. (project-am-extract-package-info): Fix separators. * ede/proj.el (project-run-target): New method. (project-make-dist, project-compile-project): Use ede-proj-automake-p to determine which kind of compile to use. (project-rescan): Call ede-load-project-file. (ede-buffer-mine): Add more file names that belong to the project. (ede-proj-compilers): Improve error message. * ede/proj-obj.el (ede-ld-linker): Use the LDDEPS variable. (ede-source-c++): Add more C++ extensions. (ede-proj-target-makefile-objectcode): Quote initforms. Support lex and yacc. * ede/proj-prog.el (ede-proj-makefile-insert-rules): Removed. (ede-proj-makefile-insert-variables): New, add LDDEPS. (ede-proj-makefile-insert-automake-post-variables): Add LDADD variable. Use ldlibs-local slot. Add a -l to ldlibs strings. (ede-proj-target-makefile-program): Swap order of two slots so they show up in the same order as in the command line. (ede-proj-target-makefile-program): Add ldlibs-local slot. * ede/proj-shared.el (ede-g++-libtool-shared-compiler): Fix inference rule to use cpp files. (ede-proj-target-makefile-shared-object): Quote initforms. * ede/proj-misc.el (ede-proj-target-makefile-miscelaneous): * ede/proj-info.el (ede-proj-target-makefile-info): * ede/proj-aux.el (ede-proj-target-aux): * ede/proj-archive.el (ede-proj-target-makefile-archive): * ede/proj-elisp.el (ede-proj-target-elisp) (ede-proj-target-elisp-autoloads): Quote initforms. * ede/srecode.el (ede-srecode-setup): Load autoconf templates. * ede/shell.el (ede-shell-buffer): Fix buffer name. * ede/pconf.el (ede-proj-configure-synchronize): If user events occur while waiting for the compile process to finish, pull them in and discard those events.
author Chong Yidong <cyd@stupidchicken.com>
date Mon, 20 Sep 2010 22:42:53 -0400
parents 1d1d5d9bd884
children 376148b31b5e
comparison
equal deleted inserted replaced
110525:e950143ab9e0 110526:b150a06c6999
32 (declare-function ede-shell-run-something "ede/shell") 32 (declare-function ede-shell-run-something "ede/shell")
33 33
34 ;;; Code: 34 ;;; Code:
35 (defclass ede-proj-target-makefile-program 35 (defclass ede-proj-target-makefile-program
36 (ede-proj-target-makefile-objectcode) 36 (ede-proj-target-makefile-objectcode)
37 ((ldlibs :initarg :ldlibs 37 ((ldlibs-local :initarg :ldlibs-local
38 :initform nil 38 :initform nil
39 :type list 39 :type list
40 :custom (repeat (string :tag "Library")) 40 :custom (repeat (string :tag "Local Library"))
41 :documentation 41 :documentation
42 "Libraries, such as \"m\" or \"Xt\" which this program depends on. 42 "Libraries that are part of this project.
43 The linker flag \"-l\" is automatically prepended. Do not include a \"lib\" 43 The full path to these libraries should be specified, such as:
44 prefix, or a \".so\" suffix. 44 ../lib/libMylib.la or ../ar/myArchive.a
45 45
46 Note: Currently only used for Automake projects." 46 Note: Currently only used for Automake projects."
47 ) 47 )
48 (ldflags :initarg :ldflags 48 (ldflags :initarg :ldflags
49 :initform nil 49 :initform nil
50 :type list 50 :type list
51 :custom (repeat (string :tag "Link Flag")) 51 :custom (repeat (string :tag "Link Flag"))
52 :documentation 52 :documentation
53 "Additional flags to add when linking this target. 53 "Additional flags to add when linking this target.
54 Use ldlibs to add addition libraries. Use this to specify specific 54 Use this to specify specific options to the linker.
55 options to the linker. 55 A Common use may be to add -L to specify in-project locations of libraries
56 specified with ldlibs.")
57 (ldlibs :initarg :ldlibs
58 :initform nil
59 :type list
60 :custom (repeat (string :tag "Library"))
61 :documentation
62 "Libraries, such as \"m\" or \"Xt\" which this program depends on.
63 The linker flag \"-l\" is automatically prepended. Do not include a \"lib\"
64 prefix, or a \".so\" suffix.
65 Use the 'ldflags' slot to specify where in-project libraries might be.
56 66
57 Note: Not currently used. This bug needs to be fixed.") 67 Note: Currently only used for Automake projects."
68 )
58 ) 69 )
59 "This target is an executable program.") 70 "This target is an executable program.")
60 71
61 (defmethod ede-proj-makefile-insert-automake-pre-variables 72 (defmethod ede-proj-makefile-insert-automake-pre-variables
62 ((this ede-proj-target-makefile-program)) 73 ((this ede-proj-target-makefile-program))
68 (defmethod ede-proj-makefile-insert-automake-post-variables 79 (defmethod ede-proj-makefile-insert-automake-post-variables
69 ((this ede-proj-target-makefile-program)) 80 ((this ede-proj-target-makefile-program))
70 "Insert bin_PROGRAMS variables needed by target THIS." 81 "Insert bin_PROGRAMS variables needed by target THIS."
71 (ede-pmake-insert-variable-shared 82 (ede-pmake-insert-variable-shared
72 (concat (ede-name this) "_LDADD") 83 (concat (ede-name this) "_LDADD")
73 (mapc (lambda (c) (insert " -l" c)) (oref this ldlibs))) 84 (mapc (lambda (l) (insert " " l)) (oref this ldlibs-local))
74 ;; For other targets THIS depends on 85 (mapc (lambda (c) (insert " " c)) (oref this ldflags))
75 ;; 86 (when (oref this ldlibs)
76 ;; NOTE: FIX THIS 87 (mapc (lambda (d) (insert " -l" d)) (oref this ldlibs)))
77 ;; 88 )
78 ;;(ede-pmake-insert-variable-shared
79 ;; (concat (ede-name this) "_DEPENDENCIES")
80 ;; (mapcar (lambda (d) (insert d)) (oref this FOOOOOOOO)))
81 (call-next-method)) 89 (call-next-method))
82 90
83 (defmethod ede-proj-makefile-insert-rules ((this ede-proj-target-makefile-program)) 91 (defmethod ede-proj-makefile-insert-variables ((this ede-proj-target-makefile-program))
84 "Insert rules needed by THIS target." 92 "Insert variables needed by the compiler THIS."
85 (let ((ede-proj-compiler-object-linkflags 93 (call-next-method)
86 (mapconcat 'identity (oref this ldflags) " "))) 94 (let ((lf (mapconcat 'identity (oref this ldflags) " ")))
87 (with-slots (ldlibs) this 95 (with-slots (ldlibs) this
88 (if ldlibs 96 (if ldlibs
89 (setq ede-proj-compiler-object-linkflags 97 (setq lf
90 (concat ede-proj-compiler-object-linkflags 98 (concat lf " -l" (mapconcat 'identity ldlibs " -l")))))
91 " -l" 99 ;; LDFLAGS as needed.
92 (mapconcat 'identity ldlibs " -l"))))) 100 (when (and lf (not (string= "" lf)))
93 (call-next-method))) 101 (ede-pmake-insert-variable-once "LDDEPS" (insert lf)))))
94 102
95 (defmethod project-debug-target ((obj ede-proj-target-makefile-program)) 103 (defmethod project-debug-target ((obj ede-proj-target-makefile-program))
96 "Debug a program target OBJ." 104 "Debug a program target OBJ."
97 (let ((tb (get-buffer-create " *padt*")) 105 (let ((tb (get-buffer-create " *padt*"))
98 (dd (if (not (string= (oref obj path) "")) 106 (dd (if (not (string= (oref obj path) ""))