# -j2 causes a bug in caml compiler, I believe while accessing/creating the
# same file in parallel 
MAKEFLAGS := -r #-j2

.SUFFIXES:

.PHONY: clean all tags install

VERSION := 1.5
COQMAKEFILE := Makefile.coq
COQMAKE := +$(MAKE) -f $(COQMAKEFILE)
ARCHIVE := mathcomp
ifneq "$(COQBIN)" ""
	COQBIN := $(COQBIN)/
endif

all: $(COQMAKEFILE)
	mkdir -p bin
	$(COQMAKE) all

$(COQMAKEFILE): Make
	$(COQBIN)coq_makefile -f Make  > $(COQMAKEFILE)

tags:
	$(COQBIN)coqtags `find . -name \*.v`

doc:
	PATH="$(COQBIN):$$PATH" \
	     sh -c '. extra/builddoc_lib.sh; mangle_sources theories/*.v'
	$(MAKE) all
	PATH="$(COQBIN):$$PATH" TITLE="Mathematical Components" MAKEDOT=extra/ \
	COQOPTS="-R theories MathComp" \
	COQDOCOPTS="--external http://ssr.msr-inria.inria.fr/doc/ssreflect-$(VERSION) Ssreflect" \
	MANGLEDOT="sed -i s?URL=\"./?URL=\"MathComp.?"\
	      sh -c '. extra/builddoc_lib.sh; build_doc theories/*.v'
	cp extra/*.css extra/*.png html/

install:
	$(COQMAKE) install

clean:
	-$(COQMAKE) clean
	rm -f $(COQMAKEFILE)
	rm -rf $(ARCHIVE)-$(VERSION) $(ARCHIVE)-$(VERSION).tar.gz
	rm -rf test-dist

dist:
	# fill in
	rm -rf $(ARCHIVE)-$(VERSION)
	mkdir -p $(ARCHIVE)-$(VERSION)/theories/
	for f in `cat Make|grep '\.v *$$'`; do \
		cp ../`basename $$f` $(ARCHIVE)-$(VERSION)/theories/;\
	done
	cp AUTHORS CeCILL-B INSTALL Make Makefile README $(ARCHIVE)-$(VERSION)/
	# handling of NOTICE: All rights reserved -> released under XYZ
	for X in `find $(ARCHIVE)-$(VERSION)/ -name \*.v`; do\
		( head -1 $$X | grep -q 'All rights reserved' ) || \
			echo "warning: `basename $$X` with no reserved"\
		       		"copyrights";\
		sed -i -e '1rNOTICE' -e '/All rights reserved/D' $$X;\
	done
	# extra
	mkdir -p $(ARCHIVE)-$(VERSION)/extra/
	cp ../tools/hudson/builddoc_lib.sh $(ARCHIVE)-$(VERSION)/extra
	cp ../doc/makeDot/dependtodot.ml $(ARCHIVE)-$(VERSION)/extra/
	cp ../tools/coqdoc.css $(ARCHIVE)-$(VERSION)/extra/
	cp ../doc/misc/jc.png $(ARCHIVE)-$(VERSION)/extra/
	# tarball + MANIFEST
	tar -cvf $(ARCHIVE)-$(VERSION).tar $(ARCHIVE)-$(VERSION)/ | \
	  sed 's/^[^\/]*\///' | grep -v '^$$' | grep -v '/$$' |\
	       	sort > MANIFEST
	mv MANIFEST $(ARCHIVE)-$(VERSION)/MANIFEST
	tar -f $(ARCHIVE)-$(VERSION).tar -r $(ARCHIVE)-$(VERSION)/MANIFEST
	gzip -f9 $(ARCHIVE)-$(VERSION).tar
	rm -rf $(ARCHIVE)-$(VERSION)/
	mv $(ARCHIVE)-$(VERSION).tar.gz ..

test-dist:
	rm -rf test-dist
	mkdir test-dist
	tar -xzf $(ARCHIVE)-$(VERSION).tar.gz -C test-dist
	make -C test-dist/$(ARCHIVE)-$(VERSION) all install
	rm -rf test-dist
