# TI-99/4A src/core makefile for Linux

CC := g++
ASM := nasm
OBJS := cartridge.o compress.o device.o ti-disk.o ti994a.o tms9900.o tms9918a.o tms9919.o xgpl.o
CFLAGS := -g -O6 -fstrength-reduce -funroll-loops -malign-jumps=2 -march=pentiumpro -fno-exceptions -fno-rtti
WARNINGS := -Wall -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Winline
INCLUDES := -I../../include

.cpp.o:
	$(CC) -c $(CFLAGS) $(WARNINGS) $(INCLUDES) -o $@ $<

.asm.o:
	$(ASM) -f elf -o $@ $<

.SUFFIXES: .cpp .asm .o

all: SUBDIRS ti-core.o

depend: clean

clean:
	@make -C nasm clean
	@rm -Rf *~ *.o

SUBDIRS:
	@make -C nasm

ti-core.o: \
	nasm/_opcodes.o		\
	nasm/_tms9900.o		\
	cartridge.o		\
	compress.o		\
	device.o		\
	ti-disk.o		\
	ti994a.o		\
	tms9900.o		\
	tms9918a.o		\
	tms9919.o		\
	xgpl.o
	@$(LD) -r $^ -o $@

cartridge.o: \
	cartridge.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/compress.hpp	\
	../../include/cartridge.hpp

compress.o: \
	compress.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp

device.o: \
	device.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/cartridge.hpp	\
	../../include/device.hpp

opcodes.o: \
	opcodes.cpp

ti-disk.o: \
	ti-disk.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/cartridge.hpp	\
	../../include/tms9900.hpp	\
	../../include/device.hpp	\
	../../include/ti-disk.hpp

ti994a.o: \
	ti994a.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/compress.hpp	\
	../../include/tms9900.hpp	\
	../../include/tms9918a.hpp	\
	../../include/tms9919.hpp	\
	../../include/cartridge.hpp	\
	../../include/device.hpp	\
	../../include/ti994a.hpp

tms9900.o: \
	tms9900.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/opcodes.hpp	\
	../../include/tms9900.hpp

tms9918a.o: \
	tms9918a.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/compress.hpp	\
	../../include/tms9900.hpp	\
	../../include/tms9918a.hpp	\
	../../include/ti994a.hpp

tms9919.o: \
	tms9919.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/tms9919.hpp

xgpl.o: \
	xgpl.cpp			\
	../../include/common.hpp	\
	../../include/logger.hpp	\
	../../include/tms9900.hpp	\
	../../include/tms9918a.hpp	\
	../../include/ti994a.hpp

