Java Solaris Communities Sun Store Join SDN My Profile Why Join?
 
Bug Database
Bug Detail
Quick Lists
Top 25 Bugs
Top 25 RFE's
Recently Closed Bugs
Printable Page Printable Page


Bug Database
Bug ID: 6668781
Votes 0
Synopsis Openjdk windows cygwin build failure: no rule to make linker_md.obj target
Category java:build
Reported Against
Release Fixed 6-open(b07), 7(b25) (Bug ID:2159578)
State 10-Fix Delivered, bug
Priority: 2-High
Related Bugs 6672777
Submit Date 28-FEB-2008
Description
Download openjdk7 sources and binary plugs:

#!/bin/bash
set -x
export ALT_JDK_IMPORT_PATH=C:/jdk1.6.0
export ALT_BOOTDIR=C:/jdk1.6.0
export ALT_SLASH_JAVA=C:/jprt/slashjava
export ALT_PREVIOUS_RELEASE_PATH=C:/jdk1.6.0
export ALT_BINARY_PLUGS_PATH=C:/jprt/products/P1/binaryplugs6/openjdk-binary-plugs

( cd jdk7 && rm -f -r build jdk/build )
( cd jdk7 && make OPENJDK=true BUILD_HOTSPOT=false )

You will get something like:

make[6]: *** No rule to make target `c:/kto/jdk7/build/WINDOW~1/tmp/java/hpi/windows_threads/obj/linker_md.obj',
needed by `c:/kto/jdk7/build/WINDOW~1/tmp/java/hpi/windows_threads/obj/.files_compiled'.
Stop.
make[6]: Leaving directory /cygdrive/c/kto/jdk7/jdk/make/java/hpi/windows'
Posted Date : 2008-02-28 01:27:05.0
Work Around
N/A
Evaluation
I'm trying this fix in the top level repository:

bonsai<315> hg diff
diff --git a/make/Defs-internal.gmk b/make/Defs-internal.gmk
--- a/make/Defs-internal.gmk
+++ b/make/Defs-internal.gmk
@@ -208,7 +208,6 @@ endif

 # Common make arguments (supplied to all component builds)
 COMMON_BUILD_ARGUMENTS = \
-    JDK_TOPDIR=$(ABS_JDK_TOPDIR) \
     JDK_MAKE_SHARED_DIR=$(ABS_JDK_TOPDIR)/make/common/shared \
     EXTERNALSANITYCONTROL=true \
     TARGET_CLASS_VERSION=$(TARGET_CLASS_VERSION) \

Just delete that one line.

The root cause appears to be that the cygwin make is seeing ':' characters in the paths supplied to the vpath or VPATH mechanism, and is interpreting them as separators rather than part of the path. The above fix triggers the use of relative paths and avoids the issue. The documentation on vpath seems to state that ';' is used on windows, but is cygwin unix or windows? :^(

It's possible a better answer would be to always make sure that vpath entries are only relative paths, and in general try and use relative paths in the makefiles if at all possible.

Use of the cygwin style paths (/cygdrive/c/) is assumed a problem because the resulting path will be supplied to the Windows Visual Stusio compiler (cl.exe) which will not like these /cygdrive/c/ paths. Although I suppose the compile rule could be adjusted to always transform any path it gets into a C:/ style path with cygpath -m.
Posted Date : 2008-02-28 01:27:05.0

A better fix would be to make sure that the vpath entries always use relative paths, looking at this change:
Posted Date : 2008-03-06 02:49:47.0
Comments
  
  Include a link with my name & email   


PLEASE NOTE: JDK6 is formerly known as Project Mustang