1CWD ?= $(shell pwd) 2HTMLDIR ?= $(CWD)/html 3PDFDIR ?= $(CWD)/pdf 4TMPDIR ?= $(CWD)/tmp 5TESTDIR ?= $(CWD)/../test 6 7# All the markdown files that make up the guide: 8FILE_LIST ?= cil_introduction.md \ 9 cil_reference_guide.md \ 10 cil_access_vector_rules.md \ 11 cil_call_macro_statements.md \ 12 cil_class_and_permission_statements.md \ 13 cil_conditional_statements.md \ 14 cil_constraint_statements.md \ 15 cil_container_statements.md \ 16 cil_context_statement.md \ 17 cil_default_object_statements.md \ 18 cil_file_labeling_statements.md \ 19 cil_mls_labeling_statements.md \ 20 cil_network_labeling_statements.md \ 21 cil_policy_config_statements.md \ 22 cil_role_statements.md \ 23 cil_sid_statements.md \ 24 cil_type_statements.md \ 25 cil_user_statements.md \ 26 cil_infiniband_statements.md \ 27 cil_xen_statements.md 28 29PANDOC_FILE_LIST = $(addprefix $(TMPDIR)/,$(FILE_LIST)) 30 31PDF_OUT=CIL_Reference_Guide.pdf 32HTML_OUT=CIL_Reference_Guide.html 33PANDOC = pandoc 34SED ?= sed 35 36OS := $(shell uname) 37ifeq ($(OS), Darwin) 38 SED := gsed 39endif 40 41all: html pdf 42 43$(TMPDIR): 44 mkdir -p $(TMPDIR) 45 46$(TMPDIR)/%.md: %.md | $(TMPDIR) 47 cp -f $< $(TMPDIR)/ 48 @# Substitute markdown links for conversion into PDF links 49 $(SED) -i -re 's:(\[`[^`]*`\])\([^#]*([^\)]):\1\(\2:g' $@ 50 51$(TMPDIR)/policy.cil: $(TESTDIR)/policy.cil 52 cp -f $< $@ 53 @# add a title for the TOC to policy.cil. This is needed to play nicely with the PDF conversion. 54 $(SED) -i '1i Example Policy\n=========\n```' $@ 55 echo '```' >> $@ 56 57html: $(PANDOC_FILE_LIST) $(TMPDIR)/policy.cil 58 mkdir -p $(HTMLDIR) 59 $(PANDOC) -t html $^ -o $(HTMLDIR)/$(HTML_OUT) 60 61pdf: $(PANDOC_FILE_LIST) $(TMPDIR)/policy.cil 62 mkdir -p $(PDFDIR) 63 $(PANDOC) --standalone --toc $^ -o $(PDFDIR)/$(PDF_OUT) 64 65clean: 66 rm -rf $(HTMLDIR) 67 rm -rf $(PDFDIR) 68 rm -rf $(TMPDIR) 69