bug-make
[Top][All Lists]
Advanced

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

Make-3.79: Environment problem?


From: Darren Hiebert
Subject: Make-3.79: Environment problem?
Date: Fri, 10 Aug 2001 15:48:59 -0500 (CDT)

Hello,

I am having a very strange problem with make-3.79 on IRIX.

    $ make --version
    GNU make version 3.79, by Richard Stallman...

Consider the following Makefile in the current directory:

    all:
        cd example && $(MAKE)

In the subdirectory "example", there exists a Makefile containing a
rule to build "rayant.so" by linking object files already built in
that directory.

If I invoke by hand the command "rm example/rayant.so; cd example &&
make" the make in the example subdirectory succeeds with the
following output:

    cd example && make
    make[1]: Entering directory `/sstb/development/hiebertd/Proprietary/example'
    cc -shared -mips4 -n32 -r10000 -O3 -DSSTB -o rayant.so <object_list> -lffio 
-lftn -lfortran -lc -lm -IPA \
            -L../System/Element/Radar -lradar
    make[1]: Leaving directory `/sstb/development/hiebertd/Proprietary/example'

Similarly, invoking make in the current directory also succeeds:

    rm example/rayant.so; make

However, if I invoke make as follows:

    rm example/rayant.so; make A=/sstb/development

where "A" is an arbitrary make variable not used in any of my
makefiles (I have tried different names, all exhibiting the same
problem), the result is instead:

    cd example && make
    make[1]: Entering directory `/sstb/development/hiebertd/Proprietary/example'
    cc -shared -mips4 -n32 -r10000 -O3 -DSSTB -o rayant.so <object_list> -lffio 
-lftn -lfortran -lc -lm -IPA \
            -L../System/Element/Radar -lradar
            /usr/lib32/cmplrs/ld32 -from rayant.so.ippa0V1tA/linkopt.8134218
    make[1]: Leaving directory `/sstb/development/hiebertd/Proprietary/example'

Note the line starting "/usr/lib32/cmplrs/ld32" (referencing a
temporary directory and file). Although no error message is
generated by cc, and cc does not exit with an error code, the file
rayant.so is not created.

If I shorten the value of the make variable being set by a couple of
characters:

    rm example/rayant.so; make A=/sstb/developme

The link in the subdirectory succeeds. Further, if I invoke the
top-level make using the IRIX make program:

    rm example/rayant.so; /usr/bin/make A=/sstb/development

the link succeeds.

It seems that somehow the make variable being set is doing something
to either the environment (or something else) which causes the
link command invoked in example/ to fail silently. The environment
is the only mechanism by which I can explain how something done in
one process (i.e. make) could affect the behavior of an indenpendent
process.

For further information, the following make variable value allows
the link to succeed:

    make A=/sstb/developme0

while this value causes the link to fail:

    make A=/sstb/developmen

This strange behavior is really driving me crazy, as the
success/failure of the link seems to be related to both length and
content of the make variable value.

Do you have any ideas of how we can narrow this problem down?

Thank you in advance for your help.

-- 
Darren Hiebert <address@hidden>
XonTech, Inc.  (256) 971-2977




reply via email to

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