XCOMM
XCOMM  $Id: Imakefile,v 1.13 1996/07/30 13:09:20 ettore Exp ettore $
XCOMM
XCOMM  This file is part of VICE, the Versatile Commodore Emulator
XCOMM  See README for copyright notice
XCOMM
XCOMM
XCOMM  Written by 
XCOMM    Jarkko Sonninen (sonninen@lut.fi)
XCOMM    Jouko Valta     (jopi@stekt.oulu.fi)
XCOMM
XCOMM

#define DO_CONFIG

#include "config.h"
#include "patchlevel.h"


XCOMM  ----------------------------------------------------------------------
XCOMM  Choose your favourite c-compiler
XCOMM  Tips:
XCOMM  For DEC, disable -pipe on gcc
XCOMM  For HP-UX cc, select CC appropriately (-Aa for ANSI C)
XCOMM  For DEC Ultrix and Solaris, set CCOPTIONS to empty list

CC=gcc
#CC=cc
#CC = CC
#CC = c89
#CC = cc -Wp,-H250000
#CC = cc -Aa
#CC = g++
#CC = gcc -Wall -ansi $(BUGFS)
#CC = gcc -Wall -pipe  $(BUGFS)
#CC = gcc -Wall -pipe -ansi  $(BUGFS)

# BUGFS = -pedantic -Wmissing-prototypes -Wpointer-arith
# BUGFS = -pedantic -Wmissing-prototypes -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion
# BUGFS = -pedantic -Wmissing-prototypes -Wshadow -Wpointer-arith


XCOMM  ----------------------------------------------------------------------
XCOMM  Choose the optimization/debugging options which are best for you

XCOMM  i586 (Pentium) architecture

CDEBUGFLAGS = -O4 -m486 -fomit-frame-pointer -funroll-loops \
	-finline-functions -malign-jumps=0 -malign-functions=0

XCOMM  i486 architecture

#CDEBUGFLAGS = -O4 -m486 -fomit-frame-pointer -funroll-loops \
	-finline-functions

XCOMM  Generic gcc optimizations (fill in with more appropriate options if
XCOMM  necessary)

#CDEBUGFLAGS = -O
#CDEBUGFLAGS = -O2
#CDEBUGFLAGS = -O4
#CDEBUGFLAGS = -O5
#CDEBUGFLAGS = -O6

XCOMM  ...for debugging

#CDEBUGFLAGS = -g $(PROFILE)
#CDEBUGFLAGS = DebuggableCDebugFlags $(PROFILE)
#CDEBUGFLAGS = OptimizedCDebugFlags


XCOMM  ----------------------------------------------------------------------
XCOMM  I had to unset the default compiler flags (often incorrect)
XCOMM  Remove this line if indigestible.

CCOPTIONS =


XCOMM  ----------------------------------------------------------------------
XCOMM  To use profiler, code must be linked statically

#PROFILE = -static
#PROFILE = -p -static
#PROFILE = -p -Wl,-a,archive


XCOMM  ----------------------------------------------------------------------
XCOMM  You should not need to touch anything below this line...
XCOMM  ----------------------------------------------------------------------


EXTRA_INCLUDES = -I/usr/local/include
#EXTRA_INCLUDES = -I/usr/local/X11R5/include


#ifndef BaseExtensionDefines
#define BaseExtensionDefines
#endif

DEFINES = BaseExtensionDefines


XMULIB    = -lXmu
ZDIS_FLGS   = -DNO_ASM -DSTANDALONE_ZDIS

#ifdef XPM
XPMLIB    = -lXpm
#else
XPMLIB    =
#endif

#ifdef X64SOUND
#ifdef SGISOUND
SOUNDLIB = -laudio
#else
SOUNDLIB =
#endif
#else
SOUNDLIB = 
#endif

#define PassCDebugFlags 'CDEBUGFLAGS=$(CDEBUGFLAGS)'


XCOMM  ----------------------------------------------------------------------
XCOMM  FILES
XCOMM  ----------------------------------------------------------------------


