Index: trunk/IPs/systemC/Environment/Makefile
===================================================================
--- trunk/IPs/systemC/Environment/Makefile	(revision 88)
+++ trunk/IPs/systemC/Environment/Makefile	(revision 113)
@@ -1,69 +1,65 @@
+ifeq ($(origin MORPHEO_TMP), undefined)
+	$(error "variable MORPHEO_TMP      is undefined");
+endif
+
 #-----[ Directory ]----------------------------------------
+DIR_LIB				= $(DIR_TMP)/lib
+DIR_ENVIRONMENT			= .
+DIR_CACHE			= Cache
+DIR_DATA			= Data
+DIR_ENDIANNESS			= Endianness
+DIR_QUEUE			= Queue
+DIR_RAMLOCK			= RamLock
+DIR_SIM2OS			= Sim2OS
+DIR_TTY   			= TTY
 
-DIR_LIB				= ./lib
-DIR_CACHE			= ./Cache
-DIR_DATA			= ./Data
-DIR_ENDIANNESS			= ./Endianness
-DIR_QUEUE			= ./Queue
-DIR_RAMLOCK			= ./RamLock
-DIR_SIM2OS			= ./Sim2OS
-DIR_TTY   			= ./TTY
+include $(DIR_CACHE)/Makefile.defs
+include $(DIR_DATA)/Makefile.defs
+include $(DIR_ENDIANNESS)/Makefile.defs
+include $(DIR_QUEUE)/Makefile.defs
+include $(DIR_RAMLOCK)/Makefile.defs
+include $(DIR_SIM2OS)/Makefile.defs
+include $(DIR_TTY)/Makefile.defs
 
 #-----[ Variable ]-----------------------------------------
-ENTITY                         ?=	Environment
 
-LIBRARY_NAME			= Environment
-LIBRARY_FILE			= $(DIR_LIB)/lib$(LIBRARY_NAME).a
+ENTITY                          := Environment
+DIR_SRC				 = $(DIR_ENVIRONMENT)/src
 
