include ../../Make.in
include ../Make.in
include ../MakeIndividual.in

EXE = mouse.mod
OBJECT = $(subst .S,.o,$(wildcard *.S)) $(subst .c,.o,$(wildcard *.c))
BINDIR = bin/


all: link_machine compile $(BINDIR)$(EXE)

link_machine:
	rm $(MODULEDIR)machine -f;
	ln -s $(MACHINELIBDIR) $(MODULEDIR)machine;

compile:
	cp MakeIndividual.in ../MakeIndividual.in -f
	cd $(LIBMODULEDIR); make;
	cd $(MACHINELIBDIR); make;
	cd $(MACHINEDIR); make;
	cd $(ICDIR); make;
	cd $(ISADIR); make;
	cd $(PCKBPORTDIR); make;
	cd $(WSCONSDIR); make;
	cd $(DEVDIR); make;
	
$(BINDIR)$(EXE): \
				$(addprefix $(BINDIR),$(OBJECT)) \
				$(CRT0) \
				$(LIBMACHINE) \
				$(LIBISA) \
				$(LIBIC) \
				$(LIBPCKBPORT) \
				$(LIBWSCONS) \
				$(LIBMODULE) \
				$(LIBDEV) \
				$(LIBMACHINELIB) \
				$(LIBTHREAD) \
				$(LIB) \
				$(LIBGCC)
	$(LD) -o $@ $^
	cp $@ $(COPY_MODULEDIR)

$(BINDIR)%.o:%.S
	$(CC) $(INCLUDE) $(CFLAGS) $(CFLAG_DEF) $(CFLAG_INDIV) -c -o $@ $<

$(BINDIR)%.o:%.c
	$(CC) $(INCLUDE) $(CFLAGS) $(CFLAG_DEF) $(CFLAG_INDIV) -c -o $@ $<


clean:
	cd $(LIBMODULEDIR); make clean;
	cd $(MACHINELIBDIR); make clean;
	cd $(MACHINEDIR); make clean;
	cd $(ICDIR); make clean;
	cd $(ISADIR); make clean;
	cd $(PCKBPORTDIR); make clean;
	cd $(WSCONSDIR); make clean;
	cd $(DEVDIR); make clean;
	rm $(BINDIR)* -f
