diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 6ca28d7b4b44ae8230d39ef812478161985bee46..3ad5cd610b2f398a8b29d8a13d35c4fb8a97b863 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -21,7 +21,8 @@ before_script:
 
 .build: &build
   script:
-    - make build-release
+    - make build-code-release
+    - make install-release
   artifacts:
     paths:
       - bin-release/
diff --git a/aaccess2/makefile b/aaccess2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aaccess2/makefile
+++ b/aaccess2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aarbology2/makefile b/aarbology2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aarbology2/makefile
+++ b/aarbology2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/acast2/makefile b/acast2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/acast2/makefile
+++ b/acast2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/acompaction2/makefile b/acompaction2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/acompaction2/makefile
+++ b/acompaction2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/acompare2/makefile b/acompare2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/acompare2/makefile
+++ b/acompare2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aconversions2/makefile b/aconversions2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aconversions2/makefile
+++ b/aconversions2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aconvert2/makefile b/aconvert2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aconvert2/makefile
+++ b/aconvert2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aderivation2/makefile b/aderivation2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aderivation2/makefile
+++ b/aderivation2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/adeterminize2/makefile b/adeterminize2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/adeterminize2/makefile
+++ b/adeterminize2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aecho2/makefile b/aecho2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aecho2/makefile
+++ b/aecho2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aepsilon2/makefile b/aepsilon2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aepsilon2/makefile
+++ b/aepsilon2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/agenerate2/makefile b/agenerate2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/agenerate2/makefile
+++ b/agenerate2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aintegral2/makefile b/aintegral2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aintegral2/makefile
+++ b/aintegral2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alangop2/makefile b/alangop2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/alangop2/makefile
+++ b/alangop2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2algo/makefile b/alib2algo/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2algo/makefile
+++ b/alib2algo/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2algo_experimental/makefile b/alib2algo_experimental/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2algo_experimental/makefile
+++ b/alib2algo_experimental/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2common/makefile b/alib2common/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2common/makefile
+++ b/alib2common/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2data/makefile b/alib2data/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2data/makefile
+++ b/alib2data/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2data_experimental/makefile b/alib2data_experimental/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2data_experimental/makefile
+++ b/alib2data_experimental/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2elgo/makefile b/alib2elgo/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2elgo/makefile
+++ b/alib2elgo/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2measurepp/makefile b/alib2measurepp/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2measurepp/makefile
+++ b/alib2measurepp/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2raw/makefile b/alib2raw/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2raw/makefile
+++ b/alib2raw/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2std/makefile b/alib2std/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2std/makefile
+++ b/alib2std/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2str/makefile b/alib2str/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2str/makefile
+++ b/alib2str/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/alib2str_experimental/makefile b/alib2str_experimental/makefile
index 4071745bd2294ce5f322510c9e857adaff8a8861..0525c1d771b4de432166551c73cd9c83e3d9f9af 100644
--- a/alib2str_experimental/makefile
+++ b/alib2str_experimental/makefile
@@ -15,10 +15,10 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 space := $(eval) $(eval)
 
 LDFLAGS_DEBUG:=-rdynamic -shared
-TEST_LDFLAGS_DEBUG:=-Wl,-no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed -Llib-debug $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 LDFLAGS_RELEASE:=-rdynamic -shared
-TEST_LDFLAGS_RELEASE:=-Wl,-no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 TEST_OBJECTS_DEBUG:=$(patsubst test-src/%.cpp,test-obj-debug/%.o, $(shell find test-src/ -name *cpp))
@@ -118,7 +118,7 @@ lib-release/$(FULL_LIBRARY): $(OBJECTS_RELEASE) obj-release/
 	fi
 	$(CXX) $(OBJECTS_RELEASE) -o $@ $(LDFLAGS_RELEASE)
 
-test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-obj-debug/
+test-bin-debug/$(TESTBIN): $(TEST_OBJECTS_DEBUG) test-obj-debug/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -129,7 +129,7 @@ test-bin-debug/$(TESTBIN): lib-debug/$(FULL_LIBRARY) $(TEST_OBJECTS_DEBUG) test-
 	fi
 	$(CXX) $(TEST_OBJECTS_DEBUG) -o $@ $(TEST_LDFLAGS_DEBUG)
 
-test-bin-release/$(TESTBIN): lib-release/$(FULL_LIBRARY) $(TEST_OBJECTS_RELEASE) test-obj-release/
+test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 	if [ ! -w $(dir $@) ] && [ $(USE_RAMDISK) -eq 1 ]; then\
 		ln -s /tmp/`date +'%s%N'`-$(dir $@) $(subst /,, $(dir $@)) 2>/dev/null;\
 	fi;\
@@ -167,21 +167,34 @@ $(TEST_OBJECTS_DEBUG): test-obj-debug/
 $(TEST_OBJECTS_RELEASE): test-obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-build-test-debug: test-bin-debug/$(TESTBIN)
+test-unit-debug:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
 
