2 # Matt McCutchen's Big Integer Library
5 # Mention default target.
8 # Implicit rule to compile C++ files. Modify to your taste.
10 g++ -c -O2 -Wall -Wextra -pedantic $<
12 # Components of the library.
13 library-objects = BigUnsigned.o BigInteger.o BigUnsignedInABase.o BigIntegerUtils.o
14 library-headers = NumberlikeArray.hh BigUnsigned.hh BigUnsignedInABase.hh BigInteger.hh BigIntegerLibrary.hh
16 # To ``make the library'', make all its objects using the implicit rule.
17 library : $(library-objects)
19 # Extra dependencies from `#include'.
20 BigUnsigned.o : NumberlikeArray.hh BigUnsigned.hh
21 BigInteger.o : NumberlikeArray.hh BigUnsigned.hh BigInteger.hh
22 BigUnsignedInABase.o : NumberlikeArray.hh BigUnsigned.hh BigUnsignedInABase.hh
23 BigIntegerUtils.o : NumberlikeArray.hh BigUnsigned.hh BigUnsignedInABase.hh BigInteger.hh
25 # The rules below build a program that uses the library. They are preset to
26 # build ``sample'' from ``sample.cc''. You can change the name(s) of the
27 # source file(s) and program file to build your own program, or you can write
30 # Components of the program.
32 program-objects = sample.o
34 # Conservatively assume all the program source files depend on all the library
35 # headers. You can change this if it is not the case.
36 $(program-objects) : $(library-headers)
38 # How to link the program. The implicit rule covers individual objects.
39 $(program) : $(program-objects) $(library-objects)
40 g++ $(program-objects) $(library-objects) -o $(program)
42 # Delete all generated files we know about.
44 rm -f $(library-objects) $(program-objects) $(program)
46 # I removed the *.tag dependency tracking system because it had few advantages
47 # over manually entering all the dependencies. If there were a portable,
48 # reliable dependency tracking system, I'd use it, but I know of no such;
49 # cons and depcomp are almost good enough.
51 # Come back and define default target.
52 all : library $(program)