diff --git a/aarbology2/makefile b/aarbology2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aarbology2/makefile
+++ b/aarbology2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/acast2/makefile b/acast2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/acast2/makefile
+++ b/acast2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/acompaction2/makefile b/acompaction2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/acompaction2/makefile
+++ b/acompaction2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/acompare2/makefile b/acompare2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/acompare2/makefile
+++ b/acompare2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/aconversions2/makefile b/aconversions2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aconversions2/makefile
+++ b/aconversions2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/aconvert2/makefile b/aconvert2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aconvert2/makefile
+++ b/aconvert2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/aderivation2/makefile b/aderivation2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aderivation2/makefile
+++ b/aderivation2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/adeterminize2/makefile b/adeterminize2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/adeterminize2/makefile
+++ b/adeterminize2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/aecho2/makefile b/aecho2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aecho2/makefile
+++ b/aecho2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/aepsilon2/makefile b/aepsilon2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aepsilon2/makefile
+++ b/aepsilon2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/agenerate2/makefile b/agenerate2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/agenerate2/makefile
+++ b/agenerate2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/aintegral2/makefile b/aintegral2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aintegral2/makefile
+++ b/aintegral2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/alangop2/makefile b/alangop2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/alangop2/makefile
+++ b/alangop2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/alib2algo/makefile b/alib2algo/makefile
index 25d4a7751d86ae766097825eeb2cf4b0e84c4238..ced22944d22918d27696ad19c892bd00ff948563 100644
--- a/alib2algo/makefile
+++ b/alib2algo/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 FULL_LIBRARY:=lib$(LIBRARY).so
@@ -29,7 +30,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -79,7 +87,14 @@ obj%/makefile: makefile makefile.conf
 	-include \$$(DEPENDENCIES)" > $@
 
 test-obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -140,11 +155,25 @@ test: unit-test-debug unit-test-release
 
 
 lib-debug/$(FULL_LIBRARY): $(OBJECTS_DEBUG) obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -169,11 +198,25 @@ build-release: lib-release/$(FULL_LIBRARY)
 
 
 test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
 test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_RELEASE) -o $@ $(TEST_LDFLAGS_RELEASE)
 
 
@@ -207,9 +250,33 @@ unit-test-release: build-tests-release
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L lib-debug ]; then\
+		rm -r `readlink lib-debug`;\
+	fi
+	if [ -L test-obj-debug ]; then\
+		rm -r `readlink test-obj-debug`;\
+	fi
+	if [ -L test-bin-debug ]; then\
+		rm -r `readlink test-bin-debug`;\
+	fi
 	$(RM) -r *.o *.d lib-debug obj-debug test-bin-debug test-obj-debug CppUnitTestResults.xml
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
+	if [ -L test-obj-release ]; then\
+		rm -r `readlink test-obj-release`;\
+	fi
+	if [ -L test-bin-release ]; then\
+		rm -r `readlink test-bin-release`;\
+	fi
 	$(RM) -r *.o *.d lib-release obj-release test-bin-release test-obj-release CppUnitTestResults.xml
 
 
diff --git a/alib2data/makefile b/alib2data/makefile
index 25d4a7751d86ae766097825eeb2cf4b0e84c4238..ced22944d22918d27696ad19c892bd00ff948563 100644
--- a/alib2data/makefile
+++ b/alib2data/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 FULL_LIBRARY:=lib$(LIBRARY).so
@@ -29,7 +30,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -79,7 +87,14 @@ obj%/makefile: makefile makefile.conf
 	-include \$$(DEPENDENCIES)" > $@
 
 test-obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -140,11 +155,25 @@ test: unit-test-debug unit-test-release
 
 
 lib-debug/$(FULL_LIBRARY): $(OBJECTS_DEBUG) obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -169,11 +198,25 @@ build-release: lib-release/$(FULL_LIBRARY)
 
 
 test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
 test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_RELEASE) -o $@ $(TEST_LDFLAGS_RELEASE)
 
 
@@ -207,9 +250,33 @@ unit-test-release: build-tests-release
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L lib-debug ]; then\
+		rm -r `readlink lib-debug`;\
+	fi
+	if [ -L test-obj-debug ]; then\
+		rm -r `readlink test-obj-debug`;\
+	fi
+	if [ -L test-bin-debug ]; then\
+		rm -r `readlink test-bin-debug`;\
+	fi
 	$(RM) -r *.o *.d lib-debug obj-debug test-bin-debug test-obj-debug CppUnitTestResults.xml
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
+	if [ -L test-obj-release ]; then\
+		rm -r `readlink test-obj-release`;\
+	fi
+	if [ -L test-bin-release ]; then\
+		rm -r `readlink test-bin-release`;\
+	fi
 	$(RM) -r *.o *.d lib-release obj-release test-bin-release test-obj-release CppUnitTestResults.xml
 
 
