# @(#)Makefile	1.57 04 Jun 1995 (UKC)

# Makefile for ups

# Optional multi-architecture compilation support
D = ${OBJDIR}${SLASH}
S = ${SRCDIR}${SLASH}
LIBSRC = ../lib
LIBOBJDIR = $D
L = ${LIBOBJDIR}

UPS_GDB_BINARY = $Dups-gdb
UPS_NATIVE_BINARY = $Dups
CX_BINARY = $Dcx
XC_BINARY = $Dxc
CG_BINARY = $Dcg

BINARIES = ${UPS_GDB_BINARY} ${UPS_NATIVE_BINARY} ${CX_BINARY} \
	   ${XC_BINARY} ${CG_BINARY}

UPS_TARGET = $Dups
TARGET = ${UPS_TARGET}
default_target: ${TARGET}

all: ${BINARIES}

# Installation parameters.  Note that these will usually be overridden
# by the ones in the top level Makefile (one directory above here).
MANDIR = /usr/local/man/man1
MANSUFFIX = 1
BIN = /usr/local/bin
X11BIN = /usr/local/X11
SUNVIEWBIN = /usr/local/Sunview

MANPAGE_OWNER = root
BINARY_OWNER = bin

# Flags for cc. CCFLAGS is read from the environment.
DEPS_DEVELHDRS = -Idevelhdrs
DEVELHDRS = -I$Sdevelhdrs

CFLAGS = -g
UPS_CFLAGS = ${CFLAGS} ${DEVELHDRS} ${INCLUDEDIRS} ${ARCH_CFLAGS} ${MORE_CFLAGS}

CCLINE = ${IN_OBJDIR}${CC} -c ${UPS_CFLAGS} $S
CCLINE_NO_ERROR = ${IN_OBJDIR}${CC} -c ${UPS_CFLAGS} ${GCC_NO_ERROR} $S

LINKCC = ${CC}
LINKCFLAGS = ${UPS_CFLAGS}
SVR4_LINKFLAGS = -R/usr/openwin/lib -L/usr/openwin/lib
LINKFLAGS = ${SVR4_LINKFLAGS}

# Command names
ETAGS = etags
SCCS = sccs
INSTALL = ucbinstall

TAGSFILE = TAGS

STOBJS = $Dst_debug.o $Dst_lookup.o $Dst_fmap.o $Dst_util.o $Dst_cb.o \
	 $Dst_module.o
STSRCS =   st_debug.c   st_lookup.c   st_fmap.c   st_util.c   st_cb.c \
	   st_module.c

VAOBJS = $Dva_decl.o $Dva_edit.o $Dva_menu.o $Dva_type.o $Dva_val.o \
	 $Dva_expr.o $Dva_state.o $Dva_format.o
VASRCS =   va_decl.c   va_edit.c   va_menu.c   va_type.c   va_val.c \
	   va_expr.c   va_state.c   va_format.c

UIOBJS = $Dui_iploop.o $Dui_layout.o $Dui_menu.o $Dui_misc.o $Dui_src.o
UISRCS =   ui_iploop.c   ui_layout.c   ui_menu.c   ui_misc.c   ui_src.c

UI2OBJS = $Dstate.o $Dreg.o $Dcursors.o $Dmenudata.o $Dtdr.o $Dutil.o
UI2SRCS =   state.c   reg.c   cursors.c   menudata.c   tdr.c   util.c

ASOBJS = $Das_vax.o $Das_68020.o $Das_mips.o $Das_clipper.o $Das_sparc.o
ASSRCS =   as_vax.c   as_68020.c   as_mips.c   as_clipper.c   as_sparc.c

AOOBJS = $Dao_target.o $Dao_procfs.o $Dao_ptrace.o $Dao_core.o \
	 $Dao_symread.o $Dao_shlib.o $Dao_symload.o $Dao_symparse.o \
         $Dao_symscan.o $Dao_symcb.o $Dao_aout.o $Dao_elfcore.o \
	 $Dao_elfread.o $Dao_elfsym.o $Dao_elflib.o $Dao_aflist.o \
	 $Dao_te.o $Dao_text.o $Dao_stack.o ${ASOBJS}
AOSRCS =   ao_target.c   ao_procfs.c   ao_ptrace.c   ao_core.c \
	   ao_symread.c   ao_shlib.c   ao_symload.c   ao_symparse.c  \
           ao_symscan.c   ao_symcb.c  ao_aout.c   ao_elfcore.c \
	   ao_elfread.c   ao_elfsym.c   ao_elflib.c   ao_aflist.c \
	   ao_te.c   ao_text.c   ao_stack.c ${ASSRCS}

GDB_OBJS = $Dgd_driver.o $Dtops-gdb.o
GDB_SRCS =   gd_driver.c   tops-gdb.c

NATIVE_OBJS = ${AOOBJS} $Dtops-native.o
NATIVE_SRCS = ${AOOBJS} tops-native.c

XCSRCS =   xc_symparse.c   xc_text.c   xc_load.c   xc_machine.c   xc_builtins.c
XCOBJS = $Dxc_symparse.o $Dxc_text.o $Dxc_load.o $Dxc_machine.o $Dxc_builtins.o

DBOBJS = $Dbp.o $Dexec.o $Dtrun_ss.o $Dtrun_j.o $Ddata.o $Dtarget.o $Das_mi.o
DBSRCS =   bp.c   exec.c   trun_ss.c   trun_j.c   data.c   target.c   as_mi.c

OBJOBJS = $Dobj_bpt.o $Dobj_signal.o $Dobj_misc.o $Dobj_buildf.o \
	  $Dobj_target.o $Dobj_env.o $Dobj_stack.o $Dobj_util.o
