# TI-99/sim src/core makefile for Linux

CC       := g++
OBJS     := cartridge.o compress.o device.o fileio.o ti-disk.o ti994a.o tms9900.o tms9918a.o tms9919.o
CFLAGS   := -g -O3 -fstrength-reduce -funroll-loops -malign-jumps=2 -march=$(ARCH) -fno-exceptions -fno-rtti
WARNINGS := -Wall -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Winline
INCLUDES := -I../../include
TARGETS  := ti-core.a

ifdef USE_ASM
OBJS     += nasm/_opcodes.o nasm/_tms9900.o
TARGETS  := SUBDIRS $(TARGETS)
else
OBJS     += opcodes.o
endif

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

.SUFFIXES: .cpp .o

all: $(TARGETS)

clean:
	$(MAKE) -C nasm clean
	rm -f *~ *.o *.a $(TARGETS)

SUBDIRS:
	$(MAKE) -C nasm

ti-core.a: $(OBJS)
	$(AR) rcs $@ $^

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

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

opcodes.o: \
	opcodes.cpp			\
	../../include/common.hpp	\
	../../include/tms9900.hpp	\
	../../include/opcodes.hpp
	$(CC) -c $(CFLAGS) $(WARNINGS) $(INCLUDES) -fomit-frame-pointer -fschedule-insns -o $@ $<

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

