#unzip
UNZIP_DIR=  ./unzip/
UNZIP_LIB=  $(UNZIP_DIR)unzip.a

DISASM_DIR = ./z80_disasm

# Uncomment these lines before builting with internal debugger.
#OPT_OBJS   = $(DISASM_DIR)/Z80Dasm.o \
#			SmsDebugger.o

OSM_OBJS =      main.o \
		./cpu/Z80.o \
		./cpu/Opc_cbxx.o \
		./cpu/Opc_dd.o \
		./cpu/Opc_ddcb.o \
		./cpu/Opc_ed.o \
		./cpu/Opc_fd.o \
		./cpu/Opc_fdcb.o \
		./cpu/Opc_std.o \
		OsmoseCore.o\
       	IOMapper.o \
		IOMapper_GG.o \
       	VDP.o \
		VDP_GG.o \
       	MemoryMapper.o \
       	SmsEnvironment.o \
       	SN76489.o \
       	WaveWriter.o \
		Options.o \
		OsmoseConfiguration.o \
		KeyConversion.o \
		TextWriter.o \
		PadInputDevice.o \
		PaddleInputDevice.o \
		JoystickInputDevice.o \
		FIFOSoundBuffer.o \
		DebugEventThrower.o \
		RomSpecificOption.o
		
OSM_EXE         =  osmose

# Compiler/Linker Flags
# add -O3 to CFLAGS for speedup -pg on LFLAGS and CFLAGS for gprof
CFLAGS =  -Wall -D__USE_UNIX98 -O3
LFLAGS =  -lSDL -lGL -lz
AFLAGS =  -f elf
CC  = g++

.SUFFIXES: .cpp .o
.cpp.o:
	$(CC) $(CFLAGS) -c $*.cpp -o $*.o

all:  libs disasm osmose stripexe

osmose: $(z80_lib) $(OSM_OBJS) $(OPT_OBJS)
	$(CC)  $(CFLAGS) $(OSM_OBJS) $(Z80_LIB) $(OPT_OBJS) $(UNZIP_LIB) $(Z_LIB) -o $(OSM_EXE) $(LFLAGS)

disasm: $(DISASM_OBJS)

stripexe:
	strip -s $(OSM_EXE)

clean:
	rm -f $(DISASM_DIR)/*.o
	rm -f ./cpu/*.o
	rm -f *.o core $(OSM_EXE)
	rm -f $(UNZIP_DIR)*.o $(UNZIP_DIR)*.a

# Clear all objects except ./cpu and zlib.
# This is done because compilation of CPU is long.
miniclean:
	rm -f *.o core $(OSM_EXE)

libs:
	cd $(UNZIP_DIR) && make unzip.a





