torutkのブログ

ソフトウェア・エンジニアのブログ

Java SE 6 (Mustang) b72のビルドエラー

Windows版でビルドエラーが発生しました。

make[2]: *** No rule to make target `E:/java/mustang/b72out/tmp/deploy/deployObj
/BasicPerfStore.o', needed by `E:/java/mustang/b72out/tmp/deploy/common/bin/depl
oy.dll'.  Stop.
make[2]: Leaving directory `/cygdrive/e/java/mustang/b72/deploy/make/javaws'

deploy/make/common/DeployRules-windows.gmkの中の以下の定義が問題のようです。

vpath %.cpp $(DEPLOY_SHARE_SRC)/native $(DEPLOY_PLATFORM_SRC)/native
DLL_o  = $(DEPLOY_FILES_cpp:%.cpp=$(DEPLOYOBJDIR)/%.o)
$(DEPLOYOBJDIR)/%.o: %.cpp
    	@$(prep-target)
	$(CC) -I$(DEPLOYOBJDIR)               \
	      -I$(DEPLOY_SHARE_SRC)/native    \
	      -I$(DEPLOY_PLATFORM_SRC)/native \
	      -I$(DEPLOYCLASSHDRDIR)          \
	      -I$(BOOTDIR)/include            \
	      -I$(BOOTDIR)/include/win32      \
	      -DWIN32                         \
	      -DPERFLIB_EXPORTS               \
	      -c $(MS_RUNTIME_OPTION) -O2 -Fo$@ $?

$(DEPLOY_COMMON_LIB): $(DLL_o)
	@$(prep-target)
	$(LINK) $(DEPLOYOBJDIR)/crypt32.lib      \
	        $(LINK_FLAGS) -machine:I386 -DLL \
	        $(DLL_o)                         \
	        -OUT:$(DEPLOY_COMMON_LIB)

DEPLOY_FILES_cppの変数にBasicPerfStore.cppが含まれています。
make -pで変数定義を出力したときに、

# VPATH Search Paths

# No `vpath' search paths.

# No general (`VPATH' variable) search path.

となっているのも気になります。
VPATHの設定がどうもNGのようなので、暫定処置として

$(DEPLOYOBJDIR)/%.o: $(DEPLOY_SHARE_SRC)/native/%.cpp
    略
$(DEPLOYOBJDIR)/%.o: $(DEPLOY_PLATFORM_SRC)/native/%.cpp
    略

のように%.cppをディレクトリ指定付きで記述してみると、エラーは回避できました。