# Makefile para aliados

# Path to ncurses required in hp-ux.
CPPFLAGS=-W -Wall -I/opt/ncurses/include

# To compile with console emulation using curses.
LDFLAGS=-lncurses -L/opt/ncurses/lib

# To compile without console emulation.
#LDFLAGS=
#CURSESFLAGS=-DNO_CURSES

all: aliados disassemble

# If you want to build the versions with and without libz80 at the same time.

both: aliados aliadoslz disassemble

#------------------------------------------------
#	Version using libz80 library.
#------------------------------------------------

aliadoslz: aliadoslz.o cpmlz.o realconsole.o cpuz.o directory.o
	g++ $(CPPFLAGS) $(LDFLAGS) -o aliadoslz -lz80 \
		aliadoslz.o cpmlz.o realconsole.o cpuz.o directory.o printer.o

aliadoslz.o: aliados.cpp cpm.h console.h realconsole.h printer.h
	g++ $(CPPFLAGS) -o aliadoslz.o -c aliados.cpp

cpmlz.o: cpm.cpp cpm.h cpu.h console.h directory.h printer.h
	g++ $(CPPFLAGS) -o cpmlz.o -c cpm.cpp

cpuz.o: cpu.cpp cpu.h
	g++ $(CPPFLAGS) -o cpuz.o -c cpu.cpp

#------------------------------------------------
#	Version using  ImcZ80.
#------------------------------------------------

# Linking with libz80 when using it for disassembly.

# Uncomment this if you compile with ImcZ80 and with libz80.
#aliados: aliados.o cpm.o Z80.o realconsole.o cpu.o
#	g++ $(CPPFLAGS) $(LDFLAGS) -o aliados \
#		aliados.o cpm.o realconsole.o Z80.o cpu.o \
#		directory.o printer.o \
#		-lz80

# Comment this if you compile with ImcZ80 and with libz80.
aliados: aliados.o cpm.o Z80.o realconsole.o cpu.o disasm.o \
		directory.o printer.o

	g++ $(CPPFLAGS) -o aliados \
		aliados.o cpm.o realconsole.o Z80.o cpu.o \
		disasm.o directory.o printer.o \
		$(LDFLAGS)

aliados.o: aliados.cpp cpm.h console.h realconsole.h printer.h
	g++ $(CPPFLAGS) -DUSE_ImcZ80 -c aliados.cpp

cpm.o: cpm.cpp cpm.h cpu.h console.h Z80.hxx directory.h printer.h
	g++ $(CPPFLAGS) -DUSE_ImcZ80 -c cpm.cpp

cpu.o: cpu.cpp cpu.h Z80.hxx disasm.h
	g++ $(CPPFLAGS) -DUSE_ImcZ80 -c cpu.cpp

Z80.o: Z80.cxx Z80.hxx z80ops.hxx cbops.hxx edops.hxx
	g++ -c Z80.cxx

#------------------------------------------------
#	Common to all versions.
#------------------------------------------------

realconsole.o: realconsole.cpp realconsole.h console.h
	g++ $(CPPFLAGS) $(CURSESFLAGS) -c realconsole.cpp

disasm.o: disasm.cpp disasm.h cpu.h
	g++ $(CPPFLAGS) -c disasm.cpp

directory.o: directory.cpp directory.h
	g++ $(CPPFLAGS) -c directory.cpp

printer.o: printer.cpp printer.h
	g++ $(CPPFLAGS) -c printer.cpp

# disassemble is a tiny disassembler that uses the disassemble code
# of the debugger. Works correctly only with .COM files.

disassemble.o: disassemble.cpp cpu.h disasm.h Z80.hxx
	g++ $(CPPFLAGS) -c disassemble.cpp

disassemble: disassemble.o cpu.o disasm.o Z80.o
	g++ $(CPPFLAGS) -o disassemble disassemble.o cpu.o disasm.o Z80.o

tgz:
	tar cf - Makefile *.cpp *.h *.cxx *.hxx \
		*.doc README NEWS \
		| gzip > aliados.tgz

# Fin.
