ifndef arch
arch := $(shell sh ../config/arch.sh)
endif
include ../config/make.$(arch)


all: $(arch) $(gm) $(arch)/libsm.a $(arch)/libmt.a 
gm: $(arch)/libmtgm.a

includes := $(shell ls *.h)

libmt_source = \
mt_FileWriter.c \
mt_HostTable.c \
mt_Message.c \
mt_NetworkQueue.c \
mt_Network.c \
mt_Mapper.c \
mt_MapperOptions.c \
mt_Responder.c \
mt_CloudResponder.c \
mt_RouteTable.c \
mt_Job.c \
mt_Address.c \
mt_Calculator.c\
mt_Graph.c \
mt_Host.c \
mt_Cloud.c \
mt_Switch.c \
mt_Node.c \
mt_Queue.c \
mt_Route.c \
mt_RouteFile.c \
mt_MapFile.c \
mt_File.c \
mt_Tokenizer.c \
mt_StringReader.c \
mt_FileReader.c \
mt_Args.c \
mt_Component.c

libmt_object = $(libmt_source:%.c=$(arch)/%.o)
$(arch)/libmt.a : $(libmt_object)
	$(ar) $(ar_syntax)
	$(ranlib) $@

libsm_source = \
sm.c \
sm_Callable.c \
sm_Simulator.c \
sm_Graph.c \
sm_Port.c \
sm_Null.c \
sm_Host.c \
sm_Switch.c \
sm_Cloud.c \
sm_Node.c \
sm_Packet.c \
sm_EventList.c

libsm_object = $(libsm_source:%.c=$(arch)/%.o)

$(arch)/libsm.a : $(libsm_object)
	$(ar) $(ar_syntax)
	$(ranlib) $@


libmtgm_source = \
mt_Gm.c \
mt_NetworkQueue.c

libmtgm_object = $(libmtgm_source:%.c=$(arch)/%.o)
$(arch)/libmtgm.a : $(libmtgm_object)
	$(ar) $(ar_syntax)
	$(ranlib) $@

$(arch)/%.o : %.c $(includes) ../config/make.$(arch) makefile
	$(compiler) $(defines) $(idirs) -I. -I../deadlock $(build_syntax)

intel_ms/mt_Gm.o : mt_Gm.c $(includes) ../config/make.$(arch) makefile
	$(evil_compiler) $(defines) $(idirs) -I. -I../deadlock $(build_syntax)

$(arch) :
	mkdir $(arch)

clean:
	rm -rf $(arch)