From d64d48ece3098215d6664f6d41e38a899169701c Mon Sep 17 00:00:00 2001
From: Jan Travnicek <Jan.Travnicek@fit.cvut.cz>
Date: Sat, 6 Jan 2018 19:11:38 +0100
Subject: [PATCH] improve library makefiles

---
 alib2abstraction/makefile.conf       |  8 ++++--
 alib2algo/makefile.conf              | 10 +++++---
 alib2algo_experimental/makefile.conf | 10 +++++---
 alib2aux/makefile.conf               | 10 +++++---
 alib2cli/makefile.conf               | 10 +++++---
 alib2common/makefile.conf            |  8 ++++--
 alib2data/makefile.conf              | 10 +++++---
 alib2data_experimental/makefile.conf | 10 +++++---
 alib2dummy/makefile.conf             | 10 +++++---
 alib2elgo/makefile.conf              | 10 +++++---
 alib2measure/makefile.conf           |  8 ++++--
 alib2raw/makefile.conf               | 10 +++++---
 alib2std/makefile.conf               |  8 ++++--
 alib2str/makefile.conf               | 10 +++++---
 alib2xml/makefile.conf               | 10 +++++---
 makefile-library                     | 38 ++++++++++++++++++++--------
 16 files changed, 128 insertions(+), 52 deletions(-)

diff --git a/alib2abstraction/makefile.conf b/alib2abstraction/makefile.conf
index fac18fab7f..20108e6424 100644
--- a/alib2abstraction/makefile.conf
+++ b/alib2abstraction/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2abstraction
 TESTBIN:=alib2test
-LINK_PATHS=../alib2std/
+
 LINK_LIBRARIES=alib2std
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2std/src/
+SYSTEM_LIBRARIES=
+SYSTEM_INCLUDE_PATHS=
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2algo/makefile.conf b/alib2algo/makefile.conf
index 618f62bbb4..9b98b44143 100644
--- a/alib2algo/makefile.conf
+++ b/alib2algo/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2algo
 TESTBIN:=alib2test
-LINK_PATHS=../alib2str/ ../alib2data/ ../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2str alib2data alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2str/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=alib2str
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2algo_experimental/makefile.conf b/alib2algo_experimental/makefile.conf
index 4db6a26f79..0bff7174ac 100644
--- a/alib2algo_experimental/makefile.conf
+++ b/alib2algo_experimental/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2algo_experimental
 TESTBIN:=alib2test
-LINK_PATHS=../alib2algo/ ../alib2str/ ../alib2data_experimental/ ../alib2data/ ../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2algo alib2str alib2data_experimental alib2data alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2algo/src/ \$$(SOURCES_BASE_DIR)/../../alib2str/src/ \$$(SOURCES_BASE_DIR)/../../alib2data_experimental/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2algo alib2data_experimental alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=alib2str
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2aux/makefile.conf b/alib2aux/makefile.conf
index 0d085a11e1..eb240b3b0d 100644
--- a/alib2aux/makefile.conf
+++ b/alib2aux/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2aux
 TESTBIN:=alib2test
-LINK_PATHS=../alib2str/ ../alib2data/ ../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2str alib2data alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2str/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2str alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2cli/makefile.conf b/alib2cli/makefile.conf
index f6fc9bd373..a433dc4b45 100644
--- a/alib2cli/makefile.conf
+++ b/alib2cli/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2cli
 TESTBIN:=alib2test
-LINK_PATHS=../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2xml alib2common alib2abstraction alib2measure alib2std xml2 stdc++fs
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2 stdc++fs
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2common/makefile.conf b/alib2common/makefile.conf
index 8e7a32b57b..9d632f126b 100644
--- a/alib2common/makefile.conf
+++ b/alib2common/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2common
 TESTBIN:=alib2test
-LINK_PATHS=../alib2abstraction/ ../alib2measure/ ../alib2std/
+
 LINK_LIBRARIES=alib2abstraction alib2measure alib2std
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/
+SYSTEM_LIBRARIES=
+SYSTEM_INCLUDE_PATHS=
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2data/makefile.conf b/alib2data/makefile.conf
index 2adea3d5f2..367126234c 100644
--- a/alib2data/makefile.conf
+++ b/alib2data/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2data
 TESTBIN:=alib2test
-LINK_PATHS=../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2data_experimental/makefile.conf b/alib2data_experimental/makefile.conf
index 338aede229..f064ddaf7d 100644
--- a/alib2data_experimental/makefile.conf
+++ b/alib2data_experimental/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2data_experimental
 TESTBIN:=alib2test
-LINK_PATHS=../alib2data/ ../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2data alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2dummy/makefile.conf b/alib2dummy/makefile.conf
index b4d362f052..b8647605d2 100644
--- a/alib2dummy/makefile.conf
+++ b/alib2dummy/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2dummy
 TESTBIN:=alib2test
-LINK_PATHS=../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2elgo/makefile.conf b/alib2elgo/makefile.conf
index 8ae0d6bfb8..b03f3f3077 100644
--- a/alib2elgo/makefile.conf
+++ b/alib2elgo/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2elgo
 TESTBIN:=alib2test
-LINK_PATHS=../alib2algo/ ../alib2str/ ../alib2data/ ../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2algo alib2str alib2data alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2algo/src/ \$$(SOURCES_BASE_DIR)/../../alib2str/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2algo alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=alib2str
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2measure/makefile.conf b/alib2measure/makefile.conf
index df589ff30d..3eb6995bbf 100644
--- a/alib2measure/makefile.conf
+++ b/alib2measure/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2measure
 TESTBIN:=alib2test
-LINK_PATHS=
+
 LINK_LIBRARIES=
-INCLUDE_PATHS=
+SYSTEM_LIBRARIES=
+SYSTEM_INCLUDE_PATHS=
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2raw/makefile.conf b/alib2raw/makefile.conf
index 612665e3b1..f388eb0565 100644
--- a/alib2raw/makefile.conf
+++ b/alib2raw/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2raw
 TESTBIN:=alib2test
-LINK_PATHS=../alib2data/ ../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2data alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2std/makefile.conf b/alib2std/makefile.conf
index 51853190d4..eece1a74ef 100644
--- a/alib2std/makefile.conf
+++ b/alib2std/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2std
 TESTBIN:=alib2test
-LINK_PATHS=
+
 LINK_LIBRARIES=
-INCLUDE_PATHS=
+SYSTEM_LIBRARIES=
+SYSTEM_INCLUDE_PATHS=
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2str/makefile.conf b/alib2str/makefile.conf
index b532a047ff..36a4e4ebb2 100644
--- a/alib2str/makefile.conf
+++ b/alib2str/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2str
 TESTBIN:=alib2test
-LINK_PATHS=../alib2data/ ../alib2xml/ ../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2data alib2xml alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2data alib2xml alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/alib2xml/makefile.conf b/alib2xml/makefile.conf
index 83b18a531c..be93c7ac77 100644
--- a/alib2xml/makefile.conf
+++ b/alib2xml/makefile.conf
@@ -1,5 +1,9 @@
 LIBRARY:=alib2xml
 TESTBIN:=alib2test
-LINK_PATHS=../alib2common/ ../alib2abstraction/ ../alib2measure/ ../alib2std/
-LINK_LIBRARIES=alib2common alib2abstraction alib2measure alib2std xml2
-INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2abstraction/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
+
+LINK_LIBRARIES=alib2common alib2abstraction alib2measure alib2std
+SYSTEM_LIBRARIES=xml2
+SYSTEM_INCLUDE_PATHS=/usr/include/libxml2
+TEST_LINK_LIBRARIES=
+TEST_SYSTEM_LIBRARIES=
+TEST_SYSTEM_INCLUDE_PATHS=
diff --git a/makefile-library b/makefile-library
index 5b1ce80510..0ac6e9c920 100644
--- a/makefile-library
+++ b/makefile-library
@@ -22,11 +22,27 @@ CXX_FLAGS := -Wall -pedantic -Wextra -Werror -Wshadow -Wpointer-arith -Wcast-qua
 
 space := $(eval) $(eval)
 
-LDFLAGS_DEBUG:=-rdynamic -shared $(addprefix -L, $(addsuffix lib-debug, $(LINK_PATHS))) $(addprefix -l, $(LINK_LIBRARIES))
-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_LINK_LIBRARIES+= $(LINK_LIBRARIES) $(LIBRARY)
+TEST_SYSTEM_LIBRARIES+= $(SYSTEM_LIBRARIES)
+
+
+INCLUDE_PATHS:=$(addprefix -I, $(realpath $(addsuffix /src, $(addprefix ../, $(LINK_LIBRARIES) $(LIBRARY)))) $(SYSTEM_INCLUDE_PATHS))
+TEST_INCLUDE_PATHS:=$(addprefix -I, $(realpath $(addsuffix /src, $(addprefix ../, $(TEST_LINK_LIBRARIES)))) $(TEST_SYSTEM_INCLUDE_PATHS))
+
+
+DEBUG_LINK_PATHS:=$(addsuffix /lib-debug, $(addprefix ../, $(LINK_LIBRARIES)))
+DEBUG_TEST_LINK_PATHS:=$(addsuffix /lib-debug, $(addprefix ../, $(TEST_LINK_LIBRARIES)))
+
+LDFLAGS_DEBUG:=-rdynamic -shared $(addprefix -L, $(DEBUG_LINK_PATHS)) $(addprefix -l, $(LINK_LIBRARIES) $(SYSTEM_LIBRARIES))
+TEST_LDFLAGS_DEBUG:=-Wl,--no-as-needed $(addprefix -L, $(DEBUG_TEST_LINK_PATHS)) -rdynamic $(addprefix -l, $(TEST_LINK_LIBRARIES) $(TEST_SYSTEM_LIBRARIES)) -lcppunit -Wl,-rpath,.
+
+
+RELEASE_LINK_PATHS:=$(addsuffix /lib-release, $(addprefix ../, $(LINK_LIBRARIES)))
+RELEASE_TEST_LINK_PATHS:=$(addsuffix /lib-release, $(addprefix ../, $(TEST_LINK_LIBRARIES)))
+
+LDFLAGS_RELEASE:=-rdynamic -shared $(LTO_PARAM) $(addprefix -L, $(RELEASE_LINK_PATHS)) $(addprefix -l, $(LINK_LIBRARIES) $(SYSTEM_LIBRARIES))
+TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed $(addprefix -L, $(RELEASE_TEST_LINK_PATHS)) -rdynamic $(addprefix -l, $(TEST_LINK_LIBRARIES) $(TEST_SYSTEM_LIBRARIES)) -lcppunit $(LTO_PARAM) -Wl,-rpath,.
 
-LDFLAGS_RELEASE:=-rdynamic -shared $(LTO_PARAM) $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) $(addprefix -l, $(LINK_LIBRARIES))
-TEST_LDFLAGS_RELEASE:=-Wl,--no-as-needed -Llib-release $(addprefix -L, $(addsuffix lib-release, $(LINK_PATHS))) -rdynamic -l$(LIBRARY) $(addprefix -l, $(LINK_LIBRARIES)) -lcppunit $(LTO_PARAM) -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))
@@ -64,7 +80,7 @@ FORCE:
 	$${NEW_LINE}\
 	export NEW_LINE$${NEW_LINE}\
 	$${NEW_LINE}\
-	CXXFLAGS:= -pipe -std=c++14 \$$(CXX_OTHER_FLAGS) -c $(CXX_FLAGS) -fPIC \$$(addprefix -I, \$$(realpath $(INCLUDE_PATHS))) -I\$$(realpath \$$(SOURCES_BASE_DIR)/../src/)$${NEW_LINE}\
+	CXXFLAGS:= -pipe -std=c++14 \$$(CXX_OTHER_FLAGS) -c -fPIC$${NEW_LINE}\
 	$${NEW_LINE}\
 	SOURCES:= \$$(shell find \$$(SOURCES_BASE_DIR)/\$$(SRCDIR) -maxdepth 1 -type f -name \"*.cpp\")$${NEW_LINE}\
 	DEPENDENCIES:= \$$(patsubst \$$(SOURCES_BASE_DIR)/\$$(SRCDIR)%.cpp, \$$(OBJECTS_BASE_DIR)/\$$(SRCDIR)%.d, \$$(SOURCES))$${NEW_LINE}\
@@ -152,16 +168,16 @@ test-bin-release/$(TESTBIN): $(TEST_OBJECTS_RELEASE) test-obj-release/
 # subdir make calls
 
 obj-debug/: FORCE obj-debug/makefile
-	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath obj-debug) SOURCES_BASE_DIR=$(realpath src) CXX_OTHER_FLAGS="-g -Og -DDEBUG"
+	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath obj-debug) SOURCES_BASE_DIR=$(realpath src) CXX_OTHER_FLAGS="-g -Og -DDEBUG $(CXX_FLAGS) $(INCLUDE_PATHS)"
 
 obj-release/: FORCE obj-release/makefile
-	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath obj-release) SOURCES_BASE_DIR=$(realpath src) CXX_OTHER_FLAGS="-O3 -DNDEBUG -DRELEASE $(LTO_PARAM) $(MARCH_PARAM)"
+	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath obj-release) SOURCES_BASE_DIR=$(realpath src) CXX_OTHER_FLAGS="-O3 -DNDEBUG -DRELEASE $(LTO_PARAM) $(MARCH_PARAM) $(CXX_FLAGS) $(INCLUDE_PATHS)"
 
 test-obj-debug/: FORCE test-obj-debug/makefile
-	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath test-obj-debug) SOURCES_BASE_DIR=$(realpath test-src) CXX_OTHER_FLAGS="-g -Og -DDEBUG"
+	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath test-obj-debug) SOURCES_BASE_DIR=$(realpath test-src) CXX_OTHER_FLAGS="-g -Og -DDEBUG $(CXX_FLAGS) $(INCLUDE_PATHS) $(TEST_INCLUDE_PATHS)"
 
 test-obj-release/: FORCE test-obj-release/makefile
-	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath test-obj-release) SOURCES_BASE_DIR=$(realpath test-src) CXX_OTHER_FLAGS="-O3 -DNDEBUG -DRELEASE $(LTO_PARAM) $(MARCH_PARAM)"
+	$(MAKE) -C $@ OBJECTS_BASE_DIR=$(realpath test-obj-release) SOURCES_BASE_DIR=$(realpath test-src) CXX_OTHER_FLAGS="-O3 -DNDEBUG -DRELEASE $(LTO_PARAM) $(MARCH_PARAM) $(CXX_FLAGS) $(INCLUDE_PATHS) $(TEST_INCLUDE_PATHS)"
 
 # -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 # objects dependencies
@@ -178,10 +194,10 @@ $(TEST_OBJECTS_RELEASE): test-obj-release/
 # standalone main targets
 
 test-unit-debug:
-	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-debug:,$(LINK_PATHS)))lib-debug" test-bin-debug/$(TESTBIN)
+	LD_LIBRARY_PATH="$(subst $(space),:,$(DEBUG_TEST_LINK_PATHS))" test-bin-debug/$(TESTBIN)
 
 test-unit-release:
-	LD_LIBRARY_PATH="$(subst $(space),,$(addsuffix lib-release:,$(LINK_PATHS)))lib-release" test-bin-release/$(TESTBIN)
+	LD_LIBRARY_PATH="$(subst $(space),:,$(RELEASE_TEST_LINK_PATHS))" test-bin-release/$(TESTBIN)
 
 build-test-debug: test-bin-debug/$(TESTBIN)
 
-- 
GitLab