RELEASE = vice-VERSION./**/PATCHLEVEL
NEW     = vice-VERSION-/**/ABETATYPE/**/ABETALEVEL
BINARCH = linuxELF
BINRELEASE = vice-VERSION./**/PATCHLEVEL-bin-$(BINARCH)
DOCRELEASE = vice-docs


XCOMM  ----------------------------------------------------------------------
XCOMM  Configure the directory hierarchy

VICEHOME= vice  # -VERSION./**/PATCHLEVEL

VICEBIN = ../bin
TARGET  = $(VICEBIN)/x64
TARGET2 = $(VICEBIN)/x128
TARGET3 = $(VICEBIN)/xvic
TARGET4 = $(VICEBIN)/xpet
C1541TARGET = $(VICEBIN)/c1541
ZDISTARGET  = $(VICEBIN)/zdis
BTARGET = $(VICEBIN)/petcat
PRNTARGET = $(VICEBIN)/petlp

BINTARGET = $(TARGET) $(TARGET2) $(TARGET2) $(TARGET3) $(TARGET4) \
	$(C1541TARGET) $(ZDISTARGET) $(BTARGET) $(PRNTARGET)


XCOMM  ----------------------------------------------------------------------
XCOMM  Project directories for ROM and disk images

ROMDIRS = ../bin/C64 ../bin/C128 ../bin/VIC20 ../bin/PET


XCOMM  Documents and manpages

DDIR = ../doc
MDIR = ../man
VDIR = ..

UTILS = $(VDIR)/test $(VDIR)/utils $(VDIR)/run


XCOMM  Install

BINDIR = /usr/local/bin
MANDIR = /usr/local/man



XCOMM ----------------------------------------------------------------------
XCOMM  Some configuration dependent things
XCOMM  Setup changes according to config.h
XCOMM ----------------------------------------------------------------------


#ifdef EDIT
#define IHaveSubdirs
READLINE = readline/libreadline.a
EDITLIB = -Lreadline -lreadline -ltermcap
#endif
#SUBDIRS = readline


XCOMM  Collect VIC-II emulator files

VIDEOOBJS = x64.o vicii.o video_x.o sprcoll.o
XCOMM raster.o

XCOMM FIXME!
XCOMM #ifdef USE_VDC
XCOMM VDCOBJ = 128vdc.o
C128VIDEOOBJS = 128vicii.o x128.o 128vdc.o video_x.o sprcoll.o
XCOMM 128VICraster.o 128VDCraster.o
XCOMM #else
XCOMM C128VIDEOOBJS = 128vicii.o x64.o  128vdc.o video_x.o sprcoll.o
XCOMM XCOMM 128VICraster.o
XCOMM #endif

VIC20VIDEOOBJS = vic.o xVIC.o video_x.o
XCOMM VICraster.o
PETVIDEOOBJS = crtc.o xPET.o video_x.o
XCOMM PETraster.o
PET8VIDEOOBJS = PET8crtc.o  xPET8.o video_x.o


XCOMM  'XCONTROL' causes use of the old Control Window
XCOMM   from x64-0.2.2 in case the new one is indigestible.

#ifdef XCONTROL
#undef XDEBUGGER

XDEBUGOBJ = xcontrol.o
C128XDEBUGOBJ = xcontrol.o
VIC20XDEBUGOBJ = xcontrol.o
PETXDEBUGOBJ = xcontrol.o
#endif

#ifdef XDEBUGGER
LOCAL_LIBRARIES = $(EDITLIB) $(DEBUG) $(PROFILE) \
		  $(XPMLIB) $(XAWLIB) $(XMULIB) $(XTOOLLIB) $(XLIB)
XDEBUGOBJ = xdebug.o
C128XDEBUGOBJ = 128xdebug.o
VIC20XDEBUGOBJ = VICxdebug.o
PETXDEBUGOBJ = PETxdebug.o

#else
LOCAL_LIBRARIES = $(EDITLIB) $(DEBUG) $(PROFILE) $(XLIB)
ARGPARSEOBJ = args.o
C128ARGPARSEOBJ = 128args.o
VIC20ARGPARSEOBJ = VICargs.o
PETARGPARSEOBJ = PETargs.o
#endif


