mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 19:52:31 +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)
 |