-build-test-release: test-bin-release/$(TESTBIN)
+test-unit-release:
 	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
 
-build-debug: lib-debug/$(FULL_LIBRARY)
+build-test-debug: test-bin-debug/$(TESTBIN)
+
+build-test-release: test-bin-release/$(TESTBIN)
+
+build-code-debug: lib-debug/$(FULL_LIBRARY)
 
-build-release: lib-release/$(FULL_LIBRARY)
+build-code-release: lib-release/$(FULL_LIBRARY)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
-debug: build-test-debug
+debug:
+	$(MAKE) build-code-debug
+	$(MAKE) build-test-debug
+	$(MAKE) test-unit-debug
 
-release: build-test-release
+release:
+	$(MAKE) build-code-release
+	$(MAKE) build-test-release
+	$(MAKE) test-unit-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/all-debug.sh b/all-debug.sh
new file mode 100755
index 0000000000000000000000000000000000000000..0a95f29360e38a86a62194dcc4430e3b67e8e636
--- /dev/null
+++ b/all-debug.sh
@@ -0,0 +1,4 @@
+THREADS=${1:-5}
+USE_RAMDISK=1 CXX=clang++ make debug -j${THREADS}
+USE_RAMDISK=1 CXX=clang++ make install-debug -j${THREADS}
+USE_RAMDISK=1 CXX=clang++ make test-debug -j${THREADS}
diff --git a/all-release.sh b/all-release.sh
new file mode 100755
index 0000000000000000000000000000000000000000..ed0c6f615ae7cf1f36d99b636f5a7967a23198bd
--- /dev/null
+++ b/all-release.sh
@@ -0,0 +1,4 @@
+THREADS=${1:-5}
+USE_RAMDISK=1 CXX=g++-6 make release -j${THREADS}
+USE_RAMDISK=1 CXX=g++-6 make install-release -j${THREADS}
+USE_RAMDISK=1 CXX=g++-6 make test-release -j${THREADS}
diff --git a/ameasure2/makefile b/ameasure2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/ameasure2/makefile
+++ b/ameasure2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/ameasurep2/makefile b/ameasurep2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/ameasurep2/makefile
+++ b/ameasurep2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aminimize2/makefile b/aminimize2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aminimize2/makefile
+++ b/aminimize2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/anormalize2/makefile b/anormalize2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/anormalize2/makefile
+++ b/anormalize2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/aquery2/makefile b/aquery2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/aquery2/makefile
+++ b/aquery2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/arand2/makefile b/arand2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/arand2/makefile
+++ b/arand2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/araw2/makefile b/araw2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/araw2/makefile
+++ b/araw2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/arename2/makefile b/arename2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/arename2/makefile
+++ b/arename2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/areverse2/makefile b/areverse2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/areverse2/makefile
+++ b/areverse2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/arun2/makefile b/arun2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/arun2/makefile
+++ b/arun2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/astat2/makefile b/astat2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/astat2/makefile
+++ b/astat2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/astringology2/makefile b/astringology2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/astringology2/makefile
+++ b/astringology2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/atrim2/makefile b/atrim2/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/atrim2/makefile
+++ b/atrim2/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc
diff --git a/build-debug.sh b/build-debug.sh
new file mode 100755
index 0000000000000000000000000000000000000000..61f7dcba220cc8223f07620d5a54e41be21a845e
--- /dev/null
+++ b/build-debug.sh
@@ -0,0 +1,3 @@
+THREADS=${1:-5}
+USE_RAMDISK=1 CXX=clang++ make build-code-debug -j${THREADS}
+USE_RAMDISK=1 CXX=clang++ make install-debug -j${THREADS}
diff --git a/build-release.sh b/build-release.sh
new file mode 100755
index 0000000000000000000000000000000000000000..d2cff739666deafab18e6c6827c039623ab09cc3
--- /dev/null
+++ b/build-release.sh
@@ -0,0 +1,3 @@
+THREADS=${1:-5}
+USE_RAMDISK=1 CXX=g++-6 make build-code-release -j${THREADS}
+USE_RAMDISK=1 CXX=g++-6 make install-release -j${THREADS}
diff --git a/makefile b/makefile
index 75740c53b442cc20f9c2ea44950774748efbe8ff..ce71ba5fa3112a2fe91b16bb239cdfc84ed11a62 100644
--- a/makefile
+++ b/makefile
@@ -89,17 +89,35 @@ SUBDIRS_WITH_MAKE = $(dir $(wildcard */makefile))
 all:
 	@echo "What to do master?"
 
-debug: | build-test-debug test-debug
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# standalone main targets
 
-release: | build-test-release test-release
+test-unit-debug test-release-debug:
+	for dir in $(SUBDIRS_LIBS); do \
+		$(MAKE) $@ -C $$dir || exit 1; \
+	done
 
-build-debug build-test-debug:
+build-test-debug build-test-release:
 	for dir in $(SUBDIRS_LIBS); do \
 		$(MAKE) $@ -C $$dir || exit 1; \
 	done