OBJSRCS =   obj_bpt.c   obj_signal.c   obj_misc.c   obj_buildf.c \
	    obj_target.c   obj_env.c   obj_stack.c   obj_util.c

CIOBJS = $Dci_parse.o $Dci_types.o $Dci_lex.o $Dci_stm.o \
	 $Dci_decl.o $Dci_func.o $Dci_util.o $Dci_expr.o $Dci_showexpr.o \
	 $Dci_constexpr.o $Dci_compile.o $Dci_compile_expr.o $Dci_opcodes.o \
	 $Dci_init.o

CISRCS =              ci_types.c   ci_lex.c   ci_stm.c \
	 ci_decl.c   ci_func.c   ci_util.c   ci_expr.c   ci_showexpr.c \
	 ci_constexpr.c   ci_compile.c   ci_compile_expr.c ci_opcodes.c \
	 ci_init.c

RESTOBJS = $Dexpr.o $Dsrcwin.o $Dsrcbuf.o $Dsrcpath.o \
	   $Dprintf.o $Dconfig.o $Dups.o $Dcc.o
RESTSRCS =   expr.c   srcwin.c   srcbuf.c   srcpath.c  \
	     printf.c   config.c   ups.c   cc.c

STDSRCS = ${STSRCS} ${AOSRCS} ${UISRCS} ${VASRCS} ${OBJSRCS} ${UI2SRCS} \
          ${DBSRCS} ${RESTSRCS} ${XCSRCS} ${CISRCS} \
	  cx.c cx_link.c cx_symio.c cx_wsym.c cx_onefile.c xc.c cg.c

COMMON_UPS_OBJS = ${STOBJS} ${UIOBJS} ${VAOBJS} ${OBJOBJS} \
		  ${UI2OBJS} ${DBOBJS} ${RESTOBJS} ${CIOBJS} ${XCOBJS} \
	   	  $Dcx_onefile.o $Dsccsdata.o

UPS_GDB_OBJS = ${COMMON_UPS_OBJS} ${GDB_OBJS}
UPS_NATIVE_OBJS = ${COMMON_UPS_OBJS} ${NATIVE_OBJS}

CG_OBJS = $Dcg.o $Dcc.o ${CIOBJS} $Dxc_machine.o $Dxc_builtins.o $Dcx_onefile.o

CX_OBJS = $Dcx.o $Dcc.o $Dcx_link.o $Dcx_symio.o $Dcx_wsym.o ${CIOBJS}

XC_OBJS = $Dxc.o $Dxc_load.o $Dxc_builtins.o $Dxc_machine.o

ALL_OBJS = ${UPS_NATIVE_OBJS} ${GDB_OBJS} ${CG_OBJS} ${CX_OBJS} ${XC_OBJS}

DEPS_SRCS = ${STDSRCS} tops-gdb.c tops-native.c ci_parse.c sccsdata.c
TAGS_SRCS = ${STDSRCS} ${GDB_SRCS} ci_parse.c		# C source files
LINT_SRCS = ${TAGS_SRCS}

TGT_MENUS = tgt_start_men.c tgt_next_men.c tgt_step_men.c \
	    tgt_cont_men.c tgt_stop_men.c tgt_kill_men.c \
	    tgt_attach_men.c tgt_detach_men.c
MENUS = bphmen.c bptmen.c cbhmen.c cblockmen.c cmdmen.c coremen.c \
	filmen.c gblmen.c sghmen.c shmen.c sigmen.c srcmen.c outmen.c \
	${TGT_MENUS} varmen.c envheadmen.c envmen.c blockmen.c mfuncmen.c

CURSORS = cu_dead cu_dead_mask cu_display cu_display_mask cu_drag_box cu_drag_box_mask cu_menu cu_menu_mask cu_sbar cu_sbar_mask cu_sc_pressed cu_sc_pressed_mask cu_scroll_down cu_scroll_down_mask cu_scroll_up cu_scroll_up_mask cu_wait cu_wait_mask cu_line cu_line_mask cu_dragbox cu_dragbox_mask

HDRS = ao.h ao_aflist.h ao_aout.h ao_asm.h ao_core.h 		              \
       ao_elfcore.h ao_elflib.h ao_elfpriv.h ao_elfread.h ao_elfsym.h         \
       ao_execinfo.h ao_ifdefs.h ao_procfs.h ao_ptrace.h ao_shlib.h	      \
       ao_stack.h ao_symcb.h ao_symload.h ao_symparse.h ao_symread.h	      \
       ao_syms.h ao_symscan.h ao_target.h ao_te.h ao_text.h as.h breakpoint.h \
       cc.h ci.h ci_compile.h ci_compile_expr.h ci_constexpr.h ci_decl.h      \
       ci_expr.h ci_func.h ci_init.h ci_lex.h ci_opcodes.h ci_parse.h	      \
       ci_showexpr.h ci_stm.h ci_tokens.h ci_types.h ci_util.h config.h	      \
       core.h cursors.h cx_libfuncs.h cx_libvars.h cx_link.h cx_symio.h	      \
       cx_wsym.h data.h debug.h dx.h elfstab.h exec.h expr.h gd.h menudata.h  \
       mips_frame.h mreg.h obj_bpt.h obj_buildf.h obj_env.h obj_misc.h	      \
       obj_signal.h obj_stack.h obj_target.h obj_util.h objtypes.h output.h   \
       printf.h proc.h reg.h sccsdata.h srcbuf.h srcpath.h srcwin.h st.h      \
       state.h symtab.h target.h tdr.h trun.h ui.h ui_priv.h ups.h util.h     \
       va.h va_priv.h xc.h xc_builtins.h xc_load.h xc_machine.h xc_opcodes.h  \
       xc_symparse.h st_debug.h

