Mail Archives: cygwin/2004/01/21/13:41:00
Greetings,
I just recently started having a problem with GNU make. I believe
it's related to VPATH, but I'm not sure. The weird part is that I think
it just recently started happening after I ran the cygwin update (which
did not update GNU make). I checked the mailing list archvies and I
don't see anything that seems relevant/related.
For various reasons, I have created a GNUmakefile to build the
OpenSSL crytpo lib using the Tornado (vxWorks) tools (gcc based
basically) on Windows 2000 SP3. The crypto lib has a lot of files
(370+), spread out over probably 30+ sub-dirs. I setup the directory
structure to have a GNUmakefile at the top level, with a src/ directory
with all the crypto sources in it and an obj/ directory where I want all
the .o's built. I setup the makefile to use all relative paths using
'/' as a seperator. I setup a VPATH to refer to all the source dirs,
again, just simple unix style paths, no spaces, or weird DOS characters.
Here's the VPATH:
VPATH = src:src/asn1:src/bf:src/bio:src/cast:src/comp:src/bn:\
src/conf:src/des:src/dh:src/dsa:src/dso:src/err:\
src/evp:src/hmac:src/lhash:src/md2:src/md4:src/buffer:\
src/md5:src/mdc2:src/objects:src/pem:src/pkcs12:src/pkcs7:\
src/rand:src/rc2:src/rc4:src/ripemd:src/rsa:\
src/sha:src/stack:src/x509:src/x509v3:src/misc
I would normally just use the make that comes with Tornado (ver
3.74), and that generally works just fine, except a couple of the build
steps require some shell scripting that doesn't work with command.com.
So I have been runing GNU make under cygwin for this step, which up
until a recently has been just fine.
Now however, after and update to cygwin, when I run cygwin GNU make,
it acts like it can't seem to find some of the dirs in the VPATH,
complaining that it has no rule to build the required object files.
However, it finds .c files in the peer directories just fine. And
moving the problem directories around in the VPATH doesn't help either.
It's like it thinks that the VPATH directive doesn't apply to those
directories, or it can't find them.
The exact same makefile on Linux with GNU make 3.80 works just fine.
The same setup with the Tornago GNU make 3.74 works just fine (except
for the steps that require the shell scripting).
As a quick example, one of the problem directories is "src/bn". I
ran GNU make with -dd for a .c file in the src/bss dir (which works
fine) and for a .c file in a problem dir. Here's when it's looking for
the "good" one:
> Considering target file `obj/bss_log.o'.
> File `obj/bss_log.o' does not exist.
> Looking for an implicit rule for `obj/bss_log.o'.
> Trying pattern rule with stem `bss_log'.
> Trying implicit prerequisite `bss_log.c'.
> Found prerequisite `bss_log.c' as VPATH `src/bio/bss_log.c'
> Trying rule prerequisite `algo_defines.h'.
> Found prerequisite `algo_defines.h' as VPATH `src/algo_defines.h'
And here's one where the src/bn directory seems to not be found, even
though it's in my VPATH:
> Considering target file `obj/bn_add.o'.
> File `obj/bn_add.o' does not exist.
> Looking for an implicit rule for `obj/bn_add.o'.
> Trying pattern rule with stem `bn_add'.
> Trying implicit prerequisite `bn_add.c'.
> Trying pattern rule with stem `bn_add'.
> Trying implicit prerequisite `obj/bn_add.c'.
> Trying pattern rule with stem `bn_add'.
so src/bn and src/bss are both on there (I've tried moving src/bn
around, it doesn't matter). The .c files are in those directories, but
it finds one, but not the other. The other problem dirs are src/dso,
src/md5 and src/rc4. These seem consistent, regardless of where I put
them in the VPATH.
I've checked the permissionns on these directories, and they are all
identical. I'm actually mounting the whole tree from a Linux box using
a samba share, and mapping that to a drive letter. And as I noted
above, the same GNUmakefile on the Linux system works just fine. All
the permissions on the Linux dirs are identical and they all appear
identical on the Windows box.
So, before I start trying to debug GNU make, has anyone seen anything
like this? I'll work on recreating the problem with a simplified setup,
so I can post an example here, but I'm hoping someones seen this before.
Thanks,
Pete
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -