#
# Default configuration files. The paths are coded in the program
# but you can overwrite them using environment variables to specify
# the files. (see the doc for more details)
#


TOP_DIR = /home/moi/work/sim68k


#-------------------------------------------------------------------------


SRCDIR = cc
WINDIR = window
INCLUDIR = h


CFLAGS = -fPIC -O2 -I$(INCLUDIR) -I/usr/local/include -I/usr/include/tcl

LIB = -L/usr/X11R6/lib -L/usr/lib/X11 -L/usr/local/lib/tk -ldl -ltk -ltcl -lX11 -lm

OBJ = exec.o disassamble.o opcodes.o cpu.o load.o utils.o \
      interface.o \
      dis_cmd.o dump_cmd.o run_cmd.o register_cmd.o util_cmd.o \
      bkpt_cmd.o init_cmd.o inout_cmd.o

H = $(INCLUDIR)/global.h $(INCLUDIR)/proto.h



#-------------------------------------------------------------------------

OBJDIR = obj/$(OSTYPE)

OBJREAL = $(OBJ:%=$(OBJDIR)/%)


all::	first simu.$(OSTYPE) sim68k


first:
	-mkdir -p obj/$(OSTYPE)

sim68k:		sim68k.tcl.base
		echo -e "#!/bin/sh\n# the next line restarts using wish \\" > sim68k
		echo -e "exec wish \"\0440\" \"\044@\"\n" >> sim68k
		echo "set SIM68K_LIB " $(TOP_DIR) | cat - >> sim68k
		cat sim68k.tcl.base >> sim68k
		chmod +x sim68k



simu.$(OSTYPE):	$(OBJREAL)
	gcc -shared -O2 -o sim68k.so $(OBJREAL) $(LIB)



#------ Implicit Rules ----------


$(OBJDIR)/exec.o:	$(H) $(SRCDIR)/exec.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/exec.o $(SRCDIR)/exec.cc

$(OBJDIR)/disassamble.o:	$(H) $(SRCDIR)/disassamble.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/disassamble.o $(SRCDIR)/disassamble.cc

$(OBJDIR)/opcodes.o:	$(H) $(INCLUDIR)/dis.proto.h $(INCLUDIR)/exec.proto.h $(SRCDIR)/opcodes.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/opcodes.o $(SRCDIR)/opcodes.cc

$(OBJDIR)/load.o:	$(H) $(INCLUDIR)/header-aout.h $(SRCDIR)/load.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/load.o $(SRCDIR)/load.cc

$(OBJDIR)/utils.o:	$(H) $(SRCDIR)/utils.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/utils.o $(SRCDIR)/utils.cc

$(OBJDIR)/cpu.o:	$(H) $(SRCDIR)/cpu.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/cpu.o $(SRCDIR)/cpu.cc


$(OBJDIR)/interface.o:	$(H) $(WINDIR)/interface.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/interface.o $(WINDIR)/interface.cc


$(OBJDIR)/init_cmd.o:	$(H) $(WINDIR)/init_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/init_cmd.o $(WINDIR)/init_cmd.cc

$(OBJDIR)/dis_cmd.o:	$(H) $(WINDIR)/dis_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/dis_cmd.o $(WINDIR)/dis_cmd.cc

$(OBJDIR)/dump_cmd.o:	$(H) $(WINDIR)/dump_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/dump_cmd.o $(WINDIR)/dump_cmd.cc

$(OBJDIR)/run_cmd.o:	$(H) $(WINDIR)/run_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/run_cmd.o $(WINDIR)/run_cmd.cc

$(OBJDIR)/register_cmd.o:	$(H) $(WINDIR)/register_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/register_cmd.o $(WINDIR)/register_cmd.cc

$(OBJDIR)/util_cmd.o:	$(H) $(WINDIR)/util_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/util_cmd.o $(WINDIR)/util_cmd.cc

$(OBJDIR)/bkpt_cmd.o:	$(H) $(WINDIR)/bkpt_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/bkpt_cmd.o $(WINDIR)/bkpt_cmd.cc

$(OBJDIR)/inout_cmd.o:	$(H) $(WINDIR)/inout_cmd.cc
	gcc $(CFLAGS) -c -o $(OBJDIR)/inout_cmd.o $(WINDIR)/inout_cmd.cc


#-----------------------


clean:
	rm -fr sim68k.tcl.base *~ cc window h obj

tar:
	rm -f *~ cc/*~ window/*~ c2asm/*~ test/*~ h/*~ tutorial/*~ *~ *.so simu.* sim68k
	rm -fr obj
	rm -f *.tar.gz doc/*.aux doc/*.log doc/*.toc doc/*.dvi
	rm -f doc/*~ test/*.o c2asm/*.o