SOURCE_FILES = ${STDSRCS} ${GDB_SRCS} tops-native.c ci_parse.y ${HDRS} # Actual source files

DOCS = doc/ups.man doc/porting.ms doc/linking.ms doc/refs.refer

FILES = ${SOURCE_FILES} ${DOCS} Makefile 

CIHDRS = ci_constexpr.h ci_decl.h ci_expr.h ci_func.h ci_lex.h \
	 ci_parse.h ci_showexpr.h ci_stm.h ci_tokens.h ci_types.h ci_util.h

# Installed versions of various libraries.
# We normally build ups with the development versions (below).
#
#UKCLIB = -lukcprog				# Installed ukcprog library
#MENLIB = -lMen3wn				# Installed menu library.
#X11WNLIB = -lx11wn				# Installed X11 wn library

UKCLIB = ${LIBSRC}/libukcprog/$Llibukcprog.a	# Development ukcprog library
MTRLIB = ${LIBSRC}/libmtrprog/$Llibmtrprog.a	# Development mtrprog library
OBJLIB = ${LIBSRC}/libobj/$Llibobj.a		# Development object library.
ARGLIB = ${LIBSRC}/libarg/$Llibarg.a		# Development arg library.
EDITLIB = ${LIBSRC}/libedit/$Llibedit.a		# Development edit library.
MENLIB = ${LIBSRC}/libMen3/$LlibMen3wn.a	# Development menu library.
X11WNLIB = ${LIBSRC}/libx11wn/$LX11/libwn.a	# Development X11 wn library

X11LIB = -lX11					# Installed X11 Xlib library.

X10XLIB = -lX					# Installed X10 Xlib library.

GDBCONF = gdb/upsgdb/upsconf
GDBCC = `cat $S${GDBCONF}/cccmd`
LIBGDB = gdb/upsgdb/libgdb.a
GDBLIBS = ${LIBGDB} `cat ${GDBCONF}/gdblibs`

COMMONLIBS = ${OBJLIB} ${MENLIB} ${ARGLIB} ${EDITLIB} ${MTRLIB} ${UKCLIB}

NATIVE_X11LIBS = ${COMMONLIBS} ${X11WNLIB} ${X11LIB} 
GDB_X11LIBS = ${NATIVE_X11LIBS} ${GDBLIBS}

NATIVE_X11LIBDEPS =  ${COMMONLIBS} ${X11WNLIB}
GDB_X11LIBDEPS = ${NATIVE_X11LIBDEPS} ${LIBGDB}

SUNVIEWLIBS = ${COMMONLIBS} ${SUNVIEWWNLIB} ${SUNVIEWSTDLIBS}
SUNVIEWLIBDEPS = ${COMMONLIBS} ${SUNVIEWWNLIB} 

SUNVIEWSTDLIBS = -lsuntool -lsunwindow -lpixrect	# Sunview libraries

SUNVIEWWNLIB = ${LIBSRC}/libx11wn/$LSUNVIEW/libwn.a # Development Sunview wn library
#SUNVIEWWNLIB = -lsunviewwn			# Installed Sunview wn library


SCCSCHECK_DIRS = ${LIBSRC}/libobj ${LIBSRC}/libMen3 ${LIBSRC}/libarg \
		 ${LIBSRC}/libmtrprog ${LIBSRC}/libukcprog ${LIBSRC}/libx11wn

X11LINTLIBS = -larg -lobj -lMen3wn -lx11wn -lX11
SUNLINTLIBS = -larg -lobj -lMen3wn -lwn -lsunwindow -lpixrect

oxc: ${XC_BINARY}
ocx: ${CX_BINARY}
ocg: ${CG_BINARY}
oups-gdb: ${UPS_GDB_BINARY}
oups: ${UPS_NATIVE_BINARY}

CGLIBDEPS = ${MTRLIB} ${UKCLIB}
CGLIBS = ${CGLIBDEPS} ${X11LIB}

CXLIBDEPS = ${MTRLIB} ${UKCLIB}
CXLIBS = ${CXLIBDEPS}

XCLIBDEPS = ${MTRLIB} ${UKCLIB}
XCLIBS = ${XCLIBDEPS} ${X11LIB}

# Use $D/. so we don't get a null target when $D is undefined.
# We say sh -c to avoid exit status problems from the || construct.
$D/.:
	sh -c 'IFS=/; for i in $D; do test -d $$i || mkdir $$i; cd $$i; done'

${XC_BINARY}: $D/. ${XC_OBJS} ${XCLIBDEPS}
	@rm -f $@
	${LINKCC} ${LINKFLAGS} ${LINKCFLAGS} -o $@ ${XC_OBJS} ${XCLIBS} ${STDLIBS}

${CG_BINARY}: $D/. ${CG_OBJS} ${CGLIBDEPS}
	@rm -f $@
	@echo Linking $@ with ${LINKCC} ${LINKFLAGS} ${CFLAGS} ...
	@${LINKCC} ${LINKFLAGS} ${LINKCFLAGS} -o $@ ${CG_OBJS} ${CGLIBS} ${STDLIBS}


${CX_BINARY}: $D/. ${CX_OBJS} ${CXLIBDEPS}
	@rm -f $@
	${LINKCC} ${LINKFLAGS} ${LINKCFLAGS} -o $@ ${CX_OBJS} ${CXLIBS} ${STDLIBS}

