16cd6a6acSopenharmony_ciCWD = $(shell pwd)
26cd6a6acSopenharmony_ciHTMLDIR = $(CWD)/html
36cd6a6acSopenharmony_ciPDFDIR = $(CWD)/pdf
46cd6a6acSopenharmony_ciTMPDIR = $(CWD)/tmp
56cd6a6acSopenharmony_ciTESTDIR = $(CWD)/../test
66cd6a6acSopenharmony_ci
76cd6a6acSopenharmony_ci# All the markdown files that make up the guide:
86cd6a6acSopenharmony_ciFILE_LIST ?= cil_introduction.md \
96cd6a6acSopenharmony_ci	cil_reference_guide.md \
106cd6a6acSopenharmony_ci	cil_access_vector_rules.md \
116cd6a6acSopenharmony_ci	cil_call_macro_statements.md \
126cd6a6acSopenharmony_ci	cil_class_and_permission_statements.md \
136cd6a6acSopenharmony_ci	cil_conditional_statements.md \
146cd6a6acSopenharmony_ci	cil_constraint_statements.md \
156cd6a6acSopenharmony_ci	cil_container_statements.md \
166cd6a6acSopenharmony_ci	cil_context_statement.md \
176cd6a6acSopenharmony_ci	cil_default_object_statements.md \
186cd6a6acSopenharmony_ci	cil_file_labeling_statements.md \
196cd6a6acSopenharmony_ci	cil_mls_labeling_statements.md \
206cd6a6acSopenharmony_ci	cil_network_labeling_statements.md \
216cd6a6acSopenharmony_ci	cil_policy_config_statements.md \
226cd6a6acSopenharmony_ci	cil_role_statements.md \
236cd6a6acSopenharmony_ci	cil_sid_statements.md \
246cd6a6acSopenharmony_ci	cil_type_statements.md \
256cd6a6acSopenharmony_ci	cil_user_statements.md \
266cd6a6acSopenharmony_ci	cil_infiniband_statements.md \
276cd6a6acSopenharmony_ci	cil_xen_statements.md
286cd6a6acSopenharmony_ci
296cd6a6acSopenharmony_ciPANDOC_FILE_LIST = $(addprefix $(TMPDIR)/,$(FILE_LIST))
306cd6a6acSopenharmony_ci
316cd6a6acSopenharmony_ciPANDOC_HIGHLIGHT_STYLE="theme.theme"
326cd6a6acSopenharmony_ci
336cd6a6acSopenharmony_ciPDF_OUT=CIL_Reference_Guide.pdf
346cd6a6acSopenharmony_ciHTML_OUT=CIL_Reference_Guide.html
356cd6a6acSopenharmony_ciPANDOC = pandoc
366cd6a6acSopenharmony_ciSED ?= sed
376cd6a6acSopenharmony_ci
386cd6a6acSopenharmony_ciOS := $(shell uname)
396cd6a6acSopenharmony_ciifeq ($(OS), Darwin)
406cd6a6acSopenharmony_ci	SED := gsed
416cd6a6acSopenharmony_ciendif
426cd6a6acSopenharmony_ci
436cd6a6acSopenharmony_ciall: html pdf
446cd6a6acSopenharmony_ci
456cd6a6acSopenharmony_ci$(TMPDIR):
466cd6a6acSopenharmony_ci	mkdir -p $(TMPDIR)
476cd6a6acSopenharmony_ci
486cd6a6acSopenharmony_ci$(TMPDIR)/%.md: %.md | $(TMPDIR)
496cd6a6acSopenharmony_ci	cp -f $< $(TMPDIR)/
506cd6a6acSopenharmony_ci	@# Substitute markdown links for conversion into PDF links
516cd6a6acSopenharmony_ci	$(SED) -i -re 's:(\[`[^`]*`\])\([^#]*([^\)]):\1\(\2:g' $@
526cd6a6acSopenharmony_ci
536cd6a6acSopenharmony_ci$(TMPDIR)/policy.cil: $(TESTDIR)/policy.cil
546cd6a6acSopenharmony_ci	cp -f $< $@
556cd6a6acSopenharmony_ci	@# add a title for the TOC to policy.cil. This is needed to play nicely with the PDF conversion.
566cd6a6acSopenharmony_ci	$(SED) -i '1i Example Policy\n=========\n```secil' $@
576cd6a6acSopenharmony_ci	echo '```' >> $@
586cd6a6acSopenharmony_ci
596cd6a6acSopenharmony_cihtml: $(PANDOC_FILE_LIST) $(TMPDIR)/policy.cil secil.xml
606cd6a6acSopenharmony_ci	mkdir -p $(HTMLDIR)
616cd6a6acSopenharmony_ci	$(PANDOC) \
626cd6a6acSopenharmony_ci		--highlight-style=$(PANDOC_HIGHLIGHT_STYLE) \
636cd6a6acSopenharmony_ci		--syntax-definition=secil.xml \
646cd6a6acSopenharmony_ci		--standalone \
656cd6a6acSopenharmony_ci		--metadata title="CIL Reference Guide" \
666cd6a6acSopenharmony_ci		--metadata document-css=false \
676cd6a6acSopenharmony_ci		-t html \
686cd6a6acSopenharmony_ci		$(PANDOC_FILE_LIST) $(TMPDIR)/policy.cil \
696cd6a6acSopenharmony_ci		-o $(HTMLDIR)/$(HTML_OUT)
706cd6a6acSopenharmony_ci
716cd6a6acSopenharmony_cipdf: $(PANDOC_FILE_LIST) $(TMPDIR)/policy.cil secil.xml
726cd6a6acSopenharmony_ci	mkdir -p $(PDFDIR)
736cd6a6acSopenharmony_ci	$(PANDOC) \
746cd6a6acSopenharmony_ci		--highlight-style=$(PANDOC_HIGHLIGHT_STYLE) \
756cd6a6acSopenharmony_ci		--syntax-definition=secil.xml \
766cd6a6acSopenharmony_ci		--standalone \
776cd6a6acSopenharmony_ci		--toc \
786cd6a6acSopenharmony_ci		$(PANDOC_FILE_LIST) $(TMPDIR)/policy.cil \
796cd6a6acSopenharmony_ci		-o $(PDFDIR)/$(PDF_OUT)
806cd6a6acSopenharmony_ci
816cd6a6acSopenharmony_ciclean:
826cd6a6acSopenharmony_ci	rm -rf $(HTMLDIR)
836cd6a6acSopenharmony_ci	rm -rf $(PDFDIR)
846cd6a6acSopenharmony_ci	rm -rf $(TMPDIR)
85