# Makefile for regression testing the GNU debugger.
# Copyright (C) 1992-2019 Free Software Foundation, Inc.

# This file is part of GDB.

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

VPATH = @srcdir@
srcdir = @srcdir@
srcroot = $(srcdir)/..

prefix = @prefix@
exec_prefix = @exec_prefix@

host_alias = @host_alias@
target_alias = @target_alias@
program_transform_name = @program_transform_name@
build_canonical = @build@
host_canonical = @host@
target_canonical = @target@
target_cpu = @target_cpu@


SHELL = /bin/sh
SUBDIRS = @subdirs@
RPATH_ENVVAR = @RPATH_ENVVAR@

TESTS = \
	exit47.ko \
	hello.hi \
	t-dbt.ok \
	t-ld-st.ok \
	t-mac.ok \
	t-mvtac.ok \
	t-mvtc.ok \
	t-msbu.ok \
	t-mulxu.ok \
	t-rac.ok \
	t-rachi.ok \
	t-rdt.ok \
	t-rep.ok \
	t-rte.ok \
	t-sac.ok \
	t-sachi.ok \
	t-sadd.ok \
	t-slae.ok \
	t-sp.ok \
	t-sub2w.ok \
	t-sub.ok \
	t-subi.ok \
	t-ae-ld-d.ok \
	t-ae-ld-i.ok \
	t-ae-ld-id.ok \
	t-ae-ld-im.ok \
	t-ae-ld-ip.ok \
	t-ae-ld2w-d.ok \
	t-ae-ld2w-i.ok \
	t-ae-ld2w-id.ok \
	t-ae-ld2w-im.ok \
	t-ae-ld2w-ip.ok \
	t-ae-st-d.ok \
	t-ae-st-i.ok \
	t-ae-st-id.ok \
	t-ae-st-im.ok \
	t-ae-st-ip.ok \
	t-ae-st-is.ok \
	t-ae-st2w-d.ok \
	t-ae-st2w-i.ok \
	t-ae-st2w-id.ok \
	t-ae-st2w-im.ok \
	t-ae-st2w-ip.ok \
	t-ae-st2w-is.ok \
	t-mod-ld-pre.ok \
	t-rie-xx.ok \
#

AS_FOR_TARGET = `\
  if [ -x ../../../gas/as-new ]; then \
    echo ../../../gas/as-new ; \
  else \
    echo $(target_alias)-as ; \
  fi`

LD_FOR_TARGET = `\
  if [ -x ../../../ld/ld-new ]; then \
    echo ../../../ld/ld-new ; \
  else \
    echo $(target_alias)-ld ; \
  fi`

RUN_FOR_TARGET = `\
  if [ -x ../../../sim/d10v/run ]; then \
    echo ../../../sim/d10v/run ; \
  else \
    echo $(target_alias)-run ; \
  fi`

# Force d10v into operating mode.
RUNFLAGS_FOR_TARGET=--environment operating


check: sanity $(TESTS)
sanity:
	@eval echo AS_FOR_TARGET=$(AS_FOR_TARGET)
	@eval echo LD_FOR_TARGET=$(LD_FOR_TARGET)
	@eval echo RUN_FOR_TARGET=$(RUN_FOR_TARGET)

clean:
	rm -f $(TESTS)
	rm -f *.run *.o
	rm -f core *.core

# Rules for running the tests

.SUFFIXES: .ok .run .hi .ko .ti
.run.ok:
	rm -f tmp-$* $*.hi
	ulimit -t 5 ; \
	$(RUN_FOR_TARGET) $(RUNFLAGS_FOR_TARGET) $*.run > tmp-$*
	mv tmp-$* $*.ok
.run.hi:
	rm -f tmp-$* $*.hi diff-$*
	ulimit -t 5 ; \
	$(RUN_FOR_TARGET) $(RUNFLAGS_FOR_TARGET) $*.run > tmp-$*
	echo 'Hello World!' | diff - tmp-$* > diff-$*
	cat tmp-$* diff-$* > $*.hi
.run.ko:
	rm -f tmp-$* $*.ko
	set +e ; \
	ulimit -t 5 ; \
	$(RUN_FOR_TARGET) $(RUNFLAGS_FOR_TARGET) $*.run > tmp-$* ; \
	if [ $$? -eq 47 ] ; then \
	  exit 0 ; \
	else \
	  exit 1 ; \
	fi
	mv tmp-$* $*.ko
.run.ti:
	rm -f tmp-$* $*.ti
	set +e ; \
	ulimit -t 5 ; \
	$(RUN_FOR_TARGET) $(RUNFLAGS_FOR_TARGET) $(INTFLAGS_FOR_TARGET) $*.run > tmp-$*
	test `cat tmp-$* | wc -l` -eq 10 < /dev/null
	test `grep Tick tmp-$* | wc -l` -eq 10 < /dev/null
	mv tmp-$* $*.ti


# Rules for building the test
# Preference is for obtaining the executable (.run) from a prebuilt image

.SUFFIXES: .uue .s .S .run
.uue.run:
	head $* | grep $*.run > /dev/null
	uudecode $*.uue
.run.u:
	uuencode < $*.run $*.run > $*.u
.o.run:
	$(LD_FOR_TARGET) $(LDFLAGS_FOR_TARGET) -o $*.run $*.o
.s.o:
	$(AS_FOR_TARGET) $(ASFLAGS_FOR_TARGET) -I$(srcdir) $(srcdir)/$*.s -o $*.o
.S.o:
	$(AS_FOR_TARGET) $(ASFLAGS_FOR_TARGET) -I$(srcdir) $(srcdir)/$*.S -o $*.o


Makefile: Makefile.in config.status
	$(SHELL) ./config.status

config.status: configure
	$(SHELL) ./config.status --recheck
