1 # Mention default target.
4 # Implicit rule to compile C++ files. Modify to your taste.
6 g++ -c -O2 -Wall -Wextra -pedantic $<
8 # Components of the library.
12 BigIntegerAlgorithms.o \
13 BigUnsignedInABase.o \
20 BigIntegerAlgorithms.hh \
21 BigUnsignedInABase.hh \
22 BigIntegerLibrary.hh \
24 # To ``make the library'', make all its objects using the implicit rule.
25 library: $(library-objects)
27 # Conservatively assume that all the objects depend on all the headers.
28 $(library-objects): $(library-headers)
31 # Compiling the testsuite.
32 testsuite.o: $(library-headers)
33 testsuite: testsuite.o $(library-objects)
35 # Extract the expected output from the testsuite source.
36 testsuite.expected: testsuite.cc
37 sed -nre 's,^.*//([^ ]),\1,p' $< >$@
40 test: testsuite testsuite.expected
43 # The rules below build a program that uses the library. They are preset to
44 # build ``sample'' from ``sample.cc''. You can change the name(s) of the
45 # source file(s) and program file to build your own program, or you can write
48 # Components of the program.
50 program-objects = sample.o
52 # Conservatively assume all the program source files depend on all the library
53 # headers. You can change this if it is not the case.
54 $(program-objects) : $(library-headers)
56 # How to link the program. The implicit rule covers individual objects.
57 $(program) : $(program-objects) $(library-objects)
60 # Delete all generated files we know about.
62 rm -f $(library-objects) $(program-objects) $(program)
64 # I removed the *.tag dependency tracking system because it had few advantages
65 # over manually entering all the dependencies. If there were a portable,
66 # reliable dependency tracking system, I'd use it, but I know of no such;
67 # cons and depcomp are almost good enough.
69 # Come back and define default target.
70 all : library $(program)