# The following dependencies are for building ups in parallel on an MP system
uiobjs: ${UIOBJS}
stobjs: ${STOBJS}
vaobjs: ${VAOBJS}
objobjs: ${OBJOBJS}
ui2objs: ${UI2OBJS}
dbobjs: ${DBOBJS}
restobjs: ${RESTOBJS}
ciobjs: ${CIOBJS}

svups: $Dsunviewups

$Dsunviewups: $D/. ${UPS_NATIVE_OBJS} ${SUNVIEWLIBDEPS}
	@rm -f $@
	${LINKCC} ${LINKFLAGS} ${LINKCFLAGS} -o $@ ${UPS_NATIVE_OBJS} ${SUNVIEWLIBS} ${STDLIBS}

${UPS_GDB_BINARY}: $D/. ${UPS_GDB_OBJS} ${GDB_X11LIBDEPS}
	@rm -f $@
	@echo Linking $@ with ${LINKCC} ${LINKFLAGS} ${CFLAGS} ...
	@${LINKCC} ${LINKFLAGS} ${LINKCFLAGS} -o $@ ${UPS_GDB_OBJS} ${GDB_X11LIBS} ${STDLIBS}

ofiles: $D/. ${UPS_NATIVE_OBJS}

${UPS_NATIVE_BINARY}: $D/. ${UPS_NATIVE_OBJS} ${NATIVE_X11LIBDEPS}
	@rm -f $@
	@echo Linking $@ with ${LINKCC} ${LINKFLAGS} ${CFLAGS} ...
	@${LINKCC} ${LINKFLAGS} ${LINKCFLAGS} -o $@ ${UPS_NATIVE_OBJS} ${NATIVE_X11LIBS} ${STDLIBS}

st: ${STOBJS}

list:
	@echo README ${FILES} ci_parse.c sccsdata.c | tr ' ' '\012'
	@echo doc/sample.c
	@echo README GLUEMENUS ${MENUS} | tr ' ' '\012' | sed 's;^;menus/;'
	@echo README START END ${CURSORS} | tr ' ' '\012' | sed 's;^;cursors/;'

${TAGSFILE}: ${TAGS_SRCS} ${HDRS}
	${ETAGS} -t ${TAGS_SRCS} ${HDRS}
	rep ci_parse\\.c ci_parse.y ${TAGSFILE}

lint:
	lint ${DEPS_DEVELHDRS} ${LINTFLAGS} ${ARCH_CFLAGS} ${LINT_SRCS} # ${X11LINTLIBS}

count: ${SOURCE_FILES}
	wc ${SOURCE_FILES}

fullcount: count
	@echo `egrep -v '^[ 	]*$$' ${SOURCE_FILES} | wc -l` non blank lines
	@echo `semicount ${SOURCE_FILES}` semicolons

ci_count: ${CIHDRS} ${CISRCS} ci_parse.y
	wc -l ${CIHDRS} ${CISRCS} ci_parse.y

deps: ${DEPS_SRCS}
	@deps ${DEPS_DEVELHDRS} ${ARCH_CFLAGS} ${DEPS_SRCS} | \
		sed 's/{CCLINE}xc_machine/{CCLINE_NO_ERROR}xc_machine/

cursorfile:
	cd cursors; cat START ${CURSORS} END > ../cursors.c

menusfile:
	cd menus; ./GLUEMENUS ${MENUS} > ../menudata.c

veryclean: clean
	rm -f tags ci_parse.c
	${SCCS} clean

clean:
	rm -f ${ALL_OBJS} ${BINARIES} core

SCCS_CHECK = sccsinfo ${SCCSCHECK_DIRS} ${FILES} && newer sccsdata.c ${FILES}

checklist: ${FILES} ci_parse.c sccsdata.c
	@checklist

sccs_check:
	@${SCCS_CHECK}

sccssnapshot:
	mksccs -version_tag "${VERSION_TAG}" -changefile CHANGES -wh -c t_snapshot.c -h t_snapshot.h ups ${FILES}

sccsfile:
	@sccsinfo ${SCCSCHECK_DIRS} ${FILES}
	@checklist
	@newer CHANGES ${FILES}
	@${SCCS} edit ${SCCSFILE_RELEASE} sccsdata.c
	@mksccs -version_tag "${VERSION_TAG}" -changefile CHANGES -wh ups ${FILES}
	@${SCCS} delget sccsdata.c

install:
	@echo You must run make install in the directory above this one. 1>&2

xinstall sunviewinstall:
	@${MAKE} -${MAKEFLAGS} SCCS_CHECK= check$@

checkinstall: checkxinstall

checkxinstall: ${X11BIN}/ups ${MANDIR}/ups.${MANSUFFIX}
checksunviewinstall: ${SUNVIEWBIN}/ups ${MANDIR}/ups.${MANSUFFIX}

installcx: ${BIN}/cx

${SUNVIEWBIN}/ups: $Dsunviewups
	${SCCS_CHECK}
	${INSTALL} -c -m 755 -o ${BINARY_OWNER} -s $? $@

${X11BIN}/ups: $Dups
	${SCCS_CHECK}
	${INSTALL} -c -m 755 -o ${BINARY_OWNER} -s $? $@

${BIN}/cx: ${CX_BINARY}
	${SCCS_CHECK}
	${INSTALL} -c -m 755 -o ${BINARY_OWNER} -s $? $@

${MANDIR}/ups.${MANSUFFIX}: doc/ups.man
	${SCCS_CHECK}
	${INSTALL} -c -m 644 -o ${MANPAGE_OWNER} $? $@

