Hard-code location of sources and create a TAGS file

This commit is contained in:
Juan Jose Garcia Ripoll 2010-02-22 14:23:13 +01:00
parent 5e8c091b09
commit e3810e9587
3 changed files with 35 additions and 10 deletions

View file

@ -114,6 +114,13 @@ and important fixes to let ECL work better with Slime.
- The PROFILE package now has an alias, SB-PROFILE.
- ECL now stores the location of its source files in a logical hostname,
"SRC:", which points to the directory where Announcement is located.
- When building ECL, if "etags" is installed, a file TAGS is created which
contains references to the location of all C functions. This file can be
used to locate functions from the core library in Slime, using M-.
;;; Local Variables: ***
;;; mode:text ***
;;; fill-column:79 ***

View file

@ -48,7 +48,7 @@ LSP_LIBRARIES = @LSP_LIBRARIES@
TARGETS = @TARGETS@
ECL_CMPDIR = @ECL_CMPDIR@
all: $(TARGETS) bin/ecl-config
all: $(TARGETS) bin/ecl-config TAGS
.PHONY: all
%Makefile: $(srcdir)/%Makefile.in config.status
@ -149,7 +149,7 @@ install-base:
rm $(DESTDIR)$(includedir)/ecl/config.h
mv $(DESTDIR)$(includedir)/ecl/config-install.h $(DESTDIR)$(includedir)/ecl/config.h
$(INSTALL_SCRIPT) bin/ecl-config $(DESTDIR)$(bindir)
for i in BUILD-STAMP help.doc ; do \
for i in BUILD-STAMP help.doc TAGS ; do \
$(INSTALL_DATA) $$i $(DESTDIR)$(ecldir); \
done
for i in $(LSP_LIBRARIES) $(LIBRARIES); do \
@ -194,7 +194,7 @@ clean: mostlyclean
$(RM) -r *
mostlyclean: clean_lisp
for i in $(SUBDIRS); do (cd $$i; $(MAKE) clean); done
$(RM) ecl_min$(EXE) bin/ecl$(EXE) help.doc core a.out
$(RM) ecl_min$(EXE) bin/ecl$(EXE) help.doc core a.out TAGS
$(RM) config.version config.log config.cache
$(RM) *.c *.o *.a *.h *.data *.fas *.dat *.la *.so *.dylib
clean_lisp:
@ -224,5 +224,16 @@ selfbuild:
./ecl compile
-for i in lsp clos cmp clx tk; do test -d $$i && diff --exclude=\*.o $$i stage2/$$i; done | less
# Make sure to also include *.d files; and match DPP's idiosyncracies
# like "@si::foo" and "@(defun si::foo".
TAGS:
etags -R --langmap=c:+.d
if which etags ; then \
srcfiles=`find $(srcdir)/c/ $(srcdir)/h/ -name '*.[chd]'`; \
etags --language=c -o $@ $$srcfiles && \
etags --language=none -o $@ --append \
--regex='/@\([-:*a-zA-z]+\)/\1/' \
--regex='/@(defun \([-:*a-zA-z]+\)/\1/' \
$$srcfiles; \
else \
echo > $@; \
fi

View file

@ -1,3 +1,4 @@
;; -*- Mode:Lisp -*-
;; @configure_input@
;;
;; Configuration file for ECL
@ -104,12 +105,6 @@ Returns, as a string, the version of the software under which ECL runs."
;; * Set configuration pathnames. Notice the trailing slash!
;; Otherwise it would not be a directory.
;;
#-ecl-min
(let ((path (si::get-library-pathname)))
(when path
(si::pathname-translations "SYS"
`(("**;*.*" ,(merge-pathnames "**/*.*" path )))))
);#-eclmin
#-msvc
(si::pathname-translations "HOME" '(("**;*.*" "~/**/*.*")))
#+msvc
@ -125,3 +120,15 @@ Returns, as a string, the version of the software under which ECL runs."
(t (setf x #+unix "/tmp" #-unix "./")))
(si::pathname-translations "TMP"
`(("**;*.*" ,(format nil "~A/**/*.*" x)))))
#-ecl-min
(macrolet ((define-pathname-translations (name base-pathname)
`(let ((path ,base-pathname))
(when path
(si::pathname-translations
,name `(("**;*.*" ,(merge-pathnames "**/*.*" path))))))))
(define-pathname-translations "SYS" (si::get-library-pathname))
(let ((x (ext:getenv "ECLSRCDIR")))
(unless (and x (setq x (probe-file x)))
(setf x #.(truename "@top_srcdir@/../")))
(define-pathname-translations "SRC" x)))