/* -*-C-*-

$Header: /scheme/src/microcode/RCS/ymakefile,v 1.56 1992/08/20 16:06:16 jinx Exp $

Copyright (c) 1989-1992 Massachusetts Institute of Technology

This material was developed by the Scheme project at the Massachusetts
Institute of Technology, Department of Electrical Engineering and
Computer Science.  Permission to copy this software, to redistribute
it, and to use it for any purpose is granted, subject to the following
restrictions and understandings.

1. Any copy made of this software must include this copyright notice
in full.

2. Users of this software agree to make their best efforts (a) to
return to the MIT Scheme project any improvements or extensions that
they make, so that these may be included in future releases; and (b)
to inform MIT of noteworthy uses of this software.

3. All materials developed as a consequence of the use of this
software shall duly acknowledge such use, in accordance with the usual
standards of acknowledging credit in academic research.

4. MIT has made no warrantee or representation that the operation of
this software will be error-free, and MIT is under no obligation to
provide any services, by way of maintenance, update, or otherwise.

5. In conjunction with products arising from the use of this material,
there shall be no use of the name of the Massachusetts Institute of
Technology nor of any adaptation thereof in any advertising,
promotional, or sales literature without prior written consent from
MIT in each case. */

#include "cf.h"

#undef unix
#undef vax

#ifndef RUN
#define RUN(program) -./program
#endif

#ifndef SOURCES_SYSTEM
#define SOURCES_SYSTEM
#endif

#ifndef SOURCES_MACHINE
#define SOURCES_MACHINE
#endif

#ifndef OBJECTS_SYSTEM
#define OBJECTS_SYSTEM
#endif

#ifndef OBJECTS_MACHINE
#define OBJECTS_MACHINE
#endif

#ifndef LIBS_SYSTEM
#define LIBS_SYSTEM
#endif

#ifndef LIBS_MACHINE
#define LIBS_MACHINE
#endif

#ifndef C_SWITCH_SYSTEM
#define C_SWITCH_SYSTEM
#endif

#ifndef C_SWITCH_MACHINE
#define C_SWITCH_MACHINE
#endif

#ifndef C_SWITCH_FEATURES
#define C_SWITCH_FEATURES
#endif

/* Unless inhibited or changed, use -g to compile for debugging.  */
#ifndef C_DEBUG_SWITCH
#define C_DEBUG_SWITCH -g
#endif

/* If user wants to optimize, this is how.  */
#ifndef C_OPTIMIZE_SWITCH
#define C_OPTIMIZE_SWITCH -O
#endif

#ifndef LD_SWITCH_SYSTEM
#define LD_SWITCH_SYSTEM
#endif

#ifndef LD_SWITCH_MACHINE
#define LD_SWITCH_MACHINE
#endif

#ifndef M4_SWITCH_SYSTEM
#define M4_SWITCH_SYSTEM
#endif

#ifndef M4_SWITCH_MACHINE
#define M4_SWITCH_MACHINE
#endif

#ifndef AS_SWITCH_SYSTEM
#define AS_SWITCH_SYSTEM
#endif

#ifndef AS_SWITCH_MACHINE
#define AS_SWITCH_MACHINE
#endif

/* Some machines don't find the standard C libraries in the usual place.  */
#ifndef LIB_STANDARD
#define LIB_STANDARD
#endif

#ifndef LIB_MATH
#define LIB_MATH -lm
#endif

#ifndef LIB_DEBUG
#define LIB_DEBUG -lg
#endif

#ifndef LIBX11_MACHINE
#define LIBX11_MACHINE
#endif

#ifndef LIBX11_SYSTEM
#define LIBX11_SYSTEM
#endif

#ifdef HAVE_TERMINFO
#ifndef LIBS_TERMCAP
#define LIBS_TERMCAP -lcurses
#endif
TERMCAP_OBJECTS = terminfo.o tterm.o
#else /* not HAVE_TERMINFO */
#ifndef LIBS_TERMCAP
#define LIBS_TERMCAP
TERMCAP_OBJECTS = termcap.o tparam.o tterm.o
#else /* LIBS_TERMCAP */
TERMCAP_OBJECTS = tparam.o tterm.o
#endif /* LIBS_TERMCAP */
#endif /* not HAVE_TERMINFO */
TERMCAP_SOURCES = tterm.c
TERMCAP_LIBS = LIBS_TERMCAP

