# File: Makefile

MAKEFILE = Makefile

VPATH = exec

CC = gcc -O2 -Wunused -ansi -pedantic -Iexec
#CC = cc
#CC = dcc -2.0


translator: $(MAKEFILE) translator.c source_program.o\
	memory.o segment.o reverse_graph.o machine.o address_set.o\
	address.o general.o bank.o string.o instruction.o\
	instruction_set.o cpu.o sequence.o set.o config.o\
	disassembled_program.o target_program.o
	$(CC) -DTEST general.o source_program.o memory.o segment.o bank.o\
	reverse_graph.o address_set.o address.o machine.o string.o\
	instruction.o instruction_set.o cpu.o sequence.o set.o config.o\
	disassembled_program.o target_program.o\
	translator.c -o ../../bin/translator


disassembler: $(MAKEFILE) disassembler.c source_program.o\
	memory.o segment.o reverse_graph.o machine.o address_set.o\
	address.o general.o bank.o string.o instruction.o\
	instruction_set.o cpu.o sequence.o set.o config.o\
	disassembled_program.o
	$(CC) -DTEST general.o source_program.o memory.o segment.o bank.o\
	reverse_graph.o address_set.o address.o machine.o string.o\
	instruction.o instruction_set.o cpu.o sequence.o set.o config.o\
	disassembled_program.o disassembler.c -o ../../bin/disassembler


memory: $(MAKEFILE) memory.h memory_protos.h memory.c
	$(CC) -DTEST memory.c -o memory

memory.o: $(MAKEFILE) memory.h memory_protos.h memory.c
	$(CC) -c memory.c -o memory.o


general: $(MAKEFILE) general_protos.h general.c memory.o
	$(CC) -DTEST general.c -o general

general.o: $(MAKEFILE) general_protos.h general.c memory.o
	$(CC) -c general.c -o general.o


source_program: $(MAKEFILE) source_program.h source_program_protos.h \
	source_program.c memory.o segment.o reverse_graph.o machine.o \
	address_set.o address.o general.o bank.o
	$(CC) -DTEST segment.o reverse_graph.o machine.o address_set.o \
	address.o general.o bank.osource_program.c -o source_program

source_program.o: $(MAKEFILE) source_program.h source_program_protos.h \
	source_program.c memory.o segment.o reverse_graph.o machine.o \
	address_set.o address.o general.o bank.o target_program.o
	$(CC) -c source_program.c -o source_program.o


segment: $(MAKEFILE) segment.h segment.c memory.o bank.o
	$(CC) -DTEST segment.c -o segment

segment.o: $(MAKEFILE) segment.h segment.c memory.o bank.o
	$(CC) -c segment.c -o segment.o


bank: $(MAKEFILE) bank.h bank.c config.o general.o
	$(CC) -DTEST bank.c -o bank

bank.o: $(MAKEFILE) bank.h bank.c config.o
	$(CC) -c bank.c -o bank.o


sequence: $(MAKEFILE) sequence.h sequence_protos.h sequence.c
	$(CC) -DTEST sequence.c -o sequence

sequence.o: $(MAKEFILE) sequence.h sequence_protos.h sequence.c memory.o
	$(CC) -c sequence.c -o sequence.o


string: $(MAKEFILE) string.h string_protos.h string.c
	$(CC) -DTEST string.c -o string

string.o: $(MAKEFILE) string.h string_protos.h string.c memory.o
	$(CC) -c string.c -o string.o


reverse_graph: $(MAKEFILE) reverse_graph.h reverse_graph.c address_set.o \
	address.o
	$(CC) -DTEST address_set.o address.o source_program.o set.o\
	reverse_graph.c -o reverse_graph

reverse_graph.o: $(MAKEFILE) reverse_graph.h reverse_graph.c address_set.o
	$(CC) -c reverse_graph.c -o reverse_graph.o


address_set: $(MAKEFILE) address_set.h address_set_protos.h address_set.c \
	address.o reverse_graph.o set.o
	$(CC) -DTEST address.o reverse_graph.o bank.o general.o \
	address_set.c -o address_set

address_set.o: $(MAKEFILE) address_set.h address_set_protos.h \
	address_set.c address.o reverse_graph.o set.o
	$(CC) -c address_set.c -o address_set.o


address: $(MAKEFILE) address.h address_protos.h address.c bank.o \
	address_set.o
	$(CC) -DTEST general.o bank.o address_set.o address.c -o address

address.o: $(MAKEFILE) address.h address_protos.h address.c bank.o \
	address_set.o
	$(CC) -c address.c -o address.o


machine: $(MAKEFILE) machine.h machine.c string.o instruction_set.o
	$(CC) -DTEST machine.c -o machine

machine.o: $(MAKEFILE) machine.h machine.c string.o instruction_set.o
	$(CC) -c machine.c -o machine.o


cpu: $(MAKEFILE) cpu.h cpu.c string.o instruction_set.o
	$(CC) -DTEST cpu.c -o cpu

cpu.o: $(MAKEFILE) cpu.h cpu.c string.o instruction_set.o
	$(CC) -c cpu.c -o cpu.o


instruction_set: $(MAKEFILE) instruction_set.h instruction_set_protos.h instruction_set.c \
	instruction.o reverse_graph.o
	$(CC) -DTEST instruction.o reverse_graph.o bank.o general.o \
	instruction_set.c -o instruction_set

instruction_set.o: $(MAKEFILE) instruction_set.h instruction_set_protos.h \
	instruction_set.c instruction.o string.o set.o
	$(CC) -c instruction_set.c -o instruction_set.o


instruction: $(MAKEFILE) instruction.h instruction_protos.h instruction.c \
	instruction_set.o
	$(CC) -DTEST general.o bank.o instruction_set.o instruction.c -o instruction

instruction.o: $(MAKEFILE) instruction.h instruction_protos.h \
	instruction.c string.o instruction_set.o
	$(CC) -c instruction.c -o instruction.o


config: $(MAKEFILE) config.h config_protos.h config.c string.o
	$(CC) -DTEST string.o config.c -o config

config.o: $(MAKEFILE) config.h config_protos.h config.c string.o
	$(CC) -c config.c -o config.o


disassembled_program: $(MAKEFILE) disassembled_program.h\
	disassembled_program_protos.h disassembled_program.c string.o
	$(CC) -DTEST string.o disassembled_program.c\
	-o disassembled_program

disassembled_program.o: $(MAKEFILE) disassembled_program.h\
	disassembled_program_protos.h disassembled_program.c
	$(CC) -c disassembled_program.c -o disassembled_program.o


target_program: $(MAKEFILE) target_program.h\
	target_program_protos.h target_program.c string.o
	$(CC) -DTEST string.o target_program.c\
	-o target_program

target_program.o: $(MAKEFILE) target_program.h target_program_protos.h\
	target_program.c
	$(CC) -c target_program.c -o target_program.o


set: $(MAKEFILE) set.h set_protos.h set.c
	$(CC) -DTEST general.o set.c -o set

set.o: $(MAKEFILE) set.h set_protos.h set.c
	$(CC) -c set.c -o set.o