#  Special dependency for ci_parse.y
ci_parse.c: ci_parse.y
	${IN_OBJDIR}yacc -d $Sci_parse.y
	-sed '1,5d' ci_tokens.h | cmp - $Dy.tab.h || { \
		echo '/* ci_tokens.h - yacc generation token #defines */';   \
		echo;							     \
		echo '/* Copyright 1989 Kent Software Tools Centre */';	     \
		echo;							     \
		echo '/* %'W'% %'G'% (UKC) */';				     \
		cat $Dy.tab.h;						     \
	} > ci_tokens.h
	sed -e '/^extern char \*malloc(), \*realloc();/d'		     \
	    -e '/^#include <malloc.h>/d'				     \
	    -e 's/malloc(/malloc((size_t)/'				     \
	    -e '/goto skip_init;/,/skip_init:/d'			     \
	    -e '/yynewstate:/,/goto yy_newstate/d'			     \
	    -e 's/\(yymaxdepth \* sizeof(YYSTYPE)\));$$/(size_t)(\1));/'     \
	    -e 's/\(yymaxdepth \* sizeof(int)\));$$/(size_t)(\1));/'	     \
	    -e '/^# *line/d'						     \
		$Dy.tab.c > ci_parse.c
	# cp $Dy.tab.c ci_parse.c

$Dgd_driver.o: gd_driver.c ups.h symtab.h target.h st.h ci.h obj_target.h
	@echo Compiling gd_driver.c ...
	${IN_OBJDIR}sh -c "${GDBCC} -c ${UPS_CFLAGS} $Sgd_driver.c"

# .o header dependencies, generated by make deps
$Dst_debug.o: st_debug.c ups.h symtab.h target.h st.h st_debug.h va.h util.h 
	${CCLINE}st_debug.c
$Dst_lookup.o: st_lookup.c ups.h symtab.h ci.h st.h target.h state.h 
	${CCLINE}st_lookup.c
$Dst_fmap.o: st_fmap.c ups.h symtab.h st.h 
	${CCLINE}st_fmap.c
$Dst_util.o: st_util.c ups.h symtab.h ci.h target.h st.h obj_bpt.h srcbuf.h srcpath.h 
	${CCLINE}st_util.c
$Dst_cb.o: st_cb.c ups.h symtab.h ci.h target.h st.h state.h 
	${CCLINE}st_cb.c
$Dst_module.o: st_module.c ups.h symtab.h st.h 
	${CCLINE}st_module.c
$Dao_target.o: ao_target.c ao_ifdefs.h ups.h ci.h target.h mreg.h dx.h breakpoint.h \
  ao_core.h ao_target.h ao_text.h ao_stack.h ao_shlib.h obj_bpt.h ao_ptrace.h \
  ao_aout.h ao_procfs.h ao_elflib.h 
	${CCLINE}ao_target.c
$Dao_procfs.o: ao_procfs.c ao_ifdefs.h ups.h target.h ao_core.h ao_target.h ao_procfs.h \
  ao_elflib.h ao_elfcore.h breakpoint.h obj_bpt.h debug.h ui.h 
	${CCLINE}ao_procfs.c
$Dao_ptrace.o: ao_ptrace.c ao_ifdefs.h 
	${CCLINE}ao_ptrace.c
$Dao_core.o: ao_core.c ao_ifdefs.h ups.h target.h data.h ao_core.h ao_elfcore.h \
  ao_aout.h 
	${CCLINE}ao_core.c
$Dao_symread.o: ao_symread.c ao_ifdefs.h ups.h symtab.h elfstab.h target.h st.h \
  ao_syms.h ao_symread.h 
	${CCLINE}ao_symread.c
$Dao_shlib.o: ao_shlib.c ao_ifdefs.h 
	${CCLINE}ao_shlib.c
$Dao_symload.o: ao_symload.c ao_ifdefs.h elfstab.h ups.h symtab.h st.h ci.h srcbuf.h \
  srcpath.h ao_syms.h ao_symload.h ao_symread.h ao_symparse.h ao_symscan.h ao_elfsym.h \
  util.h 
	${CCLINE}ao_symload.c
$Dao_symparse.o: ao_symparse.c ao_ifdefs.h elfstab.h ups.h symtab.h ci.h target.h \
  st.h ao_syms.h ao_symread.h ao_symparse.h ao_symscan.h 
	${CCLINE}ao_symparse.c
$Dao_symscan.o: ao_symscan.c ao_ifdefs.h elfstab.h ups.h symtab.h ci.h st.h ao_syms.h \
  ao_symscan.h ao_symread.h ao_elfsym.h ao_symcb.h util.h 
	${CCLINE}ao_symscan.c
$Dao_symcb.o: ao_symcb.c ao_ifdefs.h elfstab.h ups.h symtab.h ci.h st.h ao_syms.h \
  ao_symcb.h ao_symread.h ao_symscan.h ao_symparse.h 
	${CCLINE}ao_symcb.c
$Dao_aout.o: ao_aout.c ao_ifdefs.h 
	${CCLINE}ao_aout.c
$Dao_elfcore.o: ao_elfcore.c ao_ifdefs.h ups.h ao_core.h ao_elfpriv.h ao_elfread.h \
  ao_elfcore.h 
	${CCLINE}ao_elfcore.c
$Dao_elfread.o: ao_elfread.c ao_ifdefs.h ups.h ao_execinfo.h ao_elfpriv.h ao_elfread.h \
  ao_elflib.h elfstab.h 
	${CCLINE}ao_elfread.c