#ifdef JOYSTICK
JOYOBJ = joystick.o
#endif


#ifdef REU
REUOBJ = reu.o
128REUOBJ = 128reu.o
#endif

#ifdef IEEE488
IEEEOBJ = tpi.o parallel.o
#endif

#ifdef CBMTAPE
TAPEOBJ = tapeunit.o
C128TAPEOBJ = 128tapeunit.o
VIC20TAPEOBJ = VICtapeunit.o
PETTAPEOBJ = PETtapeunit.o
#endif

#ifdef PATCH_ROM
PATCHROMOBJ = patchrom.o
C128PATCHROMOBJ = patch128.o
VIC20PATCHROMOBJ =
#endif


#ifdef HACK
OPOBJ = cpu.o ophack.o tablehack.o 
#else
#ifdef HACK2
OPOBJ = ophack2.o table.o op.o
128OPOBJ = 128ophack2.o table.o op.o
#else
OPOBJ = cpu.o op.o table.o
#endif
#endif

SIDOBJ = sid.o
SNDOBJ = sndif.o

XCOMM ----------------------------------------------------------------------
XCOMM  Zilog Z80B CPU
XCOMM ----------------------------------------------------------------------


ZILOGDIR = z80
ZILOGHDR = Z80.h Codes.h CodesCB.h CodesED.h CodesXCB.h CodesXX.h Lame.h PTable.h
ZILOGSRC = Z80.c Debug.c Interrupt.c

ZILOG_CPU_OBJ = $(ZILOGDIR)/Z80.o $(ZILOGDIR)/Debug.o

#ifdef HAS_ZILOG_Z80
ZILOGOBJ = $(ZILOG_CPU_OBJ) 128asm.o zasm.o
#else
ZILOGOBJ = asm.o
#endif


XCOMM ----------------------------------------------------------------------
XCOMM  Emulators
XCOMM ----------------------------------------------------------------------

ICONS = c128_icon.xpm c64_icon.xpm pet_icon.xpm vic_icon.xpm

HDRS = asm.h atari.h c1541.h charsets.h cia.h cia1.h cia2.h config.h \
	cpm.h cpu.h crtc.h drive.h extern.h file.h fs_cbm.h fs_unix.h \
	interrupt.h macro.h memory.h misc.h mnemonic.h mshell.h op.h ophack.h \
	parallel.h patchlevel.h popup.h printer.h proto.h raster.h \
	rasterutil.h \
	serial.h sprcoll.h tape.h tpi.h types.h vdc.h via.h via.h vic.h \
	vicii.h video_x.h vmachine.h x64.h sid.h sndif.h sound.h tapeunit.h

CSRCS = args.c asm.c c1541.c char_C128.c char_C64.c char_PET.c char_VIC20.c \
	charsets.c cia1.c cia2.c cpu.c crtc.c drive.c filesel.c interrupt.c \
	joystick.c lock.c main.c memory.c misc.c mon.c mshell.c op.c ophack.c \
	ophack2.c parallel.c patch128.c patchrom.c pchar.c petcat.c petlp.c \
	pia.c printer.c raster.c rasterutil.c reu.c serial.c sprcoll.c \
	symbol.c table.c tablehack.c tape.c tapeunit.c timer.c tpi.c traps.c \
	vdc.c via.c via1.c via2.c vic.c vicii.c video_x.c x64.c \
	xcontrol.c xdebug.c zasm.c sid.c sndif.c

OBJS = $(READLINE) asm.o mon.o mshell.o char_C64.o main.o misc.o charsets.o \
	$(OPOBJ) interrupt.o timer.o memory.o cia1.o cia2.o filesel.o \
	traps.o serial.o drive.o tape.o printer.o rasterutil.o $(REUOBJ) \
	$(PATCHROMOBJ) $(XDEBUGOBJ) $(ARGPARSEOBJ) $(VIDEOOBJS) $(JOYOBJ) \
	$(IEEEOBJ) $(SIDOBJ) $(SNDOBJ) $(TAPEOBJ) $(READLINE)