#ifdef HAVE_X_WINDOWS
X_SOURCES = x11base.c x11term.c x11graph.c x11color.c
X_OBJECTS = x11base.o x11term.o x11graph.o x11color.o
X_LIB = LIBX11_MACHINE LIBX11_SYSTEM -lX11
#endif /* HAVE_X_WINDOWS */

#ifdef HAVE_STARBASE_GRAPHICS
GRAPHICS_SOURCES = starbase.c
GRAPHICS_OBJECTS = starbase.o
GRAPHICS_LIBS = STARBASE_DEVICE_DRIVERS -lsb1 -lsb2
#else /* not HAVE_STARBASE_GRAPHICS */
GRAPHICS_SOURCES =
GRAPHICS_OBJECTS =
GRAPHICS_LIBS =
#endif /* HAVE_STARBASE_GRAPHICS */

#if (PROC_TYPE == PROC_TYPE_68020)
#define PROC_TYPE_KNOWN
MACHINE_SWITCHES = -DHAS_COMPILER_SUPPORT
MACHINE_SOURCES = cmpint.c cmpaux-mc68k.m4
MACHINE_OBJECTS = cmpint.o cmpaux-mc68k.o
GC_HEAD_FILES = gccode.h cmpgc.h cmpint-mc68k.h

cmpaux-mc68k.o : cmpaux-mc68k.s
cmpaux-mc68k.s : cmpaux-mc68k.m4 xmakefile

#endif /* PROC_TYPE_68020 */

#if (PROC_TYPE == PROC_TYPE_68000)
#define PROC_TYPE_KNOWN
MACHINE_SWITCHES = -DMC68010
MACHINE_SOURCES = cmpint.c
MACHINE_OBJECTS = cmpint.o
GC_HEAD_FILES = gccode.h cmpgc.h
#endif /* PROC_TYPE_68000 */

#if (PROC_TYPE == PROC_TYPE_VAX)
#define PROC_TYPE_KNOWN
MACHINE_SWITCHES = -DHAS_COMPILER_SUPPORT
MACHINE_SOURCES = cmpint.c cmpaux-vax.m4
MACHINE_OBJECTS = cmpint.o cmpaux-vax.o
GC_HEAD_FILES = gccode.h cmpgc.h cmpint-vax.h

cmpaux-vax.o : cmpaux-vax.s
cmpaux-vax.s : cmpaux-vax.m4 xmakefile

#endif /* PROC_TYPE_VAX */

#if (PROC_TYPE == PROC_TYPE_HPPA)
#define PROC_TYPE_KNOWN
#undef hppa
MACHINE_SWITCHES = -DHAS_COMPILER_SUPPORT
MACHINE_SOURCES = cmpint.c cmpaux-hppa.m4
MACHINE_OBJECTS = cmpint.o cmpaux-hppa.o
GC_HEAD_FILES = gccode.h cmpgc.h cmpint-hppa.h hppacache.h
XTRA_TARGETS = hppacache

cmpaux-hppa.o : cmpaux-hppa.s
cmpaux-hppa.s : cmpaux-hppa.m4 xmakefile

#endif /* PROC_TYPE_HPPA */

#if (PROC_TYPE == PROC_TYPE_MIPS)
#define PROC_TYPE_KNOWN
#undef mips
MACHINE_SWITCHES = -DHAS_COMPILER_SUPPORT
MACHINE_SOURCES = cmpint.c cmpaux-mips.s
MACHINE_OBJECTS = cmpint.o cmpaux-mips.o
GC_HEAD_FILES = gccode.h cmpgc.h cmpint-mips.h

cmpaux-mips.o : cmpaux-mips.s
cmpaux-mips.s : cmpaux-mips.m4 xmakefile

#endif /* PROC_TYPE_MIPS */