$Dao_elfsym.o: ao_elfsym.c ao_ifdefs.h ups.h symtab.h target.h st.h srcwin.h \
  ui.h ao_core.h ao_execinfo.h ao_syms.h ao_text.h ao_symread.h ao_symscan.h ao_aflist.h \
  ao_elfpriv.h ao_elfread.h ao_elfsym.h ao_elflib.h elfstab.h 
	${CCLINE}ao_elfsym.c
$Dao_elflib.o: ao_elflib.c ao_ifdefs.h ups.h symtab.h target.h st.h ao_syms.h \
  ao_core.h ao_target.h ao_elfpriv.h ao_elfread.h ao_elflib.h ao_elfsym.h ao_symscan.h 
	${CCLINE}ao_elflib.c
$Dao_aflist.o: ao_aflist.c ao_ifdefs.h ups.h symtab.h ci.h st.h ao_aflist.h ao_syms.h \
  ao_symscan.h 
	${CCLINE}ao_aflist.c
$Dao_te.o: ao_te.c ao_ifdefs.h 
	${CCLINE}ao_te.c
$Dao_text.o: ao_text.c ao_ifdefs.h ups.h symtab.h target.h st.h as.h ao_syms.h \
  ao_asm.h ao_symread.h ao_execinfo.h ao_text.h ao_symload.h ao_symscan.h ao_symcb.h \
  ao_shlib.h ao_elfread.h ao_elfsym.h ao_aout.h 
	${CCLINE}ao_text.c
$Dao_stack.o: ao_stack.c ao_ifdefs.h ups.h symtab.h target.h data.h st.h ao_syms.h \
  ao_stack.h ao_text.h 
	${CCLINE}ao_stack.c
$Das_vax.o: as_vax.c 
	${CCLINE}as_vax.c
$Das_68020.o: as_68020.c 
	${CCLINE}as_68020.c
$Das_mips.o: as_mips.c 
	${CCLINE}as_mips.c
$Das_clipper.o: as_clipper.c 
	${CCLINE}as_clipper.c
$Das_sparc.o: as_sparc.c ups.h debug.h target.h as.h ao_asm.h 
	${CCLINE}as_sparc.c
$Dui_iploop.o: ui_iploop.c cursors.h ups.h symtab.h target.h st.h ui.h tdr.h \
  srcwin.h ui_priv.h data.h expr.h reg.h state.h as.h debug.h obj_bpt.h va.h st_debug.h 
	${CCLINE}ui_iploop.c
$Dui_layout.o: ui_layout.c cursors.h reg.h ups.h symtab.h srcwin.h ui.h tdr.h \
  ui_priv.h state.h menudata.h debug.h objtypes.h obj_util.h sccsdata.h 
	${CCLINE}ui_layout.c
$Dui_menu.o: ui_menu.c objtypes.h ups.h target.h srcwin.h ui.h ui_priv.h exec.h \
  obj_target.h reg.h tdr.h state.h menudata.h cursors.h 
	${CCLINE}ui_menu.c
$Dui_misc.o: ui_misc.c ups.h debug.h objtypes.h symtab.h target.h st.h ci.h srcwin.h \
  ui.h ui_priv.h exec.h data.h obj_stack.h reg.h state.h tdr.h 
	${CCLINE}ui_misc.c
$Dui_src.o: ui_src.c ups.h reg.h symtab.h ci.h srcwin.h tdr.h ui.h ui_priv.h \
  cursors.h menudata.h expr.h obj_bpt.h obj_stack.h exec.h state.h 
	${CCLINE}ui_src.c
$Dva_decl.o: va_decl.c ups.h symtab.h ci.h target.h data.h va.h va_priv.h state.h 
	${CCLINE}va_decl.c
$Dva_edit.o: va_edit.c ups.h symtab.h objtypes.h obj_buildf.h target.h st.h obj_target.h \
  obj_util.h state.h va.h ci.h data.h va_priv.h ui.h tdr.h 
	${CCLINE}va_edit.c
$Dva_menu.o: va_menu.c objtypes.h ups.h symtab.h target.h state.h data.h va.h \
  menudata.h va_priv.h ui.h obj_stack.h tdr.h 
	${CCLINE}va_menu.c
$Dva_type.o: va_type.c ups.h symtab.h target.h st.h data.h va.h va_priv.h ci.h \
  state.h 
	${CCLINE}va_type.c
$Dva_val.o: va_val.c ups.h symtab.h target.h st.h data.h va.h va_priv.h state.h 
	${CCLINE}va_val.c
$Dva_expr.o: va_expr.c objtypes.h ups.h symtab.h reg.h ci.h ui.h va.h target.h \
  st.h data.h exec.h obj_stack.h obj_util.h menudata.h va_priv.h tdr.h state.h 
	${CCLINE}va_expr.c
$Dva_state.o: va_state.c ups.h objtypes.h symtab.h ci.h target.h va.h ui.h st.h \
  obj_stack.h obj_misc.h va_priv.h srcwin.h expr.h util.h 
	${CCLINE}va_state.c
$Dva_format.o: va_format.c ups.h symtab.h va.h va_priv.h st.h ui.h objtypes.h \
  obj_stack.h 
	${CCLINE}va_format.c
$Dobj_bpt.o: obj_bpt.c objtypes.h obj_util.h ups.h symtab.h ci.h ui.h exec.h \
  target.h breakpoint.h st.h data.h obj_bpt.h menudata.h debug.h tdr.h config.h \
  srcbuf.h reg.h srcwin.h state.h util.h expr.h 
	${CCLINE}obj_bpt.c
$Dobj_signal.o: obj_signal.c objtypes.h ups.h ui.h obj_signal.h menudata.h tdr.h \
  target.h state.h 
	${CCLINE}obj_signal.c