C128OBJS =  $(READLINE) 128mon.o mshell.o char_C128.o 128main.o 128misc.o charsets.o \
	$(128OPOBJ) 128interrupt.o timer.o 128memory.o 128cia1.o cia2.o \
	filesel.o traps.o 128serial.o drive.o tape.o printer.o 128rasterutil.o \
	$(128REUOBJ) $(C128PATCHROMOBJ) $(C128XDEBUGOBJ) $(C128ARGPARSEOBJ) \
	$(C128VIDEOOBJS) $(VDCOBJ) $(JOYOBJ) $(ZILOGOBJ) $(SIDOBJ) $(SNDOBJ) \
	$(C128TAPEOBJ) $(READLINE)

VIC20OBJS = $(READLINE) asm.o VICmon.o mshell.o char_VIC20.o VICmain.o misc.o charsets.o \
        filesel.o $(OPOBJ) VICinterrupt.o timer.o VICmemory.o via1.o via2.o \
	traps.o VICserial.o drive.o tape.o printer.o VICrasterutil.o \
	$(VIC20PATCHROMOBJ) $(VIC20XDEBUGOBJ) $(VIC20ARGPARSEOBJ) \
	$(VIC20VIDEOOBJS) $(SNDOBJ) $(VIC20TAPEOBJ) $(READLINE)

PETOBJS = $(READLINE) asm.o PETmon.o mshell.o char_PET.o PETmain.o misc.o charsets.o \
	$(OPOBJ) PETinterrupt.o timer.o PETmemory.o pia.o via.o \
	traps.o PETserial.o drive.o tape.o printer.o PETrasterutil.o \
	parallel.o filesel.o \
	$(PETXDEBUGOBJ) $(PETARGPARSEOBJ) $(PETVIDEOOBJS) $(SNDOBJ) $(PETTAPEOBJ) \



XCOMM  Tools
XCOMM  ----------------------------------------------------------------------


C1541SRCS = c1541.c
C1541HDRS = asm.h charsets.h config.h drive.h extern.h \
	file.h fs_cbm.h fs_unix.h mshell.h patchlevel.h \
	proto.h serial.h types.h vmachine.h $(SNDOBJ)

C1541OBJS = c1541.o stddrive.o tape.o  mshell.o charsets.o


XCOMM  ----------------------------------------------------------------------
XCOMM  Petcat


BHDRS = drive.h file.h types.h
BSRCS = petcat.c
BOBJS = petcat.o tape.o


PRNHDRS = charsets.h config.h patchlevel.h printer.h proto.h serial.h types.h
PRNSRCS = petlp.c pchar.c
PRNOBJS = stdprinter.o charsets.o petlp.o pchar.o


PETRELEASE = $(BTARGET)-PETCATVERSION
PETCATFILES = $(BSRCS) $(PRNSRCS) printer.c charsets.c tape.c $(BHDRS) \
	$(PRNHDRS) Makefile.petcat petcat.man $(MDIR)/petcat.cat \
	$(DDIR)/cbm_basic_tokens



XCOMM  ----------------------------------------------------------------------
XCOMM  Collect files


SRCS = $(ICONS) $(CSRCS) $(C1541SRCS) $(PRNSRCS) $(BSRCS) readline $(ZILOGDIR)


MANPAGES = $(MDIR)/x64.man $(MDIR)/petcat.man $(MDIR)/petlp.man $(DDIR)/recomment.doc
CATPAGES = $(MDIR)/x64.cat $(MDIR)/petcat.cat $(MDIR)/petlp.cat

DOCUMENTS= $(DDIR)/64doc $(DDIR)/PETdoc $(DDIR)/Emulation \
	$(DDIR)/pal.timing $(DDIR)/mnemonics $(DDIR)/cbm_basic_tokens \
	$(DDIR)/drive_info $(DDIR)/serial.doc  $(DDIR)/x1541.txt \
	$(DDIR)/Star.codes $(DDIR)/DIN_charset $(DDIR)/Toollist \
	$(DDIR)/FAQ

VICEDOCS = $(VDIR)/COPYING $(VDIR)/CHANGES $(VDIR)/README $(VDIR)/README.video \
	$(VDIR)/BUGS $(MANPAGES) $(CATPAGES) \
	$(DDIR)/History $(DDIR)/Evaluation 


