bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

@F does not work on an Intel x86 system


From: W . Stuehlmeyer
Subject: @F does not work on an Intel x86 system
Date: Tue, 31 Oct 2000 19:00:35 +0100

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 (address@hidden) or
                     (address@hidden)



#!/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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]