summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Burchell <robin+git@viroteck.net>2019-07-21 16:12:24 +0200
committerAndreas Kling <awesomekling@gmail.com>2019-07-21 18:48:44 +0200
commita3213659dd1c4210ceb7937fcc037b459d445d17 (patch)
tree24a35063fbe4854c6d0465ecfe8ae0e60d9c94c2
parent3b588b7dc051b2be69631d5da9948f8f7419b3da (diff)
downloadserenity-a3213659dd1c4210ceb7937fcc037b459d445d17.zip
AK: Run host tests on make
Restructure the makefile a little so it only builds objects once, and then run them on make clean. This is a little slower (since we're relinking tests each makeall), but it also ensures that it will work.
-rw-r--r--AK/Tests/Makefile49
-rwxr-xr-xKernel/makeall.sh2
2 files changed, 37 insertions, 14 deletions
diff --git a/AK/Tests/Makefile b/AK/Tests/Makefile
index a9d2deb49b..3847c4834e 100644
--- a/AK/Tests/Makefile
+++ b/AK/Tests/Makefile
@@ -1,26 +1,47 @@
PROGRAMS = TestString TestQueue TestVector TestHashMap TestJSON TestWeakPtr
-all: $(PROGRAMS)
+CXXFLAGS = -std=c++17 -Wall -Wextra -ggdb3 -O2 -I../ -I../../
+
+SHARED_TEST_OBJS = \
+ ../String.o \
+ ../StringImpl.o \
+ ../StringBuilder.o \
+ ../StringView.o \
+ ../LogStream.o \
+ ../JsonArray.o \
+ ../JsonObject.o \
+ ../JsonValue.o \
+ ../JsonParser.o \
-CXXFLAGS = -std=c++17 -Wall -Wextra -ggdb3 -O2
+.cpp.o:
+ @echo "HOST_CXX $<"; $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ -c $<
-TestString: TestString.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp
- $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestString.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp
+define execute-command
+$(1)
-TestQueue: TestQueue.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp
- $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestQueue.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp
+endef
+
+all: $(PROGRAMS)
+ $(foreach x,$(PROGRAMS),$(call execute-command,./$(x)))
-TestVector: TestVector.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp
- $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestVector.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp
+TestString: TestString.o $(SHARED_TEST_OBJS)
+ $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestString.o $(SHARED_TEST_OBJS)
-TestHashMap: TestHashMap.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp
- $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestHashMap.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp
+TestQueue: TestQueue.o $(SHARED_TEST_OBJS)
+ $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestQueue.o $(SHARED_TEST_OBJS)
-TestJSON: TestJSON.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp ../JsonObject.cpp ../JsonValue.cpp ../JsonArray.cpp ../JsonParser.cpp
- $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestJSON.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp ../JsonObject.cpp ../JsonValue.cpp ../JsonArray.cpp ../JsonParser.cpp
+TestVector: TestVector.o $(SHARED_TEST_OBJS)
+ $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestVector.o $(SHARED_TEST_OBJS)
+#
+TestHashMap: TestHashMap.o $(SHARED_TEST_OBJS)
+ $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestHashMap.o $(SHARED_TEST_OBJS)
+#
+TestJSON: TestJSON.o $(SHARED_TEST_OBJS)
+ $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestJSON.o $(SHARED_TEST_OBJS)
-TestWeakPtr: TestWeakPtr.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp ../WeakPtr.h ../Weakable.h
- $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestWeakPtr.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp
+TestWeakPtr: TestWeakPtr.o $(SHARED_TEST_OBJS)
+ $(PRE_CXX) $(CXX) $(CXXFLAGS) -o $@ TestWeakPtr.o $(SHARED_TEST_OBJS)
clean:
+ rm -f $(SHARED_TEST_OBJS)
rm -f $(PROGRAMS)
diff --git a/Kernel/makeall.sh b/Kernel/makeall.sh
index a4e88a02c6..ea041c6833 100755
--- a/Kernel/makeall.sh
+++ b/Kernel/makeall.sh
@@ -66,6 +66,8 @@ done
# has no need to build separately, but install headers.
(cd ../AK && ./install.sh)
+(cd ../AK/Tests && $make_cmd clean)
+(cd ../AK/Tests && $make_cmd)
sudo -E ./build-image-qemu.sh