Skip to content

Commit

Permalink
AK: Run host tests on make
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
rburchell authored and awesomekling committed Jul 21, 2019
1 parent 3b588b7 commit a321365
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 14 deletions.
49 changes: 35 additions & 14 deletions AK/Tests/Makefile
Original file line number Diff line number Diff line change
@@ -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)
2 changes: 2 additions & 0 deletions Kernel/makeall.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit a321365

Please sign in to comment.