Here I try to answer all the questions. Please let me know if I missed any.
On 8/8/06, Ralf Wildenhues <address@hidden> wrote:
> * David Everly wrote on Tue, Aug 08, 2006 at 12:56:12AM CEST:
> >
> > I think my problem happens because what our vendor does is #include
> > <rw/numbrw.cc> inside of rw/numbrw
>
> Yes, I see that too with the compiler version I'm looking at.
> For me, the source file
> #include <locale>
> int main() { return 0; }
>
> causes absolute file name like
> /opt/aCC/include_std/rw/numbrw:
> /opt/aCC/include_std/rw/numbrw.cc:
I have been plagued by my own inaccuracies here. I'm including the
file generated by the output below from compiling ne.cxx to avoid
repeating my mistakes.
> in .deps/foo.Po, not relative ones like you report. Please output the
> exact compile command that is used for this object. Mine looks like:
>
> source='../foo.cc' object='foo.o' libtool=no \
> DEPDIR=.deps depmode=hp2 /usr/bin/posix/sh ../depcomp \
> aCC -DPACKAGE_NAME=\"a\" -DPACKAGE_TARNAME=\"a\" -DPACKAGE_VERSION=\"1\"
> -DPACKAGE_STRING=\"a\ 1\" -DPACKAGE_BUGREPORT=\"b\" -DPACKAGE=\"a\"
> -DVERSION=\"1\" -I. -I.. -g -c -o foo.o ../foo.cc
source='tl1_am/src/ne.cxx' object='tl1_am/src/ne_sim-ne.o' libtool=no \
DEPDIR=.deps depmode=hp2 /bin/sh ./depcomp \
aCC +DD64 -Wl,+k -DHAVE_CONFIG_H -I. -I. -I. -D_THREAD_SAFE
-DTL1overOSI -D_POSIX_C_SOURCE=199506L -I./tl1_am/src
-I/usr/opt/temip/CMA/include -mt +DD64 +z -AA -g -c -o
tl1_am/src/ne_sim-ne.o `test -f 'tl1_am/src/ne.cxx' || echo
'./'`tl1_am/src/ne.cxx
> (this is with CVS Automake as of some weeks ago; which versions of
> Autoconf and Automake do you use BTW?
autoconf 2.59 and
automake 1.9.6 with depcomp 2006-07-09.11
> hp2 was not in 1.9.6 yet, and
> +Maked was not used there anywhere, please also print the scriptversion
> of depcomp).
>
> Please also show the output of your command that corresponds to above,
> with -x added after the shell in use (/usr/bin/posix/sh in the case
> above, but please use whatever configure chose for you).
source='tl1_am/src/ne.cxx' object='tl1_am/src/ne_sim-ne.o'
libtool=no DEPDIR=.deps depmode=hp2 /bin/sh -x ./depcomp aCC +DD64
-Wl,+k -DHAVE_CONFIG_H -I. -I. -I. -D_THREAD_SAFE -DTL1overOSI
-D_POSIX_C_SOURCE=199506L -I./tl1_am/src -I/usr/opt/temip/CMA/include
-mt +DD64 +z -AA -g -c -o tl1_am/src/ne_sim-ne.o `test -f
'tl1_am/src/ne.cxx' || echo './'`tl1_am/src/ne.cxx
+ scriptversion=2006-07-09.11
+ test -z hp2
+ test -z tl1_am/src/ne.cxx
+ test -z tl1_am/src/ne_sim-ne.o
+ + echo tl1_am/src/ne_sim-ne.o
+ sed s|[^\/]*$|.deps/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|
depfile=tl1_am/src/.deps/ne_sim-ne.Po
+ + echo tl1_am/src/.deps/ne_sim-ne.Po
+ sed s/\.\([^.]*\)$/.T\1/
tmpdepfile=tl1_am/src/.deps/ne_sim-ne.TPo
+ rm -f tl1_am/src/.deps/ne_sim-ne.TPo
+ test hp2 = hp
+ test hp2 = dashXmstdout
+ + echo tl1_am/src/ne_sim-ne.o
+ sed -e s|/[^/]*$|/|
dir=tl1_am/src/
+ test xtl1_am/src/ = xtl1_am/src/ne_sim-ne.o
+ + echo tl1_am/src/ne_sim-ne.o
+ sed -e s|^.*/|| -e s/\.o$// -e s/\.lo$//
base=ne_sim-ne
+ test no = yes
+ tmpdepfile1=tl1_am/src/ne_sim-ne.d
+ tmpdepfile2=tl1_am/src/ne_sim-ne.d
+ aCC +DD64 -Wl,+k -DHAVE_CONFIG_H -I. -I. -I. -D_THREAD_SAFE
-DTL1overOSI -D_POSIX_C_SOURCE=199506L -I./tl1_am/src
-I/usr/opt/temip/CMA/include -mt +DD64 +z -AA -g -c -o
tl1_am/src/ne_sim-ne.o tl1_am/src/ne.cxx +Maked
+ stat=0
+ test 0 -eq 0
+ :
+ test -f tl1_am/src/ne_sim-ne.d
+ break
+ test -f tl1_am/src/ne_sim-ne.d
+ sed -e s,^.*\.[a-z]*:,tl1_am/src/ne_sim-ne.o:, tl1_am/src/ne_sim-ne.d
+ 1> tl1_am/src/.deps/ne_sim-ne.Po
+ sed -ne 2,${; s/^ *//; s/ \\*$//; s/$/:/; p;} tl1_am/src/ne_sim-ne.d
+ 1>> tl1_am/src/.deps/ne_sim-ne.Po
+ rm -f tl1_am/src/ne_sim-ne.d tl1_am/src/ne_sim-ne.d
+ exit 0
I'm also attaching demo.tar which illustrates my troubles using only
HP make and HP aCC. HP support has confirmed to me that they are able
to duplicate my results.
I believe this is all a function of two things:
1. date of x is less than date of x.cc (where x is any include you
wish to examine, such as
/opt/aCC/include_std/rw/numbrw)
2. Internal single suffix inference rules within either GNU or HP make
From HP man make:
Single suffix inference rules (.c) define how to build x from x.c. In
effect, the first suffix is null. Single suffix rules are useful for
building targets from only one source file; e.g., shell procedures and
simple C programs.
--
ASCII ribbon campaign:
() against HTML email
/\ against Microsoft attachments
Information: http://www.expita.com/nomime.html