#
# JOYCE for Unix: Makefile
#
# SDL is used to provide the framebuffer and keyboard.
#
# GTK+ is used to provide the File Selector widget. 
#
#############################################################################
#
# Linking with SDL. NB: I'm using the dynamic version.
#
SDL_DEFS   = -DUSE_SDL #-D_SDL_STATIC_LIB

# SDL flags for SDL 0.8.10. You may not need the -lXxf86dga -lXxf86vm entries;
# if so, just put a # before them.
#
#SDL_CFLAGS = -I/usr/local/include/SDL
#SDL_LFLAGS = -lSDL -ldl -lX11 -lXext -lXxf86dga -lXxf86vm 

# SDL flags for SDL 0.10.0 and later. You may not need the -lXxf86dga -lXxf86vm
# entries; if so, just put a # before them.
#
SDL_CFLAGS = -I/usr/local/include/SDL
SDL_LFLAGS = -lSDL -lpthread -ldl -lX11 -lXext -lXxf86dga -lXxf86vm 

#
# Linking with GTK+.
#
GTK_DEFS   = -DUSE_GTK
GTK_CFLAGS = `gtk-config --cflags`
GTK_LFLAGS = `gtk-config --libs`
#
# Preprocessor definitions, general optimisation etc.
#
DEFS	   = -DDEBUG -DUNIX -DLINUX -DLSB_FIRST $(SDL_DEFS) $(GTK_DEFS)
CC         = gcc
CFLAGS   = $(DEFS) -Wall $(SDL_CFLAGS) $(GTK_CFLAGS) -O2 #-g
LFLAGS   = -L. -lcpmredir $(SDL_LFLAGS) $(GTK_LFLAGS)

#
# The grouping of these objects is:
#
# SDL-dependent (2 lines)
# Unix-dependent (1 line)
# GTK-dependent (1 line)
# JOYCE (2 lines)
# Z80 emulation (1 line)
#

OBJECTS = JoyceSdlScr.o JoyceSdlKbd.o JoyceSdlMnu.o JoyceSdlGfx.o \
          JoyceSdlMouse.o JoyceSdlLogo.o sdldummy.o \
	  JoycecomUnix.o JoyceUnix.o \
	  JoyceGtk.o     \
          Joyce.o Joycemem.o Joycefdc.o Joyceset.o Joycefid.o Joycedsk.unix.o \
          Joycemnt.o Joyceptr.o Joycedos.o Joycevga.o Joycefil.o \
          Z80.o Debug.o

