#!/bin/sh

# Copyright (C) 2000-2026 Free Software Foundation, Inc.
# This file is part of GNU Modula-2.
#
# GNU Modula-2 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 2, or (at your option)
# any later version.
# 
# GNU Modula-2 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 GNU Modula-2; see the file COPYING.  If not, write to the
# Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA. 
#

BFLAGS=-B../../../../../../../build/gcc/stage1/gm2
LIBS=-I.:/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.2/gm2
DRIVER=../../../../../../../build/gcc/xgm2

as -o `basename $1 .mod`.o `basename $1 .mod`.s
if [ ! -x $DRIVER ] ; then
   echo "cannot find $DRIVER"
   exit 1
fi
if ! $DRIVER -Wcpp $BFLAGS -I$LIBS -g -I. $1 ; then
    exit $?
fi
cat << EOFEOF > .gdbinit
# set language modula-2
# set language pascal
break _M2_`basename $1 .mod`_init
run
# next
# print s
# print ch
EOFEOF
emacs .gdbinit