XCOMM  ----------------------------------------------------------------------
XCOMM  Divide files in mainlevel and sources categories

DISTSRCS = Makefile Imakefile Makefile.petcat \
	$(SRCS) $(HDRS) $(VICEDOCS) $(UTILS) convop setup

DISTMAIN = $(DOCUMENTS)
ALLFILES = $(DISTMAIN) $(DISTSRCS)

MAINTFILES = $(ALLFILES) $(VDIR)/TODO2 symbol.c lock.c AtariST samples x65 RCS


###

XCOMM  You may have to move the all target line after program targets

AllTarget($(SUBDIRS) $(VICEBIN) $(TARGET) $(TARGET2) $(TARGET3) $(TARGET4) \
	$(BTARGET) $(C1541TARGET) $(ZDISTARGET) $(ROMDIRS) $(IMAGES))

NormalProgramTarget($(TARGET),$(OBJS),/**/,$(LOCAL_LIBRARIES),/**/)

NormalProgramTarget($(TARGET2),$(C128OBJS),/**/,$(LOCAL_LIBRARIES),/**/)

NormalProgramTarget($(TARGET3),$(VIC20OBJS),/**/,$(LOCAL_LIBRARIES),/**/)

NormalProgramTarget($(TARGET4),$(PETOBJS),/**/,$(LOCAL_LIBRARIES),/**/)


NormalProgramTarget($(BTARGET),$(BOBJS),/**/,$(LOCAL_LIBRARIES),/**/)

NormalProgramTarget($(C1541TARGET),$(C1541OBJS),/**/,$(LOCAL_LIBRARIES),/**/)

NormalProgramTarget($(PRNTARGET),$(PRNOBJS),/**/,$(LOCAL_LIBRARIES),/**/)

DependTarget()

###

/*
InitSubdirs($(SUBDIRS))
IncludesSubdirs($(SUBDIRS))
MakeSubdirs($(SUBDIRS))
 
InstallSubdirs($(SUBDIRS))
CleanSubdirs($(SUBDIRS))
*/


# InstallAppDefaults(Xzx)
# InstallNonExec(rom,$(LIBDIR))


install::
	$(INSTALL) -m 755 $(TARGET)  $(BINDIR)
	$(INSTALL) -m 755 $(TARGET2) $(BINDIR)
	$(INSTALL) -m 755 $(TARGET3) $(BINDIR)
	$(INSTALL) -m 755 $(TARGET4) $(BINDIR)

	$(INSTALL) -m 755 $(BTARGET) $(BINDIR)
	$(INSTALL) -m 755 $(PRNTARGET) $(BINDIR)
	$(INSTALL) -m 755 $(C1541TARGET) $(BINDIR)

	$(INSTALL) -m 644 x64.1 $(MANDIR)/man1
	$(INSTALL) -m 644 petcat.1 $(MANDIR)/man1


#all:: $(SUBDIRS) $(VICEBIN) $(TARGET) $(TARGET2) $(BTARGET) $(C1541TARGET) \
#	$(PRNTARGET) $(ZDISTARGET) $(ROMDIRS) $(IMAGES)
# FIXME

work:: $(SUBDIRS) $(VICEBIN) $(TARGET) $(TARGET2) $(BTARGET) $(C1541TARGET) \
	$(PRNTARGET) $(ZDISTARGET) $(ROMDIRS)

tools:: $(VICEBIN) $(C1541TARGET) $(BTARGET) $(PRNTARGET) $(ZDISTARGET)


XCOMM  Warning: undefining VICEBIN may cause infinite loop -- in that case
XCOMM  remove these aliases...


x64: $(TARGET) $(VICEBIN)
	rm -f x64; ln -s $(TARGET) x64

x128: $(TARGET2) $(VICEBIN) $(READLINE)
	rm -f x128; ln -s $(TARGET2) x128

xvic: $(TARGET3) $(VICEBIN) $(READLINE)
	rm -f xvic; ln -s $(TARGET3) xvic

xpet: $(TARGET4) $(VICEBIN) $(READLINE)
	rm -f xpet; ln -s $(TARGET4) xpet

