| # |
| # Copyright 2020, Data61, CSIRO (ABN 41 687 119 230) |
| # |
| # SPDX-License-Identifier: BSD-2-Clause |
| # |
| |
| TARGET=parse-capDL |
| |
| .PHONY: all |
| all: $(TARGET) |
| |
| .PHONY: tests |
| tests: example-arm.test-OK example-ia32.test-OK hello-dump.test-OK cap-dist-elf-simpleserver.test-OK camkes-adder-arm.test-OK camkes-adder-arm.test-thy-OK |
| |
| %.parse %.dot %.xml: %.cdl $(TARGET) |
| stack exec $(TARGET) -- -t $*.parse -x $*.xml -d $*.dot $< || rm -f $*.parse $*.dot $*.xml |
| |
| %.test-OK: %.parse %.dot %.xml %.right |
| @diff -b $*.parse $*.right |
| @stack exec $(TARGET) -- -t $*.parse.x $*.parse > /dev/null |
| @diff $*.parse $*.parse.x || (echo "Self parse failed"; exit 1) |
| which xmllint && xmllint --noout --dtdvalid ./capdl.dtd $*.xml |
| dot -Tpng $*.dot -o $*.png || true # don't fail the test if graph layout is too hard |
| echo placeholder for Makefile >$*.test-OK |
| |
| camkes-adder-arm.test-thy-OK: $(TARGET) camkes-adder-arm.cdl camkes-adder-arm.thy.right |
| @stack exec $(TARGET) -- -i camkes-adder-arm.thy --object-sizes=camkes-adder-arm.object_sizes.yaml camkes-adder-arm.cdl |
| @diff -b camkes-adder-arm.thy camkes-adder-arm.thy.right || (echo "Isabelle output differs"; exit 1) |
| echo placeholder for Makefile >camkes-adder-arm.test-thy-OK |
| |
| # This tells GNU Make that *.parse files should not be considered as intermediate files |
| # for the *.test-OK targets, so that Make won't delete them. |
| # We can't use a wildcard here because it's not implemented in Make; see |
| # https://stackoverflow.com/questions/27090032 |
| .SECONDARY: example-arm.parse example-arm.dot example-arm.xml \ |
| example-ia32.parse example-ia32.dot example-ia32.xml \ |
| hello-dump.parse hello-dump.dot hello-dump.xml \ |
| cap-dist-elf-simpleserver.parse cap-dist-elf-simpleserver.dot cap-dist-elf-simpleserver.xml \ |
| camkes-adder-arm.parse camkes-adder-arm.dot camkes-adder-arm.xml camkes-adder-arm.thy |
| |
| .PHONY: sandbox |
| sandbox: |
| stack setup |
| stack build --only-dependencies |
| |
| # `stack install` copies the binary out of the build dir |
| # --fast compiles with out any optimisations and should be more appropriate |
| # for current capDL-tool usage behavior. |
| .PHONY: $(TARGET) |
| $(TARGET): |
| stack build --fast |
| stack install |
| |
| .PHONY: install |
| # Deprecated. This used to be `stack install` but did not install |
| # to any meaningful PATH location |
| install: |
| echo >&2 'capDL-tool/Makefile: install target no longer exists' |
| false |
| |
| .PHONY: clean |
| clean: |
| rm -f $(TARGET) |
| |
| .PHONY: testclean |
| testclean: |
| rm -f *.parse *.parse.x *.dot *.xml *.thy *.png *.out |