# # Makefile for "Algorithm Design Manual" / "Programming Challenges" Programs # # Copyright 2003-2020 by Steven S. Skiena; all rights reserved. # Permission is granted for use in non-commerical applications # provided this copyright notice remains intact and unchanged. # # These programs appear in my books: # # "The Algorithm Design Manual" by Steven Skiena, second edition, Springer, # London 2008. See out website www.algorist.com for additional information # or https://www.amazon.com/exec/obidos/ASIN/1848000693/thealgorith01-20 # # "Programming Challenges: The Programming Contest Training Manual" # by Steven Skiena and Miguel Revilla, Springer-Verlag, New York 2003. # See our website www.programming-challenges.com for additional information, # or http://www.amazon.com/exec/obidos/ASIN/0387001638/thealgorithmrepo/ MAKEFILE = Makefile SOURCES = backtrack.c 8-queens.c permutations.c subsets.c queue.c war.c \ graph.c random.c sorting.c bfs-dfs.c bfs-demo.c dfs-demo.c \ connected.c topsort.c wgraph.c prim.c dijkstra.c floyd.c findcycle.c \ editdistance.c stringedit.c lcs.c substringedit.c geometry.c \ superman.c convex-hull.c triangulate.c 10055.c distance.c name.c \ polly.c gcd.c primes.c bignum.c editbrute.c elevator.c order.c \ plates.c geotest.c cgtest.c netflow.c paths.c sudoku.c annealing.c \ tsp.c fib.c partition.c biconnected.c stack.c strong.c topsort1.c \ bipartite.c priority_queue.c kruskal.c set_union.c list-demo.c \ tree-demo.c matrix.c binomial.c subsetsum.c tsp-astar.c tsp-pq.c \ convolve.c countedges.c sentinel.c strong1.c # criterion_test.c OBJECTS = backtrack.o 8-queens.o permutations.o subsets.o queue.o war.o \ graph.o random.o sorting.o bfs-dfs.o bfs-demo.o dfs-demo.o \ connected.o topsort.o wgraph.o prim.o dijkstra.o floyd.o findcycle.o \ editdistance.o stringedit.o lcs.o substringedit.o geometry.o \ superman.o convex-hull.o triangulate.o 10055.c distance.o name.o \ polly.o gcd.o primes.o bignum.o editbrute.o elevator.o order.o \ plates.o geotest.o cgtest.o netflow.o paths.o sudoku.o annealing.o \ tsp.o fib.o partition.o biconnected.o stack.o strong.o topsort1.o \ bipartite.o priority_queue.o kruskal.o set_union.o list-demo.o \ tree-demo.o matrix.o binomial.o subsetsum.o tsp-astar.o tsp-pq.o \ convolve.o countedges.o strong1.o # criterion_test.o BINARIES = 8-queens permutations subsets war sorting bfs-demo \ dfs-demo connected topsort prim dijkstra floyd findcycle stringedit \ superman editbrute convex-hull triangulate 10055 distance name \ polly gcd substringedit primes bignum elevator order plates geotest cgtest \ netflow lcs paths sudoku tsp fib partition biconnected strong topsort \ bipartite kruskal matrix tree-demo topsort1 list-demo binomial \ subsetsum tsp-astar convolve countedges sentinel strong1 # criterion_test INCLUDES = backtrack.h queue.h graph.h editdistance.h \ geometry.h annealing.h tsp.h stack.h priority_queue.h set_union.h \ list.h tree.h item.h random.h bfs-dfs.h editbrute.h tsp-astar.h tsp-pq.h CC = gcc CFLAGS = -ggdb -Wall -std=c99 -pedantic # -O4 -g -DNDEBUG -pg -Wextra LFLAGS = -lm # -g -lm -pg make: $(BINARIES) $(OBJECTS): $(INCLUDES) $(OBJECTS): $(MAKEFILE) all: $(BINARIES) kruskal: kruskal.o set_union.o wgraph.o $(CC) -o $@ kruskal.o set_union.o wgraph.o $(LFLAGS) bipartite: bipartite.o queue.o graph.o bfs-dfs.o $(CC) -o $@ bipartite.o queue.o graph.o bfs-dfs.o $(LFLAGS) topsort1: topsort1.o queue.o graph.o stack.o bfs-dfs.o $(CC) -o $@ topsort1.o queue.o graph.o stack.o bfs-dfs.o $(LFLAGS) strong: strong.o bfs-dfs.o queue.o graph.o stack.o $(CC) -o $@ strong.o bfs-dfs.o queue.o graph.o stack.o $(LFLAGS) biconnected: biconnected.o bfs-dfs.o queue.o graph.o $(CC) -o $@ biconnected.o bfs-dfs.o queue.o graph.o $(LFLAGS) partition: partition.c $(CC) -o $@ partition.c $(LFLAGS) fib: fib.c $(CC) -o $@ fib.c $(LFLAGS) tsp: annealing.o random.o tsp.o $(CC) -o $@ annealing.o random.o tsp.o $(LFLAGS) tsp-astar: tsp-astar.o tsp-pq.o $(CC) -o $@ tsp-astar.o tsp-pq.o $(LFLAGS) sudoku: sudoku.o $(CC) -o $@ sudoku.o $(LFLAGS) 8-queens: 8-queens.o $(CC) -o $@ 8-queens.o $(LFLAGS) paths: paths.o graph.o $(CC) -o $@ paths.o graph.o $(LFLAGS) permutations: permutations.o $(CC) -o $@ permutations.o $(LFLAGS) subsets: subsets.o $(CC) -o $@ subsets.o $(LFLAGS) sorting: random.o queue.o priority_queue.o sorting.o $(CC) -o $@ random.o queue.o priority_queue.o sorting.o $(LFLAGS) war: queue.o random.o war.o $(CC) -o $@ queue.o random.o war.o $(LFLAGS) bignum: bignum.o $(CC) -o $@ bignum.o $(LFLAGS) bfs-demo: queue.o graph.o bfs-dfs.o bfs-demo.o $(CC) -o $@ queue.o graph.o bfs-dfs.o bfs-demo.o $(LFLAGS) dfs-demo: queue.o graph.o bfs-dfs.o dfs-demo.o $(CC) -o $@ queue.o graph.o bfs-dfs.o dfs-demo.o $(LFLAGS) connected: queue.o graph.o bfs-dfs.o connected.o $(CC) -o $@ queue.o graph.o bfs-dfs.o connected.o $(LFLAGS) topsort: queue.o graph.o topsort.o $(CC) -o $@ queue.o graph.o topsort.o $(LFLAGS) findcycle: queue.o graph.o bfs-dfs.o findcycle.o $(CC) -o $@ queue.o graph.o bfs-dfs.o findcycle.o $(LFLAGS) prim: wgraph.o prim.o $(CC) -o $@ wgraph.o prim.o $(LFLAGS) dijkstra: wgraph.o dijkstra.o $(CC) -o $@ wgraph.o dijkstra.o $(LFLAGS) floyd: floyd.o $(CC) -o $@ floyd.o $(LFLAGS) editbrute: editbrute.o $(CC) -o $@ editbrute.o $(LFLAGS) stringedit: editdistance.o stringedit.o $(CC) -o $@ editdistance.o stringedit.o $(LFLAGS) lcs: editdistance.o lcs.o $(CC) -o $@ editdistance.o lcs.o $(LFLAGS) substringedit: editdistance.o substringedit.o $(CC) -o $@ editdistance.o substringedit.o $(LFLAGS) superman: geometry.o superman.o $(CC) -o $@ geometry.o superman.o $(LFLAGS) convex-hull: geometry.o convex-hull.o $(CC) -o $@ geometry.o convex-hull.o $(LFLAGS) triangulate: geometry.o triangulate.o $(CC) -o $@ geometry.o triangulate.o $(LFLAGS) 10055: 10055.o $(CC) -o $@ 10055.o $(LFLAGS) distance: distance.o $(CC) -o $@ distance.o -lm name: name.o $(CC) -o $@ name.o $(LFLAGS) polly: polly.o $(CC) -o $@ polly.o $(LFLAGS) gcd: gcd.o $(CC) -o $@ gcd.o $(LFLAGS) primes: primes.o $(CC) -o $@ primes.o $(LFLAGS) elevator: elevator.o $(CC) -o $@ elevator.o $(LFLAGS) plates: plates.o $(CC) -o $@ plates.o $(LFLAGS) order: order.o $(CC) -o $@ order.o $(LFLAGS) geotest: geometry.o geotest.o $(CC) -o $@ geometry.o geotest.o $(LFLAGS) cgtest: geometry.o cgtest.o $(CC) -o $@ geometry.o cgtest.o $(LFLAGS) netflow: netflow.o queue.o $(CC) -o $@ netflow.o queue.o $(LFLAGS) matrix: matrix.o $(CC) -o $@ matrix.o $(LFLAGS) list-demo: list-demo.o $(CC) -o $@ list-demo.o $(LFLAGS) tree-demo: tree-demo.o $(CC) -o $@ tree-demo.o $(LFLAGS) convolve: convolve.o $(CC) -o $@ convolve.o $(LFLAGS) countedges: countedges.o $(CC) -o $@ queue.o graph.o countedges.o bfs-dfs.o $(LFLAGS) sentinel: sentinel.o $(CC) -o $@ sentinel.o $(LFLAGS) strong1: strong1.o bfs-dfs.o queue.o graph.o stack.o $(CC) -o $@ strong1.o bfs-dfs.o queue.o graph.o stack.o $(LFLAGS) #criterion_test: criterion_test.o # $(CC) -o $@ criterion_test.o $(LFLAGS) -lcriterion lint: lint -h $(SOURCES) backup: $(SOURCES) $(INCLUDES) cp $(SOURCES) backup cp $(INCLUDES) backup clean: rm -f core *.o a.out $(BINARIES) rm -f ./tests/*.o tar: make clean tar cvf /tmp/bookprograms.tar .