# HG changeset patch # User ihse # Date 1537389754 -7200 # Node ID 3f32076a43a678362e95e61a5ac1c24ab20b5644 # Parent 3221f5e148667209777a3fea88b240218ccb23ad 8210919: Remove statically linked libjli on Windows Reviewed-by: erikj diff -r 3221f5e14866 -r 3f32076a43a6 make/ExplodedImageOptimize.gmk --- a/make/ExplodedImageOptimize.gmk Wed Sep 19 15:25:05 2018 -0400 +++ b/make/ExplodedImageOptimize.gmk Wed Sep 19 22:42:34 2018 +0200 @@ -1,5 +1,5 @@ # -# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -38,7 +38,7 @@ $(PACKAGES_ATTRIBUTE_TARGET): $(ALL_MODULEINFO_CLASSES) $(BUILD_JIGSAW_CLASSES) $(call LogInfo, Optimizing the exploded image) - $(TOOL_ADD_PACKAGES_ATTRIBUTE) $(JDK_OUTPUTDIR) + $(call ExecuteWithLog, $@, $(TOOL_ADD_PACKAGES_ATTRIBUTE) $(JDK_OUTPUTDIR)) $(TOUCH) $@ TARGETS := $(PACKAGES_ATTRIBUTE_TARGET) diff -r 3221f5e14866 -r 3f32076a43a6 make/launcher/Launcher-java.base.gmk --- a/make/launcher/Launcher-java.base.gmk Wed Sep 19 15:25:05 2018 -0400 +++ b/make/launcher/Launcher-java.base.gmk Wed Sep 19 22:42:34 2018 +0200 @@ -43,8 +43,6 @@ VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \ OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/java_objs, \ OPTIMIZATION := HIGH, \ - WINDOWS_STATIC_LINK := true, \ - NO_JAVA_MS := true, \ )) $(SUPPORT_OUTPUTDIR)/modules_cmds/java.base/java$(EXE_SUFFIX): $(BUILD_LAUNCHER_java) @@ -60,8 +58,6 @@ LIBS_windows := user32.lib comctl32.lib, \ EXTRA_RC_FLAGS := $(JAVA_RC_FLAGS), \ VERSION_INFO_RESOURCE := $(JAVA_VERSION_INFO_RESOURCE), \ - WINDOWS_STATIC_LINK := true, \ - NO_JAVA_MS := true, \ )) endif diff -r 3221f5e14866 -r 3f32076a43a6 make/launcher/LauncherCommon.gmk --- a/make/launcher/LauncherCommon.gmk Wed Sep 19 15:25:05 2018 -0400 +++ b/make/launcher/LauncherCommon.gmk Wed Sep 19 22:42:34 2018 +0200 @@ -91,11 +91,9 @@ # LDFLAGS_solaris Additional LDFLAGS_solaris # RC_FLAGS Additional RC_FLAGS # MACOSX_SIGNED On macosx, sign this binary -# WINDOWS_STATIC_LINK On windows, link statically with C runtime and libjli. # OPTIMIZATION Override default optimization level (LOW) # OUTPUT_DIR Override default output directory # VERSION_INFO_RESOURCE Override default Windows resource file -# NO_JAVA_MS Do not add -ms8m to JAVA_ARGS. SetupBuildLauncher = $(NamedParamsMacroTemplate) define SetupBuildLauncherBody # Setup default values (unless overridden) @@ -103,26 +101,24 @@ $1_OPTIMIZATION := LOW endif - ifneq ($$($1_NO_JAVA_MS), true) - # The norm is to append -ms8m, unless otherwise instructed. - $1_JAVA_ARGS += -ms8m - endif - ifeq ($$($1_MAIN_MODULE), ) $1_MAIN_MODULE := $(MODULE) endif - ifneq ($$($1_JAVA_ARGS), ) - ifneq ($$($1_EXTRA_JAVA_ARGS), ) - $1_EXTRA_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \ - $$(addprefix -J, $$($1_EXTRA_JAVA_ARGS)), "$$a"$(COMMA) )) }' - $1_CFLAGS += -DEXTRA_JAVA_ARGS=$$($1_EXTRA_JAVA_ARGS_STR) - endif - $1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \ - $$(addprefix -J, $$($1_JAVA_ARGS)) -m $$($1_MAIN_MODULE)/$$($1_MAIN_CLASS), "$$a"$(COMMA) )) }' - $1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR) + $1_JAVA_ARGS += -ms8m + ifneq ($$($1_MAIN_CLASS), ) + $1_LAUNCHER_CLASS := -m $$($1_MAIN_MODULE)/$$($1_MAIN_CLASS) endif + ifneq ($$($1_EXTRA_JAVA_ARGS), ) + $1_EXTRA_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \ + $$(addprefix -J, $$($1_EXTRA_JAVA_ARGS)), "$$a"$(COMMA) )) }' + $1_CFLAGS += -DEXTRA_JAVA_ARGS=$$($1_EXTRA_JAVA_ARGS_STR) + endif + $1_JAVA_ARGS_STR := '{ $$(strip $$(foreach a, \ + $$(addprefix -J, $$($1_JAVA_ARGS)) $$($1_LAUNCHER_CLASS), "$$a"$(COMMA) )) }' + $1_CFLAGS += -DJAVA_ARGS=$$($1_JAVA_ARGS_STR) + $1_LIBS := ifeq ($(OPENJDK_TARGET_OS), macosx) ifeq ($$($1_MACOSX_SIGNED), true) @@ -161,19 +157,13 @@ $1_LIBS += -lz endif - ifeq ($$($1_WINDOWS_STATIC_LINK), true) - $1_CFLAGS += $(filter-out -MD, $(CFLAGS_JDKEXE)) - $1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/jli_static.lib - else - $1_CFLAGS += $(CFLAGS_JDKEXE) - $1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib - endif + $1_WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib $$(eval $$(call SetupJdkExecutable, BUILD_LAUNCHER_$1, \ NAME := $1, \ EXTRA_FILES := $(LAUNCHER_SRC)/main.c, \ OPTIMIZATION := $$($1_OPTIMIZATION), \ - CFLAGS := $$($1_CFLAGS) \ + CFLAGS := $$(CFLAGS_JDKEXE) $$($1_CFLAGS) \ $(LAUNCHER_CFLAGS) \ $(VERSION_CFLAGS) \ -DLAUNCHER_NAME='"$(LAUNCHER_NAME)"' \ @@ -186,11 +176,11 @@ $$(ORIGIN_ARG) \ $$($1_LDFLAGS), \ LDFLAGS_linux := \ - -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ + -L$(call FindLibDirForModule, java.base)/jli, \ LDFLAGS_macosx := \ - -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ + -L$(call FindLibDirForModule, java.base)/jli, \ LDFLAGS_solaris := $$($1_LDFLAGS_solaris) \ - -L$(SUPPORT_OUTPUTDIR)/modules_libs/java.base/jli, \ + -L$(call FindLibDirForModule, java.base)/jli, \ LIBS := $(JDKEXE_LIBS) $$($1_LIBS), \ LIBS_unix := $$($1_LIBS_unix), \ LIBS_linux := -lpthread -ljli $(LIBDL), \ diff -r 3221f5e14866 -r 3f32076a43a6 make/lib/CoreLibraries.gmk --- a/make/lib/CoreLibraries.gmk Wed Sep 19 15:25:05 2018 -0400 +++ b/make/lib/CoreLibraries.gmk Wed Sep 19 22:42:34 2018 +0200 @@ -207,8 +207,6 @@ endif ifeq ($(OPENJDK_TARGET_OS), windows) - # Staticically link with c runtime on windows. - LIBJLI_CFLAGS_JDKLIB := $(filter-out -MD, $(CFLAGS_JDKLIB)) LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE) # Supply the name of the C runtime lib. LIBJLI_CFLAGS += -DMSVCR_DLL_NAME='"$(notdir $(MSVCR_DLL))"' @@ -216,7 +214,6 @@ LIBJLI_CFLAGS += -DMSVCP_DLL_NAME='"$(notdir $(MSVCP_DLL))"' endif else - LIBJLI_CFLAGS_JDKLIB := $(CFLAGS_JDKLIB) LIBJLI_OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE)/jli endif @@ -240,7 +237,7 @@ EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ OPTIMIZATION := HIGH, \ - CFLAGS := $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBJLI_CFLAGS), \ DISABLED_WARNINGS_solstudio := \ E_ASM_DISABLES_OPTIMIZATION \ E_STATEMENT_NOT_REACHED, \ @@ -260,27 +257,7 @@ LIBJLI_SRC_DIRS := $(call FindSrcDirsForComponent, java.base, libjli) -# On windows, the static library has the same suffix as the import library created by -# with the shared library, so the static library is given a different name. No harm -# in doing it for all platform to reduce complexity. -ifeq ($(OPENJDK_TARGET_OS), windows) - $(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \ - NAME := jli_static, \ - TYPE := STATIC_LIBRARY, \ - OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE), \ - SRC := $(LIBJLI_SRC_DIRS), \ - EXCLUDE_FILES := $(LIBJLI_EXCLUDE_FILES), \ - EXTRA_FILES := $(LIBJLI_EXTRA_FILES), \ - OPTIMIZATION := HIGH, \ - CFLAGS := $(STATIC_LIBRARY_FLAGS) $(LIBJLI_CFLAGS_JDKLIB) $(LIBJLI_CFLAGS) \ - $(addprefix -I, $(LIBJLI_SRC_DIRS)), \ - ARFLAGS := $(ARFLAGS), \ - OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjli_static, \ - )) - - TARGETS += $(BUILD_LIBJLI_STATIC) - -else ifeq ($(OPENJDK_TARGET_OS), aix) +ifeq ($(OPENJDK_TARGET_OS), aix) # AIX also requires a static libjli because the compiler doesn't support '-rpath' $(eval $(call SetupNativeCompilation, BUILD_LIBJLI_STATIC, \ NAME := jli_static, \ diff -r 3221f5e14866 -r 3f32076a43a6 make/lib/Lib-java.instrument.gmk --- a/make/lib/Lib-java.instrument.gmk Wed Sep 19 15:25:05 2018 -0400 +++ b/make/lib/Lib-java.instrument.gmk Wed Sep 19 22:42:34 2018 +0200 @@ -31,20 +31,15 @@ ################################################################################ ifeq ($(OPENJDK_TARGET_OS), windows) - # Statically link the C runtime so that there are not dependencies on modules - # not on the search patch when invoked from the Windows system directory - # (or elsewhere). - LIBINSTRUMENT_CFLAGS_JDKLIB := $(filter-out -MD, $(CFLAGS_JDKLIB)) # equivalent of strcasecmp is stricmp on Windows LIBINSTRUMENT_CFLAGS := -Dstrcasecmp=stricmp -else - LIBINSTRUMENT_CFLAGS_JDKLIB := $(CFLAGS_JDKLIB) + WINDOWS_JLI_LIB := $(SUPPORT_OUTPUTDIR)/native/java.base/libjli/jli.lib endif $(eval $(call SetupJdkLibrary, BUILD_LIBINSTRUMENT, \ NAME := instrument, \ OPTIMIZATION := LOW, \ - CFLAGS := $(LIBINSTRUMENT_CFLAGS_JDKLIB) $(LIBINSTRUMENT_CFLAGS), \ + CFLAGS := $(CFLAGS_JDKLIB) $(LIBINSTRUMENT_CFLAGS), \ CFLAGS_debug := -DJPLIS_LOGGING, \ CFLAGS_release := -DNO_JPLIS_LOGGING, \ EXTRA_HEADER_DIRS := java.base:libjli, \ @@ -66,11 +61,13 @@ LIBS_macosx := -ljli -liconv -framework Cocoa -framework Security \ -framework ApplicationServices, \ LIBS_windows := jvm.lib $(WIN_JAVA_LIB) advapi32.lib \ - $(call FindStaticLib, java.base, jli_static), \ + $(WINDOWS_JLI_LIB), \ )) -ifneq ($(filter $(OPENJDK_TARGET_OS), windows aix), ) +ifeq ($(OPENJDK_TARGET_OS), aix) $(BUILD_LIBINSTRUMENT): $(call FindStaticLib, java.base, jli_static) +else ifeq ($(OPENJDK_TARGET_OS), windows) + $(BUILD_LIBINSTRUMENT): $(call FindLib, java.base, jli) else $(BUILD_LIBINSTRUMENT): $(call FindLib, java.base, jli, /jli) endif