#! /bin/sh
# Copyright (C) 2001, 2002, 2008, 2009  Free Software Foundation, Inc.
#
# 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 2, 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/>.

# Test to make sure `compile' doesn't call 'mv SRC SRC'.

required=gcc
. ./defs || Exit 1

set -e

cat >> configure.in << 'END'
AC_PROG_CC
AM_PROG_CC_C_O
AC_OUTPUT
END

cat > Makefile.am << 'END'
AUTOMAKE_OPTIONS = subdir-objects
bin_PROGRAMS = wish
wish_SOURCES = a.c
END

mkdir sub

cat > a.c << 'END'
#include <stdio.h>

int main ()
{
  printf ("hi\n");
}
END

cat > Mycomp << 'END'
#!/bin/sh

case " "$* in
 *\ -c*\ -o* | *\ -o*\ -c*)
    exit 1
    ;;
esac

exec gcc "$@"
END

chmod +x Mycomp

# Ignore user CFLAGS.
CFLAGS=
export CFLAGS

$ACLOCAL
$AUTOCONF
$AUTOMAKE --copy --add-missing

mkdir build
cd build

# Make sure the compiler doesn't understand `-c -o'
CC=`pwd`/../Mycomp
export CC

../configure
$MAKE 2>stderr || { cat stderr >&2; Exit 1; }
cat stderr >&2
grep 'mv.*the same file' stderr && Exit 1

Exit 0