#if (PROC_TYPE == PROC_TYPE_I386)
#define PROC_TYPE_KNOWN
#undef i386
MACHINE_SWITCHES = -DHAS_COMPILER_SUPPORT
MACHINE_SOURCES = cmpint.c cmpaux-i386.s
MACHINE_OBJECTS = cmpint.o cmpaux-i386.o
GC_HEAD_FILES = gccode.h cmpgc.h cmpint-i386.h

cmpaux-i386.o : cmpaux-i386.s
cmpaux-i386.s : cmpaux-i386.m4 xmakefile

#endif /* PROC_TYPE_I386 */

#if (PROC_TYPE == PROC_TYPE_ALPHA)
#define PROC_TYPE_KNOWN
MACHINE_SWITCHES = -DHAS_COMPILER_SUPPORT
MACHINE_SOURCES = cmpint.c cmpaux-alpha.s
MACHINE_OBJECTS = cmpint.o cmpaux-alpha.o
GC_HEAD_FILES = gccode.h cmpgc.h cmpint-alpha.h

cmpaux-alpha.o : cmpaux-alpha.s
cmpaux-alpha.s : cmpaux-alpha.m4 xmakefile

#endif /* PROC_TYPE_ALPHA */

#ifndef PROC_TYPE_KNOWN
MACHINE_SWITCHES =
MACHINE_SOURCES = cmpint.c
MACHINE_OBJECTS = cmpint.o
GC_HEAD_FILES = gccode.h cmpgc.h
#endif /* PROC_TYPE_KNOWN */

USER_PRIM_SOURCES =
USER_PRIM_OBJECTS =
USER_LIBS =

SHELL = /bin/sh

#ifdef INSTALL_PROGRAM
INSTALL = INSTALL_PROGRAM
#else
INSTALL = install -c
#endif
#ifdef INSTALL_BINARY_DIRECTORY
BINDIR = INSTALL_BINARY_DIRECTORY
#else
BINDIR = /usr/local/bin
#endif
#ifdef ALTERNATE_CC
CC = ALTERNATE_CC
#else
CC = cc
#endif
#ifdef ALTERNATE_M4
M4 = ALTERNATE_M4
#else
M4 = m4
#endif
#ifdef ALTERNATE_AS
AS = ALTERNATE_AS
#else
AS = as
#endif

#ifdef SUPPRESS_C_OPTIMIZER
#undef C_OPTIMIZE_SWITCH
#define C_OPTIMIZE_SWITCH
#endif

#ifdef SUPPRESS_C_DEBUGGING
#undef C_DEBUG_SWITCH
#define C_DEBUG_SWITCH
#undef LIB_DEBUG
#define LIB_DEBUG
#endif

LDFLAGS = LD_SWITCH_SYSTEM LD_SWITCH_MACHINE C_DEBUG_SWITCH

CFLAGS = -DMIT_SCHEME C_OPTIMIZE_SWITCH C_DEBUG_SWITCH C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_FEATURES $(MACHINE_SWITCHES)

#ifndef ECHO
#define ECHO echo
#endif

.SUFFIXES: .o .cpp .s .m4

.c.o: ; @ECHO "#** Generating" $@ because of $?
	$(CC) $(CFLAGS) -c $*.c

.c.cpp: ; @ECHO "#** Generating" $@
	make -f xmakefile Breakup
	$(CC) $(CFLAGS) -E $*.c | \
	RUN(Breakup) | \
	sed -e 's/^#.*//' -e 's/^[ 	]*$$//' -e 's/^$$//' | \
	sed -n -e '/^..*/p' > $*.cpp

.c.s: ; @ECHO "#** Generating" $@
	$(CC) $(CFLAGS) -S $*.c

.m4.s: ; @ECHO "#** Generating" $@ because of $?
	$(M4) M4_SWITCH_SYSTEM M4_SWITCH_MACHINE $*.m4 > $*.s

.s.o: ; @ECHO "#** Generating" $@ because of $?
	$(AS) AS_SWITCH_SYSTEM AS_SWITCH_MACHINE -o $*.o $*.s

/* Source and object files */