$Dobj_misc.o: obj_misc.c ups.h symtab.h objtypes.h target.h st.h obj_misc.h srcwin.h \
  ui.h va.h obj_stack.h menudata.h tdr.h state.h 
	${CCLINE}obj_misc.c
$Dobj_buildf.o: obj_buildf.c ups.h symtab.h target.h st.h objtypes.h obj_buildf.h \
  obj_misc.h obj_target.h obj_bpt.h obj_signal.h obj_env.h obj_stack.h va.h ui.h \
  exec.h expr.h state.h 
	${CCLINE}obj_buildf.c
$Dobj_target.o: obj_target.c ups.h objtypes.h target.h obj_target.h obj_env.h \
  exec.h ui.h obj_stack.h obj_util.h state.h tdr.h 
	${CCLINE}obj_target.c
$Dobj_env.o: obj_env.c objtypes.h ui.h obj_env.h obj_util.h menudata.h tdr.h 
	${CCLINE}obj_env.c
$Dobj_stack.o: obj_stack.c objtypes.h ups.h symtab.h st.h target.h obj_stack.h \
  data.h ui.h va.h obj_signal.h obj_misc.h menudata.h debug.h tdr.h 
	${CCLINE}obj_stack.c
$Dobj_util.o: obj_util.c reg.h objtypes.h obj_util.h ui.h state.h tdr.h 
	${CCLINE}obj_util.c
$Dstate.o: state.c ups.h symtab.h ci.h srcwin.h reg.h target.h cc.h state.h 
	${CCLINE}state.c
$Dreg.o: reg.c reg.h cursors.h debug.h tdr.h 
	${CCLINE}reg.c
$Dcursors.o: cursors.c cursors.h 
	${CCLINE}cursors.c
$Dmenudata.o: menudata.c 
	${CCLINE}menudata.c
$Dtdr.o: tdr.c srcwin.h ui.h cursors.h reg.h ups.h symtab.h st.h exec.h objtypes.h \
  obj_misc.h obj_target.h obj_bpt.h obj_signal.h obj_env.h obj_stack.h obj_util.h \
  va.h menudata.h expr.h state.h tdr.h util.h sccsdata.h 
	${CCLINE}tdr.c
$Dutil.o: util.c util.h 
	${CCLINE}util.c
$Dbp.o: bp.c ups.h target.h breakpoint.h dx.h 
	${CCLINE}bp.c
$Dexec.o: exec.c ups.h symtab.h va.h ci.h cursors.h target.h st.h exec.h dx.h \
  breakpoint.h obj_stack.h obj_target.h obj_signal.h obj_buildf.h obj_bpt.h obj_env.h \
  trun.h printf.h ui.h menudata.h tdr.h state.h 
	${CCLINE}exec.c
$Dtrun_ss.o: trun_ss.c ups.h symtab.h target.h st.h breakpoint.h trun.h exec.h \
  obj_stack.h obj_signal.h obj_bpt.h dx.h 
	${CCLINE}trun_ss.c
$Dtrun_j.o: trun_j.c ups.h symtab.h target.h as.h st.h breakpoint.h trun.h data.h \
  exec.h obj_stack.h obj_signal.h obj_bpt.h dx.h 
	${CCLINE}trun_j.c
$Ddata.o: data.c ups.h target.h data.h obj_stack.h obj_target.h state.h util.h 
	${CCLINE}data.c
$Dtarget.o: target.c ups.h symtab.h target.h tdr.h cursors.h ui.h 
	${CCLINE}target.c
$Das_mi.o: as_mi.c ups.h symtab.h st.h trun.h target.h as.h debug.h state.h srcbuf.h \
  util.h 
	${CCLINE}as_mi.c
$Dexpr.o: expr.c objtypes.h ups.h symtab.h srcwin.h ui.h va.h obj_stack.h target.h \
  st.h obj_misc.h state.h expr.h tdr.h 
	${CCLINE}expr.c
$Dsrcwin.o: srcwin.c ups.h reg.h symtab.h st.h srcbuf.h srcwin.h target.h srcpath.h \
  ui.h state.h 
	${CCLINE}srcwin.c
$Dsrcbuf.o: srcbuf.c srcbuf.h 
	${CCLINE}srcbuf.c
$Dsrcpath.o: srcpath.c srcbuf.h srcwin.h srcpath.h 
	${CCLINE}srcpath.c
$Dprintf.o: printf.c ups.h reg.h symtab.h ci.h target.h st.h printf.h srcwin.h \
  exec.h data.h ui.h state.h tdr.h 
	${CCLINE}printf.c
$Dconfig.o: config.c obj_bpt.h config.h va.h state.h 
	${CCLINE}config.c
$Dups.o: ups.c ups.h symtab.h ci.h reg.h tdr.h exec.h target.h st.h ui.h obj_buildf.h \
  obj_bpt.h cc.h state.h debug.h menudata.h cursors.h config.h va.h srcpath.h \
  srcwin.h sccsdata.h 
	${CCLINE}ups.c
$Dcc.o: cc.c ups.h symtab.h ci.h cc.h cx_libfuncs.h cx_libvars.h 
	${CCLINE}cc.c
$Dxc_symparse.o: xc_symparse.c ups.h symtab.h xc_symparse.h ci.h 
	${CCLINE}xc_symparse.c
$Dxc_text.o: xc_text.c ups.h symtab.h target.h st.h ci.h xc_opcodes.h xc_machine.h \
  xc_symparse.h xc_load.h ci_opcodes.h xc_builtins.h xc.h as.h breakpoint.h dx.h \
  cc.h state.h 
	${CCLINE}xc_text.c
