mirror of
https://github.com/YosysHQ/yosys
synced 2025-09-30 13:19:05 +00:00
* Fix building and running unit tests * Enable unit tests * Add gtest always * test-sanitizers.yml: Use makefile.conf * proper test setup * make it run on macOS * Run libyosys build only for unit tests after testing is done * Disable LTO on public CI --------- Co-authored-by: Krystine Sherwin <93062060+KrystalDelusion@users.noreply.github.com>
61 lines
1.4 KiB
Makefile
61 lines
1.4 KiB
Makefile
UNAME_S := $(shell uname -s)
|
|
|
|
# GoogleTest flags
|
|
GTEST_PREFIX := $(shell brew --prefix googletest 2>/dev/null)
|
|
ifeq ($(GTEST_PREFIX),)
|
|
GTEST_CXXFLAGS :=
|
|
GTEST_LDFLAGS := -lgtest -lgtest_main
|
|
else
|
|
GTEST_CXXFLAGS := -I$(GTEST_PREFIX)/include
|
|
GTEST_LDFLAGS := -L$(GTEST_PREFIX)/lib -lgtest -lgtest_main
|
|
endif
|
|
|
|
ifeq ($(UNAME_S),Darwin)
|
|
RPATH = -Wl,-rpath,$(ROOTPATH)
|
|
else
|
|
RPATH = -Wl,-rpath=$(ROOTPATH)
|
|
endif
|
|
|
|
EXTRAFLAGS := -lyosys -pthread
|
|
|
|
OBJTEST := objtest
|
|
BINTEST := bintest
|
|
|
|
ALLTESTFILE := $(shell find . -name '*Test.cc' | sed 's|^\./||' | tr '\n' ' ')
|
|
TESTDIRS := $(sort $(dir $(ALLTESTFILE)))
|
|
TESTS := $(addprefix $(BINTEST)/, $(basename $(ALLTESTFILE:%Test.cc=%Test.o)))
|
|
|
|
# Prevent make from removing our .o files
|
|
.SECONDARY:
|
|
|
|
all: prepare $(TESTS) run-tests
|
|
|
|
$(BINTEST)/%: $(OBJTEST)/%.o
|
|
$(CXX) -L$(ROOTPATH) $(RPATH) $(LINKFLAGS) -o $@ $^ $(LIBS) \
|
|
$(GTEST_LDFLAGS) $(EXTRAFLAGS)
|
|
|
|
$(OBJTEST)/%.o: $(basename $(subst $(OBJTEST),.,%)).cc
|
|
$(CXX) -o $@ -c -I$(ROOTPATH) $(CPPFLAGS) $(CXXFLAGS) $(GTEST_CXXFLAGS) $^
|
|
|
|
.PHONY: prepare run-tests clean
|
|
|
|
run-tests: $(TESTS)
|
|
ifeq ($(UNAME_S),Darwin)
|
|
@for t in $^; do \
|
|
echo "Running $$t"; \
|
|
DYLD_LIBRARY_PATH=$(ROOTPATH) $$t || exit 1; \
|
|
done
|
|
else
|
|
@for t in $^; do \
|
|
echo "Running $$t"; \
|
|
$$t || exit 1; \
|
|
done
|
|
endif
|
|
|
|
prepare:
|
|
mkdir -p $(addprefix $(BINTEST)/,$(TESTDIRS))
|
|
mkdir -p $(addprefix $(OBJTEST)/,$(TESTDIRS))
|
|
|
|
clean:
|
|
rm -rf $(OBJTEST)
|
|
rm -rf $(BINTEST)
|