## Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation, Inc.
## Copyright (C) 1994, 1995 Board of Trustees, University of Illinois
## Copyright (C) 1996, 1997 Sun Microsystems, Inc.
+## Copyright (C) 1998, 1999 J. Kean Johnston.
## This file is part of XEmacs.
.SUFFIXES:
.SUFFIXES: .c .h .o .i .s .dep
+#ifdef USE_GNU_MAKE
+RECURSIVE_MAKE=$(MAKE)
+#else
@SET_MAKE@
+RECURSIVE_MAKE=@RECURSIVE_MAKE@
+#endif
+
SHELL=/bin/sh
RM = rm -f
lispdir = ${srcdir}/../lisp/
+moduledir = ${srcdir}/../modules/
libsrc = ../lib-src/
etcdir = ../etc/
srcdir=@srcdir@
blddir=@blddir@
version=@version@
-CC=@CC@
+CC=@XEMACS_CC@
CPP=@CPP@
CFLAGS=@CFLAGS@
CPPFLAGS=@CPPFLAGS@
LDFLAGS=@LDFLAGS@
-RECURSIVE_MAKE=@RECURSIVE_MAKE@
c_switch_all=@c_switch_all@
ld_switch_all=@ld_switch_all@
vpath config.h
vpath paths.h
vpath Emacs.ad.h
-vpath puresize-adjust.h
vpath sheap-adjust.h
#else
VPATH=@srcdir@
cd ../lwlib && $(RECURSIVE_MAKE)
x_objs=balloon_help.o balloon-x.o console-x.o device-x.o event-Xt.o frame-x.o\
- glyphs-x.o objects-x.o redisplay-x.o xgccache.o xselect.o
+ glyphs-x.o objects-x.o redisplay-x.o select-x.o xgccache.o
#ifdef AIX4
LIBI18N = -li18n
eval.o events.o $(extra_objs)\
event-stream.o extents.o faces.o\
fileio.o $(LOCK_OBJ) filemode.o floatfns.o fns.o font-lock.o\
- frame.o general.o getloadavg.o glyphs.o glyphs-eimage.o\
- $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
+ frame.o general.o glyphs.o glyphs-eimage.o glyphs-widget.o\
+ gui.o gutter.o $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
keymap.o $(RTC_patch_objs) line-number.o lread.o lstream.o\
macros.o marker.o md5.o minibuf.o objects.o opaque.o\
- print.o process.o profile.o pure.o\
+ print.o process.o profile.o\
rangetab.o redisplay.o redisplay-output.o regex.o\
- search.o $(sheap_obj) signal.o sound.o\
+ search.o select.o $(sheap_obj) signal.o sound.o\
specifier.o strftime.o symbols.o syntax.o sysdep.o\
undo.o $(x_objs) widget.o window.o
## define otherobjs as list of object files that make-docfile
## should not be told about.
-otherobjs = $(BTL_objs) lastfile.o $(mallocobjs) $(rallocobjs) $(X11_objs)
+otherobjs = lastfile.o $(mallocobjs) $(rallocobjs) $(X11_objs)
otherrtls = $(otherobjs:.o=.c.rtl)
othersrcs = $(otherobjs:.o=.c)
-LIBES = $(lwlib_libs) $(quantify_libs) $(malloclib) $(ld_libs_all) $(lib_gcc)
+LIBES = $(lwlib_libs) $(malloclib) $(ld_libs_all) $(lib_gcc)
#ifdef I18N3
mo_dir = ${etcdir}
mo_file = ${mo_dir}emacs.mo
#endif
-LOADPATH = EMACSBOOTSTRAPLOADPATH="${lispdir}:${blddir}"
-DUMPENV = $(LOADPATH)
+#ifdef WINDOWSNT
+LOADPATH = EMACSBOOTSTRAPLOADPATH="${lispdir};${blddir}"
+MODULEPATH = EMACSBOOTSTRAPMODULEPATH="${moduledir};${blddir}"
+#else
+LOADPATH = EMACSBOOTSTRAPLOADPATH="${lispdir}:${blddir}"
+MODULEPATH = EMACSBOOTSTRAPMODULEPATH="${moduledir}:${blddir}"
+#endif
+DUMPENV = $(LOADPATH) $(MODULEPATH)
+temacs_loadup = $(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el
+dump_temacs = ${temacs_loadup} dump
+run_temacs = ${temacs_loadup} run-temacs
+debug_temacs = $(DUMPENV) gdb temacs
release: temacs ${libsrc}DOC $(mo_file) ${other_files}
#ifdef CANNOT_DUMP
-if [ -w ${srcdir}/../lisp ]; then \
w=`pwd`; cd ${srcdir} && $${w}/temacs -nl -batch -l ${srcdir}/../lisp/inc-vers; \
else true; fi
- @touch SATISFIED
-$(DUMPENV) ./temacs -nl -batch -l ${srcdir}/../lisp/loadup.el dump
- @if test ! -f SATISFIED; then $(RECURSIVE_MAKE) $@; fi
- @$(RM) SATISFIED
#else /* ! defined (HAVE_SHM) */
-if [ -w ${srcdir}/../lisp ]; then \
w=`pwd`; cd ${srcdir} && $${w}/temacs -batch -l ${srcdir}/../lisp/inc-vers; \
else true; fi
- @touch SATISFIED
-$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el dump
- @if test ! -f SATISFIED; then $(RECURSIVE_MAKE) $@; fi
- @$(RM) SATISFIED
#endif /* ! defined (HAVE_SHM) */
touch release
#endif /* ! defined (CANNOT_DUMP) */
${PROGNAME}: temacs ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp
- @$(RM) $@ && touch SATISFIED
- -$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el dump
+#ifdef HEAP_IN_DATA
+ @$(RM) $@ $@.exe && touch SATISFIED
+ -${dump_temacs}
@if test -f $@; then if test -f SATISFIED; then \
echo "Testing for Lisp shadows ..."; \
./${PROGNAME} -batch -vanilla -f list-load-path-shadows; fi; \
$(RM) SATISFIED; exit 0; fi; \
if test -f SATISFIED; then $(RM) SATISFIED; exit 1; fi; \
$(RECURSIVE_MAKE) $@;
+#else
+ @$(RM) $@
+ -${dump_temacs}
+ @echo "Testing for Lisp shadows ..."
+ @./${PROGNAME} -batch -vanilla -f list-load-path-shadows
+#endif
fastdump: temacs
@$(RM) ${PROGNAME} && touch SATISFIED
- -$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el dump
- @if test -f ${PROGNAME}; then if test -f SATISFIED; then \
- ./${PROGNAME} -batch -vanilla -f list-load-path-shadows; fi; \
- $(RM) SATISFIED; exit 0; fi; \
- if test -f SATISFIED; then $(RM) SATISFIED; exit 1; fi;
+ -${dump_temacs}
+ @./${PROGNAME} -batch -vanilla -f list-load-path-shadows
FRC.update-elc.stamp :
.PHONY : run-temacs
run-temacs: temacs
- -$(DUMPENV) ./temacs -batch -l ${srcdir}/../lisp/loadup.el run-temacs
+ -${run_temacs}
+
+## We have automated tests!!
+testdir = ${srcdir}/../tests/automated
+batch_test_emacs = -batch -l ${testdir}/test-harness.el -f batch-test-emacs ${testdir}
+
+.PHONY: check check-temacs
+check:
+ ./${PROGNAME} ${batch_test_emacs}
+check-temacs:
+ ${run_temacs} ${batch_test_emacs}
## Debugging targets:
##
-## RTC is Sun WorkShop's Run Time Checking
-##
-## Purify, Quantify, PureCoverage are software quality products from
-## Rational, formerly Pure Atria, formerly Pure Software.
-##
-## None of these products work with a dumped xemacs binary, because it
-## does unexpected things like free memory that has been malloc'ed in
-## a *different* process!! So we need to run these on temacs.
-##
-
-.PHONY : run-rtcmacs run-puremacs run-quantmacs
+## None of the debugging products work with a dumped xemacs binary,
+## because it does unexpected things like free memory that has been
+## malloc'ed in a *different* process!! So we need to run these on
+## temacs.
+## RTC is Sun WorkShop's Run Time Checking, integrated with dbx
rtc_patch.o:
rtc_patch_area -o $@
$(RM) temacs; $(RECURSIVE_MAKE) temacs RTC_patch_objs=rtc_patch.o
mv temacs rtcmacs
+.PHONY: run-rtcmacs
run-rtcmacs: rtcmacs
dbx -q -C -c \
'dbxenv rtc_error_log_file_name /dev/fd/1; \
runargs -batch -l ${srcdir}/../lisp/loadup.el run-temacs -q; \
run' rtcmacs
+debug-temacs: temacs
+ -${debug_temacs}
+
+## Purify, Quantify, PureCoverage are software quality products from
+## Rational, formerly Pure Atria, formerly Pure Software.
+##
## Purify
-PURIFY_PROG=purify
-PURIFY_FLAGS=-chain-length=32 -ignore-signals=SIGPOLL -threads=yes \
- -cache-dir=./purecache -always-use-cache-dir=yes -pointer-mask=0x0fffffff
+PURIFY_PROG = purify
+PURIFY_FLAGS = -chain-length=32 -ignore-signals=SIGPOLL -threads=yes \
+ -cache-dir=./purecache -always-use-cache-dir=yes
+PURIFY_LIBS = -lpthread
puremacs: $(temacs_deps)
- $(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) -lpthread
-
-run-puremacs: puremacs
- -$(DUMPENV) ./puremacs -batch -l ${srcdir}/../lisp/loadup.el run-temacs
+ $(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS)
+ cp $@ temacs
## Quantify
#ifdef QUANTIFY
-quantify_prog = quantify
-quantify_flags = -windows=no -record-data=no
-quantify_includes = -I/local/include
-quantify_libs = /local/lib/quantify_stubs.a
+QUANTIFY_PROG = quantify
+QUANTIFY_HOME = `$(QUANTIFY_PROG) -print-home-dir`
+QUANTIFY_FLAGS = -cache-dir=./purecache -always-use-cache-dir=yes
+cppflags += -I$(QUANTIFY_HOME)
+temacs_link_args += $(QUANTIFY_HOME)/quantify_stubs.a
quantmacs: $(temacs_deps)
- $(quantify_prog) $(quantify_flags) $(LD) $(temacs_link_args)
+ $(QUANTIFY_PROG) $(QUANTIFY_FLAGS) $(LD) $(temacs_link_args)
+ cp $@ temacs
#endif /* QUANTIFY */
+
PURECOV_PROG=purecov
covmacs: $(temacs_deps)
$(PURECOV_PROG) $(LD) $(temacs_link_args)
#endif /* EXTERNAL_WIDGET */
config.h: ${srcdir}/config.h.in
-puresize-adjust.h: ${srcdir}/puresize.h
Emacs.ad.h: ${srcdir}/${etcdir}Emacs.ad
-config.h puresize-adjust.h sheap-adjust.h paths.h Emacs.ad.h :
+config.h sheap-adjust.h paths.h Emacs.ad.h :
@echo "The file $@ needs to be re-generated."
@echo "Please run a make in the top level directory."
@echo "Consult the file \`INSTALL' for instructions for building XEmacs."
#endif /* HAVE_ALLOCA */
#endif /* ! defined (C_ALLOCA) */
-#ifdef EMACS_BTL
-BTL_includes = -I$(BTL_dir)
-BTL_compile = -DEMACS_BTL -D`lucid-arch` -I. $(BTL_includes) $(BTL_dir)/$(@:.o=.c)
-
-cadillac-btl.o cadillac-btl-process.o cadillac-btl-emacs.o:
- $(CC) $(CFLAGS) -c $(BTL_compile)
-cadillac-btl-asm.o:
- $(CC) $(CFLAGS) -c $(BTL_compile)
-#endif /* EMACS_BTL */
-
#ifdef HAVE_NATIVE_SOUND
sunplay.o: ${srcdir}/sunplay.c
$(CC) -c $(sound_cflags) $(cflags) ${srcdir}/sunplay.c
.PHONY: mostlyclean clean distclean realclean versionclean extraclean
mostlyclean:
$(RM) temacs puremacs quantmacs prefix-args *.o *.i \
- core temacs.exe puresize-adjust.h sheap-adjust.h
+ core temacs.exe sheap-adjust.h
clean: mostlyclean versionclean
$(RM) libextcli* update-elc.stamp
## This is used in making a distribution.
## Do not use it on development directories!
distclean: clean
$(RM) config.h paths.h Emacs.ad.h \
- Makefile Makefile.in TAGS ${PROGNAME}.*
+ GNUmakefile Makefile Makefile.in TAGS ${PROGNAME}.*
realclean: distclean
versionclean:
$(RM) ${PROGNAME} ${PROGNAME}.exe ${libsrc}DOC
relock:
chmod -w $(SOURCES)
+## Header files for ellcc
+#ifdef HAVE_SHLIB
+MAKEPATH=../lib-src/make-path
+install: ${PROGNAME}
+ ${MAKEPATH} ${archlibdir}/include ${archlibdir}/include/m ${archlibdir}/include/s
+ -@echo "Copying include files for ellcc..."
+ -@hdir=`pwd`; \
+ cd ${srcdir}; hdrdir2=`pwd`; cd $$hdir; \
+ test "$$hdrdir2" != "$$hdir" && hdir="$$hdir $$hdrdir2"; \
+ (for thisdir in $$hdir; do \
+ cd $$hdir && \
+ (hdrtars=; \
+ for hdrfile in *.h; do \
+ hdrtars="$$hdrtars $$hdrfile"; \
+ done; \
+ test -d s && hdrtars="$$hdrtars s/*"; \
+ test -d m && hdrtars="$$hdrtars m/*"; \
+ test -n "$$hdrtars" && (tar cf - $$hdrtars) | \
+ (cd ${archlibdir}/include && umask 022 && tar xf -); \
+ chmod 755 ${archlibdir}/include; \
+ test -d ${archlibdir}/include/s && \
+ chmod 755 ${archlibdir}/include/s; \
+ test -d ${archlibdir}/include/m && \
+ chmod 755 ${archlibdir}/include/s;) \
+ done)
+#endif
+
## Dependency processing using home-grown script, not makedepend
+.PHONY: depend
+FRC.depend:
depend: FRC.depend
- $(RM) ${srcdir}/depend depend.tmp
- perl ${srcdir}/make-src-depend > depend.tmp
- mv depend.tmp ${srcdir}/depend
+ cd ${srcdir} && $(RM) depend.tmp && \
+ perl ./make-src-depend > depend.tmp && \
+ if cmp -s depend depend.tmp; \
+ then $(RM) depend.tmp; \
+ else $(RM) depend && mv depend.tmp depend; \
+ fi