SCHEME_SOURCES = $(X_SOURCES) $(TERMCAP_SOURCES) $(GRAPHICS_SOURCES) SOURCES_SYSTEM SOURCES_MACHINE $(USER_PRIM_SOURCES) missing.c
SCHEME_OBJECTS = $(X_OBJECTS) $(TERMCAP_OBJECTS) $(GRAPHICS_OBJECTS) OBJECTS_SYSTEM OBJECTS_MACHINE $(USER_PRIM_OBJECTS) missing.o
SCHEME_LIB = $(USER_LIBS) $(GRAPHICS_LIBS) $(X_LIB) $(TERMCAP_LIBS) LIB_MATH LIBS_SYSTEM LIBS_MACHINE LIB_DEBUG LIB_STANDARD

CORE_SOURCES = \
$(MACHINE_SOURCES) \
artutl.c \
bignum.c \
bigprm.c \
bitstr.c \
boot.c \
char.c \
comutl.c \
daemon.c \
debug.c \
dfloat.c \
error.c \
extern.c \
fasload.c \
fixnum.c \
flonum.c \
generic.c \
hooks.c \
hunk.c \
intern.c \
interp.c \
intprm.c \
list.c \
lookprm.c \
lookup.c \
obstack.c \
option.c \
osscheme.c \
ostty.c \
prim.c \
primutl.c \
prmcon.c \
ptrvec.c \
purutl.c \
regex.c \
rgxprim.c \
step.c \
storage.c \
string.c \
syntax.c \
sysprim.c \
term.c \
transact.c \
utils.c \
vector.c \
wind.c

STD_GC_SOURCES = \
fasdump.c \
gcloop.c \
memmag.c \
purify.c

BCH_GC_SOURCES = \
bchdmp.c \
bchgcl.c \
bchmmg.c \
bchpur.c \
bchutl.c

UNIX_SOURCES = \
intext.c \
ux.c \
uxctty.c \
uxenv.c \
uxfile.c \
uxfs.c \
uxio.c \
uxproc.c \
uxsig.c \
uxsock.c \
uxterm.c \
uxtop.c \
uxtrap.c \
uxtty.c \
uxutil.c

OS_PRIM_SOURCES = \
prosenv.c \
prosfile.c \
prosfs.c \
prosio.c \
prosproc.c \
prospty.c \
prosterm.c \
prostty.c \
pruxenv.c \
pruxfs.c \
pruxsock.c

HEAD_FILES = scheme.touch prims.h zones.h locks.h bignum.h \
	$(GC_HEAD_FILES) trap.h lookup.h history.h cmpint.h

CORE_OBJECTS = \
$(MACHINE_OBJECTS) \
artutl.o \
bignum.o \
bigprm.o \
bitstr.o \
boot.o \
char.o \
comutl.o \
daemon.o \
debug.o \
dfloat.o \
error.o \
extern.o \
fasload.o \
fixnum.o \
flonum.o \
generic.o \
hooks.o \
hunk.o \
intern.o \
interp.o \
intprm.o \
list.o \
lookprm.o \
lookup.o \
obstack.o \
option.o \
osscheme.o \
ostty.o \
prim.o \
primutl.o \
prmcon.o \
ptrvec.o \
purutl.o \
regex.o \
rgxprim.o \
step.o \
storage.o \
string.o \
syntax.o \
sysprim.o \
term.o \
transact.o \
utils.o \
vector.o \
wind.o

UNIX_OBJECTS = \
intext.o \
ux.o \
uxctty.o \
uxenv.o \
uxfile.o \
uxfs.o \
uxio.o \
uxproc.o \
uxsig.o \
uxsock.o \
uxterm.o \
uxtop.o \
uxtrap.o \
uxtty.o \
uxutil.o

OS_PRIM_OBJECTS = \
prosenv.o \
prosfile.o \
prosfs.o \
prosio.o \
prosproc.o \
prospty.o \
prosterm.o \
prostty.o \
pruxenv.o \
pruxfs.o \
pruxsock.o

STD_GC_OBJECTS = \
fasdump.o \
gcloop.o \
memmag.o \
purify.o