c1541: $(C1541TARGET) $(VICEBIN) $(READLINE)
	rm -f c1541; ln -s $(C1541TARGET) c1541

zdis: $(ZDISTARGET) $(VICEBIN)
	rm -f zdis; ln -s $(ZDISTARGET) zdis

petcat: $(BTARGET) $(VICEBIN)
	rm -f petcat; ln -s $(BTARGET) petcat

petlp: $(PRNTARGET) $(VICEBIN)
	rm -f petlp; ln -s $(PRNTARGET) petlp

$(VICEBIN):
	mkdir $(VICEBIN)

../bin/C128:
	mkdir ../bin/C128

../bin/C64:
	mkdir ../bin/C64

../bin/VIC20:
	mkdir ../bin/VIC20

../bin/PET:
	mkdir ../bin/PET

$(READLINE):
	(cd readline; make)


XCOMM ----------------------------------------------------------------------
XCOMM C128

128main.o: main.c
	$(CC) -o 128main.o -c $(CFLAGS) -DC128 main.c

128mon.o: mon.c
	$(CC) -o 128mon.o -c $(CFLAGS) -DC128 mon.c

128asm.o: asm.c
	$(CC) -o 128asm.o -c $(CFLAGS) -DC128 -DZILOG_CPU asm.c

128args.o: args.c
	$(CC) -o 128args.o -c $(CFLAGS) -DC128 args.c

128xdebug.o: xdebug.c
	$(CC) -o 128xdebug.o -c $(CFLAGS) -DC128 xdebug.c

128interrupt.o: interrupt.c
	$(CC) -o 128interrupt.o -c $(CFLAGS) -DC128 interrupt.c

128cia1.o: cia1.c
	$(CC) -o 128cia1.o -c $(CFLAGS) -DC128 cia1.c

128memory.o: memory.c
	$(CC) -o 128memory.o -c $(CFLAGS) -DC128 memory.c

128serial.o: serial.c
	$(CC) -o 128serial.o -c $(CFLAGS) -DC128 serial.c

128tapeunit.o: tapeunit.c
	$(CC) -o 128tapeunit.o -c $(CFLAGS) -DC128 tapeunit.c

128vicii.o: vicii.c raster.c raster.h
	$(CC) -o 128vicii.o -c $(CFLAGS) -DVIC -DC128 vicii.c

128vdc.o: vdc.c raster.c raster.h
	$(CC) -o 128vdc.o -c $(CFLAGS) -DVDC -DC128 vdc.c

128rasterutil.o: rasterutil.c
	$(CC) -o 128rasterutil.o -c $(CFLAGS) -DVDC -DC128 rasterutil.c

128ophack2.o: ophack2.c
	$(CC) -o 128ophack2.o -c $(CFLAGS) -DVDC -DC128 ophack2.c

128reu.o: reu.c
	$(CC) -o 128reu.o -c $(CFLAGS) -DVDC -DC128 reu.c

128misc.o: misc.c
	$(CC) -o 128misc.o -c $(CFLAGS) -DVDC -DC128 misc.c

x128.o: x64.c
	$(CC) -o x128.o -c $(CFLAGS) -DC128 x64.c

XCOMM ----------------------------------------------------------------------
XCOMM VIC 20

VICmain.o: main.c
	$(CC) -o VICmain.o -c $(CFLAGS) -DVIC20 main.c

VICmon.o: mon.c
	$(CC) -o VICmon.o -c $(CFLAGS) -DVIC20 mon.c

VICargs.o: args.c
	$(CC) -o VICargs.o -c $(CFLAGS) -DVIC20 args.c

VICxdebug.o: xdebug.c
	$(CC) -o VICxdebug.o -c $(CFLAGS) -DVIC20 xdebug.c

VICinterrupt.o: interrupt.c
	$(CC) -o VICinterrupt.o -c $(CFLAGS) -DVIC20 interrupt.c

VICmemory.o: memory.c
	$(CC) -o VICmemory.o -c $(CFLAGS) -DVIC20 memory.c

VICserial.o: serial.c
	$(CC) -o VICserial.o -c $(CFLAGS) -DVIC20 serial.c

