Edit

kc3-lang/automake/tests/yacc8.test

Branch :

  • Show log

    Commit

  • Author : Ralf Wildenhues
    Date : 2009-05-17 15:32:40
    Hash : fcf2f560
    Message : Revert Automake license to GPLv2+. Automake will move to GPLv3+ once the Exception statement has been rewritten to use the new GPLv3 exception language. This change does not impact the COPYING file that may be installed by `automake --add-missing'. * COPYING: Revert to GPLv2. All uses changed. * NEWS: Update. Signed-off-by: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>

  • tests/yacc8.test
  • #! /bin/sh
    # Copyright (C) 2002, 2003, 2004, 2006  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 for subdir parsers.
    
    required="gcc bison"
    
    . ./defs || Exit 1
    
    set -e
    
    cat > configure.in << 'END'
    AC_INIT([yacc8], [1.0])
    AC_CONFIG_AUX_DIR([.])
    AM_INIT_AUTOMAKE
    AC_CONFIG_FILES([Makefile])
    AC_PROG_CC
    AM_PROG_CC_C_O
    AC_PROG_YACC
    AC_OUTPUT
    END
    
    cat > Makefile.am << 'END'
    AUTOMAKE_OPTIONS = subdir-objects
    bin_PROGRAMS = foo/foo
    foo_foo_SOURCES = foo/parse.y
    AM_YFLAGS = -d
    
    obj: foo/parse.$(OBJEXT)
    
    test1: obj
    	test -f foo/parse.c
    	test -f foo/parse.$(OBJEXT)
    
    test2: obj
    	test -f foo/parse.c
    	test -f foo/parse.$(OBJEXT)
    END
    
    mkdir foo
    
    cat > foo/parse.y << 'END'
    %{
    int yylex () {return 0;}
    void yyerror (char *s) {}
    %}
    %%
    foobar : 'f' 'o' 'o' 'b' 'a' 'r' {};
    END
    
    $ACLOCAL
    $AUTOCONF
    $AUTOMAKE -a
    
    mkdir sub
    cd sub
    
    ../configure
    $MAKE test1
    
    # Aside of the rest of this test, let's see if we can recover from
    # parse.h removal
    test -f foo/parse.h
    rm -f foo/parse.h
    $MAKE foo/parse.h
    test -f foo/parse.h
    
    # Make sure foo/parse.h is not updated, unless when needed.
    $sleep
    : > z
    $sleep
    touch ../foo/parse.y
    $MAKE obj
    test `ls -1t foo/parse.h z | sed 1q` = z
    $sleep
    sed 's/%%/%token TOKEN\n%%/g' ../foo/parse.y >../foo/parse.yt
    mv -f ../foo/parse.yt ../foo/parse.y
    $MAKE obj
    test `ls -1t foo/parse.h z | sed 1q` = foo/parse.h
    
    # Now, adds another parser to test ylwrap.
    
    cd ..
    
    # Sleep some to make sure timestamp of Makefile.am will change.
    $sleep
    
    cp foo/parse.y foo/parse2.y
    cat >> Makefile.am << 'END'
    EXTRA_foo_foo_SOURCES = foo/parse2.y
    END
    
    $AUTOMAKE -a
    test -f ./ylwrap || Exit 1
    
    cd sub
    # Regenerate Makefile (automatic in GNU Make, but not in other Makes)
    ./config.status
    $MAKE test2