BCH_GC_OBJECTS = \
bchdmp.o \
bchgcl.o \
bchmmg.o \
bchpur.o \
bchutl.o

SOURCES = $(CORE_SOURCES) $(STD_GC_SOURCES)
OBJECTS = $(CORE_OBJECTS) $(STD_GC_OBJECTS) $(UNIX_OBJECTS) $(OS_PRIM_OBJECTS) usrdef.o
BCHSOURCES = $(CORE_SOURCES) $(BCH_GC_SOURCES)
BCHOBJECTS = $(CORE_OBJECTS) $(BCH_GC_OBJECTS) $(UNIX_OBJECTS) $(OS_PRIM_OBJECTS) bchdef.o

/* Construction rules. */

all: Bintopsb Psbtobin scheme bchscheme bchdrn $(XTRA_TARGETS)

scheme xscheme : $(OBJECTS) $(SCHEME_OBJECTS)
	@ECHO "#** Re-linking" $@ because of $?
	rm -f $@
	$(CC) $(LDFLAGS) -o $@ $(OBJECTS) $(SCHEME_OBJECTS) $(SCHEME_LIB)

bchscheme : $(BCHOBJECTS) $(SCHEME_OBJECTS)
	@ECHO "#** Re-linking" $@ because of $?
	rm -f $@
	$(CC) $(LDFLAGS) -o $@ $(BCHOBJECTS) $(SCHEME_OBJECTS) $(SCHEME_LIB)

bchdrn : bchdrn.o bchutl.o
	@ECHO "#** Re-linking" $@ because of $?
	rm -f $@
	$(CC) $(LDFLAGS) -o $@ bchdrn.o bchutl.o

Findprim : Findprim.o
	@ECHO "#** Re-linking" $@ because of $?
	$(CC) $(LDFLAGS) -o $@ Findprim.o

Bintopsb : Bintopsb.o missing.o
	@ECHO "#** Re-linking" $@ because of $?
	$(CC) $(LDFLAGS) -o $@ Bintopsb.o missing.o

Psbtobin : Psbtobin.o missing.o
	@ECHO "#** Re-linking" $@ because of $?
	$(CC) $(LDFLAGS) -o $@ Psbtobin.o missing.o

Breakup : Breakup.o
	@ECHO "#** Re-linking" $@ because of $?
	$(CC) $(LDFLAGS) -o $@ Breakup.o

Wsize : Wsize.o
	@ECHO "#** Re-linking" $@ because of $?
	$(CC) $(LDFLAGS) -o $@ Wsize.o LIB_MATH LIBS_SYSTEM LIBS_MACHINE LIB_DEBUG LIB_STANDARD

Ppband : Ppband.o
	@ECHO "#** Re-linking" $@ because of $?
	$(CC) $(LDFLAGS) -o $@ Ppband.o

install: scheme bchscheme
	-mv -f $(BINDIR)/scheme $(BINDIR)/scheme.busy
	rm -f $(BINDIR)/scheme.busy
	$(INSTALL) scheme $(BINDIR)/scheme
	-mv -f $(BINDIR)/bchscheme $(BINDIR)/bchscheme.busy
	rm -f $(BINDIR)/bchscheme.busy
	$(INSTALL) bchscheme $(BINDIR)/bchscheme

/* Primitive table files */

/* The first two are for VMS. */

usrdef.txt :
	RUN(make_vmslist) usrdef.txt $(SCHEME_SOURCES) $(SOURCES) $(OS_PRIM_SOURCES)

vmsusrdef.c :
	echo "$$ Findprim -o usrdef.c -l [-.vms]usrdef.txt"
	$(CC) $(CFLAGS) -c usrdef.c

usrdef.c : $(SCHEME_SOURCES) $(SOURCES) $(OS_PRIM_SOURCES) usrdef.touch Findprim xmakefile
	@ECHO "#** Re-making" $@ because of $?
	rm -f usrdef.c
	RUN(Findprim) $(SCHEME_SOURCES) $(SOURCES) $(OS_PRIM_SOURCES) > usrdef.c

