########################################################################
# AtariSIO V0.10a Makefile
# (c) 2002, 2003 by Matthias Reichl <hias@horus.com>
########################################################################


########################################################################
# location of your kernel header files
########################################################################

KERNEL_INCLUDES = /usr/src/linux/include
#KERNEL_INCLUDES = /usr/include
#KERNEL_INCLUDES = /data/hias/laptop/linux-2.2.19/include

########################################################################
# installation directory
# the executables will be installed in INST_DIR/bin, the kernel module
# atarisio.o will be installed in /lib/modules/KERNELVERSION/misc
########################################################################

INST_DIR = /usr/local
#INST_DIR = /usr/local/atarisio

VERSION = $(shell grep UTS_RELEASE $(KERNEL_INCLUDES)/linux/version.h | cut -d '"' -f2)
MDIR = /lib/modules/$(VERSION)/misc

########################################################################
# select the gcc version to use for compilation
########################################################################

CC = gcc
CXX = g++
#CC = gcc-3.0
#CXX = g++-3.0
#CC = /usr/local/gcc-3.2.2/bin/gcc
#CXX = /usr/local/gcc-3.2.2/bin/g++

########################################################################
# don't change anything below here
########################################################################

ZLIB_CXX_FLAGS=
ZLIB_LD_FLAGS=
#ZLIB_CXX_FLAGS=-DUSE_ZLIB
#ZLIB_LD_FLAGS=-lz

CXXFLAGS = -g -W -Wall -DATARI_DEBUG $(ZLIB_CXX_FLAGS)
CFLAGS = -g -W -Wall -DATARI_DEBUG 
MODFLAGS = -Wall -O2 -DMODULE -D__KERNEL__ -I$(KERNEL_INCLUDES)

LDFLAGS = 
LIBS = $(ZLIB_LD_FLAGS) -lreadline

#LDFLAGS = -static
#LIBS = $(ZLIB_LD_FLAGS) -lreadline -lhistory -lncurses

ATARIXFER_OBJS = atarixfer.o DiskImage.o AtrImage.o AtrMemoryImage.o SIOWrapper.o

ATARISERVER_OBJS = atariserver.o DiskManager.o DiskImage.o AtrImage.o AtrMemoryImage.o \
	SIOWrapper.o AbstractSIOHandler.o AtrSIOHandler.o SIOManager.o \
	SIOTracer.o

EXECUTABLES = atarisio.o atarixfer atariserver

all: $(EXECUTABLES)

atarixfer: $(ATARIXFER_OBJS)
	$(CXX) $(LDFLAGS) -o atarixfer $(ATARIXFER_OBJS) $(LIBS)

atariserver: $(ATARISERVER_OBJS)
	$(CXX) $(LDFLAGS) -o atariserver $(ATARISERVER_OBJS) $(LIBS)

atarisio.o: atarisio.c atarisio.h ${KERNEL_INCLUDES}/linux/version.h
	$(CC) $(MODFLAGS) -c atarisio.c

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

.C.o:
	$(CXX) $(CXXFLAGS) -c $<

clean:
	rm -f *.o $(EXECUTABLES)

backup:
	tar zcf bak/SIO-`date '+%y%m%d-%H%M'`.tgz *.c *.C *.h Makefile modutils* Changelog README* LICENSE

install: atarisio.o atariserver atarixfer /dev/atarisio
	if test ! -d $(MDIR) ; then mkdir -p $(MDIR) ; fi
	install -m 644 atarisio.o $(MDIR)/atarisio.o
	depmod -a
	if test ! -d $(INST_DIR)/bin ; then mkdir -p -m 755 $(INST_DIR)/bin ; fi
	install -o root -m 4755 atariserver $(INST_DIR)/bin/atariserver
	install -o root -m 755 atarixfer $(INST_DIR)/bin/atarixfer

/dev/atarisio:
	mknod -m 666 /dev/atarisio c 10 240

# dependency information

AbstractSIOHandler.o: AbstractSIOHandler.C AbstractSIOHandler.h \
	atarisio.h SIOWrapper.h 

AtrImage.o: AtrImage.C AtrImage.h DiskImage.h 

AtrMemoryImage.o: AtrMemoryImage.C AtrMemoryImage.h AtrImage.h \
	DiskImage.h AtariDebug.h

AtrSIOHandler.o: AtrSIOHandler.C AtrSIOHandler.h AbstractSIOHandler.h \
	atarisio.h SIOWrapper.h AtrImage.h DiskImage.h SIOTracer.h AtariDebug.h

DiskImage.o: DiskImage.C DiskImage.h 

DiskManager.o: DiskManager.C DiskManager.h SIOManager.h \
	AbstractSIOHandler.h atarisio.h SIOWrapper.h AtrImage.h \
	DiskImage.h AtrMemoryImage.h AtrSIOHandler.h SIOTracer.h \
	AtariDebug.h

SIOManager.o: SIOManager.C SIOManager.h AbstractSIOHandler.h \
	atarisio.h SIOWrapper.h AtariDebug.h SIOTracer.h

SIOTracer.o: SIOTracer.C SIOTracer.h atarisio.h \
	AbstractSIOHandler.h SIOWrapper.h \

SIOWrapper.o: SIOWrapper.C SIOWrapper.h atarisio.h AtariDebug.h

atariserver.o: atariserver.C AtrSIOHandler.h AbstractSIOHandler.h \
	atarisio.h SIOWrapper.h AtrImage.h DiskImage.h SIOTracer.h \
	AtrMemoryImage.h SIOManager.h DiskManager.h

atarixfer.o: atarixfer.C atarisio.h AtrMemoryImage.h AtrImage.h \
	DiskImage.h SIOWrapper.h

