blob: 1efc2ae3030b0226a7884065e0fe31fe054cc717 [file] [log] [blame] [edit]
#
# 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