-OBJECTS_DEPS			= 	$(patsubst $(DIR_CACHE)/$(DIR_SRC)/%.cpp,$(DIR_CACHE)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_CACHE)/$(DIR_SRC)/*.cpp))			\
-					$(patsubst $(DIR_DATA)/$(DIR_SRC)/%.cpp,$(DIR_DATA)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_DATA)/$(DIR_SRC)/*.cpp))			\
-					$(patsubst $(DIR_DATA)/$(DIR_SRC)/%.c,$(DIR_DATA)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_DATA)/$(DIR_SRC)/*.c))			\
-					$(patsubst $(DIR_ENDIANNESS)/$(DIR_SRC)/%.cpp,$(DIR_ENDIANNESS)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_ENDIANNESS)/$(DIR_SRC)/*.cpp))	\
-					$(patsubst $(DIR_QUEUE)/$(DIR_SRC)/%.cpp,$(DIR_QUEUE)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_QUEUE)/$(DIR_SRC)/*.cpp))			\
-					$(patsubst $(DIR_RAMLOCK)/$(DIR_SRC)/%.cpp,$(DIR_RAMLOCK)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_RAMLOCK)/$(DIR_SRC)/*.cpp))		\
-					$(patsubst $(DIR_SIM2OS)/$(DIR_SRC)/%.cpp,$(DIR_SIM2OS)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_SIM2OS)/$(DIR_SRC)/*.cpp)) 		\
-					$(patsubst $(DIR_TTY)/$(DIR_SRC)/%.cpp,$(DIR_TTY)/$(DIR_OBJ)/%.o,$(wildcard $(DIR_TTY)/$(DIR_SRC)/*.cpp))			
+include                          $(DIR_ENVIRONMENT)/Makefile.defs
 
+LIBRARY_NAME			:= $(ENTITY)
+LIBRARY_FILE			:= $(DIR_LIB)/lib$(LIBRARY_NAME).a
+
+Environment_OBJECTS_DEPS	:= 	$(OBJECTS) \
+					$(Cache_OBJECTS_DEPS) \
+					$(Data_OBJECTS_DEPS) \
+					$(Endianness_OBJECTS_DEPS) \
+					$(Queue_OBJECTS_DEPS) \
+					$(RamLock_OBJECTS_DEPS) \
+					$(Sim2OS_OBJECTS_DEPS) \
+					$(TTY_OBJECTS_DEPS)
 
 #-----[ Rules ]--------------------------------------------
 
-all				: a b c d e f g
+all				:
 				@\
 				$(MAKE) all_environment; \
+				$(MAKE) --directory=$(DIR_CACHE)      all; \
+				$(MAKE) --directory=$(DIR_DATA)       all; \
+				$(MAKE) --directory=$(DIR_ENDIANNESS) all; \
+				$(MAKE) --directory=$(DIR_QUEUE)      all; \
+				$(MAKE) --directory=$(DIR_RAMLOCK)    all; \
+				$(MAKE) --directory=$(DIR_SIM2OS)     all; \
+				$(MAKE) --directory=$(DIR_TTY)        all; \
 				$(MAKE) $(LIBRARY_FILE);
 
-a				:
-				@\
-				$(MAKE) --directory=$(DIR_CACHE)      all;
 
-b				:
-				@\
-				$(MAKE) --directory=$(DIR_DATA)       all;
-
-c				:
-				@\
-				$(MAKE) --directory=$(DIR_ENDIANNESS) all;
-
-d				:
-				@\
-				$(MAKE) --directory=$(DIR_QUEUE)      all;
-
-e				:
-				@\
-				$(MAKE) --directory=$(DIR_RAMLOCK)    all;
-
-f				:
-				@\
-				$(MAKE) --directory=$(DIR_SIM2OS)     all;
-
-g				:
-				@\
-				$(MAKE) --directory=$(DIR_TTY)        all;
-
-
-$(LIBRARY_FILE)			: $(OBJECTS_DEPS) $(OBJECTS) $(DIR_LIB)
+$(LIBRARY_FILE)			: $(Environment_OBJECTS_DEPS)
 				@\
 				$(ECHO) "Archive            : $@";\
-				$(AR)  -r $@ $(OBJECTS_DEPS) $(OBJECTS);\
+				$(ECHO) "Archive            : $@";\
+				$(MKDIR) $(DIR_LIB);\
+				$(AR)  -r $@ $(Environment_OBJECTS_DEPS);\
 				$(RANLIB) $@;
 
@@ -71,16 +67,24 @@
 				@\
 				$(ECHO) "Create directory   : $@";\
-				$(MKDIR) $@;
+				$(MKDIR) $@
 
 exe_all				:
 				@\
+				$(MAKE) --directory=$(DIR_CACHE)      clean; \
 				$(MAKE) --directory=$(DIR_CACHE)      exe; \
+				$(MAKE) --directory=$(DIR_DATA)       clean; \
 				$(MAKE) --directory=$(DIR_DATA)       exe; \
+				$(MAKE) --directory=$(DIR_ENDIANNESS) clean; \
 				$(MAKE) --directory=$(DIR_ENDIANNESS) exe; \
+				$(MAKE) --directory=$(DIR_QUEUE)      clean; \
 				$(MAKE) --directory=$(DIR_QUEUE)      exe; \
+				$(MAKE) --directory=$(DIR_RAMLOCK)    clean; \
 				$(MAKE) --directory=$(DIR_RAMLOCK)    exe; \
+				$(MAKE) --directory=$(DIR_SIM2OS)     clean; \
 				$(MAKE) --directory=$(DIR_SIM2OS)     exe; \
+				$(MAKE) --directory=$(DIR_TTY)        clean; \
 				$(MAKE) --directory=$(DIR_TTY)        exe; \
-				$(MAKE) exe; \
+				$(MAKE) clean; \
+				$(MAKE) exe;
 
 clean				:
