#! /bin/sh # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is part of GNU Automake. # # GNU Automake 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 Automake 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 Automake; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02110-1301, USA. # Check that installation to directory with shell metacharacters succeed. # Original report from James Amundson about file names with spaces. # Other characters added by Paul Eggert. # This is mostly the same input as nobase.test, but we do not use # libtool libraries, because Libtool does not preserve space in # file names (Issue observed with ltmain.sh (GNU libtool) 1.5a (1.1323 # 2003/11/10 21:06:47)) required='gcc' . ./defs || exit 1 set -e # Set up files that won't change each time through the loop. cat >> configure.in <<'EOF' AC_PROG_CC AC_PROG_RANLIB AC_OUTPUT EOF mkdir sub : > sub/base.h : > sub/nobase.h : > sub/base.dat : > sub/nobase.dat : > sub/base.sh : > sub/nobase.sh cat >source.c <<'EOF' int main (int argc, char **argv) { return 0; } EOF cp source.c source2.c cat > Makefile.am << 'EOF' foodir = $(prefix)/foo fooexecdir = $(prefix)/foo foo_HEADERS = sub/base.h nobase_foo_HEADERS = sub/nobase.h dist_foo_DATA = sub/base.dat nobase_dist_foo_DATA = sub/nobase.dat dist_fooexec_SCRIPTS = sub/base.sh nobase_dist_fooexec_SCRIPTS = sub/nobase.sh fooexec_PROGRAMS = sub/base nobase_fooexec_PROGRAMS = sub/nobase sub_base_SOURCES = source.c sub_nobase_SOURCES = source.c fooexec_LIBRARIES = sub/libbase.a nobase_fooexec_LIBRARIES = sub/libnobase.a sub_libbase_a_SOURCES = source.c sub_libnobase_a_SOURCES = source.c test-install-sep: install test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.h' test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.h' test -f '$(DESTDIR)/$(file)-prefix/foo/base.h' test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.dat' test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.dat' test -f '$(DESTDIR)/$(file)-prefix/foo/base.dat' test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase.sh' test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase.sh' test -f '$(DESTDIR)/$(file)-prefix/foo/base.sh' test -f '$(DESTDIR)/$(file)-prefix/foo/sub/nobase$(EXEEXT)' test ! -f '$(DESTDIR)/$(file)-prefix/foo/nobase$(EXEEXT)' test -f '$(DESTDIR)/$(file)-prefix/foo/base$(EXEEXT)' test -f '$(DESTDIR)/$(file)-prefix/foo/sub/libnobase.a' test ! -f '$(DESTDIR)/$(file)-prefix/foo/libnobase.a' test -f '$(DESTDIR)/$(file)-prefix/foo/libbase.a' EOF $ACLOCAL $AUTOCONF $AUTOMAKE -a # Some control characters that are white space: # back space, carriage return, form feed, horizontal tab, line feed, space bs='' cr=' ' ff=' ' ht=' ' lf=' ' sp=' ' build_failures= install_failures= for file in \ '!' '"' '#' '$' '%' '&' \' '(' ')' '*' '+' ',' '-' ':' ';' \ '<' '=' '>' '?' '@' '[' '\' ']' '^' '`' '{' '|' '}' '~' \ "$bs" "$cr" "$ff" "$ht" "$lf" "$sp" \ '@<:@' '@:>@' '@S|@' '@%:@' '@&t@' \ "a${sp}b" "a${sp}${sp}b" "a${lf}b" ... a: do for test in build install; do case $test in build) build=$file dest=`pwd`/sub1;; install) build=sub1 dest=`pwd`/$file;; esac # Make sure this system supports this character in file names. mkdir sub1 "./$file" || exit 77 cd "$build" ../configure --prefix "/$file-prefix" && $MAKE && DESTDIR=$dest file=$file $MAKE -e test-install-sep || eval "${test}_failures=\"\$${test}_failures$lf\$file\"" cd .. rm -fr sub1 "./$file" done done # The list of the above file names that cannot be used as a build directory # on a POSIX host. This list should be empty, but is not due to limitations # in Autoconf, Automake, Make, M4, or the shell. expected_build_failures=' " # $ & '\'' \ ` '"$lf"' @&t@ a'"${lf}"'b' # Similarly, the list of file names that cannot be used as an install directory # on a POSIX host. This list should also be empty. expected_install_failures=' " # $ '\'' ` '"$lf"' a'"${lf}"'b' fail=0 for test in build install; do eval failures=\$${test}_failures case $failures in ?*) cat >&2 <