Index: soft/giet_vm/Makefile
===================================================================
--- soft/giet_vm/Makefile	(revision 176)
+++ soft/giet_vm/Makefile	(revision 177)
@@ -8,17 +8,19 @@
 SOFT_PATH  	= $(shell pwd)/
 
-SYS_NAME    = sys
-BOOT_NAME   = boot
-LIB_NAME    = libs
+SYS_DIR    = sys
+LIB_DIR    = libs
+BOOT_DIR   = boot
 
-SYS_PATH    = $(SOFT_PATH)$(SYS_NAME)
-BOOT_PATH   = $(SOFT_PATH)$(BOOT_NAME)
-LIB_PATH    = $(SOFT_PATH)$(LIB_NAME)
-MAP_PATH    = $(SOFT_PATH)xml/
+BOOT_PATH   = $(SOFT_PATH)$(BOOT_DIR)
+SYS_PATH    = $(SOFT_PATH)$(SYS_DIR)
+LIB_PATH    = $(SOFT_PATH)$(LIB_DIR)
+XML_PATH    = $(SOFT_PATH)xml/
+MEMO_PATH   = $(SOFT_PATH)memo/
 BUILD_PATH 	= $(SOFT_PATH)build/
 ELF_PATH	= $(SOFT_PATH)build/
+APP_PATH	= $(SOFT_PATH)apps/
 
 #list of all applications directory
-APP_DIRS 	= $(shell ls -d apps/*/ ) 
+APP_DIRS 	= $(shell ls -d $(APP_PATH)/*/ ) 
 
 SYS_OBJS_LIST = \
@@ -37,5 +39,5 @@
 				boot_handler.o 
 
-#LIB_SRCS = $(wildcard $(LIB_NAME)/*.c)
+#LIB_SRCS = $(wildcard $(LIB_DIR)/*.c)
 LIB_OBJS_LIST = stdio.o \
 				mwmr_channel.o \
@@ -44,15 +46,15 @@
 				common.o
 
-LIB_OBJS = $(patsubst %,$(LIB_NAME)/%,$(LIB_OBJS_LIST))
-SYS_OBJS   = $(patsubst %,$(SYS_NAME)/%,$(SYS_OBJS_LIST))
-BOOT_OBJS   = $(patsubst %,$(BOOT_NAME)/%,$(BOOT_OBJS_LIST))
+LIB_OBJS	= $(patsubst %,$(LIB_DIR)/%,$(LIB_OBJS_LIST))
+SYS_OBJS  	= $(patsubst %,$(SYS_DIR)/%,$(SYS_OBJS_LIST))
+BOOT_OBJS   = $(patsubst %,$(BOOT_DIR)/%,$(BOOT_OBJS_LIST))
 
 
 CFLAGS=-Wall -ffreestanding -mno-gpopt -mips32 -g
 
-SYS_INCLUDE  = -I$(SYS_PATH)  -I$(MAP_PATH) -I$(LIB_PATH) -I.
-BOOT_INCLUDE = -I$(BOOT_PATH) -I$(MAP_PATH) -I$(LIB_PATH) -I.
-LIB_INCLUDE	 = -I$(LIB_PATH)  -I$(MAP_PATH)
-INCLUDE		 = -I$(LIB_PATH)  -I$(MAP_PATH)
+SYS_INCLUDE  = -I$(SYS_PATH)  -I$(XML_PATH) -I$(LIB_PATH) -I.
+BOOT_INCLUDE = -I$(BOOT_PATH) -I$(XML_PATH) -I$(LIB_PATH) -I.
+LIB_INCLUDE	 = -I$(LIB_PATH)  -I$(XML_PATH) -I.
+APP_INCLUDE	 = -I$(LIB_PATH)  -I$(XML_PATH) -I$(SOFT_PATH)
 
 TRASH= /dev/null||true
@@ -64,6 +66,6 @@
 ## merge all *.elf to soft.elf
 soft.elf: boot.elf sys.elf map.bin apps 