diff --git a/alib2elgo/makefile b/alib2elgo/makefile
index 25d4a7751d86ae766097825eeb2cf4b0e84c4238..ced22944d22918d27696ad19c892bd00ff948563 100644
--- a/alib2elgo/makefile
+++ b/alib2elgo/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 FULL_LIBRARY:=lib$(LIBRARY).so
@@ -29,7 +30,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -79,7 +87,14 @@ obj%/makefile: makefile makefile.conf
 	-include \$$(DEPENDENCIES)" > $@
 
 test-obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -140,11 +155,25 @@ test: unit-test-debug unit-test-release
 
 
 lib-debug/$(FULL_LIBRARY): $(OBJECTS_DEBUG) obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -169,11 +198,25 @@ build-release: lib-release/$(FULL_LIBRARY)
 
 
 test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
 test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_RELEASE) -o $@ $(TEST_LDFLAGS_RELEASE)
 
 
@@ -207,9 +250,33 @@ unit-test-release: build-tests-release
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L lib-debug ]; then\
+		rm -r `readlink lib-debug`;\
+	fi
+	if [ -L test-obj-debug ]; then\
+		rm -r `readlink test-obj-debug`;\
+	fi
+	if [ -L test-bin-debug ]; then\
+		rm -r `readlink test-bin-debug`;\
+	fi
 	$(RM) -r *.o *.d lib-debug obj-debug test-bin-debug test-obj-debug CppUnitTestResults.xml
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
+	if [ -L test-obj-release ]; then\
+		rm -r `readlink test-obj-release`;\
+	fi
+	if [ -L test-bin-release ]; then\
+		rm -r `readlink test-bin-release`;\
+	fi
 	$(RM) -r *.o *.d lib-release obj-release test-bin-release test-obj-release CppUnitTestResults.xml
 
 
diff --git a/alib2std/makefile b/alib2std/makefile
index 25d4a7751d86ae766097825eeb2cf4b0e84c4238..ced22944d22918d27696ad19c892bd00ff948563 100644
--- a/alib2std/makefile
+++ b/alib2std/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 FULL_LIBRARY:=lib$(LIBRARY).so
@@ -29,7 +30,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -79,7 +87,14 @@ obj%/makefile: makefile makefile.conf
 	-include \$$(DEPENDENCIES)" > $@
 
 test-obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -140,11 +155,25 @@ test: unit-test-debug unit-test-release
 
 
 lib-debug/$(FULL_LIBRARY): $(OBJECTS_DEBUG) obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -169,11 +198,25 @@ build-release: lib-release/$(FULL_LIBRARY)
 
 
 test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
 test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(TEST_OBJECTS_RELEASE) -o $@ $(TEST_LDFLAGS_RELEASE)
 
 
@@ -207,9 +250,33 @@ unit-test-release: build-tests-release
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L lib-debug ]; then\
+		rm -r `readlink lib-debug`;\
+	fi
+	if [ -L test-obj-debug ]; then\
+		rm -r `readlink test-obj-debug`;\
+	fi
+	if [ -L test-bin-debug ]; then\
+		rm -r `readlink test-bin-debug`;\
+	fi
 	$(RM) -r *.o *.d lib-debug obj-debug test-bin-debug test-obj-debug CppUnitTestResults.xml
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
+	if [ -L test-obj-release ]; then\
+		rm -r `readlink test-obj-release`;\
+	fi
+	if [ -L test-bin-release ]; then\
+		rm -r `readlink test-bin-release`;\
+	fi
 	$(RM) -r *.o *.d lib-release obj-release test-bin-release test-obj-release CppUnitTestResults.xml
 
 
diff --git a/aminimize2/makefile b/aminimize2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/aminimize2/makefile
+++ b/aminimize2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/anormalize2/makefile b/anormalize2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/anormalize2/makefile
+++ b/anormalize2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/arand2/makefile b/arand2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/arand2/makefile
+++ b/arand2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/araw2/makefile b/araw2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/araw2/makefile
+++ b/araw2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/arename2/makefile b/arename2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/arename2/makefile
+++ b/arename2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/areverse2/makefile b/areverse2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/areverse2/makefile
+++ b/areverse2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/arun2/makefile b/arun2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/arun2/makefile
+++ b/arun2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/astat2/makefile b/astat2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/astat2/makefile
+++ b/astat2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/astringology2/makefile b/astringology2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/astringology2/makefile
+++ b/astringology2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/atrim2/makefile b/atrim2/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/atrim2/makefile
+++ b/atrim2/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release
 
 
diff --git a/makefile b/makefile
index e13d7abc2b8673dbca425ae7c473199135db8f17..f8ceb457110157f179b617a7fc894e4580231784 100644
--- a/makefile
+++ b/makefile
@@ -1,4 +1,5 @@
 SHELL = /bin/bash