-	for dir in $(SUBDIRS_BINS); do \
-		$(MAKE) debug -C $$dir || exit 1; \
+
+build-code-debug build-code-release:
+	for dir in $(SUBDIRS_LIBS) $(SUBDIRS_BINS); do \
+		$(MAKE) $@ -C $$dir || exit 1; \
+	done
+
+test-debug:
+	for test in $(wildcard tests.*.sh); do \
+		./$$test debug $(JOBS); \
+	done
+
+test-release:
+	for test in $(wildcard tests.*.sh); do \
+		./$$test release $(JOBS); \
 	done
+
+install-debug:
 	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;\
@@ -110,21 +128,15 @@ build-debug build-test-debug:
 	fi
 	rm -rf $(addsuffix -debug, $(BINFOLDER))/*
 	for dir in $(SUBDIRS_LIBS); do \
-	    cp $$dir/lib-debug/* $(addsuffix -debug, $(BINFOLDER)); \
+		cp $$dir/lib-debug/* $(addsuffix -debug, $(BINFOLDER)); \
 	done
 	for dir in $(SUBDIRS_BINS); do \
-	    cp $$dir/bin-debug/* $(addsuffix -debug, $(BINFOLDER)); \
+		cp $$dir/bin-debug/* $(addsuffix -debug, $(BINFOLDER)); \
 	done
 	cp translateAddresses $(addsuffix -debug, $(BINFOLDER)); \
 	cp xmlFormat $(addsuffix -debug, $(BINFOLDER))
 
-build-release build-test-release:
-	for dir in $(SUBDIRS_LIBS); do \
-		$(MAKE) $@ -C $$dir || exit 1; \
-	done
-	for dir in $(SUBDIRS_BINS); do \
-		$(MAKE) release -C $$dir || exit 1; \
-	done
+install-release:
 	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;\
@@ -135,23 +147,32 @@ build-release build-test-release:
 	fi
 	rm -rf $(addsuffix -release, $(BINFOLDER))/*
 	for dir in $(SUBDIRS_LIBS); do \
-	    cp $$dir/lib-release/* $(addsuffix -release, $(BINFOLDER)); \
+		cp $$dir/lib-release/* $(addsuffix -release, $(BINFOLDER)); \
 	done
 	for dir in $(SUBDIRS_BINS); do \
-	    cp $$dir/bin-release/* $(addsuffix -release, $(BINFOLDER)); \
+		cp $$dir/bin-release/* $(addsuffix -release, $(BINFOLDER)); \
 	done
 	cp translateAddresses $(addsuffix -release, $(BINFOLDER)); \
 	cp xmlFormat $(addsuffix -release, $(BINFOLDER))
 
-test-debug:
-	for test in $(wildcard tests.*.sh); do \
-		./$$test debug $(JOBS); \
+debug:
+	for dir in $(SUBDIRS_LIBS); do \
+		$(MAKE) $@ -C $$dir || exit 1; \
+	done
+	for dir in $(SUBDIRS_BINS); do \
+		$(MAKE) $@ -C $$dir || exit 1; \
 	done
 
-test-release:
-	for test in $(wildcard tests.*.sh); do \
-		./$$test release $(JOBS); \
+release:
+	for dir in $(SUBDIRS_LIBS); do \
+		$(MAKE) $@ -C $$dir || exit 1; \
 	done
+	for dir in $(SUBDIRS_BINS); do \
+		$(MAKE) $@ -C $$dir || exit 1; \
+	done
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
 
 clean: clean-debug clean-release
 	$(RM) -r bin-debug bin-release
diff --git a/tniceprint/makefile b/tniceprint/makefile
index ab3f851a72976bccbd05e5543b5deafbc26f036d..e3a4fe16e668a8fb88229dc75be839d8e4a9a343 100644
--- a/tniceprint/makefile
+++ b/tniceprint/makefile
@@ -11,9 +11,9 @@ export NEW_LINE
 
 CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qual -Wdelete-non-virtual-dtor -Wredundant-decls
 
-LDFLAGS_DEBUG:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-Wl,-no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
+LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic $(addprefix -l, $(LINK_LIBRARIES)) -Wl,-rpath,.
 
 OBJECTS_DEBUG:=$(patsubst src/%.cpp,obj-debug/%.o, $(shell find src/ -name *cpp))
 
@@ -128,11 +128,20 @@ $(OBJECTS_DEBUG): obj-debug/
 $(OBJECTS_RELEASE): obj-release/
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-# main targets
+# standalone main targets
 
-debug: bin-debug/$(EXECUTABLE)
+build-code-debug: bin-debug/$(EXECUTABLE)
 
-release: bin-release/$(EXECUTABLE)
+build-code-release: bin-release/$(EXECUTABLE)
+
+# -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# do all main targets
+
+debug:
+	$(MAKE) build-code-release
+
+release:
+	$(MAKE) build-code-release
 
 clean: clean-debug clean-release
 	$(RM) -r doc