#! /bin/sh
# Dezyne --- Dezyne command line tools
#
# Copyright © 2024, 2025 Janneke Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of Dezyne.
#
# Dezyne is free software: you can redistribute it and/or modify it
# under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# Dezyne is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public
# License along with Dezyne.  If not, see <http://www.gnu.org/licenses/>.
#
set -ex
pwd
dir=$1
base=$(basename $dir)
out=$dir/out

dzn hash $dir
mkdir -p $out
dzn hash $dir/empty.dzn $dir/ihello_world.dzn | tee $out/simple.hash
sha1sum --check $out/simple.hash

dzn --verbose hash -I $dir - < $dir/hello_project.dzn | tee $out/hello_project.hash
dzn parse --no-directives $dir/hello_project.dzn | sha1sum | tee $out/hello_project.sha1sum
diff -u $out/hello_project.hash $out/hello_project.sha1sum

dzn verify $dir

dzn code --language=c++ --output=$out/c++ --touch-empty-files --model=$base $dir

if ! test -f runtime/.libs/libdzn-c++.so; then
    echo "warning: libdzn-c++.so not found, skipping c++ test" 1>&2
    exit 0
fi

run-build $dir c++
run-execute $dir c++ $dir/trace
