Trouble building with Cygwin



About this list Date view Thread view Subject view Author view

Malcolm Wallace (malcolm-nhc@cs.york.ac.uk)
Fri, 14 Apr 2000 16:24:16 +0100


A couple of people have reported that nhc98-1.0pre18 doesn't build on the Cygwin platform, failing very early with the following message: > cd src/runtime; make install nhc98heap.exe > make[1]: *** No rule to make target > `/nhc98-1.0pre18/targets/ix86-CYGWIN_98-4.10/obj/runtime/Kernel', > needed by `ofiles'. Stop. Cygwin's "make" is lying! The rule for that target does exist. I explain a bit more about the problem below, but for now I hope you can workaround it by doing a manual ( cd src/runtime; make objdir ) before continuing with the normal 'make'. You may also need to do ( cd src/prelude; make objdir ) later on in the build as well. Now, why is it happening? In the past we have had reports that there is a filename-matching bug in Cygwin's "make", triggered by filenames that start with a double slash, like //d/mydir/file. It caused an error identical to the currently reported one. The configure script therefore takes care to mangle pathnames to avoid this bug. BUT It seems very likely that the current problem is related to the older one, so I'll quote some correspondence we had about that, and see if it helps someone work out what's going on here. > Cygwin GNU make version 3.75 doesn't work when a double leading slash > exists in multi object targets (pattern matching both sides of the > colon) which are used extensively in building nhc98. For instance: > cd src/runtime; make install nhc98heap > mkdir -p //d/public/nhc98-1.0pre8/targets/ix86-CYGWIN_NT-4.0/obj/runtime > make[1]: *** No rule to make target > `//d/public/nhc98-1.0pre8/targets/ix86-CYGWIN_NT-4.0/obj/runtime/Kernel', > needed by `ofiles'. > The target rules in question are: > > ofiles: ${OBJDIR} ${OBJDIRS} > ${OBJDIRS}: ${OBJDIR}/% : > mkdir -p $@ > > Note that the OBJDIRS rule is a "static pattern rule", with two > separate colons, and no dependencies. The OBJDIRS variable contains > a list of directories to be made. > I believe that I checked when I did this stuff that file names beginning > with a single slash were not affected by the makefile pattern matching bug - > only the double slash ones. > The Cygwin 'pwd' produces a double slash when activated in a > directory which is on a drive other than C:\ eg D:\mystuff is the > same as //d/mystuff. If the directory is on the C:\ drive, only a > single slash is produced, and the drive letter is omitted. That is, > Cygwin treats the C:\ drive as if it were a Unix root partition > (C:\mystuff is the same as /mystuff). > Under a DOS shell, programs such as Cygwin's 'ls' will interpret > //c/mystuff the same way as /mystuff, C:/mystuff and C:\mystuff, > whereas /c/mystuff would be an error. > The Cygwin file naming system really is a mess. Regards, Malcolm -------------------------------------------------------------------- To unsubscribe, send a message containing the word `unsubscribe' to: nhc-users-request@cs.york.ac.uk --------------------------------------------------------------------


About this list Date view Thread view Subject view Author view