-	$(MAKE) -C memo
-	memo/memo.x  map.bin 
+	$(MAKE) -C $(MEMO_PATH)
+	$(MEMO_PATH)/memo.x  map.bin 
 	$(DU) -D $@ > $(BUILD_PATH)$@.txt
 
@@ -72,55 +74,56 @@
 	@mkdir $(BUILD_PATH) 				2>$(TRASH)
 	@mkdir $(ELF_PATH) 	 				2>$(TRASH)
-	@mkdir $(BUILD_PATH)/$(BOOT_NAME) 	2>$(TRASH)
-	@mkdir $(BUILD_PATH)/$(LIB_NAME) 	2>$(TRASH)
-	@mkdir $(BUILD_PATH)/$(SYS_NAME) 	2>$(TRASH)
+	@mkdir $(BUILD_PATH)/$(BOOT_DIR) 	2>$(TRASH)
+	@mkdir $(BUILD_PATH)/$(LIB_DIR) 	2>$(TRASH)
+	@mkdir $(BUILD_PATH)/$(SYS_DIR) 	2>$(TRASH)
 
-## mapping compilation
+### mapping compilation
 map.bin: map.xml
-	$(MAKE) -C xml 				
-	xml/xml2bin map.xml map.bin
+	$(MAKE) -C $(XML_PATH)
+	$(XML_PATH)/xml2bin $(SOFT_PATH)map.xml $(SOFT_PATH)map.bin
 
-## system compilation
+### system compilation
 sys.elf: $(SYS_OBJS) $(SYS_PATH)/sys.ld
 	(cd $(BUILD_PATH); $(LD) -o $@ -T $(SYS_PATH)/sys.ld $(SYS_OBJS) )
 	(cd $(BUILD_PATH); $(DU) -D $@ > $@.txt)
 
