maint: Update HACKING
[automake.git] / t / copy.sh
blobda446c70685954c5ae186942454cc449baa63ea7
1 #! /bin/sh
2 # Copyright (C) 1999-2017 Free Software Foundation, Inc.
4 # This program is free software; you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation; either version 2, or (at your option)
7 # any later version.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program. If not, see <https://www.gnu.org/licenses/>.
17 # Test to make sure '-c' works. Report from Andris Pavenis.
18 # See also the much more in-depth test 'add-missing'.
20 . test-init.sh
22 # We'll have to cater to systems like MSYS/MinGW where there are no
23 # true symlinks ('ln -s' behaves like 'cp -p'); see automake bug#10441.
25 echo dummy > foo
26 if ln -s foo bar && test -h bar; then
27 is_symlink () { test -h "$1"; }
28 is_not_symlink () { test ! -h "$1"; }
29 else
30 is_symlink () { return 0; } # Avoid spurious failures.
31 is_not_symlink () { return 0; }
33 rm -f foo bar
35 # First a simple test, where the auxdir is automatically determined
36 # by automake.
38 : > Makefile.am
39 rm -f install-sh
41 $ACLOCAL
42 $AUTOMAKE -c -a
43 ls -l # For debugging.
45 test -f install-sh
46 is_not_symlink install-sh
48 # Let's do a couple of more elaborated tests, this time with the auxdir
49 # explicitly defined in configure.ac.
51 mkdir sub
52 cd sub
54 cat > configure.ac <<END
55 AC_INIT([$me], [1.0])
56 AC_CONFIG_AUX_DIR([auxdir])
57 AM_INIT_AUTOMAKE
58 AC_PROG_CC
59 AC_CONFIG_FILES([Makefile])
60 AC_OUTPUT
61 END
63 cat > Makefile.am <<END
64 bin_PROGRAMS = foo
65 END
67 $ACLOCAL
69 # 'automake -a' called without '-c' should create symlinks by default,
70 # even when there is already a non-symlinked required auxiliary file.
72 mkdir auxdir
73 echo FAKE-DEPCOMP > auxdir/depcomp
74 $AUTOMAKE -a
75 ls -l auxdir # For debugging.
76 test -f auxdir/install-sh
77 is_symlink auxdir/install-sh
78 test -f auxdir/depcomp
79 is_not_symlink auxdir/depcomp
80 test FAKE-DEPCOMP = "$(cat auxdir/depcomp)"
82 # 'automake -a -c' should not create symlinks, even when there are
83 # already symlinked required auxiliary files.
85 rm -rf auxdir
86 mkdir auxdir
87 cd auxdir
88 ln -s "$am_scriptdir/missing" "$am_scriptdir/install-sh" .
89 cd ..
91 $AUTOMAKE -a -c
92 ls -l auxdir # For debugging.
93 test -f auxdir/install-sh
94 is_symlink auxdir/install-sh
95 test -f auxdir/missing
96 is_symlink auxdir/missing
97 test -f auxdir/depcomp
98 is_not_symlink auxdir/depcomp
99 diff "$am_scriptdir"/depcomp auxdir/depcomp