Hello,
@F does not work (Linux Intel x86 only).
(No problems on other platforms with the same or older make versions)
makefile.unix includes:
$(OBJECTS) : ../$$(@F:.o=.cxx)
$(CXX_COMPILER_NAME) -c -o $@ ../$(@F:.o=.cxx) $(CC_FLAGS) $(C_DEFINES)
$(C_INCLUDES) $(INCLS)
$$(@F:.o ... is the problem. It is ok on other plattforms with the same
make version.
On x86 Linux appears the error message:
makefile.unix:21: *** target pattern contains no `%'. Stop.
Make version: 3.79.1
Distribution: SuSE 7.0
A bypass is not possible.
I wrote a script to reproduce the problem in a small environment.
It creates the directory structure and makefile.unix files in
/tmp/MyBug2.
It is possible to solve the problem in make?
How can i get the patch or a new snapshot of make?
Best regards
Wolfgang Stuehlmeyer ([EMAIL PROTECTED]) or
([EMAIL PROTECTED])
#!/bin/sh
#
#
# Bug description:
#
# @F does not work (Linux Intel x86 only).
# (No problems on other platforms with the same or older make versions)
#
# makefile.unix includes:
# $(OBJECTS) : ../$$(@F:.o=.cxx)
# $(CXX_COMPILER_NAME) -c -o $@ ../$(@F:.o=.cxx) $(CC_FLAGS)
$(C_DEFINES) $(C_INCLUDES) $(INCLS)
#
# $$(@F:.o ... is the problem. It is ok on other plattforms with the
same
# make version. On x86 Linux appears the error message:
#
# makefile.unix:21: *** target pattern contains no `%'. Stop.
#
#
# GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
# Built for i686-pc-linux-gnu
# Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
# Free Software Foundation, Inc.
#
#
# You can execute this script to reproduce the error.
#
#
# Create test directories
#
mkdir -p /tmp/MyBug2
mkdir -p /tmp/MyBug2/common
mkdir -p /tmp/MyBug2/common/unix
#
# Create /tmp/MyBug2/makefile.unix
#
if [ ! -f /tmp/MyBug2/makefile.unix ]
then
cat > /tmp/MyBug2/makefile.unix << _E_O_F_1
SHELL=/bin/sh
DIRS=common
MAKEFILE = makefile.unix
MAKEFLAGS = --no-print-dir
all:
for dir in \$(DIRS); do \\
echo "Entering major component :\$\$dir" ; \\
(cd \$\$dir; \$(MAKE) \$(MAKEFLAGS) -f \$(MAKEFILE)); \\
done
#
_E_O_F_1
fi
#
# Create /tmp/MyBug2/common/makefile.unix
#
if [ ! -f /tmp/MyBug2/common/makefile.unix ]
then
cat > /tmp/MyBug2/makefile.unix << _E_O_F_2
MAKEFILE = makefile.unix
all:
(cd unix ; \$(MAKE) \$(MAKEFLAGS) -f \$(MAKEFILE))
clean:
(cd unix ; \$(MAKE) \$(MAKEFLAGS) -f \$(MAKEFILE) clean)
_E_O_F_2
fi
#
# Create /tmp/MyBug2/common/unix/makefile.unix
#
if [ ! -f /tmp/MyBug2/common/unix/makefile.unix ]
then
cat > /tmp/MyBug2/makefile.unix << _E_O_F_3
#
# makefile.unix : UNIX (SUN Solaris) make makefile
#
OBJDIR=obj
LIBDIR=../../
# include ../../../makefile.incl
all: \$(OBJDIR) \$(LIBDIR)/test.a
\$(OBJDIR):
mkdir -p \$@
INCLS =
OBJECTS = \$(OBJDIR)/test.o
\$(LIBDIR)/test.a : \$(OBJECTS)
ar -r \$(LIBDIR)/test.a \$(OBJECTS)
\$(OBJECTS) : ../\$\$(@F:.o=.cxx)
\$(CXX_COMPILER_NAME) -c -o \$@ ../\$(@F:.o=.cxx) \$(CC_FLAGS)
\$(C_DEFINES) \$(C_INCLUDES) \$(INCLS)
clean:
rm -f \$(LIBDIR)/test.a
rm -rf \$(OBJDIR)
_E_O_F_3
fi
#
# Execute make
#
cd /tmp/MyBug2
make -f makefile.unix
_______________________________________________
Bug-make mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-make