-$(SYS_NAME)/%.o: $(SYS_NAME)/%.c 
+$(SYS_DIR)/%.o: $(SYS_DIR)/%.c 
 	$(CC) $(SYS_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
 
-$(SYS_NAME)/%.o: $(SYS_NAME)/%.s
+$(SYS_DIR)/%.o: $(SYS_DIR)/%.s
 	$(CC) $(SYS_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
 
-$(SYS_NAME)/%.o: $(SYS_NAME)/%.S
+$(SYS_DIR)/%.o: $(SYS_DIR)/%.S
 	$(CC) $(SYS_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
 
-## boot compilation
+### boot compilation
 boot.elf: $(BOOT_OBJS) $(BOOT_PATH)/boot.ld
 	(cd $(BUILD_PATH); $(LD) -o $@ -T $(BOOT_PATH)/boot.ld $(BOOT_OBJS) )
 	(cd $(BUILD_PATH); $(DU) -D $@ > $@.txt)
 
-$(BOOT_NAME)/%.o: $(BOOT_NAME)/%.c 
+$(BOOT_DIR)/%.o: $(BOOT_DIR)/%.c 
 	$(CC) $(BOOT_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
 
-$(BOOT_NAME)/%.o: $(BOOT_NAME)/%.s
+$(BOOT_DIR)/%.o: $(BOOT_DIR)/%.s
 	$(CC) $(BOOT_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
 
-$(BOOT_NAME)/%.o: $(BOOT_NAME)/%.S
+$(BOOT_DIR)/%.o: $(BOOT_DIR)/%.S
 	$(CC) $(BOOT_INCLUDE) $(CFLAGS)  -c -o $(BUILD_PATH)/$@ $<
 
-##libs compilation
-$(LIB_NAME)/%.o: $(LIB_NAME)/%.c
+### libs compilation
+$(LIB_DIR)/%.o: $(LIB_DIR)/%.c
 	$(CC) $(CFLAGS) $(LIB_INCLUDE) -c -o $(BUILD_PATH)/$@ $<
 
-## applications 
+### applications 
 apps: $(LIB_OBJS)
-	@echo "---------------------------------------------BUILDING APPS------------------------------------------------------"
-	set -e; for d in $(APP_DIRS); do $(MAKE)  -C $$d ; echo "Compiling $$d";  done
+	@echo "---------------------------------------------- BUILDING APPS ---------------------------------------------------------"
+	set -e; for d in $(APP_DIRS); do $(MAKE) -f config.mk -C $$d ; echo "Compiling $$d";  done
 
-### special rules
+### clean 
 clean:
-	rm -f *.o *.elf *.bin *.txt core *~  2>$(TRASH)
-	$(MAKE) -s clean -C xml/ 2>$(TRASH)
-	$(MAKE) -s clean -C memo/ 2>$(TRASH)
-	rm -r $(BUILD_PATH) 2>$(TRASH)
-	set -e; for d in $(APP_DIRS); do $(MAKE) clean -C $$d ; done
+	rm -f *.o *.elf *.bin *.txt core *~  	2>$(TRASH)
+	$(MAKE) -s clean -C $(XML_PATH)			2>$(TRASH)
+	$(MAKE) -s clean -C $(MEMO_PATH)		2>$(TRASH)
+	rm -r $(BUILD_PATH) 					2>$(TRASH)
+	rm -r $(ELF_PATH) 						2>$(TRASH)
+	set -e; for d in $(APP_DIRS); do $(MAKE) clean -f config.mk -C $$d ; done
Index: soft/giet_vm/apps/compile.mk
===================================================================
--- soft/giet_vm/apps/compile.mk	(revision 177)
+++ soft/giet_vm/apps/compile.mk	(revision 177)
@@ -0,0 +1,17 @@
+USES=$(patsubst %,$(BUILD_PATH)/$(LIB_DIR)/%,$(USE))
+
+all: $(APP_NAME).elf
+
+BIN_NAME_PATH=$(ELF_PATH)$(APP_NAME).elf
+
+$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
+	$(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
+	$(DU) -D $(BIN_NAME_PATH) > $(BIN_NAME_PATH).txt
+
+%.o: %.c 
+	$(CC)  $(APP_INCLUDE) $(CFLAGS) -c -o  $@ $<
+	$(DU) -D  $@ >  $@.txt
+
+clean:
+	rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
+	rm $(BIN_NAME_PATH) 2>$(TRASH)
Index: soft/giet_vm/apps/display/Makefile
===================================================================
--- soft/giet_vm/apps/display/Makefile	(revision 176)
+++ 	(revision )
@@ -1,24 +1,0 @@
-APP_NAME=display
-
-USE+= stdio.o
-
-USES=$(patsubst %,$(BUILD_PATH)/$(LIB_NAME)/%,$(USE))
-
-OBJS= main.o 
-
-all: $(APP_NAME).elf
-
-BIN_NAME_PATH=$(ELF_PATH)$(APP_NAME).elf
-
-$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
-	$(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
-	$(DU) -D $(BIN_NAME_PATH) > $@.txt
-
-%.o: %.c 
-	$(CC)  $(INCLUDE) $(CFLAGS) $($*.o_CFLAGS) -c -o  $@ $<
-	$(DU) -D  $@ >  $@.txt
-
-
-clean:
-	rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
-	rm $(BIN_NAME_PATH) 2>$(TRASH)
Index: soft/giet_vm/apps/display/config.mk
===================================================================
--- soft/giet_vm/apps/display/config.mk	(revision 177)
+++ soft/giet_vm/apps/display/config.mk	(revision 177)
@@ -0,0 +1,9 @@
+APP_NAME=display
+
+USE+= stdio.o
+
+OBJS= main.o 
+
+CFLAGS=
+
+include $(APP_PATH)/compile.mk
Index: soft/giet_vm/apps/hello/Makefile
===================================================================
--- soft/giet_vm/apps/hello/Makefile	(revision 176)
+++ 	(revision )
@@ -1,26 +1,0 @@
-APP_NAME=hello
-
-USE+= stdio.o
-
-USES=$(patsubst %,$(BUILD_PATH)/$(LIB_NAME)/%,$(USE))
-
-OBJS	=	main.o 
-
-TRASH	?=	/dev/null
-
-all: $(APP_NAME).elf
-
-BIN_NAME_PATH=$(ELF_PATH)$(APP_NAME).elf
-
-$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
-	$(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
-	$(DU) -D $(BIN_NAME_PATH) > $@.txt
-
-%.o: %.c 
-	$(CC)  $(INCLUDE) $(CFLAGS) $($*.o_CFLAGS) -c -o  $@ $<
-	$(DU) -D  $@ >  $@.txt
-
-
-clean:
-	rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
-	rm -f $(BIN_NAME_PATH) 2>$(TRASH)
Index: soft/giet_vm/apps/hello/config.mk
===================================================================
--- soft/giet_vm/apps/hello/config.mk	(revision 177)
+++ soft/giet_vm/apps/hello/config.mk	(revision 177)
@@ -0,0 +1,9 @@
+APP_NAME=hello
+
+USE+= stdio.o
+
+OBJS = main.o 
+
+CFLAGS=
+
+include $(APP_PATH)/compile.mk
Index: soft/giet_vm/apps/pgcd/Makefile
===================================================================
--- soft/giet_vm/apps/pgcd/Makefile	(revision 176)
+++ 	(revision )
@@ -1,24 +1,0 @@
-APP_NAME=pgcd
-
-USE+= stdio.o
-
-USES=$(patsubst %,$(BUILD_PATH)/$(LIB_NAME)/%,$(USE))
-
-OBJS= main.o 
-
-all: $(APP_NAME).elf
-
-BIN_NAME_PATH=$(ELF_PATH)$(APP_NAME).elf
-
-$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
-	$(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
-	$(DU) -D $(BIN_NAME_PATH) > $@.txt
-
-%.o: %.c 
-	$(CC)  $(INCLUDE) $(CFLAGS) $($*.o_CFLAGS) -c -o  $@ $<
-	$(DU) -D  $@ >  $@.txt
-
-
-clean:
-	rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
-	rm $(BIN_NAME_PATH) 2>$(TRASH)
Index: soft/giet_vm/apps/pgcd/config.mk
===================================================================
--- soft/giet_vm/apps/pgcd/config.mk	(revision 177)
+++ soft/giet_vm/apps/pgcd/config.mk	(revision 177)
@@ -0,0 +1,9 @@
+APP_NAME=pgcd
+
+USE+= stdio.o
+
+OBJS= main.o 
+
+CFLAGS=
+
+include $(APP_PATH)/compile.mk
Index: soft/giet_vm/apps/router/Makefile
===================================================================
--- soft/giet_vm/apps/router/Makefile	(revision 176)
+++ 	(revision )
@@ -1,24 +1,0 @@
-APP_NAME=router
-
-USE+= stdio.o
-USE+= mwmr_channel.o
-
-USES=$(patsubst %,$(BUILD_PATH)/$(LIB_NAME)/%,$(USE))
-
-OBJS= main.o 
-
-all: $(APP_NAME).elf
-
-BIN_NAME_PATH=$(ELF_PATH)$(APP_NAME).elf
-
-$(APP_NAME).elf: $(OBJS) $(APP_NAME).ld
-	$(LD) -o $(BIN_NAME_PATH) -T $(APP_NAME).ld $(OBJS) $(USES)
-	$(DU) -D $(BIN_NAME_PATH) > $@.txt
-
-%.o: %.c 
-	$(CC)  $(INCLUDE) $(CFLAGS) $($*.o_CFLAGS) -c -o  $@ $<
-	$(DU) -D  $@ >  $@.txt
-
-clean:
-	rm -f *.o *.elf *.txt core *~ 2>$(TRASH)
-	rm $(BIN_NAME_PATH) 2>$(TRASH)
Index: soft/giet_vm/apps/router/config.mk
===================================================================
--- soft/giet_vm/apps/router/config.mk	(revision 177)
+++ soft/giet_vm/apps/router/config.mk	(revision 177)
@@ -0,0 +1,10 @@
+APP_NAME=router
+
+USE+= stdio.o
+USE+= mwmr_channel.o
+
+OBJS= main.o 
+
+CFLAGS=
+
+include $(APP_PATH)/compile.mk