bchdef.c : $(SCHEME_SOURCES) $(BCHSOURCES) $(OS_PRIM_SOURCES) usrdef.touch Findprim xmakefile
	@ECHO "#** Re-making" $@ because of $?
	rm -f bchdef.c
	RUN(Findprim) $(SCHEME_SOURCES) $(BCHSOURCES) $(OS_PRIM_SOURCES) > bchdef.c

primitive_tables :
	rm -f usrdef.c usrdef.o bchdef.c bchdef.o

scheme.touch psbmap.touch usrdef.touch :
	@ECHO "#** Resetting" $@ because of $?
	rm -f $@
	/* Create the file by opening rather than using `touch' program.
	   Some versions of the `touch' program don't work well when the
	   file server's clock is not synchronized with the client's. */
	echo "touch" > $@

#include "ymake.local"

/* scheme.touch depends also on butterfly.h rename.c */
scheme.touch : scheme.h oscond.h ansidecl.h dstack.h obstack.h config.h \
	bkpt.h object.h scode.h sdata.h gc.h interp.h stack.h futures.h \
	types.h errors.h returns.h const.h fixobj.h default.h extern.h prim.h \
	intrpt.h critsec.h float.h
psbmap.touch : config.h object.h bignum.h bignumint.h bitstr.h types.h \
	sdata.h const.h psbmap.h $(GC_HEAD_FILES) comlin.h comlin.c
usrdef.touch : usrdef.h config.h object.h prim.h

limits.h : hard-params
	RUN(hard-params) -l > limits.h
float.h : hard-params
	RUN(hard-params) -f > float.h
hard-params : hard-params.c
	$(CC) -DNO_SC $(LDFLAGS) -o hard-params hard-params.c

hppacache.o : hppacache.h

hppacache : hppacache.o
	$(CC) $(CFLAGS) -o hppacache hppacache.o

lint.out : $(SOURCES) $(SCHEME_SOURCES) $(CSRC) usrdef.c $(HEAD_FILES)
	rm -f lint.out
	lint $(CFLAGS) $(SOURCES) $(SCHEME_SOURCES) $(CSRC) usrdef.c > lint.out

/* Dependencies of the object files on the header files */

/* "foo" prevents syntax error when USER_PRIM_OBJECTS is empty. */
foo $(USER_PRIM_OBJECTS) : $(HEAD_FILES)

interp.o : scheme.touch locks.h trap.h lookup.h history.h cmpint.h zones.h prmcon.h
hooks.o : scheme.touch prims.h winder.h history.h
utils.o : scheme.touch prims.h winder.h history.h cmpint.h
primutl.o : scheme.touch prims.h prename.h

hunk.o list.o step.o vector.o sysprim.o daemon.o prim.o extern.o : \
	scheme.touch prims.h

lookup.o debug.o intern.o : scheme.touch prims.h lookup.h trap.h locks.h

fasload.o : scheme.touch prims.h osscheme.h osfile.h osio.h $(GC_HEAD_FILES) \
	trap.h option.h prmcon.h load.c fasl.h
fasdump.o : scheme.touch prims.h osio.h osfile.h osfs.h $(GC_HEAD_FILES) \
	trap.h lookup.h fasl.h dump.c

memmag.o : scheme.touch prims.h $(GC_HEAD_FILES)
gcloop.o : scheme.touch $(GC_HEAD_FILES)
purify.o : scheme.touch prims.h $(GC_HEAD_FILES) zones.h
purutl.o : scheme.touch prims.h $(GC_HEAD_FILES) zones.h
comutl.o : scheme.touch prims.h

artutl.o : scheme.touch
bignum.o : scheme.touch bignumint.h limits.h
bigprm.o flonum.o intprm.o : scheme.touch prims.h zones.h
generic.o : scheme.touch prims.h
fixnum.o : scheme.touch prims.h mul.c

storage.o : scheme.touch gctype.c

char.o string.o dfloat.o : scheme.touch prims.h
tterm.o : scheme.touch prims.h osterm.h

boot.o : scheme.touch prims.h version.h option.h ostop.h
option.o : ansidecl.h option.h
term.o : scheme.touch
missing.o : config.h

BCHGCC_H = bchgcc.h oscond.h $(GC_HEAD_FILES)
bchdmp.o : scheme.touch prims.h uxio.h osio.h osfile.h trap.h lookup.h \
	$(BCHGCC_H) fasl.h dump.c
bchdrn.o : ansidecl.h bchdrn.h
bchmmg.o : scheme.touch prims.h ux.h $(BCHGCC_H) option.h bchdrn.h
bchgcl.o : scheme.touch $(BCHGCC_H)
bchpur.o : scheme.touch prims.h $(BCHGCC_H) zones.h
bchutl.o : ansidecl.h

syntax.o : scheme.touch prims.h edwin.h syntax.h
bitstr.o : scheme.touch prims.h bitstr.h
regex.o : scheme.touch syntax.h regex.h
rgxprim.o : scheme.touch prims.h edwin.h syntax.h regex.h

Bintopsb.o : psbmap.touch trap.h limits.h fasl.h load.c bltdef.h
Psbtobin.o : psbmap.touch float.h fasl.h dump.c
Ppband.o : ansidecl.h config.h errors.h types.h const.h object.h \
        $(GC_HEAD_FILES) sdata.h load.c fasl.h

dmpwrld.o : scheme.touch prims.h ux.h osfs.h \
	unexec.c unexhp9k800.c getpagesize.h

x11base.o x11color.o x11graph.o x11term.o starbasex.o : scheme.touch prims.h \
	x11.h
x11base.o : ux.h uxselect.h
starbase.o : scheme.touch prims.h

Sgraph.o Sgraph_xt.o SgX.o : scheme.touch prims.h Sgraph.h
Sgraph_ar.o : scheme.touch prims.h Sgraph.h array.h
fft.o : scheme.touch prims.h zones.h array.h image.h
array.o image.o : scheme.touch prims.h array.h

cmpint.o : scheme.touch prim.h $(GC_HEAD_FILES)
cmpaux-hppa.s : cmpaux-hppa.m4
cmpaux-mc68k.s : cmpaux-mc68k.m4
cmpaux-vax.s : cmpaux-vax.m4

osscheme.o : scheme.touch posixtype.h os.h osscheme.h
ostty.o : ansidecl.h oscond.h posixtype.h os.h ostty.h osscheme.h

error.o ptrvec.o transact.o : ansidecl.h dstack.h
wind.o : ansidecl.h dstack.h obstack.h
obstack.o : obstack.h

$(UNIX_OBJECTS) pruxenv.o pruxfs.o pruxsock.o : oscond.h ansidecl.h \
       posixtype.h intext.h dstack.h os.h osscheme.h ux.h
uxctty.o : osctty.h ossig.h
uxenv.o : osenv.h
uxfile.o : osfile.h osio.h uxio.h
uxfs.o : osfs.h
uxio.o : osio.h uxio.h uxselect.h
uxproc.o : osproc.h uxproc.h osio.h uxio.h osterm.h
uxsig.o : ossig.h osctty.h ostty.h uxtrap.h uxutil.h critsec.h
uxsock.o : uxsock.h osio.h uxio.h prims.h
uxterm.o : osterm.h uxterm.h osio.h uxio.h ospty.h
uxtop.o : ostop.h uxtop.h osctty.h uxutil.h errors.h option.h
uxtrap.o : scheme.touch uxtrap.h uxutil.h option.h $(GC_HEAD_FILES)
uxtty.o : ostty.h osenv.h osio.h uxio.h osterm.h uxterm.h
uxutil.o : uxutil.h
pruxfs.o : osfs.h
pruxsock.o : osio.h uxsock.h

$(OS_PRIM_OBJECTS) : scheme.touch prims.h posixtype.h os.h
prosenv.o : osenv.h ostop.h
prosfile.o : osfile.h
prosfs.o : osfs.h
prosio.o : osio.h
prosproc.o : osproc.h
prospty.o : osterm.h osio.h ospty.h
prosterm.o : osterm.h osio.h
prostty.o : ostty.h osctty.h osfile.h osio.h

prmcon.o : scheme.touch prims.h prmcon.h

