mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 13:29:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# Mention default target.
 | 
						|
all:
 | 
						|
 | 
						|
# Implicit rule to compile C++ files.  Modify to your taste.
 | 
						|
%.o: %.cc
 | 
						|
	g++ -c -O2 -Wall -Wextra -pedantic $<
 | 
						|
 | 
						|
# Components of the library.
 | 
						|
library-objects = \
 | 
						|
	BigUnsigned.o \
 | 
						|
	BigInteger.o \
 | 
						|
	BigIntegerAlgorithms.o \
 | 
						|
	BigUnsignedInABase.o \
 | 
						|
	BigIntegerUtils.o \
 | 
						|
 | 
						|
library-headers = \
 | 
						|
	NumberlikeArray.hh \
 | 
						|
	BigUnsigned.hh \
 | 
						|
	BigInteger.hh \
 | 
						|
	BigIntegerAlgorithms.hh \
 | 
						|
	BigUnsignedInABase.hh \
 | 
						|
	BigIntegerLibrary.hh \
 | 
						|
 | 
						|
# To ``make the library'', make all its objects using the implicit rule.
 | 
						|
library: $(library-objects)
 | 
						|
 | 
						|
# Conservatively assume that all the objects depend on all the headers.
 | 
						|
$(library-objects): $(library-headers)
 | 
						|
 | 
						|
# TESTSUITE (NOTE: Currently expects a 32-bit system)
 | 
						|
# Compiling the testsuite.
 | 
						|
testsuite.o: $(library-headers)
 | 
						|
testsuite: testsuite.o $(library-objects)
 | 
						|
	g++ $^ -o $@
 | 
						|
# Extract the expected output from the testsuite source.
 | 
						|
testsuite.expected: testsuite.cc
 | 
						|
	nl -ba -p -s: $< | sed -nre 's,^ +([0-9]+):.*//([^ ]),Line \1: \2,p' >$@
 | 
						|
# Run the testsuite.
 | 
						|
.PHONY: test
 | 
						|
test: testsuite testsuite.expected
 | 
						|
	./run-testsuite
 | 
						|
testsuite-cleanfiles = \
 | 
						|
	testsuite.o testsuite testsuite.expected \
 | 
						|
	testsuite.out testsuite.err
 | 
						|
 | 
						|
# The rules below build a program that uses the library.  They are preset to
 | 
						|
# build ``sample'' from ``sample.cc''.  You can change the name(s) of the
 | 
						|
# source file(s) and program file to build your own program, or you can write
 | 
						|
# your own Makefile.
 | 
						|
 | 
						|
# Components of the program.
 | 
						|
program = sample
 | 
						|
program-objects = sample.o
 | 
						|
 | 
						|
# Conservatively assume all the program source files depend on all the library
 | 
						|
# headers.  You can change this if it is not the case.
 | 
						|
$(program-objects) : $(library-headers)
 | 
						|
 | 
						|
# How to link the program.  The implicit rule covers individual objects.
 | 
						|
$(program) : $(program-objects) $(library-objects)
 | 
						|
	g++ $^ -o $@
 | 
						|
 | 
						|
# Delete all generated files we know about.
 | 
						|
clean :
 | 
						|
	rm -f $(library-objects) $(testsuite-cleanfiles) $(program-objects) $(program)
 | 
						|
 | 
						|
# I removed the *.tag dependency tracking system because it had few advantages
 | 
						|
# over manually entering all the dependencies.  If there were a portable,
 | 
						|
# reliable dependency tracking system, I'd use it, but I know of no such;
 | 
						|
# cons and depcomp are almost good enough.
 | 
						|
 | 
						|
# Come back and define default target.
 | 
						|
all : library $(program)
 |