# System Makefile
#
# Author: Guto

include $(EPOS)/makedefs

all: 		mediators abstractions initializer system # aspects  abstractions

mediators:	FORCE 
		(cd mediators && $(MAKE))

abstractions:	FORCE
		(cd abstractions && $(MAKE))

aspects:	FORCE
		(cd aspects && $(MAKE))

frameworks: 	FORCE
		(cd frameworks && $(MAKE))


initializer: 	initializer.o
		$(AR) $(ARFLAGS) $(LIB)/libsystem_init.a initializer.o

system: 	$(LIB)/libsystem.a $(LIB)/libsystem_data.a system.o
		$(LD) $(LD_FLAGS) -L`gcc3 -print-file-name=` \
		 -Ttext $(SYS_CODE_ADDR) -Tdata $(SYS_DATA_ADDR) \
		 -o system system.o -lsystem -lsystem_data -lepos -lstdc++ -lgcc -lc -lgcc
#		$(LD) $(LD_FLAGS) \
#		 -Ttext $(SYS_CODE_ADDR) -Tdata $(SYS_DATA_ADDR) \
#		 -o system system.o -lsystem -lsystem_data -ldummyc++ -lepos

install:	all
		$(INSTALL) system $(IMG)
		$(INSTALL) system.o $(LIB)

test:
		(cd abstractions && $(MAKE) test)
		(cd mediators && $(MAKE) test)
		(cd aspects && $(MAKE) test)
		(cd frameworks && $(MAKE) test)

print:
		$(PRINT1) system.cc $(PRINT2)
		$(PRINT1) initializer.cc $(PRINT2)
		(cd abstraction && $(MAKE) print)
		(cd mediators && $(MAKE) print)
		(cd aspects && $(MAKE) print)
		(cd frameworks && $(MAKE) print)

clean:
		-(cd abstractions && $(MAKE) clean)
		-(cd mediators && $(MAKE) clean)
		-(cd aspects && $(MAKE) clean)
		-(cd frameworks && $(MAKE) clean)
		$(CLEAN) *.o
		$(CLEAN) $(LIB)/libsystem*.a

FORCE:
