Mercurial > hg > xemacs-beta
comparison src/Makefile.in.in @ 1315:70921960b980
[xemacs-hg @ 2003-02-20 08:19:28 by ben]
check in makefile fixes et al
Makefile.in.in: Major surgery. Move all stuff related to building anything in the
src/ directory into src/. Simplify the dependencies -- everything
in src/ is dependent on the single entry `src' in MAKE_SUBDIRS.
Remove weirdo targets like `all-elc[s]', dump-elc[s], etc.
mule/mule-msw-init.el: Removed.
Delete this file.
mule/mule-win32-init.el: New file, with stuff from mule-msw-init.el -- not just for MS Windows
native, boys and girls!
bytecomp.el: Change code inserted to catch trying to load a Mule-only .elc
file in a non-Mule XEmacs. Formerly you got the rather cryptic
"The required feature `mule' cannot be provided". Now you get
"Loading this file requires Mule support".
finder.el: Remove dependency on which directory this function is invoked
from.
update-elc.el: Don't mess around with ../src/BYTECOMPILE_CHANGE. Now that
Makefile.in.in and xemacs.mak are in sync, both of them use
NEEDTODUMP and the other one isn't used.
dumped-lisp.el: Rewrite in terms of `list' and `nconc' instead of assemble-list, so
we can have arbitrary forms, not just `when-feature'.
very-early-lisp.el: Nuke this file.
finder-inf.el, packages.el, update-elc.el, update-elc-2.el, loadup.el, make-docfile.el: Eliminate references to very-early-lisp.
msw-glyphs.el: Comment clarification.
xemacs.mak: Add macros DO_TEMACS, DO_XEMACS, and a few others; this macro
section is now completely in sync with src/Makefile.in.in. Copy
check-features, load-shadows, and rebuilding finder-inf.el from
src/Makefile.in.in. The main build/dump/recompile process is now
synchronized with src/Makefile.in.in. Change `WARNING' to `NOTE'
and `error checking' to `error-checking' TO avoid tripping
faux warnings and errors in the VC++ IDE.
Makefile.in.in: Major surgery. Move all stuff related to building anything in the
src/ directory from top-level Makefile.in.in to here. Simplify
the dependencies. Rearrange into logical subsections.
Synchronize the main compile/dump/build-elcs section with
xemacs.mak, which is already clean and in good working order.
Remove weirdo targets like `all-elc[s]', dump-elc[s], etc. Add
additional levels of macros \(e.g. DO_TEMACS, DO_XEMACS,
TEMACS_BATCH, XEMACS_BATCH, XEMACS_BATCH_PACKAGES) to factor out
duplicated stuff. Clean up handling of "HEAP_IN_DATA" (Cygwin) so
it doesn't need to ignore the return value from dumping. Add
.NO_PARALLEL since various aspects of building and dumping must be
serialized but do not always have dependencies between them
(this is impossible in some cases). Everything related to src/
now gets built in one pass in this directory by just running
`make' (except the Makefiles themselves and config.h, paths.h,
Emacs.ad.h, and other generated .h files).
console.c: Update list of possibly valid console types.
emacs.c: Rationalize the specifying and handling of the type of the first
frame. This was originally prompted by a workspace in which I got
GTK to compile under C++ and in the process fixed it so it could
coexist with X in the same build -- hence, a combined
TTY/X/MS-Windows/GTK build is now possible under Cygwin. (However,
you can't simultaneously *display* more than one kind of device
connection -- but getting that to work is not that difficult.
Perhaps a project for a bored grad student. I (ben) would do it
but don't see the use.) To make sense of this, I added new
switches that can be used to specifically indicate the window
system: -x [aka --use-x], -tty \[aka --use-tty], -msw [aka
--use-ms-windows], -gtk [aka --use-gtk], and -gnome [aka
--use-gnome, same as --use-gtk]. -nw continues as an alias for
-tty. When none have been given, XEmacs checks for other
parameters implying particular device types (-t -> tty, -display
-> x [or should it have same treatment as DISPLAY below?]), and
has ad-hoc logic afterwards: if env var DISPLAY is set, use x (or
gtk? perhaps should check whether gnome is running), else MS
Windows if it exsits, else TTY if it exists, else stream, and you
must be running in batch mode. This also fixes an existing bug
whereby compiling with no x, no mswin, no tty, when running non-
interactively (e.g. to dump) I get "sorry, must have TTY support".
emacs.c: Turn on Vstack_trace_on_error so that errors are debuggable even
when occurring extremely early in reinitialization.
emacs.c: Try to make sure that the user can see message output under
Windows (i.e. it doesn't just disappear right away) regardless of
when it occurs, e.g. in the middle of creating the first frame.
emacs.c: Define new function `emacs-run-status', indicating whether XEmacs
is noninteractive or interactive, whether raw,
post-dump/pdump-load or run-temacs, whether we are dumping,
whether pdump is in effect.
event-stream.c: It's "mommas are fat", not "momas are fat".
Fix other typo.
event-stream.c: Conditionalize in_menu_callback check on HAVE_MENUBARS,
because it won't exist on w/o menubar support,
lisp.h: More hackery on RETURN_NOT_REACHED. Cygwin v3.2 DOES complain here
if RETURN_NOT_REACHED() is blank, as it is for GCC 2.5+. So make it
blank only for GCC 2.5 through 2.999999999999999.
Declare Vstack_trace_on_error.
profile.c: Need to include "profile.h" to fix warnings.
sheap.c: Don't fatal() when need to rerun Make, just stderr_out() and exit(0).
That way we can distinguish between a dumping failing expectedly
(due to lack of stack space, triggering another dump) and unexpectedly,
in which case, we want to stop building. (or go on, if -K is given)
syntax.c, syntax.h: Use ints where they belong, and enum syntaxcode's where they belong,
and fix warnings thereby.
syntax.h: Fix crash caused by an edge condition in the syntax-cache macros.
text.h: Spacing fixes.
xmotif.h: New file, to get around shadowing warnings.
EmacsManager.c, event-Xt.c, glyphs-x.c, gui-x.c, input-method-motif.c, xmmanagerp.h, xmprimitivep.h: Include xmotif.h.
alloc.c: Conditionalize in_malloc on ERROR_CHECK_MALLOC.
config.h.in, file-coding.h, fileio.c, getloadavg.c, select-x.c, signal.c, sysdep.c, sysfile.h, systime.h, text.c, unicode.c: Eliminate HAVE_WIN32_CODING_SYSTEMS, use WIN32_ANY instead.
Replace defined (WIN32_NATIVE) || defined (CYGWIN) with WIN32_ANY.
lisp.h: More futile attempts to walk and chew gum at the same time when
dealing with subr's that don't return.
author | ben |
---|---|
date | Thu, 20 Feb 2003 08:19:44 +0000 |
parents | f99d3d25df86 |
children | 70841e88fbee |
comparison
equal
deleted
inserted
replaced
1314:15a91d7ae2d1 | 1315:70921960b980 |
---|---|
1 ## Makefile for src subdirectory in XEmacs. | 1 ## Makefile for src subdirectory in XEmacs. |
2 ## Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation, Inc. | 2 ## Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation, Inc. |
3 ## Copyright (C) 1994, 1995 Board of Trustees, University of Illinois | 3 ## Copyright (C) 1994, 1995 Board of Trustees, University of Illinois |
4 ## Copyright (C) 1996, 1997 Sun Microsystems, Inc. | 4 ## Copyright (C) 1996, 1997 Sun Microsystems, Inc. |
5 ## Copyright (C) 1998, 1999 J. Kean Johnston. | 5 ## Copyright (C) 1998, 1999 J. Kean Johnston. |
6 ## Copyright (C) 2001, 2002 Ben Wing. | 6 ## Copyright (C) 2001, 2002, 2003 Ben Wing. |
7 | 7 |
8 ## This file is part of XEmacs. | 8 ## This file is part of XEmacs. |
9 | 9 |
10 ## XEmacs is free software; you can redistribute it and/or modify it | 10 ## XEmacs is free software; you can redistribute it and/or modify it |
11 ## under the terms of the GNU General Public License as published by the | 11 ## under the terms of the GNU General Public License as published by the |
21 ## along with XEmacs; see the file COPYING. If not, write to | 21 ## along with XEmacs; see the file COPYING. If not, write to |
22 ## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 22 ## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
23 ## Boston, MA 02111-1307, USA. | 23 ## Boston, MA 02111-1307, USA. |
24 | 24 |
25 ## Synched up with: Not synched with FSF. | 25 ## Synched up with: Not synched with FSF. |
26 | |
27 .PHONY: all | |
28 all: build-the-mofo | |
26 | 29 |
27 PROGNAME=@PROGNAME@ | 30 PROGNAME=@PROGNAME@ |
28 | 31 |
29 #define NOT_C_CODE | 32 #define NOT_C_CODE |
30 #include "config.h" | 33 #include "config.h" |
35 DUMP_ID = dump-id.o | 38 DUMP_ID = dump-id.o |
36 #else | 39 #else |
37 DUMP_TARGET = ${PROGNAME} | 40 DUMP_TARGET = ${PROGNAME} |
38 EXE_TARGET = temacs | 41 EXE_TARGET = temacs |
39 #endif | 42 #endif |
40 | |
41 all: ${DUMP_TARGET} | |
42 .PHONY : all release dump-elc dump-elcs all-elc all-elcs lint | |
43 | 43 |
44 ## For performance and consistency, no built-in rules. | 44 ## For performance and consistency, no built-in rules. |
45 .SUFFIXES: | 45 .SUFFIXES: |
46 .SUFFIXES: .c .h .o .i .s .dep | 46 .SUFFIXES: .c .h .o .i .s .dep |
47 | 47 |
131 X11_libs = $(LIBI18N) | 131 X11_libs = $(LIBI18N) |
132 #endif /* HAVE_X_WINDOWS */ | 132 #endif /* HAVE_X_WINDOWS */ |
133 | 133 |
134 ######################################################################### | 134 ######################################################################### |
135 | 135 |
136 ## Object files needed for compilation. | 136 ## Object files needed for compilation, and other rebuilt files. |
137 | 137 |
138 ## NOTE: Some of the object files are specified in this file, and | 138 ## NOTE: Some of the object files are specified in this file, and others in |
139 ## others in configure.in. The general rule is that they be specified | 139 ## configure.in. The general rule is that they be specified here whenever |
140 ## here whenever they have clear dependencies on configure defines. | 140 ## possible -- in practice, that means that they have clear dependencies on |
141 ## They should be in configure.in when there is no configure define or | 141 ## configure defines. They should be in configure.in when there is no |
142 ## when there is extremely hairy code to determine which files are | 142 ## configure define or when there is extremely hairy code to determine |
143 ## needed (e.g. native sound support) and it would be pointless to | 143 ## which files are needed (e.g. native sound support) and it would be |
144 ## duplicate that code. | 144 ## pointless to duplicate that code. |
145 | 145 |
146 gui_objs= gui.o | 146 gui_objs= gui.o |
147 #ifdef HAVE_MENUBARS | 147 #ifdef HAVE_MENUBARS |
148 gui_objs += menubar.o | 148 gui_objs += menubar.o |
149 #endif | 149 #endif |
374 | 374 |
375 #ifdef HAVE_X_WINDOWS | 375 #ifdef HAVE_X_WINDOWS |
376 | 376 |
377 # ifdef EXTERNAL_WIDGET | 377 # ifdef EXTERNAL_WIDGET |
378 external_widget_objs = ExternalShell.o extw-Xt-nonshared.o extw-Xlib-nonshared.o | 378 external_widget_objs = ExternalShell.o extw-Xt-nonshared.o extw-Xlib-nonshared.o |
379 | |
380 # ifdef LWLIB_USES_MOTIF | |
381 # ifdef EXTW_LINK | |
382 motif_other_files = libextcli_Xm.a libextcli_Xm.so.1 | |
383 # else | |
384 motif_other_files = libextcli_Xm.a | |
385 # endif | |
386 #endif /* LWLIB_USES_MOTIF */ | |
387 | |
388 # ifdef EXTW_LINK | |
389 shared_other_files = libextcli_Xt.so.1 libextcli_Xlib.so.1 | |
390 # endif | |
391 other_files=\ | |
392 ${motif_other_files}\ | |
393 libextcli_Xt.a libextcli_Xlib.a\ | |
394 ${shared_other_files} | |
395 | |
396 # endif /* EXTERNAL_WIDGET */ | |
397 | |
398 # if defined (HAVE_OFFIX_DND) || defined (HAVE_CDE) | |
399 dnd_objs = @dnd_objs@ | |
400 # endif /* HAVE_OFFIX_DND || HAVE_CDE */ | |
401 | |
402 X11_objs = EmacsFrame.o EmacsShell.o TopLevelEmacsShell.o TransientEmacsShell.o EmacsManager.o $(external_widget_objs) $(dnd_objs) | |
403 #endif /* HAVE_X_WINDOWS */ | |
404 | |
405 ## define otherobjs as list of object files that make-docfile | |
406 ## should not be told about. | |
407 otherobjs = lastfile.o $(mallocobjs) $(rallocobjs) $(X11_objs) | |
408 otherrtls = $(otherobjs:.o=.c.rtl) | |
409 othersrcs = $(otherobjs:.o=.c) | |
410 | |
411 LIBES = $(lwlib_libs) $(malloclib) $(ld_libs_all) $(lib_gcc) | |
412 | |
413 #ifdef I18N3 | |
414 mo_dir = ${etcdir} | |
415 mo_file = ${mo_dir}emacs.mo | |
416 #endif | |
417 | |
418 ######################################################################### | |
419 | |
420 ## Primary rebuilding process | |
421 | |
422 DO_TEMACS = ${DUMPENV} ./${EXE_TARGET} | |
423 DO_XEMACS = ./${PROGNAME} | |
424 LISP = ${srcdir}/../lisp | |
425 | |
426 BATCH = -no-packages -batch | |
427 BATCH_PACKAGES = -vanilla -batch | |
428 TEMACS_BATCH = $(DO_TEMACS) -nd $(BATCH) | |
429 XEMACS_BATCH = $(DO_XEMACS) $(BATCH) | |
430 XEMACS_BATCH_PACKAGES = $(DO_XEMACS) $(BATCH_PACKAGES) | |
431 temacs_loadup_args = -l $(LISP)/loadup.el | |
432 dump_temacs_args = $(temacs_loadup_args) dump | |
433 run_temacs_args = $(temacs_loadup_args) run-temacs | |
434 dump_temacs = $(TEMACS_BATCH) $(dump_temacs_args) | |
435 | |
436 debug_temacs = gdb $(EXE_TARGET) | |
437 | |
438 .PHONY : build-the-mofo release update-elc update-elc-2 load-shadows | |
439 | |
440 ## Compile, dump, and make sure all .elc files are up-to-date. | |
441 | |
442 ## NOTE: The dependencies would (should) look like the following | |
443 ## commented-out statement in linear order, but apparently this causes | |
444 ## problems with some versions of `make' because there is insufficient | |
445 ## serialization of the build steps. Evidently the .NO_PARALLEL directive | |
446 ## doesn't help. `make' really seems to be designed to have all | |
447 ## dependencies proceed upward, not across, and to be all calculable before | |
448 ## actually running anything. The problem here is that update-elc may | |
449 ## touch NEEDTODUMP and thus create an additional dependency | |
450 ## -- but *NOT UNTIL* that step is run. There is no way I can come up with | |
451 ## to express such a dependency in upward fashion. | |
452 | |
453 ## build-the-mofo: ${EXE_TARGET} update-elc ${libsrc}DOC $(mo_file) ${other_files} ${DUMP_TARGET} update-elc-2 $(LISP)/finder-inf.el load-shadows | |
454 | |
455 build-the-mofo: ${EXE_TARGET} update-elc ${libsrc}DOC $(mo_file) ${other_files} ${DUMP_TARGET} load-shadows | |
456 .NO_PARALLEL: ${EXE_TARGET} update-elc ${libsrc}DOC ${DUMP_TARGET} update-elc-2 | |
457 | |
458 release: all | |
459 -if [ -w $(LISP) ]; then \ | |
460 w=`pwd`; cd ${srcdir} && $${w}/${EXE_TARGET} -nd ${BATCH} -l $(LISP)/inc-vers; \ | |
461 else true; fi | |
462 -${dump_temacs} | |
463 touch release | |
464 | |
465 update-elc: $(EXE_TARGET) | |
466 $(TEMACS_BATCH) -l $(LISP)/update-elc.el | |
467 | |
468 ## Update out-of-date .elcs, other than needed for dumping. | |
469 update-elc-2: $(EXE_TARGET) $(DUMP_TARGET) | |
470 $(XEMACS_BATCH) -no-autoloads -l update-elc-2.el -f batch-update-elc-2 $(LISP) | |
471 | |
472 $(LISP)/finder-inf.el: update-elc-2 $(EXE_TARGET) $(DUMP_TARGET) | |
473 @echo "Building finder database ..." | |
474 $(XEMACS_BATCH) -eval '(setq finder-compile-keywords-quiet t)' \ | |
475 -l finder -f finder-compile-keywords | |
476 @echo "Building finder database ...(done)" | |
477 | |
478 load-shadows: $(LISP)/finder-inf.el $(EXE_TARGET) $(DUMP_TARGET) | |
479 #ifndef QUICK_BUILD | |
480 @echo "Testing for Lisp shadows ..." | |
481 @$(XEMACS_BATCH) -f list-load-path-shadows | |
482 #endif | |
483 | |
484 ## This file is touched by update-elc.el when redumping is necessary. | |
485 NEEDTODUMP: | |
486 touch NEEDTODUMP | |
487 | |
488 ${DUMP_TARGET}: ${EXE_TARGET} NEEDTODUMP | |
489 #ifdef HEAP_IN_DATA | |
490 @$(RM) $@ && touch SATISFIED | |
491 ${dump_temacs} | |
492 @if test -f SATISFIED; then $(RM) SATISFIED; else $(RM) $@; \ | |
493 $(RECURSIVE_MAKE) $@; fi | |
494 #else | |
495 @$(RM) $@ | |
496 ${dump_temacs} | |
497 #endif | |
498 | |
499 #ifdef DYNODUMP | |
500 dynodump_deps = ../dynodump/dynodump.so | |
501 ../dynodump/dynodump.so: | |
502 cd ../dynodump && $(RECURSIVE_MAKE) | |
503 #endif /* DYNODUMP */ | |
504 | |
505 link_deps = $(start_files) ${objs} ${otherobjs} $(lwlib_deps) $(dynodump_deps) | |
506 | |
507 temacs_deps = $(link_deps) ${DUMP_ID} | |
508 | |
509 temacs_link_args = \ | |
510 ${start_flags} ${ldflags} \ | |
511 -o $@ ${start_files} ${objs} ${otherobjs} ${DUMP_ID} ${LIBES} | |
512 | |
513 ${EXE_TARGET}: $(temacs_deps) | |
514 $(LD) $(temacs_link_args) | |
515 | |
516 dump-id.c: ${libsrc}make-dump-id ${link_deps} | |
517 ${libsrc}make-dump-id | |
518 | |
519 obj_src = $(objs:.o=.c) | |
520 | |
521 ${libsrc}DOC: ${libsrc}make-docfile NEEDTODUMP ${temacs_deps} | |
522 #ifdef QUICK_BUILD | |
523 if test ! -f $@ ; then \ | |
524 #else | |
525 if true ; then \ | |
526 #endif | |
527 $(TEMACS_BATCH) -l $(LISP)/make-docfile.el -- \ | |
528 -o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \ | |
529 ${obj_src} ${mallocdocsrc} ${rallocdocsrc} \ | |
530 ${extra_doc_files} ; fi | |
531 | |
532 ${libsrc}make-dump-id: | |
533 cd ${libsrc} && $(RECURSIVE_MAKE) make-dump-id | |
534 | |
535 ${libsrc}make-docfile: | |
536 cd ${libsrc} && $(RECURSIVE_MAKE) make-docfile | |
537 | |
538 .PHONY: fastdump | |
539 fastdump: ${EXE_TARGET} | |
540 @$(RM) ${DUMP_TARGET} && touch SATISFIED | |
541 -${dump_temacs} | |
542 @$(XEMACS_BATCH) -f list-load-path-shadows | |
543 | |
544 .PHONY: all-elc | |
545 all-elc: | |
546 cd .. && $(RECURSIVE_MAKE) | |
547 | |
548 ######################################################################### | |
549 | |
550 ## Subsidiary dependency rules | |
551 | |
552 #ifdef I18N3 | |
553 | |
554 # if defined(SPARC) && !defined(USG) | |
555 xgettext= /usr/openwin/bin/xgettext | |
556 xgettext_args= -o emacs -m_X messages | |
557 msgfmt= /usr/openwin/bin/msgfmt | |
558 # else | |
559 xgettext= xgettext | |
560 xgettext_args= -s -d emacs -M_X messages | |
561 msgfmt= msgfmt | |
562 #endif | |
563 | |
564 ${mo_dir}emacs.po: ${libsrc}make-msgfile ${libsrc}make-po ${objs} | |
565 ${libsrc}make-msgfile -o ${libsrc}messages ${objs} | |
566 cd ${libsrc} && ${xgettext} ${xgettext_args} | |
567 $(RM) ${mo_dir}emacs.po | |
568 cd ${libsrc} && ${libsrc}make-po -a ${mo_dir}emacs.po DOC | |
569 | |
570 ${mo_dir}emacs.mo: ${mo_dir}emacs.po | |
571 cd ${mo_dir} && ${msgfmt} -o emacs.mo emacs.po | |
572 | |
573 ${libsrc}make-msgfile: | |
574 cd ${libsrc} && $(RECURSIVE_MAKE) make-msgfile | |
575 | |
576 ${libsrc}make-po: | |
577 cd ${libsrc} && $(RECURSIVE_MAKE) make-po | |
578 | |
579 #endif /* I18N3 */ | |
580 | |
581 TopLevelEmacsShell.o : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h | |
582 $(CC) -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
583 mv EmacsShell-sub.o TopLevelEmacsShell.o | |
584 | |
585 TopLevelEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h | |
586 $(CC) -dr -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
587 mv EmacsShell-sub.c.rtl TopLevelEmacsShell.c.rtl | |
588 | |
589 TransientEmacsShell.o : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h | |
590 $(CC) -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
591 mv EmacsShell-sub.o TransientEmacsShell.o | |
592 | |
593 TransientEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h | |
594 $(CC) -dr -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
595 mv EmacsShell-sub.c.rtl TransientEmacsShell.c.rtl | |
596 | |
597 ## The above rules are subject to a race condition if using a parallel make. | |
598 TransientEmacsShell.o : TopLevelEmacsShell.o | |
599 TransientEmacsShell.c.rtl : TopLevelEmacsShell.c.rtl | |
600 | |
601 ## Position-independent code for shared library creation | |
602 #if USE_GCC | |
603 pic_arg = -fpic | |
604 #elif defined (IRIX) | |
605 pic_arg = -KPIC | |
606 # else | |
607 pic_arg = -K pic | |
608 #endif | |
609 | |
610 #ifdef EXTERNAL_WIDGET | |
611 | |
612 external_client_motif_objs_shared = ExternalClient-Xm-shared.o extw-Xt-shared.o extw-Xlib-shared.o | |
613 external_client_xt_objs_shared = ExternalClient-Xt-shared.o extw-Xt-shared.o extw-Xlib-shared.o | |
614 external_client_xlib_objs_shared = ExternalClient-Xlib-shared.o extw-Xlib-shared.o | |
615 external_client_motif_objs_nonshared = ExternalClient-Xm-nonshared.o extw-Xt-nonshared.o extw-Xlib-nonshared.o | |
616 external_client_xt_objs_nonshared = ExternalClient-Xt-nonshared.o extw-Xt-nonshared.o extw-Xlib-nonshared.o | |
617 external_client_xlib_objs_nonshared = ExternalClient-Xlib-nonshared.o extw-Xlib-nonshared.o | |
618 | |
619 ## Add dependencies so things work right with a parallel make | |
620 ExternalClient-Xm-shared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-shared.o ExternalClient-Xm-nonshared.o | |
621 $(CC) -c $(pic_arg) $(cflags) -DEXTW_USES_MOTIF ${srcdir}/ExternalClient.c | |
622 mv ExternalClient.o ExternalClient-Xm-shared.o | |
623 | |
624 ExternalClient-Xt-shared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-nonshared.o | |
625 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/ExternalClient.c | |
626 mv ExternalClient.o ExternalClient-Xt-shared.o | |
627 | |
628 ExternalClient-Xlib-shared.o: ${srcdir}/ExternalClient-Xlib.c ExternalClient-Xlib-nonshared.o | |
629 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/ExternalClient-Xlib.c | |
630 mv ExternalClient-Xlib.o ExternalClient-Xlib-shared.o | |
631 | |
632 ExternalClient-Xm-nonshared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-nonshared.o | |
633 $(CC) -c $(cflags) -DEXTW_USES_MOTIF ${srcdir}/ExternalClient.c | |
634 mv ExternalClient.o ExternalClient-Xm-nonshared.o | |
635 | |
636 ExternalClient-Xt-nonshared.o: ${srcdir}/ExternalClient.c | |
637 $(CC) -c $(cflags) ${srcdir}/ExternalClient.c | |
638 mv ExternalClient.o ExternalClient-Xt-nonshared.o | |
639 | |
640 ExternalClient-Xlib-nonshared.o: ${srcdir}/ExternalClient-Xlib.c | |
641 $(CC) -c $(cflags) ${srcdir}/ExternalClient-Xlib.c | |
642 mv ExternalClient-Xlib.o ExternalClient-Xlib-nonshared.o | |
643 | |
644 ## We compile the common files twice (once with PIC and once without) | |
645 ## because on some systems, compiling with PIC but not linking into | |
646 ## a shared library messes things up. | |
647 | |
648 extw-Xt-shared.o: ${srcdir}/extw-Xt.c extw-Xt-nonshared.o | |
649 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/extw-Xt.c | |
650 mv extw-Xt.o extw-Xt-shared.o | |
651 | |
652 extw-Xlib-shared.o: ${srcdir}/extw-Xlib.c extw-Xlib-nonshared.o | |
653 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/extw-Xlib.c | |
654 mv extw-Xlib.o extw-Xlib-shared.o | |
655 | |
656 extw-Xt-nonshared.o: ${srcdir}/extw-Xt.c | |
657 $(CC) -c $(cflags) ${srcdir}/extw-Xt.c | |
658 mv extw-Xt.o extw-Xt-nonshared.o | |
659 | |
660 extw-Xlib-nonshared.o: ${srcdir}/extw-Xlib.c | |
661 $(CC) -c $(cflags) ${srcdir}/extw-Xlib.c | |
662 mv extw-Xlib.o extw-Xlib-nonshared.o | |
663 | |
664 libextcli_Xm.a: ${external_client_motif_objs_nonshared} | |
665 ar r libextcli_Xm.a ${external_client_motif_objs_nonshared} | |
666 | |
667 libextcli_Xt.a: ${external_client_xt_objs_nonshared} | |
668 ar r libextcli_Xt.a ${external_client_xt_objs_nonshared} | |
669 | |
670 libextcli_Xlib.a: ${external_client_xlib_objs_nonshared} | |
671 ar r libextcli_Xlib.a ${external_client_xlib_objs_nonshared} | |
379 | 672 |
380 ## Now we try to figure out how to link a shared library. | 673 ## Now we try to figure out how to link a shared library. |
381 ## If we cannot figure it out, leave EXTW_LINK undefined and a shared | 674 ## If we cannot figure it out, leave EXTW_LINK undefined and a shared |
382 ## library will not be created. | 675 ## library will not be created. |
383 | 676 |
418 extw_link_mid = -assert pure-text -o | 711 extw_link_mid = -assert pure-text -o |
419 extw_link_end = | 712 extw_link_end = |
420 # endif /* !(DEC_ALPHA && OSF1) */ | 713 # endif /* !(DEC_ALPHA && OSF1) */ |
421 # endif /* not USG5 */ | 714 # endif /* not USG5 */ |
422 | 715 |
423 # ifdef LWLIB_USES_MOTIF | |
424 # ifdef EXTW_LINK | |
425 motif_other_files = libextcli_Xm.a libextcli_Xm.so.1 | |
426 # else | |
427 motif_other_files = libextcli_Xm.a | |
428 # endif | |
429 #endif /* LWLIB_USES_MOTIF */ | |
430 | |
431 # ifdef EXTW_LINK | |
432 shared_other_files = libextcli_Xt.so.1 libextcli_Xlib.so.1 | |
433 # endif | |
434 other_files=\ | |
435 ${motif_other_files}\ | |
436 libextcli_Xt.a libextcli_Xlib.a\ | |
437 ${shared_other_files} | |
438 | |
439 all: ${other_files} | |
440 # endif /* EXTERNAL_WIDGET */ | |
441 | |
442 # if defined (HAVE_OFFIX_DND) || defined (HAVE_CDE) | |
443 dnd_objs = @dnd_objs@ | |
444 # endif /* HAVE_OFFIX_DND || HAVE_CDE */ | |
445 | |
446 X11_objs = EmacsFrame.o EmacsShell.o TopLevelEmacsShell.o TransientEmacsShell.o EmacsManager.o $(external_widget_objs) $(dnd_objs) | |
447 #endif /* HAVE_X_WINDOWS */ | |
448 | |
449 ## define otherobjs as list of object files that make-docfile | |
450 ## should not be told about. | |
451 otherobjs = lastfile.o $(mallocobjs) $(rallocobjs) $(X11_objs) | |
452 otherrtls = $(otherobjs:.o=.c.rtl) | |
453 othersrcs = $(otherobjs:.o=.c) | |
454 | |
455 LIBES = $(lwlib_libs) $(malloclib) $(ld_libs_all) $(lib_gcc) | |
456 | |
457 #ifdef I18N3 | |
458 mo_dir = ${etcdir} | |
459 mo_file = ${mo_dir}emacs.mo | |
460 #endif | |
461 | |
462 batch = -no-packages -batch | |
463 batch_packages = -vanilla -batch | |
464 temacs_loadup = ./${EXE_TARGET} -nd ${batch} -l ${srcdir}/../lisp/loadup.el | |
465 dump_temacs = ${temacs_loadup} dump | |
466 run_temacs = ${temacs_loadup} run-temacs | |
467 debug_temacs = gdb ${EXE_TARGET} | |
468 | |
469 release: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files} | |
470 #ifdef CANNOT_DUMP | |
471 ln ${EXE_TARGET} ${PROGNAME} | |
472 #else | |
473 -if [ -w ${srcdir}/../lisp ]; then \ | |
474 w=`pwd`; cd ${srcdir} && $${w}/${EXE_TARGET} -nd ${batch} -l ${srcdir}/../lisp/inc-vers; \ | |
475 else true; fi | |
476 -./${EXE_TARGET} -nd ${batch} -l ${srcdir}/../lisp/loadup.el dump | |
477 touch release | |
478 #endif /* ! defined (CANNOT_DUMP) */ | |
479 | |
480 ${DUMP_TARGET}: ${EXE_TARGET} ${libsrc}DOC $(mo_file) ${other_files} update-elc.stamp | |
481 #ifdef HEAP_IN_DATA | |
482 @$(RM) $@ && touch SATISFIED | |
483 -${dump_temacs} | |
484 @if test -f $@; then if test -f SATISFIED; then \ | |
485 echo "Testing for Lisp shadows ..."; \ | |
486 ./${PROGNAME} ${batch} -f list-load-path-shadows; fi; \ | |
487 $(RM) SATISFIED; exit 0; fi; \ | |
488 if test -f SATISFIED; then $(RM) SATISFIED; exit 1; fi; \ | |
489 $(RM) $@; \ | |
490 $(RECURSIVE_MAKE) $@; | |
491 #else | |
492 @$(RM) $@ | |
493 ${dump_temacs} | |
494 @echo "Testing for Lisp shadows ..." | |
495 @./${PROGNAME} ${batch} -f list-load-path-shadows | |
496 #endif | |
497 | |
498 fastdump: ${EXE_TARGET} | |
499 @$(RM) ${DUMP_TARGET} && touch SATISFIED | |
500 -${dump_temacs} | |
501 @./${PROGNAME} ${batch} -f list-load-path-shadows | |
502 | |
503 FRC.update-elc.stamp : | |
504 | |
505 update-elc.stamp : ${EXE_TARGET} FRC.update-elc.stamp | |
506 @touch BYTECOMPILE_CHANGE | |
507 ./${EXE_TARGET} -nd ${batch} -l ${srcdir}/../lisp/update-elc.el | |
508 @if test ! -f $@ -o -f BYTECOMPILE_CHANGE; then touch $@; fi; \ | |
509 $(RM) BYTECOMPILE_CHANGE | |
510 | |
511 obj_src = $(objs:.o=.c) | |
512 | |
513 dortl : $(obj_rtl) $(otherrtls) | |
514 echo "(defvar source-files '(" > ${srcdir}/../lisp/source-files.el | |
515 (for a in $(obj_src) $(othersrcs);do \ | |
516 echo -n "\""$$a"\"" >> ${srcdir}/../lisp/source-files.el ;\ | |
517 done) | |
518 echo "))" >> ${srcdir}/../lisp/source-files.el | |
519 | |
520 #ifdef DYNODUMP | |
521 dynodump_deps = ../dynodump/dynodump.so | |
522 ../dynodump/dynodump.so: | |
523 cd ../dynodump && $(RECURSIVE_MAKE) | |
524 #endif /* DYNODUMP */ | |
525 | |
526 ${libsrc}DOC: ${EXE_TARGET} update-elc.stamp | |
527 #ifdef QUICK_BUILD | |
528 if test ! -f $@ ; then \ | |
529 #else | |
530 if true ; then \ | |
531 #endif | |
532 ${DUMPENV} ./${EXE_TARGET} -nd ${batch} -l ${srcdir}/../lisp/make-docfile.el -- \ | |
533 -o ${libsrc}DOC -d ${srcdir} -i ${libsrc}../site-packages \ | |
534 ${obj_src} ${mallocdocsrc} ${rallocdocsrc} \ | |
535 ${extra_doc_files} ; fi | |
536 | |
537 dump_elcs: dump-elcs | |
538 | |
539 dump-elcs: ${EXE_TARGET} | |
540 -${DUMPENV} ./${EXE_TARGET} -nd ${batch} -l ${srcdir}/../lisp/update-elc.el | |
541 | |
542 all-elc all-elcs: | |
543 cd .. && $(RECURSIVE_MAKE) all-elc | |
544 | |
545 #ifdef I18N3 | |
546 | |
547 # if defined(SPARC) && !defined(USG) | |
548 xgettext= /usr/openwin/bin/xgettext | |
549 xgettext_args= -o emacs -m_X messages | |
550 msgfmt= /usr/openwin/bin/msgfmt | |
551 # else | |
552 xgettext= xgettext | |
553 xgettext_args= -s -d emacs -M_X messages | |
554 msgfmt= msgfmt | |
555 #endif | |
556 | |
557 ${mo_dir}emacs.po: ${libsrc}make-msgfile ${libsrc}make-po ${objs} | |
558 ${libsrc}make-msgfile -o ${libsrc}messages ${objs} | |
559 cd ${libsrc} && ${xgettext} ${xgettext_args} | |
560 $(RM) ${mo_dir}emacs.po | |
561 cd ${libsrc} && ${libsrc}make-po -a ${mo_dir}emacs.po DOC | |
562 | |
563 ${mo_dir}emacs.mo: ${mo_dir}emacs.po | |
564 cd ${mo_dir} && ${msgfmt} -o emacs.mo emacs.po | |
565 | |
566 ${libsrc}make-msgfile: | |
567 cd ${libsrc} && $(RECURSIVE_MAKE) make-msgfile | |
568 | |
569 ${libsrc}make-po: | |
570 cd ${libsrc} && $(RECURSIVE_MAKE) make-po | |
571 | |
572 #endif /* I18N3 */ | |
573 | |
574 ${libsrc}make-dump-id: | |
575 cd ${libsrc} && $(RECURSIVE_MAKE) make-dump-id | |
576 | |
577 ${libsrc}make-docfile: | |
578 cd ${libsrc} && $(RECURSIVE_MAKE) make-docfile | |
579 | |
580 ## Lint Section | |
581 LINT.c=$(LINT) $(LINTFLAGS) $(LINTINCLUDES) | |
582 LINTFILES= $(objs:.o=.ln) | |
583 LINTINCLUDES = $(cppflags) | |
584 ## LINTFLAGS= -fd -m -p -s -u -v -x | |
585 LINTFLAGS= -fd -m -s -u -v -x | |
586 lint: $(LINTFILES) | |
587 $(LINT.c) $(LINTFILES) | |
588 ## end of Lint Section | |
589 | |
590 link_deps=\ | |
591 $(start_files) ${objs} ${otherobjs}\ | |
592 $(lwlib_deps) $(dynodump_deps) | |
593 | |
594 temacs_deps = $(link_deps) ${DUMP_ID} | |
595 | |
596 temacs_link_args=\ | |
597 ${start_flags} ${ldflags}\ | |
598 -o $@ ${start_files} ${objs} ${otherobjs} ${DUMP_ID} ${LIBES} | |
599 | |
600 ${EXE_TARGET}: $(temacs_deps) | |
601 $(LD) $(temacs_link_args) | |
602 | |
603 dump-id.c: ${libsrc}make-dump-id ${link_deps} | |
604 ${libsrc}make-dump-id | |
605 | |
606 .PHONY : run-temacs | |
607 | |
608 run-temacs: ${EXE_TARGET} | |
609 -${run_temacs} | |
610 | |
611 ## We have automated tests!! | |
612 testdir = ${srcdir}/../tests/automated | |
613 batch_test_emacs = ${batch_packages} -l ${testdir}/test-harness.el -f batch-test-emacs ${testdir} | |
614 | |
615 .PHONY: check check-temacs | |
616 check: | |
617 ./${PROGNAME} ${batch_test_emacs} | |
618 check-temacs: | |
619 ${run_temacs} ${batch_test_emacs} | |
620 | |
621 ## Debugging targets: | |
622 ## | |
623 ## None of the debugging products work with a dumped xemacs binary, | |
624 ## because it does unexpected things like free memory that has been | |
625 ## malloc'ed in a *different* process!! So we need to run these on | |
626 ## temacs. | |
627 | |
628 ## RTC is Sun WorkShop's Run Time Checking, integrated with dbx | |
629 rtc_patch.o: | |
630 rtc_patch_area -o $@ | |
631 | |
632 rtcmacs: $(temacs_deps) rtc_patch.o | |
633 $(RM) ${EXE_TARGET}; $(RECURSIVE_MAKE) ${EXE_TARGET} RTC_patch_objs=rtc_patch.o | |
634 mv ${EXE_TARGET} rtcmacs | |
635 | |
636 .PHONY: run-rtcmacs | |
637 run-rtcmacs: rtcmacs | |
638 dbx -q -C -c \ | |
639 'dbxenv rtc_error_log_file_name /dev/fd/1; \ | |
640 dbxenv suppress_startup_message 5.0; \ | |
641 ignore POLL; \ | |
642 check -access; \ | |
643 suppress rui; \ | |
644 runargs ${batch} -l ${srcdir}/../lisp/loadup.el run-temacs -vanilla; \ | |
645 run' rtcmacs | |
646 | |
647 debug-temacs: ${EXE_TARGET} | |
648 -${debug_temacs} | |
649 | |
650 ## Purify, Quantify, PureCoverage are software quality products from | |
651 ## Rational, formerly Pure Atria, formerly Pure Software. | |
652 ## | |
653 ## Purify | |
654 PURIFY_PROG = purify | |
655 PURIFY_LIBS = | |
656 PURIFY_FLAGS =\ | |
657 #ifdef PDUMP | |
658 -search-mmaps=yes\ | |
659 #endif | |
660 -chain-length=32 -ignore-signals=SIGPOLL\ | |
661 -cache-dir=${blddir}/purecache -always-use-cache-dir=yes | |
662 | |
663 puremacs: $(temacs_deps) | |
664 $(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS) | |
665 cp $@ ${EXE_TARGET} | |
666 | |
667 ## Quantify | |
668 #ifdef QUANTIFY | |
669 QUANTIFY_PROG = quantify | |
670 QUANTIFY_HOME = `$(QUANTIFY_PROG) -print-home-dir` | |
671 QUANTIFY_FLAGS = -cache-dir=./purecache -always-use-cache-dir=yes | |
672 cppflags += -I$(QUANTIFY_HOME) | |
673 temacs_link_args += $(QUANTIFY_HOME)/quantify_stubs.a | |
674 | |
675 quantmacs: $(temacs_deps) | |
676 $(QUANTIFY_PROG) $(QUANTIFY_FLAGS) $(LD) $(temacs_link_args) | |
677 cp $@ ${EXE_TARGET} | |
678 #endif /* QUANTIFY */ | |
679 | |
680 | |
681 PURECOV_PROG=purecov | |
682 covmacs: $(temacs_deps) | |
683 $(PURECOV_PROG) $(LD) $(temacs_link_args) | |
684 | |
685 | |
686 TopLevelEmacsShell.o : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h | |
687 $(CC) -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
688 mv EmacsShell-sub.o TopLevelEmacsShell.o | |
689 | |
690 TopLevelEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c config.h xintrinsicp.h EmacsShellP.h | |
691 $(CC) -dr -c $(cflags) -DDEFINE_TOP_LEVEL_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
692 mv EmacsShell-sub.c.rtl TopLevelEmacsShell.c.rtl | |
693 | |
694 TransientEmacsShell.o : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h | |
695 $(CC) -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
696 mv EmacsShell-sub.o TransientEmacsShell.o | |
697 | |
698 TransientEmacsShell.c.rtl : ${srcdir}/EmacsShell-sub.c TopLevelEmacsShell.o config.h xintrinsicp.h EmacsShellP.h | |
699 $(CC) -dr -c $(cflags) -DDEFINE_TRANSIENT_EMACS_SHELL ${srcdir}/EmacsShell-sub.c | |
700 mv EmacsShell-sub.c.rtl TransientEmacsShell.c.rtl | |
701 | |
702 ## The above rules are subject to a race condition if using a parallel make. | |
703 TransientEmacsShell.o : TopLevelEmacsShell.o | |
704 TransientEmacsShell.c.rtl : TopLevelEmacsShell.c.rtl | |
705 | |
706 ## Position-independent code for shared library creation | |
707 #if USE_GCC | |
708 pic_arg = -fpic | |
709 #elif defined (IRIX) | |
710 pic_arg = -KPIC | |
711 # else | |
712 pic_arg = -K pic | |
713 #endif | |
714 | |
715 #ifdef EXTERNAL_WIDGET | |
716 | |
717 external_client_motif_objs_shared = ExternalClient-Xm-shared.o extw-Xt-shared.o extw-Xlib-shared.o | |
718 external_client_xt_objs_shared = ExternalClient-Xt-shared.o extw-Xt-shared.o extw-Xlib-shared.o | |
719 external_client_xlib_objs_shared = ExternalClient-Xlib-shared.o extw-Xlib-shared.o | |
720 external_client_motif_objs_nonshared = ExternalClient-Xm-nonshared.o extw-Xt-nonshared.o extw-Xlib-nonshared.o | |
721 external_client_xt_objs_nonshared = ExternalClient-Xt-nonshared.o extw-Xt-nonshared.o extw-Xlib-nonshared.o | |
722 external_client_xlib_objs_nonshared = ExternalClient-Xlib-nonshared.o extw-Xlib-nonshared.o | |
723 | |
724 ## Add dependencies so things work right with a parallel make | |
725 ExternalClient-Xm-shared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-shared.o ExternalClient-Xm-nonshared.o | |
726 $(CC) -c $(pic_arg) $(cflags) -DEXTW_USES_MOTIF ${srcdir}/ExternalClient.c | |
727 mv ExternalClient.o ExternalClient-Xm-shared.o | |
728 | |
729 ExternalClient-Xt-shared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-nonshared.o | |
730 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/ExternalClient.c | |
731 mv ExternalClient.o ExternalClient-Xt-shared.o | |
732 | |
733 ExternalClient-Xlib-shared.o: ${srcdir}/ExternalClient-Xlib.c ExternalClient-Xlib-nonshared.o | |
734 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/ExternalClient-Xlib.c | |
735 mv ExternalClient-Xlib.o ExternalClient-Xlib-shared.o | |
736 | |
737 ExternalClient-Xm-nonshared.o: ${srcdir}/ExternalClient.c ExternalClient-Xt-nonshared.o | |
738 $(CC) -c $(cflags) -DEXTW_USES_MOTIF ${srcdir}/ExternalClient.c | |
739 mv ExternalClient.o ExternalClient-Xm-nonshared.o | |
740 | |
741 ExternalClient-Xt-nonshared.o: ${srcdir}/ExternalClient.c | |
742 $(CC) -c $(cflags) ${srcdir}/ExternalClient.c | |
743 mv ExternalClient.o ExternalClient-Xt-nonshared.o | |
744 | |
745 ExternalClient-Xlib-nonshared.o: ${srcdir}/ExternalClient-Xlib.c | |
746 $(CC) -c $(cflags) ${srcdir}/ExternalClient-Xlib.c | |
747 mv ExternalClient-Xlib.o ExternalClient-Xlib-nonshared.o | |
748 | |
749 ## We compile the common files twice (once with PIC and once without) | |
750 ## because on some systems, compiling with PIC but not linking into | |
751 ## a shared library messes things up. | |
752 | |
753 extw-Xt-shared.o: ${srcdir}/extw-Xt.c extw-Xt-nonshared.o | |
754 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/extw-Xt.c | |
755 mv extw-Xt.o extw-Xt-shared.o | |
756 | |
757 extw-Xlib-shared.o: ${srcdir}/extw-Xlib.c extw-Xlib-nonshared.o | |
758 $(CC) -c $(pic_arg) $(cflags) ${srcdir}/extw-Xlib.c | |
759 mv extw-Xlib.o extw-Xlib-shared.o | |
760 | |
761 extw-Xt-nonshared.o: ${srcdir}/extw-Xt.c | |
762 $(CC) -c $(cflags) ${srcdir}/extw-Xt.c | |
763 mv extw-Xt.o extw-Xt-nonshared.o | |
764 | |
765 extw-Xlib-nonshared.o: ${srcdir}/extw-Xlib.c | |
766 $(CC) -c $(cflags) ${srcdir}/extw-Xlib.c | |
767 mv extw-Xlib.o extw-Xlib-nonshared.o | |
768 | |
769 libextcli_Xm.a: ${external_client_motif_objs_nonshared} | |
770 ar r libextcli_Xm.a ${external_client_motif_objs_nonshared} | |
771 | |
772 libextcli_Xt.a: ${external_client_xt_objs_nonshared} | |
773 ar r libextcli_Xt.a ${external_client_xt_objs_nonshared} | |
774 | |
775 libextcli_Xlib.a: ${external_client_xlib_objs_nonshared} | |
776 ar r libextcli_Xlib.a ${external_client_xlib_objs_nonshared} | |
777 | |
778 #ifdef EXTW_LINK | 716 #ifdef EXTW_LINK |
779 | 717 |
780 libextcli_Xm.so.1: ${external_client_motif_objs_shared} | 718 libextcli_Xm.so.1: ${external_client_motif_objs_shared} |
781 ${extw_link_beg} ${external_client_motif_objs_shared} ${extw_link_mid} libextcli_Xm.so.1 ${extw_link_end} | 719 ${extw_link_beg} ${external_client_motif_objs_shared} ${extw_link_mid} libextcli_Xm.so.1 ${extw_link_end} |
782 | 720 |
845 #endif | 783 #endif |
846 | 784 |
847 xemacs_res.o: ${srcdir}/../nt/xemacs.rc | 785 xemacs_res.o: ${srcdir}/../nt/xemacs.rc |
848 windres --include-dir ${srcdir}/../nt -i ${srcdir}/../nt/xemacs.rc -o $@ | 786 windres --include-dir ${srcdir}/../nt -i ${srcdir}/../nt/xemacs.rc -o $@ |
849 | 787 |
850 ## System-specific programs to be made. | 788 ######################################################################### |
851 ## ${other_files}, $(objects_system) and $(objects_machine) | 789 |
852 ## select which of these should be compiled. */ | 790 ## Other random crap |
791 | |
792 dortl : $(obj_rtl) $(otherrtls) | |
793 echo "(defvar source-files '(" > $(LISP)/source-files.el | |
794 (for a in $(obj_src) $(othersrcs);do \ | |
795 echo -n "\""$$a"\"" >> $(LISP)/source-files.el ;\ | |
796 done) | |
797 echo "))" >> $(LISP)/source-files.el | |
798 | |
799 ## Lint Section | |
800 LINT.c=$(LINT) $(LINTFLAGS) $(LINTINCLUDES) | |
801 LINTFILES= $(objs:.o=.ln) | |
802 LINTINCLUDES = $(cppflags) | |
803 ## LINTFLAGS= -fd -m -p -s -u -v -x | |
804 LINTFLAGS= -fd -m -s -u -v -x | |
805 .PHONY: lint | |
806 lint: $(LINTFILES) | |
807 $(LINT.c) $(LINTFILES) | |
808 ## end of Lint Section | |
809 | |
810 ## We have automated tests!! | |
811 testdir = ${srcdir}/../tests/automated | |
812 batch_test_emacs = ${BATCH_PACKAGES} -l ${testdir}/test-harness.el -f batch-test-emacs ${testdir} | |
813 | |
814 .PHONY: check check-temacs check-features | |
815 check: | |
816 $(DO_XEMACS) $(batch_test_emacs) | |
817 check-temacs: | |
818 $(TEMACS_BATCH) $(run_temacs_args) $(batch_test_emacs) | |
819 check-features: all | |
820 $(XEMACS_BATCH) -l check-features.el | |
821 | |
822 ## Debugging targets: | |
823 ## | |
824 ## None of the debugging products work with a dumped xemacs binary, | |
825 ## because it does unexpected things like free memory that has been | |
826 ## malloc'ed in a *different* process!! So we need to run these on | |
827 ## temacs. | |
828 | |
829 ## RTC is Sun WorkShop's Run Time Checking, integrated with dbx | |
830 rtc_patch.o: | |
831 rtc_patch_area -o $@ | |
832 | |
833 rtcmacs: $(temacs_deps) rtc_patch.o | |
834 $(RM) ${EXE_TARGET}; $(RECURSIVE_MAKE) ${EXE_TARGET} RTC_patch_objs=rtc_patch.o | |
835 mv ${EXE_TARGET} rtcmacs | |
836 | |
837 .PHONY: run-rtcmacs | |
838 run-rtcmacs: rtcmacs | |
839 dbx -q -C -c \ | |
840 'dbxenv rtc_error_log_file_name /dev/fd/1; \ | |
841 dbxenv suppress_startup_message 5.0; \ | |
842 ignore POLL; \ | |
843 check -access; \ | |
844 suppress rui; \ | |
845 runargs -nd ${BATCH} ${run_temacs_args} -vanilla; \ | |
846 run' rtcmacs | |
847 | |
848 debug-temacs: ${EXE_TARGET} | |
849 -${debug_temacs} | |
850 | |
851 ## Purify, Quantify, PureCoverage are software quality products from | |
852 ## Rational, formerly Pure Atria, formerly Pure Software. | |
853 ## | |
854 ## Purify | |
855 PURIFY_PROG = purify | |
856 PURIFY_LIBS = | |
857 PURIFY_FLAGS =\ | |
858 #ifdef PDUMP | |
859 -search-mmaps=yes\ | |
860 #endif | |
861 -chain-length=32 -ignore-signals=SIGPOLL\ | |
862 -cache-dir=${blddir}/purecache -always-use-cache-dir=yes | |
863 | |
864 puremacs: $(temacs_deps) | |
865 $(PURIFY_PROG) $(PURIFY_FLAGS) $(LD) $(temacs_link_args) $(PURIFY_LIBS) | |
866 cp $@ ${EXE_TARGET} | |
867 | |
868 ## Quantify | |
869 #ifdef QUANTIFY | |
870 QUANTIFY_PROG = quantify | |
871 QUANTIFY_HOME = `$(QUANTIFY_PROG) -print-home-dir` | |
872 QUANTIFY_FLAGS = -cache-dir=./purecache -always-use-cache-dir=yes | |
873 cppflags += -I$(QUANTIFY_HOME) | |
874 temacs_link_args += $(QUANTIFY_HOME)/quantify_stubs.a | |
875 | |
876 quantmacs: $(temacs_deps) | |
877 $(QUANTIFY_PROG) $(QUANTIFY_FLAGS) $(LD) $(temacs_link_args) | |
878 cp $@ ${EXE_TARGET} | |
879 #endif /* QUANTIFY */ | |
880 | |
881 PURECOV_PROG=purecov | |
882 covmacs: $(temacs_deps) | |
883 $(PURECOV_PROG) $(LD) $(temacs_link_args) | |
853 | 884 |
854 .PHONY: mostlyclean clean distclean realclean versionclean extraclean | 885 .PHONY: mostlyclean clean distclean realclean versionclean extraclean |
855 mostlyclean: | 886 mostlyclean: |
856 $(RM) temacs puremacs quantmacs *.o *.i \ | 887 $(RM) temacs puremacs quantmacs *.o *.i \ |
857 core temacs.exe sheap-adjust.h | 888 core temacs.exe sheap-adjust.h |
858 clean: mostlyclean versionclean | 889 clean: mostlyclean versionclean |
859 $(RM) libextcli* update-elc.stamp | 890 $(RM) libextcli* |
860 ## This is used in making a distribution. | 891 ## This is used in making a distribution. |
861 ## Do not use it on development directories! | 892 ## Do not use it on development directories! |
862 distclean: clean | 893 distclean: clean |
863 $(RM) config.h paths.h Emacs.ad.h \ | 894 $(RM) config.h paths.h Emacs.ad.h \ |
864 GNUmakefile Makefile Makefile.in TAGS ${PROGNAME}.* | 895 GNUmakefile Makefile Makefile.in TAGS ${PROGNAME}.* |