This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU make and VPATH problems


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:\

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
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.


-- Unsubscribe info: Problem reports: Documentation: FAQ:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]