SOURCE  = JoyceSdlScr.c JoyceSdlKbd.c JoyceSdlMnu.c JoyceSdlGfx.c \
	  JoyceSdlMouse.c JoyceSdlLogo.c sdldummy.c \
	  JoycecomUnix.c JoyceUnix.c \
	  JoyceGtk.c \
	  Joyce.c Joycemem.c Joycefdc.c Joyceset.c Joycefid.c Joycedsk.unix.c \
	  Joycemnt.c Joyceptr.c Joycedos.c Joycevga.c Joycefil.c \
	  Z80.c Debug.c \
          pcwkey.xbm dskfile.xbm mask.xbm \
          hatches.xbm file.xbm  fixdsk.xbm floppy.xbm folder.xbm \
          bw.xbm     halftone.xbm up.xbm Makefile \
	  Codes.h  CodesCB.h CodesED.h CodesXCB.h CodesXX.h \
	  Joyce.h  Joyceapp.h Joycecpu.h Joycedos.h Joycedsk.h Joycefid.h \
	  Joycelgo.h Joycemou.h Joyceptr.h Joyceset.h Joycevga.h Tables.h \
	  Joyceunx.h JoyceSdl.h  JoyceSdl.h \
          Z80.h ay8910.h inline.h keyboard.h \
	  cpmredir/cpmredir.c cpmredir/cpmparse.c cpmredir/cpmdrv.c \
	  cpmredir/cpmglob.c cpmredir/xlt.c cpmredir/util.c cpmredir/drdos.c \
	  cpmredir/Makefile cpmredir/Makefile.dj2 cpmredir/Z80/* \
	  cpmredir/README cpmredir/COPYING.LIB cpmredir/sample.c \
          cpmredir/cpmredir.h cpmredir/cpmint.h \
	  font8x16.inc
	 
DOCS =    file_id.diz edops.txt comapi.doc change.log joyce.doc redir.doc

MISC =    pcw.bmp boot/bootfile.emj disks/utils.dsk SDLdiffs \
          pcwtrans.c pcwtrans.exe md3trans.c md3trans.exe dosbios.h

all:	xjoyce

libcpmredir.a:	cpmredir/libcpmredir.a
	cp cpmredir/libcpmredir.a .

cpmredir/libcpmredir.a:
	cd cpmredir; make libcpmredir.a

cpmredir.h:	cpmredir/cpmredir.h
	cp cpmredir/cpmredir.h .

xjoyce:	$(OBJECTS) libcpmredir.a
	$(CC) -o xjoyce $(OBJECTS) $(LFLAGS)

install:	xjoyce
	install -m 755 -d /usr/local/bin
	install -m 755 -d /usr/local/lib/joyce
	install -m 755 -d /usr/local/lib/joyce/boot
	install -m 755 -d /usr/local/lib/joyce/disks
	install -m 755 xjoyce /usr/local/bin/xjoyce
	install -m 644 boot/bootfile.emj /usr/local/lib/joyce/boot/bootfile.emj
	install -m 644 disks/utils.dsk   /usr/local/lib/joyce/disks/utils.dsk
	install -m 644 pcw.bmp           /usr/local/lib/joyce/pcw.bmp

%.o: %.c
	$(CC) $(CFLAGS) -c $< -o $@

clean:	tidy
	cd cpmredir; make clean
	rm xjoyce libcpmredir.a cpmredir.h

tidy:	
	cd cpmredir; make tidy
	rm -f *.o *~ 

tar:	$(SOURCE) $(DOCS) $(MISC)
	tar zchvf joyce.tar.gz $(SOURCE) $(DOCS) $(MISC)


Debug.o:		Debug.c Joyce.h Joyceunx.h JoyceSdl.h keyboard.h \
			inline.h
Joyce.o:		Joyce.c Joyce.h Joyceunx.h JoyceSdl.h Joycefid.h \
			Joyceptr.h Joyceset.h Joycedos.h Joycemou.h \
			Joycelgo.h Joycedsk.h ay8910.h inline.h
JoyceGtk.o:		JoyceGtk.c Joyce.h Joyceunx.h JoyceSdl.h 
JoyceSdlGfx.o:		JoyceSdlGfx.c Joyce.h Joyceunx.h JoyceSdl.h  \
			Joycevga.h
JoyceSdlKbd.o:		JoyceSdlKbd.c Joyce.h Joyceunx.h JoyceSdl.h 
JoyceSdlMnu.o:		JoyceSdlMnu.c Joyce.h Joyceunx.h JoyceSdl.h  \
			Joycevga.h Joyceset.h keyboard.h inline.h pcwkey.xbm
JoyceSdlMouse.o:	JoyceSdlMouse.c Joyce.h Joyceunx.h JoyceSdl.h  \
			Joycemou.h inline.h
JoyceSdlScr.o:		JoyceSdlScr.c Joyce.h Joyceunx.h JoyceSdl.h  Joycevga.h mask.xbm
JoyceSel.o:		Joyce.h Joyceunx.h JoyceSdl.h  Joycevga.h keyboard.h \
			inline.h file.xbm folder.xbm floppy.xbm fixdsk.xbm \
			dskfile.xbm up.xbm
JoyceUnix.o:		JoyceUnix.c Joyce.h Joyceunx.h JoyceSdl.h  Joycevga.h \
			Joycemou.h keyboard.h
JoycecomUnix.o:		JoycecomUnix.c Joyce.h Joyceunx.h JoyceSdl.h inline.h
Joycedos.o:		Joycedos.c Joyce.h Joyceunx.h JoyceSdl.h Joycedos.h \
			inline.h
Joycedsk.o:		Joycedsk.c Joyce.h Joyceunx.h JoyceSdl.h Joycedsk.h \
			inline.h
Joycedsk.unix.o: 	Joycedsk.unix.c Joyce.h Joyceunx.h JoyceSdl.h  \
			Joycedsk.h inline.h
Joycefdc.o:		Joycefdc.c Joyce.h Joyceunx.h JoyceSdl.h 
Joycefid.o:		Joycefid.c Joyce.h Joyceunx.h JoyceSdl.h  Joycefid.h \
			Joycevga.h Joycedsk.h inline.h
Joycemem.o:		Joycemem.c Joyce.h Joyceunx.h JoyceSdl.h  
Joycemnt.o:		Joycemnt.c cpmredir.h Joyce.h Joyceunx.h JoyceSdl.h 
Joyceptr.o:		Joyceptr.c Joyce.h Joyceunx.h JoyceSdl.h  Joyceptr.h
Joyceset.o:		Joyceset.c Joyce.h Joyceunx.h JoyceSdl.h  Joyceset.h
Joycevga.o:		Joycevga.c Joyce.h Joyceunx.h JoyceSdl.h  Joycevga.h
Z80.o:			Z80.c Z80.h Tables.h inline.h CodesCB.h CodesXCB.h \
			CodesED.h CodesXX.h Codes.h
ay8910.o:		ay8910.c Joyce.h Joyceunx.h JoyceSdl.h  ay8910.h
sdldummy.o:		sdldummy.c Joyce.h Joyceunx.h JoyceSdl.h Joycevga.h \
			Joycemou.h keyboard.h
sdlport.o:		sdlport.c Joyce.h Joyceunx.h JoyceSdl.h 