$Dxc_load.o: xc_load.c ci.h xc_opcodes.h xc_machine.h xc_load.h xc_builtins.h 
	${CCLINE}xc_load.c
$Dxc_machine.o: xc_machine.c ci.h xc_opcodes.h xc_machine.h xc_builtins.h 
	${CCLINE_NO_ERROR}xc_machine.c
$Dxc_builtins.o: xc_builtins.c ups.h symtab.h ci.h xc_opcodes.h xc_machine.h \
  xc_builtins.h cx_libfuncs.h cx_libvars.h 
	${CCLINE}xc_builtins.c
$Dci_types.o: ci_types.c ups.h symtab.h ci.h ci_parse.h ci_util.h ci_types.h 
	${CCLINE}ci_types.c
$Dci_lex.o: ci_lex.c ups.h symtab.h ci.h ci_parse.h ci_util.h ci_lex.h ci_tokens.h 
	${CCLINE}ci_lex.c
$Dci_stm.o: ci_stm.c ups.h symtab.h ci.h ci_parse.h ci_util.h ci_stm.h ci_func.h \
  ci_types.h ci_expr.h ci_constexpr.h ci_showexpr.h 
	${CCLINE}ci_stm.c
$Dci_decl.o: ci_decl.c ups.h symtab.h ci.h ci_parse.h ci_decl.h ci_types.h ci_util.h \
  ci_lex.h ci_init.h 
	${CCLINE}ci_decl.c
$Dci_func.o: ci_func.c ups.h symtab.h expr.h ci.h ci_parse.h ci_util.h ci_decl.h \
  ci_func.h ci_types.h ci_expr.h 
	${CCLINE}ci_func.c
$Dci_util.o: ci_util.c ups.h symtab.h expr.h ci.h ci_parse.h ci_expr.h ci_constexpr.h \
  ci_util.h 
	${CCLINE}ci_util.c
$Dci_expr.o: ci_expr.c ups.h symtab.h ci.h ci_parse.h ci_util.h ci_expr.h ci_func.h \
  ci_types.h ci_decl.h ci_showexpr.h ci_constexpr.h 
	${CCLINE}ci_expr.c
$Dci_showexpr.o: ci_showexpr.c ups.h symtab.h ci.h ci_parse.h ci_showexpr.h ci_types.h \
  ci_util.h 
	${CCLINE}ci_showexpr.c
$Dci_constexpr.o: ci_constexpr.c ups.h symtab.h ci.h ci_parse.h ci_showexpr.h \
  ci_constexpr.h ci_types.h ci_util.h 
	${CCLINE}ci_constexpr.c
$Dci_compile.o: ci_compile.c ups.h symtab.h ci.h ci_parse.h ci_types.h xc_opcodes.h \
  xc_machine.h cx_link.h ci_compile.h ci_compile_expr.h ci_util.h 
	${CCLINE}ci_compile.c
$Dci_compile_expr.o: ci_compile_expr.c ups.h symtab.h ci_parse.h ci_types.h ci_constexpr.h \
  ci.h xc_opcodes.h xc_machine.h cx_link.h ci_compile.h ci_compile_expr.h ci_util.h 
	${CCLINE}ci_compile_expr.c
$Dci_opcodes.o: ci_opcodes.c ups.h symtab.h ci_parse.h ci_util.h ci.h xc_opcodes.h \
  xc_machine.h cx_link.h ci_compile.h ci_opcodes.h 
	${CCLINE}ci_opcodes.c
$Dci_init.o: ci_init.c ups.h symtab.h ci.h ci_parse.h ci_init.h ci_expr.h ci_constexpr.h \
  ci_util.h ci_types.h 
	${CCLINE}ci_init.c
$Dcx.o: cx.c ups.h symtab.h ci.h xc_load.h cx_link.h cc.h 
	${CCLINE}cx.c
$Dcx_link.o: cx_link.c ups.h ci.h xc_opcodes.h xc_machine.h xc_load.h cx_link.h \
  cx_symio.h 
	${CCLINE}cx_link.c
$Dcx_symio.o: cx_symio.c ups.h ci.h xc_load.h cx_link.h cx_symio.h cx_wsym.h 
	${CCLINE}cx_symio.c
$Dcx_wsym.o: cx_wsym.c ups.h symtab.h cx_symio.h cx_wsym.h 
	${CCLINE}cx_wsym.c
$Dcx_onefile.o: cx_onefile.c ups.h symtab.h ci.h ci_util.h xc_opcodes.h xc_machine.h \
  cx_link.h 
	${CCLINE}cx_onefile.c
$Dxc.o: xc.c ups.h ci.h xc_load.h 
	${CCLINE}xc.c
$Dcg.o: cg.c ups.h symtab.h ci.h xc_opcodes.h xc_machine.h xc_builtins.h cc.h 
	${CCLINE}cg.c
$Dtops-gdb.o: tops-gdb.c ups.h symtab.h target.h xc.h gd.h 
	${CCLINE}tops-gdb.c
$Dtops-native.o: tops-native.c ups.h symtab.h target.h ao.h ao_ifdefs.h xc.h \
  gd.h 
	${CCLINE}tops-native.c
$Dci_parse.o: ci_parse.c ups.h symtab.h ci.h ci_parse.h ci_types.h ci_util.h \
  ci_decl.h ci_func.h ci_expr.h ci_stm.h ci_lex.h 
	${CCLINE}ci_parse.c
$Dsccsdata.o: sccsdata.c sccsdata.h 
	${CCLINE}sccsdata.c
