# This file is part of XFellow
#
# Copyright 2000-2001 by Dan Sutherland <dan@dillinja.org>
# Based on a preliminary version by Petter Schau

# Optimization flags - you can change these, if you want

# Optimized build for i586
COPTS		= -O3 -march=pentium -mcpu=pentium -fomit-frame-pointer

# Debug build
#COPTS		= -g

# ----- YOU SHOULDN'T NEED TO MODIFY ANYTHING BELOW THIS LINE -----

VERSION			= '"XFellow v0.0.3"'

PROJECTDIR 		= $(shell pwd)

export AS		= nasm
export CC		= gcc
export CLIBS		= $(shell sdl-config --libs) $(shell gtk-config --libs)

OSDIR			= linux
ASMSRCDIR		= asm
CSRCDIR			= c
OSASMSRCDIR		= $(OSDIR)/asm
OSCSRCDIR		= $(OSDIR)/c
UAECSRCDIR		= $(OSDIR)/uae/c
UAEASMSRCDIR		= $(OSDIR)/uae/asm
XDMSCSRCDIR		= xdms/c
ZLIBCSRCDIR		= zlib/c
BINDIR			= bin
MISCCFLAGS		= $(shell glib-config --cflags)

export ASMINCDIR	= $(PROJECTDIR)/incasm/
export CINCDIR		= $(PROJECTDIR)/include
export OSASMINCDIR	= $(PROJECTDIR)/$(OSDIR)/incasm/
export OSCINCDIR	= $(PROJECTDIR)/$(OSDIR)/include
export UAECINCDIR	= $(PROJECTDIR)/$(OSDIR)/uae/include
export UAEASMINCDIR	= $(PROJECTDIR)/$(OSDIR)/uae/incasm/
export XDMSINCDIR	= $(PROJECTDIR)/xdms/include
export ZLIBINCDIR	= $(PROJECTDIR)/zlib/include

export XFELLOWDEFS	= -DXFELLOW -DXFELLOW_VERSION=$(VERSION)

export ASFLAGS	= -i $(ASMINCDIR) -i $(OSASMINCDIR) -i $(UAEASMINCDIR) -f elf
export CFLAGS	= $(COPTS) $(XFELLOWDEFS) -I$(CINCDIR) -I$(OSCINCDIR) \
		  -I$(UAECINCDIR) -I$(XDMSINCDIR) -I$(ZLIBINCDIR) $(MISCCFLAGS)

export COBJS	= blit.o bus.o cia.o config.o copper.o cpu.o cpudis.o draw.o \
		  fellow.o fhfile.o ffilesys.o floppy.o fmem.o fsnavig.o \
		  gameport.o graph.o kbd.o listtree.o sound.o sprite.o wav.o \
		  zlibwrap.o

export ASMOBJS	= cpua.o blita.o busa.o coppera.o drawa.o mmx.o \
                  fmema.o sounda.o spritea.o ciaa.o grapha.o fhfilea.o

export OSCOBJS	= gfxdrv.o kbddrv.o sounddrv.o mousedrv.o joydrv.o \
		  fswrap.o timer.o gui.o ini.o sysinfo.o \
		  fsysamnt.o kbdparser.o interface.o callbacks.o

export UAECOBJS	= autoconf.o expansio.o filesys.o fsusage.o hardfile.o \
		  uaesupp.o fsdb.o fsdb_linux.o

export UAEASMOBJS = uaesuppa.o

export XDMSCOBJS = crc_csum.o getbits.o maketbl.o pfile.o tables.o u_deep.o \
		   u_heavy.o u_init.o u_medium.o u_quick.o u_rle.o xdms.o

export ZLIBCOBJS = adler32.o compress.o crc32.o deflate.o gzio.o infblock.o \
		   infcodes.o inffast.o inflate.o inftrees.o infutil.o \
		   trees.o uncompr.o zutil.o

fellow: csources asmsources oscsources uaecsources uaeasmsources xdmscsources \
		zlibcsources
	cp $(CSRCDIR)/*.o $(BINDIR)
	cp $(ASMSRCDIR)/*.o $(BINDIR)
	cp $(OSCSRCDIR)/*.o $(BINDIR)
	cp $(UAECSRCDIR)/*.o $(BINDIR)
	cp $(UAEASMSRCDIR)/*.o $(BINDIR)
	cp $(XDMSCSRCDIR)/*.o $(BINDIR)
	cp $(ZLIBCSRCDIR)/*.o $(BINDIR)
	cd $(BINDIR) && $(CC) $(CLIBS) -o fellow $(COBJS) $(ASMOBJS) \
		$(OSCOBJS) $(UAECOBJS) $(UAEASMOBJS) $(XDMSCOBJS) $(ZLIBCOBJS)
	rm -f $(BINDIR)/*.o

csources:
	make -fmakefile.linux -w -C $(CSRCDIR)

asmsources:
	make -fmakefile.linux -w -C $(ASMSRCDIR)

oscsources:
	make -fmakefile.linux -w -C $(OSCSRCDIR)

uaecsources:
	make -fmakefile.linux -w -C $(UAECSRCDIR)

uaeasmsources:
	make -fmakefile.linux -w -C $(UAEASMSRCDIR)

xdmscsources:
	make -fmakefile.linux -w -C $(XDMSCSRCDIR)

zlibcsources:
	make -fmakefile.linux -w -C $(ZLIBCSRCDIR)

cclean:
	make -fmakefile.linux -w -C $(CSRCDIR) clean

asmclean:
	make -fmakefile.linux -w -C $(ASMSRCDIR) clean

oscclean:
	make -fmakefile.linux -w -C $(OSCSRCDIR) clean

uaecclean:
	make -fmakefile.linux -w -C $(UAECSRCDIR) clean

uaeasmclean:
	make -fmakefile.linux -w -C $(UAEASMSRCDIR) clean

xdmscclean:
	make -fmakefile.linux -w -C $(XDMSCSRCDIR) clean

zlibcclean:
	make -fmakefile.linux -w -C $(ZLIBCSRCDIR) clean

clean:	cclean asmclean oscclean uaecclean uaeasmclean xdmscclean zlibcclean
	rm -f $(BINDIR)/fellow