VICtapeunit.o: tapeunit.c
	$(CC) -o VICtapeunit.o -c $(CFLAGS) -DVIC20 tapeunit.c

VICraster.o: raster.c
	$(CC) -o VICraster.o -c $(CFLAGS) -DVIC20 raster.c 

VICrasterutil.o: rasterutil.c
	$(CC) -o VICrasterutil.o -c $(CFLAGS) -DVIC20 rasterutil.c

xVIC.o: x64.c
	$(CC) -o xVIC.o -c $(CFLAGS) -DVIC20 x64.c

XCOMM ----------------------------------------------------------------------
XCOMM PET 3032/4032/8032

PETmain.o: main.c
	$(CC) -o PETmain.o -c $(CFLAGS) -DPET main.c

PETmon.o: mon.c
	$(CC) -o PETmon.o -c $(CFLAGS) -DPET mon.c

PETargs.o: args.c
	$(CC) -o PETargs.o -c $(CFLAGS) -DPET args.c

PETxdebug.o: xdebug.c
	$(CC) -o PETxdebug.o -c $(CFLAGS) -DPET xdebug.c

PETinterrupt.o: interrupt.c
	$(CC) -o PETinterrupt.o -c $(CFLAGS) -DPET interrupt.c

PETmemory.o: memory.c
	$(CC) -o PETmemory.o -c $(CFLAGS) -DPET memory.c

PETserial.o: serial.c
	$(CC) -o PETserial.o -c $(CFLAGS) -DPET serial.c

PETtapeunit.o: tapeunit.c
	$(CC) -o PETtapeunit.o -c $(CFLAGS) -DPET tapeunit.c

XCOMM PETraster.o: raster.c
XCOMM	$(CC) -o PETraster.o -c $(CFLAGS) -DPET raster.c

PETrasterutil.o: rasterutil.c
	$(CC) -o PETrasterutil.o -c $(CFLAGS) -DPET rasterutil.c

xPET.o: x64.c
	$(CC) -o xPET.o -c $(CFLAGS) -DPET x64.c

###

xPET8.o: x64.c
	$(CC) -o xPET8.o -c $(CFLAGS) -DPET -DPET8 x64.c

PET8crtc.o: crtc.c
	$(CC) -o PET8crtc.o -c $(CFLAGS) -DPET -DPET8 crtc.c

###

#via1.o: cia2.c
#	$(CC) -o via1.o -c $(CFLAGS) -DVIA6522 -DVIC20 cia2.c
#
#via2.o: cia1.c
#	$(CC) -o via2.o -c $(CFLAGS) -DVIA6522 -DVIC20 cia1.c

via.o: via.c
	$(CC) -o via.o -c $(CFLAGS) -DVIA6522 -DPET via.c

###

x64.1: x64.man
	cp x64.man x64.1

petcat.1: petcat.man
	cp petcat.man petcat.1

stddrive.o: drive.c
	$(CC) -c $(CFLAGS) -DSTANDALONE_1541 -o stddrive.o drive.c

stdprinter.o: printer.c
	$(CC) -c $(CFLAGS) -DSTANDALONE_PRINTER -o stdprinter.o printer.c

###

$(ZDISTARGET): zasm.c
	$(CC) $(CFLAGS) $(ZDIS_FLGS) -o $(ZDISTARGET) zasm.c $(LDFLAGS)

###

.DONE :
	@echo "Hurrah!"

.FAILED :
	@echo "Bummer!"

#if 0
.hack_stamp: op.c op.h table.c convop
	./convop 
	touch .hack_stamp

ophack.c: .hack_stamp
ophack2.c: .hack_stamp
#endif

###

$(MDIR)/x64.cat: $(MDIR)/x64.man
	nroff -man $(MDIR)/x64.man | col -b   > $(MDIR)/x64.cat

$(MDIR)/petcat.cat: $(MDIR)/petcat.man
	nroff -man $(MDIR)/petcat.man | col -b > $(MDIR)/petcat.cat

$(MDIR)/petlp.cat: $(MDIR)/petlp.man
	nroff -man $(MDIR)/petlp.man | col -b > $(MDIR)/petlp.cat

