awk.Makefile 1.62 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
# awk program that patches the Makefile generated by Coq.

# Detect the name this project will be installed under.
/\$\(COQLIBINSTALL\)\/.*\/\$\$i/ {
# Wow, POSIX awk is really broken.  I mean, isn't it supposed to be a text processing language?
# And there is not even a way to access the matched groups of a regexp...?!? Lucky enough,
# we can just split the string at '/' here.
	split($0, PIECES, /\//);
	PROJECT=PIECES[2];
}

# Patch the uninstall target to work properly, and to also uninstall stale files.
# Also see <https://coq.inria.fr/bugs/show_bug.cgi?id=4907>.
Ralf Jung's avatar
Ralf Jung committed
14 15
# This (and the section above) can be removed once we no longer support Coq 8.6.
/^uninstall: / {
16 17 18 19 20 21
	print "uninstall:";
	print "\tif [ -d \"$(DSTROOT)\"$(COQLIBINSTALL)/"PROJECT"/ ]; then find \"$(DSTROOT)\"$(COQLIBINSTALL)/"PROJECT"/ \\( -name \"*.vo\" -o -name \"*.v\" -o -name \"*.glob\" -o \\( -type d -empty \\) \\) -print -delete; fi";
	getline;
	next
}

22
# Add new target quick2vo to (a) run "make quick" with the same number of jobs, ensuring
23 24 25
# that the .vio files are up-to-date, and (b) only schedule vio2vo for those
# files where the .vo is *older* than the .vio.
/^vio2vo:/ {
26
	print "quick2vo:";
27
	print "\t@make -j $(J) quick"
28
	print "\t@VIOFILES=$$(for vofile in $(VOFILES); do viofile=\"$$(echo \"$$vofile\" | sed \"s/\\.vo/.vio/\")\"; if [ \"$$vofile\" -ot \"$$viofile\" -o ! -e \"$$vofile\" ]; then echo -n \"$$viofile \"; fi; done); \\"
29
	print "\t echo \"VIO2VO: $$VIOFILES\"; \\"
30 31
	print "\t if [ -n \"$$VIOFILES\" ]; then $(TIMER) $(COQC) $(COQDEBUG) $(COQFLAGS) -schedule-vio2vo $(J) $$VIOFILES; fi"
	print ".PHONY: quick2vo"
32 33 34 35
}

# This forwards all unchanged lines
1