5 all: lookuptools preptools dbfiles
12 lookuptools: $(BINDIR)/lookup-incoming
14 $(BINDIR)/lookup-incoming: $(SRCDIR)/lookup-incoming.c
20 preptools: $(BINDIR)/links-xml-to-plain \
21 $(BINDIR)/links-outgoing-to-incoming \
22 $(BINDIR)/links-plain-to-binary
24 $(BINDIR)/links-xml-to-plain: $(SRCDIR)/links-xml-to-plain.l
26 # Compile flex program to regex-convert the XML to plain text
27 #https://unix.stackexchange.com/a/413684
28 flex -o $(BINDIR)/links-xml-to-plain.c $^
29 $(GCC) -o $@ $(BINDIR)/links-xml-to-plain.c -lfl
31 $(BINDIR)/links-plain-to-binary: $(SRCDIR)/links-plain-to-binary.c titles.txt
35 $(BINDIR)/links-outgoing-to-incoming: $(SRCDIR)/links-outgoing-to-incoming.c
41 dbfiles: links-incoming.bin titles-sorted.txt
43 enwiki-links-plain.txt: $(BINDIR)/links-xml-to-plain enwiki-links.xml.xz
44 # Convert to plain text
45 unxz -c enwiki-links.xml.xz | pv | tail -c +45 | $(BINDIR)/links-xml-to-plain > enwiki-links-plain.txt
47 titles.txt: enwiki-links-plain.txt
49 grep ^~~~~ enwiki-links-plain.txt | sed "s/^~~~~//g;te;d;:e" | sort > titles.txt
51 links-outgoing.bin: $(BINDIR)/links-plain-to-binary titles.txt
52 # This also produces titles-sorted.txt
53 $(BINDIR)/links-plain-to-binary
54 # Update timestamp so make does not rebuild links-outgoing.bin
55 touch titles-sorted.txt
57 titles-sorted.txt: links-outgoing.bin
58 # Generated in the same step as links-outgoing.bin
60 links-incoming.bin: $(BINDIR)/links-outgoing-to-incoming links-outgoing.bin
61 $(BINDIR)/links-outgoing-to-incoming