+USE_RAMDISK ?= 0
 APPPATH = /usr/bin
 LIBPATH = /usr/lib
 BINFOLDER = bin
@@ -75,7 +76,14 @@ all:
 	@echo "What to do master?"
 
 debug: all-debug
-	mkdir -p $(addsuffix -debug, $(BINFOLDER))
+	if [ ! -w $(addsuffix -debug, $(BINFOLDER)) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(addsuffix -debug, $(BINFOLDER)) $(subst /, , $(addsuffix -debug, $(BINFOLDER))) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(addsuffix -debug, $(BINFOLDER))) ]; then\
+		mkdir -p `readlink $(subst /, , $(addsuffix -debug, $(BINFOLDER)))`;\
+	else\
+		mkdir -p $(addsuffix -debug, $(BINFOLDER));\
+	fi
 	rm -rf $(addsuffix -debug, $(BINFOLDER))/*
 	for dir in $(STD_LIB) $(CORE_LIB) $(ALGO_LIB) $(ELGO_LIB); do \
 	    cp $$dir/lib-debug/* $(addsuffix -debug, $(BINFOLDER)); \
@@ -92,7 +100,14 @@ debug: all-debug
 	./tests.aarbology.sh debug
 
 release: all-release
-	mkdir -p $(addsuffix -release, $(BINFOLDER))
+	if [ ! -w $(addsuffix -release, $(BINFOLDER)) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(addsuffix -release, $(BINFOLDER)) $(subst /, , $(addsuffix -release, $(BINFOLDER))) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(addsuffix -release, $(BINFOLDER))) ]; then\
+		mkdir -p `readlink $(subst /, , $(addsuffix -release, $(BINFOLDER)))`;\
+	else\
+		mkdir -p $(addsuffix -release, $(BINFOLDER));\
+	fi
 	rm -rf $(addsuffix -release, $(BINFOLDER))/*
 	for dir in $(STD_LIB) $(CORE_LIB) $(ALGO_LIB) $(ELGO_LIB); do \
 	    cp $$dir/lib-release/* $(addsuffix -release, $(BINFOLDER)); \
diff --git a/tests.aarbology.sh b/tests.aarbology.sh
index bb409e8ffba5b8cc8a2e6e538325e384e40797c3..a249c8f45993cd5dd73ae9fa5bea7aabfdedfc6b 100755
--- a/tests.aarbology.sh
+++ b/tests.aarbology.sh
@@ -14,7 +14,7 @@ RAND_HEIGHT_PATTERN=2
 RAND_ALPHABET=2
 
 EXECUTABLES="arand2 atrim2 adeterminize2 anormalize2 "
-TESTS_DIR="../examples2/tree"
+TESTS_DIR="`pwd`/examples2/tree"
 
 RES_GOOD=0
 RES_FAIL=0
diff --git a/tests.aconversion.sh b/tests.aconversion.sh
index 81d042a845951e074564eb34d31891ea0f615a67..2558e1214d609a184b1e60cc962efbf239289e3a 100755
--- a/tests.aconversion.sh
+++ b/tests.aconversion.sh
@@ -12,7 +12,7 @@ RAND_DENSITY="2.5"
 RAND_ALPHABET=4
 
 EXECUTABLES="arand2 aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2 aconversions2"
-TESTS_DIR="../examples2/automaton"
+TESTS_DIR="`pwd`/examples2/automaton"
 
 RES_GOOD=0
 RES_FAIL=0
diff --git a/tests.aderivation.aintegral.sh b/tests.aderivation.aintegral.sh
index 6c6a62ff940678d617441e0b4b4f3dc85189fdae..527d11f22116cfc0b25c016cf9bf05f3ba518aa9 100755
--- a/tests.aderivation.aintegral.sh
+++ b/tests.aderivation.aintegral.sh
@@ -5,7 +5,7 @@
 set -o pipefail
 
 EXECUTABLES="aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2 aderivation2 aintegral2 aconversions2"
-TESTS_DIR="../examples2/regexp"
+TESTS_DIR="`pwd`/examples2/regexp"
 
 # ----------------------------
 
diff --git a/tests.adeterminize.sh b/tests.adeterminize.sh
index 9edc9083c77cfe78cc4ae30c09f99e0703f4d942..6fe0e0e05ca2d6b3283a0ee7bf2a0b55fa4091c7 100755
--- a/tests.adeterminize.sh
+++ b/tests.adeterminize.sh
@@ -7,7 +7,7 @@ TESTCASE_TIMEOUT=10
 LOGFILE="log_tests.txt"
 
 EXECUTABLES="aepsilon2 atrim2 adeterminize2 aminimize2 anormalize2 acompare2"
-TESTS_DIR="../examples2/automaton"
+TESTS_DIR="`pwd`/examples2/automaton"
 
 RES_GOOD=0
 RES_FAIL=0
diff --git a/tests.anormalize.sh b/tests.anormalize.sh
index d69423a3fdd3b5acd0279aa0ef3ff58cd335b5d2..52f990d9e6b7f0f93b3677fe88b422acc2134d00 100755
--- a/tests.anormalize.sh
+++ b/tests.anormalize.sh
@@ -13,7 +13,7 @@ RAND_TERMINALS=4
 STRING_LENGHTS=6
 
 EXECUTABLES="arand2 atrim2 anormalize2 agenerate2 aepsilon2"
-TESTS_DIR="../examples2/grammar"
+TESTS_DIR="`pwd`/examples2/grammar"
 
 RES_GOOD=0
 RES_FAIL=0
diff --git a/tests.astringology.sh b/tests.astringology.sh
index 008b480106fc13269888fc7eccb62868cf8fcdd5..d1a157775c4fd6de96888534d4c4086c3a4543a4 100755
--- a/tests.astringology.sh
+++ b/tests.astringology.sh
@@ -12,7 +12,7 @@ RAND_SIZE_PATTERN=4
 RAND_ALPHABET=4
 
 EXECUTABLES="arand2 atrim2 adeterminize2 anormalize2 "
-TESTS_DIR="../examples2/string"
+TESTS_DIR="`pwd`/examples2/string"
 
 RES_GOOD=0
 RES_FAIL=0
diff --git a/tests.examples.sh b/tests.examples.sh
index 597b76937ff3a1430ca6ae27e2ab30cc6c2c5c21..4f6dc10747fdfa2ba20f3e7055e365ee9bfce4a3 100755
--- a/tests.examples.sh
+++ b/tests.examples.sh
@@ -7,7 +7,7 @@ TESTCASE_TIMEOUT=10
 LOGFILE="log_tests.txt"
 
 EXECUTABLES="aecho2"
-TESTS_DIR="../examples2"
+TESTS_DIR="`pwd`/examples2"
 
 RES_GOOD=0
 RES_FAIL=0
diff --git a/tniceprint/makefile b/tniceprint/makefile
index 2c6fadea108e78e6a12dae6096d43947480b77fa..f19c977454b02b96a4b7f81bfdb2e4dcaab19f6e 100644
--- a/tniceprint/makefile
+++ b/tniceprint/makefile
@@ -1,4 +1,5 @@
 SHELL:=/bin/bash
+USE_RAMDISK ?= 0
 -include makefile.conf
 
 define NEW_LINE
@@ -22,7 +23,14 @@ all:
 	@echo "What to do master?"
 
 obj%/makefile: makefile makefile.conf
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	echo "\
 	SHELL:=/bin/bash$${NEW_LINE}\
 	SRCDIR:=$${NEW_LINE}\
@@ -81,11 +89,25 @@ clean: clean-debug clean-release
 
 
 bin-debug/$(EXECUTABLE): obj-debug/ $(OBJECTS_DEBUG)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_DEBUG) -o $@ $(LDFLAGS_DEBUG)
 
 bin-release/$(EXECUTABLE): obj-release/ $(OBJECTS_RELEASE)
-	mkdir -p $(dir $@)
+	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
+		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /, , $(dir $@)) 2>/dev/null;\
+	fi;\
+	if [ -L $(subst /, , $(dir $@)) ]; then\
+		mkdir -p `readlink $(subst /, , $(dir $@))`;\
+	else\
+		mkdir -p $(dir $@);\
+	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
 
@@ -110,9 +132,21 @@ build-release: bin-release/$(EXECUTABLE)
 
 
 clean-debug:
+	if [ -L obj-debug ]; then\
+		rm -r `readlink obj-debug`;\
+	fi
+	if [ -L bin-debug ]; then\
+		rm -r `readlink bin-debug`;\
+	fi
 	$(RM) -r *.o *.d bin-debug obj-debug
 
 clean-release:
+	if [ -L obj-release ]; then\
+		rm -r `readlink obj-release`;\
+	fi
+	if [ -L lib-release ]; then\
+		rm -r `readlink lib-release`;\
+	fi
 	$(RM) -r *.o *.d bin-release obj-release