###

EXCLUDETAR = .exclude_files


maint: $(MAINTFILES)
	rm -f *\/*~ *\/*.o *\/*.a *\/*.bak
	rm -rf /tmp/$(NEW)
	mkdir /tmp/$(NEW)
	mkdir /tmp/$(NEW)/src
	mkdir /tmp/$(NEW)/bin
	tar -chf - $(MAINTFILES) | (cd /tmp/$(NEW)/src; tar -xf -)
	(cd /tmp; tar -cvf $(NEW).tar $(NEW))
	mv /tmp/$(NEW).tar .
	rm -rf /tmp/$(NEW)
	gzip $(NEW).tar


distall: dist docs petdist bindist


dist: $(ALLFILES)
	cd readline; make clean; cd ..
	rm -f *\/*~ *\/*.o *\/*.a *\/*.bak
	rm -rf /tmp/$(RELEASE)
	mkdir /tmp/$(RELEASE)
	mkdir /tmp/$(RELEASE)/src
	mkdir /tmp/$(RELEASE)/bin
	(tar -chf - $(DISTMAIN)) | (cd /tmp/$(RELEASE)/src; tar -xf -)
	tar -chf - $(DISTSRCS) | (cd /tmp/$(RELEASE)/src; tar -xf -)
	(cd /tmp; tar -cvf $(RELEASE).tar $(RELEASE))
	mv /tmp/$(RELEASE).tar .
	rm -rf /tmp/$(RELEASE)
	gzip $(RELEASE).tar


docs: $(DOCUMENTS)
	rm -rf /tmp/$(DOCRELEASE)
	mkdir /tmp/$(DOCRELEASE)
	tar -chf - $(DOCUMENTS) | (cd /tmp/$(DOCRELEASE); tar -xf -)
	(cd /tmp; tar -cvf $(DOCRELEASE).tar $(DOCRELEASE))
	mv /tmp/$(DOCRELEASE).tar .
	rm -rf /tmp/$(DOCRELEASE)
	gzip $(DOCRELEASE).tar


petdist: $(PETCATFILES)
	rm -rf /tmp/$(PETRELEASE)
	mkdir /tmp/$(PETRELEASE)
	mkdir /tmp/$(PETRELEASE)/src
	mkdir /tmp/$(PETRELEASE)/bin
	tar -chf - $(PETCATFILES) | (cd /tmp/$(PETRELEASE); tar -xf -)
	tar -chf - $(PETCATSRCS) | (cd /tmp/$(PETRELEASE)/src; tar -xf -)
	(cd /tmp; tar -cvf $(PETRELEASE).tar $(PETRELEASE))
	mv /tmp/$(PETRELEASE).tar .
	rm -rf /tmp/$(PETRELEASE)
	gzip $(PETRELEASE).tar

bindist: $(BINTARGET) $(DOCUMENTS) $(VICEDOCS)
	rm -rf /tmp/$(BINRELEASE)
	mkdir /tmp/$(BINRELEASE)
	mkdir /tmp/$(BINRELEASE)/bin
	tar -chf - $(DOCUMENTS) | (cd /tmp/$(BINRELEASE)/bin; tar -xf -)
	tar -chf - $(VICEDOCS) | (cd /tmp/$(BINRELEASE)/bin; tar -xf -)
	cp $(BINTARGET) /tmp/$(BINRELEASE)/bin
	(cd /tmp; tar cvf $(BINRELEASE).tar $(BINRELEASE))
	mv /tmp/$(BINRELEASE).tar .
	rm -rf /tmp/$(BINRELEASE)
	gzip $(BINRELEASE).tar

###

proto:
	cextract +p $(EXTRA_INCLUDES) $(DEFINES) -D__STDC__ $(CSRCS) >proto.h

XCOMM ### INDENT

indent: $(SRCS) $(BSRCS)
	for a in $(SRCS) $(HDRS);do \
	indent $$a -bacc -br -bs -cdb -ce -cli0.5 -c16 -d0 -di8 \
		-nfc1 -i4 -nlp -psc -npsl -sc;\
	done

###
