mirror of https://github.com/YosysHQ/yosys.git
74 lines
2.2 KiB
Makefile
74 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)
|