diff --git a/jdk/make/Makefile b/jdk/make/Makefile index 04c5a563ee7..8b0b176b7d7 100644 --- a/jdk/make/Makefile +++ b/jdk/make/Makefile @@ -240,7 +240,12 @@ import_product: all build:: sanity-all post-sanity-all -SUBDIRS = tools java javax org sun sunw com jpda mkdemo mksample launchers +SUBDIRS = tools java javax sun com +SUBDIRS_tools = launchers +SUBDIRS_misc = org sunw jpda mkdemo mksample + +include $(BUILDDIR)/common/Subdirs.gmk + all build:: $(SUBDIRS-loop) diff --git a/jdk/make/com/Makefile b/jdk/make/com/Makefile index 1edfc3a7bec..9c42c32fc06 100644 --- a/jdk/make/com/Makefile +++ b/jdk/make/com/Makefile @@ -32,6 +32,8 @@ PRODUCT = com include $(BUILDDIR)/common/Defs.gmk SUBDIRS = sun +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/Makefile b/jdk/make/com/sun/Makefile index a6549e2a4d1..c8cbd18a9e7 100644 --- a/jdk/make/com/sun/Makefile +++ b/jdk/make/com/sun/Makefile @@ -38,10 +38,19 @@ ifndef OPENJDK endif endif +# jarsigner is part of JRE +SUBDIRS = java security net/ssl jarsigner + +SUBDIRS_management = jmx +SUBDIRS_desktop = image inputmethods +SUBDIRS_enterprise = crypto/provider jndi \ + org xml rowset net/httpserver +SUBDIRS_misc = $(SCRIPT_SUBDIR) tracing servicetag nio demo + # Omit mirror since it's built with the apt tool. -SUBDIRS = $(SCRIPT_SUBDIR) image security crypto/provider jndi jmx \ - java inputmethods org xml rowset net/httpserver net/ssl demo \ - tools jarsigner tracing servicetag nio +SUBDIRS_tools = tools + +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/demo/Makefile b/jdk/make/com/sun/demo/Makefile index 09650fe33e7..ac33c2385b2 100644 --- a/jdk/make/com/sun/demo/Makefile +++ b/jdk/make/com/sun/demo/Makefile @@ -38,6 +38,8 @@ PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk SUBDIRS = jvmti +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/demo/jvmti/Makefile b/jdk/make/com/sun/demo/jvmti/Makefile index 6fedad20f87..5c0b4447496 100644 --- a/jdk/make/com/sun/demo/jvmti/Makefile +++ b/jdk/make/com/sun/demo/jvmti/Makefile @@ -38,6 +38,8 @@ PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk SUBDIRS = hprof +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/inputmethods/Makefile b/jdk/make/com/sun/inputmethods/Makefile index a4b7c9f97a9..ce84f392448 100644 --- a/jdk/make/com/sun/inputmethods/Makefile +++ b/jdk/make/com/sun/inputmethods/Makefile @@ -32,6 +32,8 @@ PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk SUBDIRS = indicim thaiim +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/java/Makefile b/jdk/make/com/sun/java/Makefile index dd16695dea7..3f6faff597e 100644 --- a/jdk/make/com/sun/java/Makefile +++ b/jdk/make/com/sun/java/Makefile @@ -31,7 +31,10 @@ BUILDDIR = ../../.. PRODUCT = plugin include $(BUILDDIR)/common/Defs.gmk -SUBDIRS = browser pack +SUBDIRS = pack +SUBDIRS_misc = browser +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/java/browser/Makefile b/jdk/make/com/sun/java/browser/Makefile index d43bbe14214..148ba370827 100644 --- a/jdk/make/com/sun/java/browser/Makefile +++ b/jdk/make/com/sun/java/browser/Makefile @@ -32,6 +32,8 @@ PRODUCT = plugin include $(BUILDDIR)/common/Defs.gmk SUBDIRS = dom net +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/jmx/Makefile b/jdk/make/com/sun/jmx/Makefile index 81470f0befe..ceff8a333d5 100644 --- a/jdk/make/com/sun/jmx/Makefile +++ b/jdk/make/com/sun/jmx/Makefile @@ -51,6 +51,8 @@ else SUBDIRS = snmp endif +include $(BUILDDIR)/common/Subdirs.gmk + all build: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/jndi/Makefile b/jdk/make/com/sun/jndi/Makefile index 04a11126bd9..204582ad5e0 100644 --- a/jdk/make/com/sun/jndi/Makefile +++ b/jdk/make/com/sun/jndi/Makefile @@ -31,6 +31,8 @@ BUILDDIR = ../../.. include $(BUILDDIR)/common/Defs.gmk SUBDIRS = toolkit cosnaming ldap rmi dns +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/jndi/rmi/Makefile b/jdk/make/com/sun/jndi/rmi/Makefile index eeefabf853b..0298182beda 100644 --- a/jdk/make/com/sun/jndi/rmi/Makefile +++ b/jdk/make/com/sun/jndi/rmi/Makefile @@ -31,6 +31,8 @@ BUILDDIR = ../../../.. include $(BUILDDIR)/common/Defs.gmk SUBDIRS = registry +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/nio/Makefile b/jdk/make/com/sun/nio/Makefile index 74151db7d61..1d6d18affc4 100644 --- a/jdk/make/com/sun/nio/Makefile +++ b/jdk/make/com/sun/nio/Makefile @@ -31,6 +31,8 @@ BUILDDIR = ../../.. include $(BUILDDIR)/common/Defs.gmk SUBDIRS = sctp +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/org/Makefile b/jdk/make/com/sun/org/Makefile index c0f1b841eb8..033b47d24b2 100644 --- a/jdk/make/com/sun/org/Makefile +++ b/jdk/make/com/sun/org/Makefile @@ -32,6 +32,8 @@ PRODUCT = org include $(BUILDDIR)/common/Defs.gmk SUBDIRS = apache +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/org/apache/Makefile b/jdk/make/com/sun/org/apache/Makefile index 3427d05ed02..5bd353371ae 100644 --- a/jdk/make/com/sun/org/apache/Makefile +++ b/jdk/make/com/sun/org/apache/Makefile @@ -31,6 +31,7 @@ BUILDDIR = ../../../.. include $(BUILDDIR)/common/Defs.gmk SUBDIRS = xml +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/security/Makefile b/jdk/make/com/sun/security/Makefile index 41df70fb42c..4fc43e4a8d8 100644 --- a/jdk/make/com/sun/security/Makefile +++ b/jdk/make/com/sun/security/Makefile @@ -30,7 +30,10 @@ BUILDDIR = ../../.. include $(BUILDDIR)/common/Defs.gmk -SUBDIRS = jgss sasl auth auth/module +SUBDIRS = auth +SUBDIRS_misc = jgss sasl auth/module +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/com/sun/tools/Makefile b/jdk/make/com/sun/tools/Makefile index be2b39c8461..1187cdf8091 100644 --- a/jdk/make/com/sun/tools/Makefile +++ b/jdk/make/com/sun/tools/Makefile @@ -35,6 +35,8 @@ include $(BUILDDIR)/common/Defs.gmk AUTO_FILES_JAVA_DIRS = com/sun/tools/extcheck SUBDIRS = attach +include $(BUILDDIR)/common/Subdirs.gmk + all build: $(SUBDIRS-loop) clean clobber:: diff --git a/jdk/make/com/sun/tracing/Makefile b/jdk/make/com/sun/tracing/Makefile index 166aee38db4..e2599024755 100644 --- a/jdk/make/com/sun/tracing/Makefile +++ b/jdk/make/com/sun/tracing/Makefile @@ -33,6 +33,8 @@ PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk SUBDIRS = dtrace +include $(BUILDDIR)/common/Subdirs.gmk + all build: $(SUBDIRS-loop) clean clobber:: diff --git a/jdk/make/common/Defs.gmk b/jdk/make/common/Defs.gmk index 88a49d4443e..75077b666a8 100644 --- a/jdk/make/common/Defs.gmk +++ b/jdk/make/common/Defs.gmk @@ -576,17 +576,17 @@ endef define install-file $(prep-target) $(CP) $< $@ -$(install-module-file) +@$(install-module-file) endef define chmod-file $(CHMOD) $1 $@ -$(call chmod-module-file, $1) +@$(call chmod-module-file, $1) endef define install-sym-link $(LN) -s $1 $@ -$(call install-module-sym-link, $1) +@$(call install-module-sym-link, $1) endef # @@ -607,131 +607,9 @@ define java-vm-cleanup if [ -w $(HOTSPOT_LOG_NAME) ] ; then $(RM) $(HOTSPOT_LOG_NAME); fi endef -# Default make settings for processing SUBDIRS with clobber or clean names -SUBDIRS_MAKEFLAGS-clobber = INCREMENTAL_BUILD=false -SUBDIRS_MAKEFLAGS-clean = INCREMENTAL_BUILD=false - # Current directory CURRENT_DIRECTORY := $(shell $(PWD)) -# If no timing wanted, we need to define these as empty -ifdef NO_TIMING - -TIMING_ID:=NA - -define TIMING_start -t=0:0:0:0 -endef - -define TIMING_end -time_used=0 -endef - -else # NO_TIMING - -# Default timing id -TIMING_ID:=$(shell $(BASENAME) $(CURRENT_DIRECTORY)) - -# Timing start (must be used in same shell, e.g. same command line) -# Defines the shell variable $1 to have the start time. -define TIMING_start -$1=`$(DATE) +%j:%H:%M:%S` -endef - -# Timing end (must be used in same shell, e.g. same command line) -# Expects shell variable $1 to have been defined as the start time. -# Expects shell variable $2 to have timing id string -# Sets total_seconds shell variable as the total seconds used. -# Sets time_used shell variable to contain format "%dh%dm%ds" -define TIMING_end -begTime="$${$1}"; \ -timing_id="$${$2}"; \ -endTime=`$(DATE) +%j:%H:%M:%S`; \ -d1=`$(ECHO) $${begTime} | $(CUT) -d':' -f1 | $(SED) -e 's@^0*@@'`; \ -if [ "$${d1}" = "" ] ; then d1=0; fi; \ -h1=`$(ECHO) $${begTime} | $(CUT) -d':' -f2 | $(SED) -e 's@^0*@@'`; \ -if [ "$${h1}" = "" ] ; then h1=0; fi; \ -m1=`$(ECHO) $${begTime} | $(CUT) -d':' -f3 | $(SED) -e 's@^0*@@'`; \ -if [ "$${m1}" = "" ] ; then m1=0; fi; \ -s1=`$(ECHO) $${begTime} | $(CUT) -d':' -f4 | $(SED) -e 's@^0*@@'`; \ -if [ "$${s1}" = "" ] ; then s1=0; fi; \ -d2=`$(ECHO) $${endTime} | $(CUT) -d':' -f1 | $(SED) -e 's@^0*@@'`; \ -if [ "$${d2}" = "" ] ; then d2=0; fi; \ -h2=`$(ECHO) $${endTime} | $(CUT) -d':' -f2 | $(SED) -e 's@^0*@@'`; \ -if [ "$${h2}" = "" ] ; then h2=0; fi; \ -m2=`$(ECHO) $${endTime} | $(CUT) -d':' -f3 | $(SED) -e 's@^0*@@'`; \ -if [ "$${m2}" = "" ] ; then m2=0; fi; \ -s2=`$(ECHO) $${endTime} | $(CUT) -d':' -f4 | $(SED) -e 's@^0*@@'`; \ -if [ "$${s2}" = "" ] ; then s2=0; fi; \ -t1_secs=`$(EXPR) $${d1} '*' 60 '*' 60 '*' 24 '+' $${h1} '*' 60 '*' 60 \ - '+' $${m1} '*' 60 '+' $${s1}`; \ -t2_secs=`$(EXPR) $${d2} '*' 60 '*' 60 '*' 24 '+' $${h2} '*' 60 '*' 60 \ - '+' $${m2} '*' 60 '+' $${s2}`; \ -total_seconds=`$(EXPR) $${t2_secs} '-' $${t1_secs}`; \ -if [ "$${total_seconds}" -lt 0 ] ; then total_seconds=0; fi; \ -t_hour=`$(EXPR) $${total_seconds} '/' '(' 60 '*' 60 ')'`h; \ -t_min=`$(EXPR) '(' $${total_seconds} '%' '(' 60 '*' 60 ')' ')' '/' 60`m; \ -t_sec=`$(EXPR) $${total_seconds} '%' 60`s; \ -time_used=$${t_sec}; \ -if [ "$${t_hour}" != "0h" ] ; then \ -time_used=$${t_hour}$${t_min}$${t_sec}; \ -elif [ "$${t_min}" != "0m" ] ; then \ -time_used=$${t_min}$${t_sec}; \ -else \ -time_used=$${t_sec}; \ -fi; \ -$(PRINTF) " Timing: %05d seconds or %s for %s\n" \ - $${total_seconds} $${time_used} $${timing_id} -endef - -endif # NO_TIMING - -# Given a SUBDIRS list, cd into them and make them -# SUBDIRS_MAKEFLAGS Make settings for a subdir make -# SUBDIRS_MAKEFLAGS-$@ Make settings specific to this target -define SUBDIRS-loop -@$(ECHO) "Begin Processing SUBDIRS: $(SUBDIRS)" -@for i in DUMMY $(SUBDIRS) ; do \ - if [ "$$i" != "DUMMY" ] ; then \ - $(ECHO) ">>>Recursively making "$$i" "$@" @ `$(DATE)` ..."; \ - timing_id="$(TIMING_ID)-`$(BASENAME) $${i}`"; \ - $(call TIMING_start,startTime); \ - curDir=$(CURRENT_DIRECTORY); \ - $(CD) $$i; $(MAKE) $@ TIMING_ID=$${timing_id} \ - $(SUBDIRS_MAKEFLAGS) \ - $(SUBDIRS_MAKEFLAGS-$@) \ - FULL_VERSION=$(FULL_VERSION) \ - RELEASE=$(RELEASE) || exit 1; \ - $(CD) $${curDir}; \ - $(call TIMING_end,startTime,timing_id); \ - $(ECHO) "<<>>Recursively making "$$i" "$@" @ `$(DATE)` ..."; \ - timing_id="$(TIMING_ID)-`$(BASENAME) $${i}`"; \ - $(call TIMING_start,startTime); \ - curDir=$(CURRENT_DIRECTORY); \ - $(CD) $$i; $(MAKE) $@ TIMING_ID=$${timing_id} \ - $(OTHERSUBDIRS_MAKEFLAGS) \ - FULL_VERSION=$(FULL_VERSION) \ - RELEASE=$(RELEASE) || exit 1; \ - $(CD) $${curDir}; \ - $(call TIMING_end,startTime,timing_id); \ - $(ECHO) "<< subdirs for the named group +# +# By default, subdirs specified in the SUBDIRS and all SUBDIRS_* +# variables will be built. +# +# BUILD_MODULES variable can be used to specify one or more groups +# to be built (BUILD_MODULES=all will build all groups). +# +# Variables of the currently supported groups are: +# SUBDIRS_desktop +# SUBDIRS_management +# SUBDIRS_enterprise +# SUBDIRS_misc +# SUBDIRS_tools +# +# Change to the above list also need to update +# make/common/shared/Sanity.gmk. NOTE: this list is subject +# to change till the JDK 7 SE profiles/modules are finalized. +# +# Eventually we want to restructure the make directory +# according to these grouping (e.g. make/desktop/...) and +# the SUBDIRS_ variables would not be needed. +# +# To build the desktop and tools groups only, you can do: +# gnumake BUILD_MODULES="desktop tools" ... +# + +# Iterate the subdirectories specified in $1. +# - cd into each subdir and make them + +# Given a SUBDIRS* list (first argument), cd into them and make them +# SUBDIRS_MAKEFLAGS Make settings for a subdir make +# SUBDIRS_MAKEFLAGS-$@ Make settings specific to this target +# +define subdirs-group-loop +@$(ECHO) "Begin Processing SUBDIRS: $($1)" +@for i in DUMMY $($1) ; do \ + if [ "$$i" != "DUMMY" ] ; then \ + $(MAKE) -C $$i $@ $(SUBDIRS_MAKEFLAGS) $(SUBDIRS_MAKEFLAGS-$@) \ + FULL_VERSION=$(FULL_VERSION) RELEASE=$(RELEASE) || exit 1; \ + fi ; \ +done +@$(ECHO) "Done Processing SUBDIRS: $($1)" +endef + +# Given a OTHERSUBDIRS list, cd into them and make them (extra loop define) +# OTHERSUBDIRS_MAKEFLAGS Make settings for a subdir make +define OTHERSUBDIRS-loop +@$(ECHO) "Begin Processing OTHERSUBDIRS: $(OTHERSUBDIRS)" +@for i in DUMMY $(OTHERSUBDIRS) ; do \ + if [ "$$i" != "DUMMY" ] ; then \ + $(MAKE) -C $$i $@ $(OTHERSUBDIRS_MAKEFLAGS) \ + FULL_VERSION=$(FULL_VERSION) RELEASE=$(RELEASE) || exit 1; \ + fi ; \ +done +@$(ECHO) "Done Processing OTHERSUBDIRS: $(OTHERSUBDIRS)" +endef + +# +# Iterate the list specified in SUBDIRS_ only if +# SUBDIRS_ is set and or "all" is specified +# in the BUILD_MODULES variable +# +ifdef SUBDIRS_desktop + ifneq (,$(findstring desktop, $(BUILD_MODULES))) + define subdirs-desktop-loop + @$(call subdirs-group-loop,SUBDIRS_desktop) + endef + else + define subdirs-desktop-loop + endef + endif +else + define subdirs-desktop-loop + endef +endif # SUBDIRS_desktop + +ifdef SUBDIRS_enterprise + ifneq (,$(findstring enterprise, $(BUILD_MODULES))) + define subdirs-enterprise-loop + @$(call subdirs-group-loop,SUBDIRS_enterprise) + endef + else + define subdirs-enterprise-loop + endef + endif +else +define subdirs-enterprise-loop +endef +endif # SUBDIRS_enterprise + +ifdef SUBDIRS_management + ifneq (,$(findstring management, $(BUILD_MODULES))) + define subdirs-management-loop + @$(call subdirs-group-loop,SUBDIRS_management) + endef + else + define subdirs-management-loop + endef + endif +else +define subdirs-management-loop +endef +endif # SUBDIRS_management + +ifdef SUBDIRS_misc + ifneq (,$(findstring misc, $(BUILD_MODULES))) + define subdirs-misc-loop + @$(call subdirs-group-loop,SUBDIRS_misc) + endef + else + define subdirs-misc-loop + endef + endif +else +define subdirs-misc-loop +endef +endif # SUBDIRS_misc + +ifdef SUBDIRS_tools + ifneq (,$(findstring tools, $(BUILD_MODULES))) + define subdirs-tools-loop + @$(call subdirs-group-loop,SUBDIRS_tools) + endef + else + define subdirs-tools-loop + endef + endif +else +define subdirs-tools-loop +endef +endif # SUBDIRS_tools + +# +# If BUILD_MODULES is not set or it's set to "all", +# iterate all groups. +SUBDIRS_all = $(SUBDIRS) $(SUBDIRS_desktop) $(SUBDIRS_enterprise) \ + $(SUBDIRS_management) $(SUBDIRS_misc) $(SUBDIRS_tools) + +ifndef BUILD_MODULES +define SUBDIRS-loop + @$(call subdirs-group-loop,SUBDIRS_all) +endef + +else + +ifneq (,$(findstring all, $(BUILD_MODULES))) +define SUBDIRS-loop + @$(call subdirs-group-loop,SUBDIRS_all) +endef + +else # BUILD_MODULES set +# +# Iterate SUBDIRS and the groups specified in BUILD_MODULES +# +define SUBDIRS-loop + @$(call subdirs-group-loop,SUBDIRS) + @$(subdirs-desktop-loop) + @$(subdirs-enterprise-loop) + @$(subdirs-management-loop) + @$(subdirs-misc-loop) + @$(subdirs-tools-loop) +endef + +endif +endif # BUILD_MODULES diff --git a/jdk/make/common/shared/Sanity.gmk b/jdk/make/common/shared/Sanity.gmk index 7499f6bb189..e7e3978bc8d 100644 --- a/jdk/make/common/shared/Sanity.gmk +++ b/jdk/make/common/shared/Sanity.gmk @@ -218,7 +218,8 @@ include $(JDK_MAKE_SHARED_DIR)/Sanity-Settings.gmk sane-zip_version \ sane-unzip_version \ sane-msvcrt_path \ - sane-freetype + sane-freetype \ + sane-build_modules ###################################################### # check for COPYRIGHT_YEAR variable @@ -844,6 +845,21 @@ else sane-freetype: endif +###################################################### +# if specified, BUILD_MODULES must contain valid values. +###################################################### +MODULES_REGEX="all|base|desktop|management|enterprise|misc|tools" +sane-build_modules: +ifdef BUILD_MODULES + @for m in $(BUILD_MODULES) ; do \ + valid=`$(ECHO) $$m | $(EGREP) $(MODULES_REGEX)`; \ + if [ "x$$valid" = "x" ] ; then \ + $(ECHO) "ERROR: $$m set in the BUILD_MODULES variable is invalid.\n" \ + "" >> $(ERROR_FILE); \ + fi \ + done +endif + ###################################################### # CUPS_HEADERS_PATH must be valid ###################################################### diff --git a/jdk/make/java/Makefile b/jdk/make/java/Makefile index ca48cc9bef5..e3d046f7ae4 100644 --- a/jdk/make/java/Makefile +++ b/jdk/make/java/Makefile @@ -38,9 +38,13 @@ SUBDIRS += hpi version jvm redist verify fdlibm java sun_nio jli main zip # Others # Note: java_crw_demo java_hprof_demo are demos but must be delivered built in sdk -SUBDIRS += security npt java_crw_demo java_hprof_demo \ - math awt util text applet net nio dyn \ - sql rmi jar beans logging management instrument + +SUBDIRS += security math util text net nio jar + +SUBDIRS_desktop = awt applet beans +SUBDIRS_management = management +SUBDIRS_misc = npt java_crw_demo java_hprof_demo \ + logging instrument dyn sql rmi ifeq ($(PLATFORM), solaris) @@ -53,6 +57,8 @@ ifeq ($(PLATFORM), linux) SUBDIRS += jexec endif # PLATFORM +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/java/hpi/Makefile b/jdk/make/java/hpi/Makefile index ee6453832ec..69f3861c0b1 100644 --- a/jdk/make/java/hpi/Makefile +++ b/jdk/make/java/hpi/Makefile @@ -34,6 +34,8 @@ include $(BUILDDIR)/common/Defs.gmk # Build specified the HPI implementations # SUBDIRS = $(HPIS) +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/java/java/Makefile b/jdk/make/java/java/Makefile index e3d5ee4231c..26853ac3aa8 100644 --- a/jdk/make/java/java/Makefile +++ b/jdk/make/java/java/Makefile @@ -218,6 +218,8 @@ ifeq ($(PLATFORM), solaris) endif SUBDIRS = reflect +include $(BUILDDIR)/common/Subdirs.gmk + all build: $(SUBDIRS-loop) clean clobber:: diff --git a/jdk/make/java/java/genlocales.gmk b/jdk/make/java/java/genlocales.gmk index 3adb769490d..df9aec72678 100644 --- a/jdk/make/java/java/genlocales.gmk +++ b/jdk/make/java/java/genlocales.gmk @@ -49,7 +49,7 @@ Euro_Resources_properties := $(FILES_compiled_properties) # $(BUILDDIR)/java/text/FILES_java.gmk contains the "sun.text.resources" for # European language support -include $(BUILDDIR)/java/text/FILES_java.gmk +include $(BUILDDIR)/java/text/base/FILES_java.gmk Euro_Resources_java += $(FILES_java) diff --git a/jdk/make/java/main/Makefile b/jdk/make/java/main/Makefile index 4e90729d4ea..9758d6dd8a1 100644 --- a/jdk/make/java/main/Makefile +++ b/jdk/make/java/main/Makefile @@ -36,6 +36,8 @@ SUBDIRS = java javaw else SUBDIRS = java endif +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/java/nio/FILES_java.gmk b/jdk/make/java/nio/FILES_java.gmk index e38e4c67d0b..f1f58dc9720 100644 --- a/jdk/make/java/nio/FILES_java.gmk +++ b/jdk/make/java/nio/FILES_java.gmk @@ -26,7 +26,6 @@ FILES_src = \ java/nio/Bits.java \ java/nio/Buffer.java \ - java/nio/BufferPoolMXBean.java \ java/nio/ByteOrder.java \ java/nio/MappedByteBuffer.java \ java/nio/StringCharBuffer.java \ diff --git a/jdk/make/java/nio/Makefile b/jdk/make/java/nio/Makefile index 6dd15eac239..b2a17e26991 100644 --- a/jdk/make/java/nio/Makefile +++ b/jdk/make/java/nio/Makefile @@ -304,7 +304,11 @@ endif # PLATFORM # Rules # +SUBDIRS_management = mxbean +include $(BUILDDIR)/common/Subdirs.gmk + build: sources + $(SUBDIRS-loop) clean clobber:: $(RM) -r $(NIO_GEN) $(SNIO_GEN) diff --git a/jdk/make/java/nio/mxbean/Makefile b/jdk/make/java/nio/mxbean/Makefile new file mode 100644 index 00000000000..383d4dc18c5 --- /dev/null +++ b/jdk/make/java/nio/mxbean/Makefile @@ -0,0 +1,34 @@ +# +# Copyright 2010 Sun Microsystems, Inc. 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 +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +BUILDDIR = ../../.. +MODULE = management +PACKAGE = java.nio +PRODUCT = java +include $(BUILDDIR)/common/Defs.gmk + +FILES_java = java/nio/BufferPoolMXBean.java + +include $(BUILDDIR)/common/Classes.gmk diff --git a/jdk/make/java/redist/Makefile b/jdk/make/java/redist/Makefile index d66244920f3..28821008ab6 100644 --- a/jdk/make/java/redist/Makefile +++ b/jdk/make/java/redist/Makefile @@ -62,7 +62,10 @@ CLASSSHARINGDATA_DIR = $(BUILDDIR)/tools/sharing # Needed to do file copy ABS_BUILDDIR :=$(call FullPath,$(BUILDDIR)) -SUBDIRS = fonts sajdi +SUBDIRS_desktop = fonts +SUBDIRS_tools = sajdi +include $(BUILDDIR)/common/Subdirs.gmk + all clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/java/text/Makefile b/jdk/make/java/text/Makefile index 001f4717a9e..4bda138f676 100644 --- a/jdk/make/java/text/Makefile +++ b/jdk/make/java/text/Makefile @@ -1,5 +1,5 @@ # -# Copyright 1996-2006 Sun Microsystems, Inc. All Rights Reserved. +# Copyright 2010 Sun Microsystems, Inc. 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 @@ -23,86 +23,19 @@ # have any questions. # -BUILDDIR = ../.. -MODULE = base -PACKAGE = java.text -PRODUCT = sun +# +# Makefile for building all of java.text +# +BUILDDIR = ../.. +PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk -# -# Files -# -include FILES_java.gmk +SUBDIRS = base +SUBDIRS_desktop = bidi -# -# Include -# -include $(BUILDDIR)/common/Classes.gmk +include $(BUILDDIR)/common/Subdirs.gmk -# -# Rules to add data files BreakIterator -# -TEXT_CLASSES = $(BUILDTOOLCLASSDIR)/java.text/classes - -# input -# -# Notes: sun.text.resources.BreakIteratorRules no longer goes to runtime. -# They are used at JDK build phase in order to create $(BIFILES) which -# are used on runtime instead. -# -TEXT_SRCDIR = $(SHARE_SRC)/classes/sun/text/resources -TEXT_SOURCES = $(TEXT_SRCDIR)/BreakIteratorRules.java \ - $(TEXT_SRCDIR)/BreakIteratorInfo.java -UNICODEDATA = $(BUILDDIR)/tools/UnicodeData - -# output -TEXT_CLASSDIR = $(CLASSBINDIR)/sun/text/resources -BIFILES = $(TEXT_CLASSDIR)/CharacterBreakIteratorData \ - $(TEXT_CLASSDIR)/WordBreakIteratorData \ - $(TEXT_CLASSDIR)/LineBreakIteratorData \ - $(TEXT_CLASSDIR)/SentenceBreakIteratorData - -ICU_FILES = $(TEXT_CLASSDIR)/unorm.icu \ - $(TEXT_CLASSDIR)/uprops.icu \ - $(TEXT_CLASSDIR)/ubidi.icu - -# builder -GENERATEBREAKITERATORDATA_JARFILE = \ - $(BUILDTOOLJARDIR)/generatebreakiteratordata.jar - -$(BIFILES): $(GENERATEBREAKITERATORDATA_JARFILE) \ - $(UNICODEDATA)/UnicodeData.txt \ - $(TEXT_SOURCES) - $(prep-target) - $(RM) -r $(TEXT_CLASSES) - $(MKDIR) -p $(TEXT_CLASSES) - $(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \ - -sourcepath $(TEXT_SRCDIR) \ - $(TEXT_SOURCES) - $(MKDIR) -p $(TEXT_CLASSDIR) - $(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \ - -jar $(GENERATEBREAKITERATORDATA_JARFILE) \ - -o $(TEXT_CLASSDIR) \ - -spec $(UNICODEDATA)/UnicodeData.txt - @$(java-vm-cleanup) - -build: $(BIFILES) $(ICU_FILES) - -# -# Extra rules to copy unorm.icu, uprops.icu, and ubidi.icu -# -$(TEXT_CLASSDIR)/unorm.icu: $(TEXT_SRCDIR)/unorm.icu - $(install-file) - -$(TEXT_CLASSDIR)/uprops.icu: $(TEXT_SRCDIR)/uprops.icu - $(install-file) - -$(TEXT_CLASSDIR)/ubidi.icu: $(TEXT_SRCDIR)/ubidi.icu - $(install-file) - -clean clobber:: - $(RM) -r $(TEXT_CLASSES) - $(RM) -r $(BIFILES) - $(RM) $(ICU_FILES) +all build clean clobber:: + $(SUBDIRS-loop) diff --git a/jdk/make/java/text/FILES_java.gmk b/jdk/make/java/text/base/FILES_java.gmk similarity index 98% rename from jdk/make/java/text/FILES_java.gmk rename to jdk/make/java/text/base/FILES_java.gmk index ada9bde7fee..6ca1f72c5b8 100644 --- a/jdk/make/java/text/FILES_java.gmk +++ b/jdk/make/java/text/base/FILES_java.gmk @@ -29,7 +29,6 @@ FILES_java = \ java/text/AttributedString.java \ java/text/BreakDictionary.java \ java/text/BreakIterator.java \ - java/text/Bidi.java \ java/text/CharacterIterator.java \ java/text/CharacterIteratorFieldDelegate.java \ java/text/ChoiceFormat.java \ @@ -76,10 +75,6 @@ FILES_java = \ sun/text/Normalizer.java \ sun/text/SupplementaryCharacterData.java \ sun/text/UCompactIntArray.java \ - sun/text/bidi/BidiBase.java \ - sun/text/bidi/BidiLine.java \ - sun/text/bidi/BidiRun.java \ - \ sun/text/normalizer/CharTrie.java \ sun/text/normalizer/CharacterIteratorWrapper.java \ sun/text/normalizer/ICUBinary.java \ diff --git a/jdk/make/java/text/base/Makefile b/jdk/make/java/text/base/Makefile new file mode 100644 index 00000000000..d4cc5164a1f --- /dev/null +++ b/jdk/make/java/text/base/Makefile @@ -0,0 +1,108 @@ +# +# Copyright 1996-2006 Sun Microsystems, Inc. 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 +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +BUILDDIR = ../../.. +MODULE = base +PACKAGE = java.text +PRODUCT = sun + +include $(BUILDDIR)/common/Defs.gmk + +# +# Files +# +include FILES_java.gmk + +# +# Include +# +include $(BUILDDIR)/common/Classes.gmk + +# +# Rules to add data files BreakIterator +# +TEXT_CLASSES = $(BUILDTOOLCLASSDIR)/java.text/classes + +# input +# +# Notes: sun.text.resources.BreakIteratorRules no longer goes to runtime. +# They are used at JDK build phase in order to create $(BIFILES) which +# are used on runtime instead. +# +TEXT_SRCDIR = $(SHARE_SRC)/classes/sun/text/resources +TEXT_SOURCES = $(TEXT_SRCDIR)/BreakIteratorRules.java \ + $(TEXT_SRCDIR)/BreakIteratorInfo.java +UNICODEDATA = $(BUILDDIR)/tools/UnicodeData + +# output +TEXT_CLASSDIR = $(CLASSBINDIR)/sun/text/resources +BIFILES = $(TEXT_CLASSDIR)/CharacterBreakIteratorData \ + $(TEXT_CLASSDIR)/WordBreakIteratorData \ + $(TEXT_CLASSDIR)/LineBreakIteratorData \ + $(TEXT_CLASSDIR)/SentenceBreakIteratorData + +ICU_FILES = $(TEXT_CLASSDIR)/unorm.icu \ + $(TEXT_CLASSDIR)/uprops.icu \ + $(TEXT_CLASSDIR)/ubidi.icu + +# builder +GENERATEBREAKITERATORDATA_JARFILE = \ + $(BUILDTOOLJARDIR)/generatebreakiteratordata.jar + +$(BIFILES): $(GENERATEBREAKITERATORDATA_JARFILE) \ + $(UNICODEDATA)/UnicodeData.txt \ + $(TEXT_SOURCES) + $(prep-target) + $(RM) -r $(TEXT_CLASSES) + $(MKDIR) -p $(TEXT_CLASSES) + $(BOOT_JAVAC_CMD) -d $(TEXT_CLASSES) \ + -sourcepath $(TEXT_SRCDIR) \ + $(TEXT_SOURCES) + $(MKDIR) -p $(TEXT_CLASSDIR) + $(BOOT_JAVA_CMD) -Xbootclasspath/p:$(TEXT_CLASSES) \ + -jar $(GENERATEBREAKITERATORDATA_JARFILE) \ + -o $(TEXT_CLASSDIR) \ + -spec $(UNICODEDATA)/UnicodeData.txt + @$(java-vm-cleanup) + +build: $(BIFILES) $(ICU_FILES) + +# +# Extra rules to copy unorm.icu, uprops.icu, and ubidi.icu +# +$(TEXT_CLASSDIR)/unorm.icu: $(TEXT_SRCDIR)/unorm.icu + $(install-file) + +$(TEXT_CLASSDIR)/uprops.icu: $(TEXT_SRCDIR)/uprops.icu + $(install-file) + +$(TEXT_CLASSDIR)/ubidi.icu: $(TEXT_SRCDIR)/ubidi.icu + $(install-file) + +clean clobber:: + $(RM) -r $(TEXT_CLASSES) + $(RM) -r $(BIFILES) + $(RM) $(ICU_FILES) + diff --git a/jdk/make/java/text/bidi/Makefile b/jdk/make/java/text/bidi/Makefile new file mode 100644 index 00000000000..e61c5335340 --- /dev/null +++ b/jdk/make/java/text/bidi/Makefile @@ -0,0 +1,44 @@ +# +# Copyright 2010 Sun Microsystems, Inc. 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 +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Sun designates this +# particular file as subject to the "Classpath" exception as provided +# by Sun in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, +# CA 95054 USA or visit www.sun.com if you need additional information or +# have any questions. +# + +BUILDDIR = ../../.. +PACKAGE = java.text +PRODUCT = sun +include $(BUILDDIR)/common/Defs.gmk + +# +# Files for Bidi that is not in the base module +# +FILES_java = \ + java/text/Bidi.java \ + sun/text/bidi/BidiBase.java \ + sun/text/bidi/BidiLine.java \ + sun/text/bidi/BidiRun.java \ + sun/text/CodePointIterator.java + +# +# Include +# +include $(BUILDDIR)/common/Classes.gmk diff --git a/jdk/make/javax/Makefile b/jdk/make/javax/Makefile index 8ec72ade7e1..15f5cd7ecb2 100644 --- a/jdk/make/javax/Makefile +++ b/jdk/make/javax/Makefile @@ -30,19 +30,24 @@ BUILDDIR = .. include $(BUILDDIR)/common/Defs.gmk -# imageio uses xml, so build it last +SUBDIRS = others -SUBDIRS = \ - others \ - accessibility \ - print \ - swing \ - crypto \ - sound \ - sql \ - rmi \ - management \ - imageio +SUBDIRS_management = management + +SUBDIRS_misc = \ + crypto \ + sql \ + rmi + +# imageio uses xml, so build it last +SUBDIRS_desktop = \ + accessibility \ + print \ + swing \ + sound \ + imageio + +include $(BUILDDIR)/common/Subdirs.gmk all build: $(SUBDIRS-loop) diff --git a/jdk/make/javax/rmi/Makefile b/jdk/make/javax/rmi/Makefile index 10910f5d213..49f6c817900 100644 --- a/jdk/make/javax/rmi/Makefile +++ b/jdk/make/javax/rmi/Makefile @@ -31,6 +31,8 @@ BUILDDIR = ../.. include $(BUILDDIR)/common/Defs.gmk SUBDIRS = ssl +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/javax/sound/Makefile b/jdk/make/javax/sound/Makefile index 8b4948a15e1..cc6c274e785 100644 --- a/jdk/make/javax/sound/Makefile +++ b/jdk/make/javax/sound/Makefile @@ -159,6 +159,7 @@ vpath %.cpp $(PLATFORM_SRC)/native/com/sun/media/sound # Include rules # include $(BUILDDIR)/common/Library.gmk +include $(BUILDDIR)/common/Subdirs.gmk # # Rules that copy files. diff --git a/jdk/make/javax/swing/Makefile b/jdk/make/javax/swing/Makefile index 16bfcac03ab..7331426a075 100644 --- a/jdk/make/javax/swing/Makefile +++ b/jdk/make/javax/swing/Makefile @@ -40,6 +40,7 @@ AUTO_JAVA_PRUNE = plaf SUBDIRS = html32dtd plaf include $(BUILDDIR)/common/Classes.gmk +include $(BUILDDIR)/common/Subdirs.gmk build: other_files $(SUBDIRS-loop) diff --git a/jdk/make/jpda/Makefile b/jdk/make/jpda/Makefile index b2567882efa..857952b24bc 100644 --- a/jdk/make/jpda/Makefile +++ b/jdk/make/jpda/Makefile @@ -35,6 +35,7 @@ include $(BUILDDIR)/common/Defs.gmk # Core. # SUBDIRS = jdwp back front transport expr tty bdi gui +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/jpda/transport/Makefile b/jdk/make/jpda/transport/Makefile index 9069032fa6e..dddc0dbc84f 100644 --- a/jdk/make/jpda/transport/Makefile +++ b/jdk/make/jpda/transport/Makefile @@ -36,6 +36,8 @@ SUBDIRS = socket ifeq ($(PLATFORM), windows) SUBDIRS += shmem endif # PLATFORM + +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mkdemo/Makefile b/jdk/make/mkdemo/Makefile index b0bd7f5902d..86e9de6a030 100644 --- a/jdk/make/mkdemo/Makefile +++ b/jdk/make/mkdemo/Makefile @@ -31,7 +31,13 @@ BUILDDIR = .. PRODUCT = demos include $(BUILDDIR)/common/Defs.gmk -SUBDIRS = applets jfc jvmti management jni scripting jpda +SUBDIRS = jni +SUBDIRS_desktop = applets jfc +SUBDIRS_management = management +SUBDIRS_misc = scripting +SUBDIRS_tools = jpda jvmti + +include $(BUILDDIR)/common/Subdirs.gmk all build:: nbproject $(SUBDIRS-loop) diff --git a/jdk/make/mkdemo/applets/Makefile b/jdk/make/mkdemo/applets/Makefile index f8000bfdc7c..79e0a9d2bb9 100644 --- a/jdk/make/mkdemo/applets/Makefile +++ b/jdk/make/mkdemo/applets/Makefile @@ -40,6 +40,7 @@ endif SUBDIRS_MAKEFLAGS += DEMO_IS_APPLET=true +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mkdemo/jfc/Makefile b/jdk/make/mkdemo/jfc/Makefile index 06817a1cb23..e57ca5b9c1f 100644 --- a/jdk/make/mkdemo/jfc/Makefile +++ b/jdk/make/mkdemo/jfc/Makefile @@ -46,6 +46,7 @@ ifndef OPENJDK SUBDIRS += Java2D SwingSet2 Stylepad endif +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mkdemo/jni/Makefile b/jdk/make/mkdemo/jni/Makefile index 4cc363902e5..dd9e617c3c2 100644 --- a/jdk/make/mkdemo/jni/Makefile +++ b/jdk/make/mkdemo/jni/Makefile @@ -37,6 +37,8 @@ ifeq ($(PLATFORM),solaris) SUBDIRS += Poller endif +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mkdemo/jvmti/Makefile b/jdk/make/mkdemo/jvmti/Makefile index c966170fceb..f59a9d287c8 100644 --- a/jdk/make/mkdemo/jvmti/Makefile +++ b/jdk/make/mkdemo/jvmti/Makefile @@ -48,6 +48,8 @@ SUBDIRS = \ waiters \ hprof +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mkdemo/management/Makefile b/jdk/make/mkdemo/management/Makefile index e80b30afe0c..42d3c7c6775 100644 --- a/jdk/make/mkdemo/management/Makefile +++ b/jdk/make/mkdemo/management/Makefile @@ -38,6 +38,8 @@ SUBDIRS = FullThreadDump \ MemoryMonitor \ JTop +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mkdemo/scripting/Makefile b/jdk/make/mkdemo/scripting/Makefile index b32cfb77d5a..42e46ed3b04 100644 --- a/jdk/make/mkdemo/scripting/Makefile +++ b/jdk/make/mkdemo/scripting/Makefile @@ -32,6 +32,7 @@ PRODUCT = demos include $(BUILDDIR)/common/Defs.gmk SUBDIRS = jconsole-plugin +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mksample/Makefile b/jdk/make/mksample/Makefile index 2d87ebd734c..0822f031de8 100644 --- a/jdk/make/mksample/Makefile +++ b/jdk/make/mksample/Makefile @@ -37,13 +37,18 @@ else WEBSERVICES_SUBDIR = webservices endif -SUBDIRS = nio jmx scripting $(WEBSERVICES_SUBDIR) nbproject +SUBDIRS = +SUBDIRS_misc = nio scripting nbproject +SUBDIRS_enterprise = $(WEBSERVICES_SUBDIR) +SUBDIRS_management = jmx # include dtrace samples in Solaris builds ifeq ($(PLATFORM), solaris) SUBDIRS += dtrace endif +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mksample/jmx/Makefile b/jdk/make/mksample/jmx/Makefile index 94d0a1843df..0528442dce0 100644 --- a/jdk/make/mksample/jmx/Makefile +++ b/jdk/make/mksample/jmx/Makefile @@ -32,6 +32,8 @@ PRODUCT = java include $(BUILDDIR)/common/Defs.gmk SUBDIRS = jmx-scandir +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mksample/nio/Makefile b/jdk/make/mksample/nio/Makefile index 5fcfd03a783..03fc36d3ac2 100644 --- a/jdk/make/mksample/nio/Makefile +++ b/jdk/make/mksample/nio/Makefile @@ -32,6 +32,8 @@ PRODUCT = java include $(BUILDDIR)/common/Defs.gmk SUBDIRS = file multicast server +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mksample/scripting/Makefile b/jdk/make/mksample/scripting/Makefile index 0fd9e8737e5..2cae9f6c40e 100644 --- a/jdk/make/mksample/scripting/Makefile +++ b/jdk/make/mksample/scripting/Makefile @@ -32,6 +32,8 @@ PRODUCT = java include $(BUILDDIR)/common/Defs.gmk SUBDIRS = scriptpad +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/mksample/webservices/Makefile b/jdk/make/mksample/webservices/Makefile index 208db3c6448..4dee839c34b 100644 --- a/jdk/make/mksample/webservices/Makefile +++ b/jdk/make/mksample/webservices/Makefile @@ -32,6 +32,7 @@ PRODUCT = java include $(BUILDDIR)/common/Defs.gmk SUBDIRS = EbayClient EbayServer +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/org/Makefile b/jdk/make/org/Makefile index 0b66445eccd..1d249295be7 100644 --- a/jdk/make/org/Makefile +++ b/jdk/make/org/Makefile @@ -32,6 +32,7 @@ PRODUCT = org include $(BUILDDIR)/common/Defs.gmk SUBDIRS = ietf jcp +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/org/ietf/Makefile b/jdk/make/org/ietf/Makefile index 9c4618701ca..0d3835b2459 100644 --- a/jdk/make/org/ietf/Makefile +++ b/jdk/make/org/ietf/Makefile @@ -31,6 +31,8 @@ BUILDDIR = ../.. include $(BUILDDIR)/common/Defs.gmk SUBDIRS = jgss +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/Makefile b/jdk/make/sun/Makefile index 7cf480fa83d..8e224e52aeb 100644 --- a/jdk/make/sun/Makefile +++ b/jdk/make/sun/Makefile @@ -58,13 +58,18 @@ ifdef OPENJDK else RENDER_SUBDIR = dcpr endif + # nio need to be compiled before awt to have all charsets ready -SUBDIRS = jar security javazic misc jkernel net audio $(RENDER_SUBDIR) image \ - nio awt splashscreen $(XAWT_SUBDIR) \ - $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \ - font jpeg cmm applet rmi beans $(JDBC_SUBDIR) \ - jawt text launcher management $(ORG_SUBDIR) \ - native2ascii serialver tools jconsole tracing +SUBDIRS = jar security javazic misc net nio text launcher +SUBDIRS_desktop = audio $(RENDER_SUBDIR) image \ + awt splashscreen $(XAWT_SUBDIR) \ + $(HEADLESS_SUBDIR) $(DGA_SUBDIR) \ + jawt font jpeg cmm applet beans +SUBDIRS_management = management +SUBDIRS_misc = jkernel $(ORG_SUBDIR) \ + rmi $(JDBC_SUBDIR) tracing +SUBDIRS_tools = native2ascii serialver tools jconsole +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/cmm/Makefile b/jdk/make/sun/cmm/Makefile index dc8a87b6e69..e6738821c59 100644 --- a/jdk/make/sun/cmm/Makefile +++ b/jdk/make/sun/cmm/Makefile @@ -36,6 +36,8 @@ else # !OPENJDK ICCPROFILE_SRC_DIR = $(CLOSED_SRC)/share/lib/cmm/kcms endif # OPENJDK +include $(BUILDDIR)/common/Subdirs.gmk + # # ICC Profiles used by the CMM. # diff --git a/jdk/make/sun/image/Makefile b/jdk/make/sun/image/Makefile index 0a264b669d1..cd69637b9ef 100644 --- a/jdk/make/sun/image/Makefile +++ b/jdk/make/sun/image/Makefile @@ -43,6 +43,8 @@ ifeq ($(PLATFORM),solaris) endif endif +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/management/Makefile b/jdk/make/sun/management/Makefile index a54b1dd0be9..516cd0dc599 100644 --- a/jdk/make/sun/management/Makefile +++ b/jdk/make/sun/management/Makefile @@ -47,6 +47,8 @@ else endif SUBDIRS += jmxremote +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/net/Makefile b/jdk/make/sun/net/Makefile index d5d3dd16a2b..7ddc94f04b2 100644 --- a/jdk/make/sun/net/Makefile +++ b/jdk/make/sun/net/Makefile @@ -29,6 +29,8 @@ PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk SUBDIRS = others spi +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/net/spi/Makefile b/jdk/make/sun/net/spi/Makefile index 7fa860032e6..7ecefa88ff2 100644 --- a/jdk/make/sun/net/spi/Makefile +++ b/jdk/make/sun/net/spi/Makefile @@ -26,7 +26,9 @@ BUILDDIR = ../../.. include $(BUILDDIR)/common/Defs.gmk -SUBDIRS = nameservice +SUBDIRS_misc = nameservice +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/net/spi/nameservice/Makefile b/jdk/make/sun/net/spi/nameservice/Makefile index 4c9aba37a8f..f7df0b79ae7 100644 --- a/jdk/make/sun/net/spi/nameservice/Makefile +++ b/jdk/make/sun/net/spi/nameservice/Makefile @@ -27,6 +27,8 @@ BUILDDIR = ../../../.. include $(BUILDDIR)/common/Defs.gmk SUBDIRS = dns +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/nio/Makefile b/jdk/make/sun/nio/Makefile index 76051c1b17a..538c0bc37bb 100644 --- a/jdk/make/sun/nio/Makefile +++ b/jdk/make/sun/nio/Makefile @@ -29,6 +29,8 @@ PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk SUBDIRS = cs +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/org/Makefile b/jdk/make/sun/org/Makefile index 7d3496aa95b..ddfb2c5fcf5 100644 --- a/jdk/make/sun/org/Makefile +++ b/jdk/make/sun/org/Makefile @@ -32,6 +32,8 @@ PRODUCT = org include $(BUILDDIR)/common/Defs.gmk SUBDIRS = mozilla +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/org/mozilla/Makefile b/jdk/make/sun/org/mozilla/Makefile index 47f467f16ac..2eadf61de0c 100644 --- a/jdk/make/sun/org/mozilla/Makefile +++ b/jdk/make/sun/org/mozilla/Makefile @@ -32,6 +32,8 @@ PRODUCT = org include $(BUILDDIR)/common/Defs.gmk SUBDIRS = javascript +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/rmi/Makefile b/jdk/make/sun/rmi/Makefile index 59179b0c0f0..3acbd21de39 100644 --- a/jdk/make/sun/rmi/Makefile +++ b/jdk/make/sun/rmi/Makefile @@ -43,6 +43,8 @@ ifeq ($(PLATFORM), windows) SUBDIRS += cgi endif # PLATFORM +include $(BUILDDIR)/common/Subdirs.gmk + # Then do the rest all build clean clobber :: $(SUBDIRS-loop) diff --git a/jdk/make/sun/security/Makefile b/jdk/make/sun/security/Makefile index 92371cc60cb..1950c892623 100644 --- a/jdk/make/sun/security/Makefile +++ b/jdk/make/sun/security/Makefile @@ -67,8 +67,10 @@ ifdef DISABLE_INTREE_EC INTREE_EC = endif -SUBDIRS = $(INTREE_EC) other action util tools jgss krb5 smartcardio \ - $(PKCS11) $(JGSS_WRAPPER) $(MSCAPI) +SUBDIRS = $(INTREE_EC) other action util krb5 +SUBDIRS_misc = jgss $(PKCS11) $(JGSS_WRAPPER) $(MSCAPI) smartcardio +SUBDIRS_tools = tools +include $(BUILDDIR)/common/Subdirs.gmk all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/make/sun/tracing/Makefile b/jdk/make/sun/tracing/Makefile index 5c3711f0054..f9f4439cdeb 100644 --- a/jdk/make/sun/tracing/Makefile +++ b/jdk/make/sun/tracing/Makefile @@ -33,6 +33,8 @@ PRODUCT = sun include $(BUILDDIR)/common/Defs.gmk SUBDIRS = dtrace +include $(BUILDDIR)/common/Subdirs.gmk + all build: $(SUBDIRS-loop) clean clobber:: diff --git a/jdk/make/tools/Makefile b/jdk/make/tools/Makefile index d92550cdd95..24c0fb19cb6 100644 --- a/jdk/make/tools/Makefile +++ b/jdk/make/tools/Makefile @@ -56,6 +56,8 @@ ifndef DISABLE_NIMBUS SUBDIRS += generate_nimbus endif +include $(BUILDDIR)/common/Subdirs.gmk + all build clean clobber:: $(SUBDIRS-loop) diff --git a/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java b/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java index dedf1da5ab5..d472bbbe51d 100644 --- a/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java +++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageReader.java @@ -27,7 +27,6 @@ package com.sun.java.util.jar.pack; import java.io.*; import java.util.*; -import java.util.logging.Level; import com.sun.java.util.jar.pack.Package.Class; import com.sun.java.util.jar.pack.Package.File; import com.sun.java.util.jar.pack.Package.InnerClass; @@ -162,7 +161,7 @@ class PackageReader extends BandStructure { ok = true; } catch (Exception ee) { - Utils.log.log(Level.WARNING, "Error on input: "+ee, ee); + Utils.log.warning("Error on input: "+ee, ee); if (verbose > 0) Utils.log.info("Stream offsets:"+ " served="+in.getBytesServed()+ diff --git a/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java b/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java index a93cc293d23..2128c93cf3c 100644 --- a/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java +++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/PackageWriter.java @@ -27,7 +27,6 @@ package com.sun.java.util.jar.pack; import java.io.*; import java.util.*; -import java.util.logging.Level; import com.sun.java.util.jar.pack.Package.Class; import com.sun.java.util.jar.pack.Package.File; import com.sun.java.util.jar.pack.Package.InnerClass; @@ -84,7 +83,7 @@ class PackageWriter extends BandStructure { ok = true; } catch (Exception ee) { - Utils.log.log(Level.WARNING, "Error on output: "+ee, ee); + Utils.log.warning("Error on output: "+ee, ee); //if (verbose > 0) ee.printStackTrace(); // Write partial output only if we are verbose. if (verbose > 0) finalOut.close(); diff --git a/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java b/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java index c595e799a40..f33828fe261 100644 --- a/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java +++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/Utils.java @@ -28,9 +28,10 @@ package com.sun.java.util.jar.pack; import java.util.*; import java.util.jar.*; import java.util.zip.*; -import java.util.logging.*; import java.io.*; +import sun.util.logging.PlatformLogger; + class Utils { static final String COM_PREFIX = "com.sun.java.util.jar.pack."; static final String METAINF = "META-INF"; @@ -130,31 +131,53 @@ class Utils { = Boolean.getBoolean(Utils.COM_PREFIX+"nolog"); - static final Logger log - = new Logger("java.util.jar.Pack200", null) { - public void log(LogRecord record) { - int verbose = currentPropMap().getInteger(DEBUG_VERBOSE); - if (verbose > 0) { - if (nolog && - record.getLevel().intValue() < Level.WARNING.intValue()) { - System.out.println(record.getMessage()); - } else { - super.log(record); - } - } - } + static class Pack200Logger { + private final String name; + private PlatformLogger log; + Pack200Logger(String name) { + this.name = name; + } - public void fine(String msg) { - int verbose = currentPropMap().getInteger(DEBUG_VERBOSE); - if (verbose > 0) { - System.out.println(msg); + private synchronized PlatformLogger getLogger() { + if (log == null) { + log = PlatformLogger.getLogger(name); + } + return log; + } + + public void warning(String msg, Object param) { + int verbose = currentPropMap().getInteger(DEBUG_VERBOSE); + if (verbose > 0) { + getLogger().warning(msg, param); + } + } + + public void warning(String msg) { + warning(msg, null); + } + + public void info(String msg) { + int verbose = currentPropMap().getInteger(DEBUG_VERBOSE); + if (verbose > 0) { + if (nolog) { + System.out.println(msg); + } else { + getLogger().info(msg); } } - }; - static { - LogManager.getLogManager().addLogger(log); + } + + public void fine(String msg) { + int verbose = currentPropMap().getInteger(DEBUG_VERBOSE); + if (verbose > 0) { + System.out.println(msg); + } + } } + static final Pack200Logger log + = new Pack200Logger("java.util.jar.Pack200"); + // Returns the Max Version String of this implementation static String getVersionString() { return "Pack200, Vendor: Sun Microsystems, Version: " + diff --git a/jdk/src/share/classes/sun/management/Flag.java b/jdk/src/share/classes/sun/management/Flag.java index 44b4139e329..772b5688681 100644 --- a/jdk/src/share/classes/sun/management/Flag.java +++ b/jdk/src/share/classes/sun/management/Flag.java @@ -68,27 +68,42 @@ class Flag { } static Flag getFlag(String name) { - Flag[] fs = new Flag[1]; String[] names = new String[1]; names[0] = name; - int count = getFlags(names, fs, 1); - if (count == 1) { - return fs[0]; - } else { + + List flags = getFlags(names, 1); + if (flags.isEmpty()) { return null; + } else { + // flags should have only one element + return flags.get(0); } } static List getAllFlags() { int numFlags = getInternalFlagCount(); - Flag[] fs = new Flag[numFlags]; // Get all internal flags with names = null - int count = getFlags(null, fs, numFlags); - return Arrays.asList(fs); + return getFlags(null, numFlags); + } + + private static List getFlags(String[] names, int numFlags) { + Flag[] flags = new Flag[numFlags]; + int count = getFlags(names, flags, numFlags); + + List result = new ArrayList(); + for (Flag f : flags) { + if (f != null) { + result.add(f); + } + } + return result; } private static native String[] getAllFlagNames(); + // getFlags sets each element in the given flags array + // with a Flag object only if the name is valid and the + // type is supported. The flags array may contain null elements. private static native int getFlags(String[] names, Flag[] flags, int count); private static native int getInternalFlagCount(); diff --git a/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java b/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java index 1fbf5def0a6..6115401ff02 100644 --- a/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java +++ b/jdk/src/share/classes/sun/net/www/protocol/http/AuthenticationInfo.java @@ -111,7 +111,7 @@ public abstract class AuthenticationInfo extends AuthCacheValue implements Clone * at the same time, then all but the first will block until * the first completes its authentication. */ - static private HashMap requests = new HashMap (); + static private HashMap requests = new HashMap<>(); /* check if a request for this destination is in progress * return false immediately if not. Otherwise block until @@ -125,7 +125,7 @@ public abstract class AuthenticationInfo extends AuthCacheValue implements Clone synchronized (requests) { Thread t, c; c = Thread.currentThread(); - if ((t=(Thread)requests.get(key))==null) { + if ((t = requests.get(key)) == null) { requests.put (key, c); return false; } @@ -147,8 +147,11 @@ public abstract class AuthenticationInfo extends AuthCacheValue implements Clone */ static private void requestCompleted (String key) { synchronized (requests) { - boolean waspresent = requests.remove (key) != null; - assert waspresent; + Thread thread = requests.get(key); + if (thread != null && thread == Thread.currentThread()) { + boolean waspresent = requests.remove(key) != null; + assert waspresent; + } requests.notifyAll(); } } diff --git a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java index 732e9b3dce3..ac5eb2d281c 100644 --- a/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java +++ b/jdk/src/share/classes/sun/net/www/protocol/http/HttpURLConnection.java @@ -423,7 +423,7 @@ public class HttpURLConnection extends java.net.HttpURLConnection { // Try keep-alive only on first attempt if (!failedOnce && http.getHttpKeepAliveSet()) { - if (http.usingProxy) { + if (http.usingProxy && tunnelState() != TunnelState.TUNNELING) { requests.setIfNotSet("Proxy-Connection", "keep-alive"); } else { requests.setIfNotSet("Connection", "keep-alive"); diff --git a/jdk/src/share/classes/sun/security/tools/KeyTool.java b/jdk/src/share/classes/sun/security/tools/KeyTool.java index 9cd0775cb1f..d3031ad77f0 100644 --- a/jdk/src/share/classes/sun/security/tools/KeyTool.java +++ b/jdk/src/share/classes/sun/security/tools/KeyTool.java @@ -151,7 +151,7 @@ public final class KeyTool { enum Command { CERTREQ("Generates a certificate request", - ALIAS, SIGALG, FILEOUT, KEYPASS, KEYSTORE, + ALIAS, SIGALG, FILEOUT, KEYPASS, KEYSTORE, DNAME, STOREPASS, STORETYPE, PROVIDERNAME, PROVIDERCLASS, PROVIDERARG, PROVIDERPATH, V, PROTECTED), CHANGEALIAS("Changes an entry's alias", @@ -167,7 +167,7 @@ public final class KeyTool { STORETYPE, PROVIDERNAME, PROVIDERCLASS, PROVIDERARG, PROVIDERPATH, V, PROTECTED), GENKEYPAIR("Generates a key pair", - ALIAS, KEYALG, KEYSIZE, SIGALG, DESTALIAS, + ALIAS, KEYALG, KEYSIZE, SIGALG, DESTALIAS, DNAME, STARTDATE, EXT, VALIDITY, KEYPASS, KEYSTORE, STOREPASS, STORETYPE, PROVIDERNAME, PROVIDERCLASS, PROVIDERARG, PROVIDERPATH, V, PROTECTED), @@ -176,7 +176,7 @@ public final class KeyTool { STOREPASS, STORETYPE, PROVIDERNAME, PROVIDERCLASS, PROVIDERARG, PROVIDERPATH, V, PROTECTED), GENCERT("Generates certificate from a certificate request", - RFC, INFILE, OUTFILE, ALIAS, SIGALG, + RFC, INFILE, OUTFILE, ALIAS, SIGALG, DNAME, STARTDATE, EXT, VALIDITY, KEYPASS, KEYSTORE, STOREPASS, STORETYPE, PROVIDERNAME, PROVIDERCLASS, PROVIDERARG, PROVIDERPATH, V, PROTECTED), diff --git a/jdk/src/share/native/sun/management/Flag.c b/jdk/src/share/native/sun/management/Flag.c index b642c5e0519..e488d13e8f6 100644 --- a/jdk/src/share/native/sun/management/Flag.c +++ b/jdk/src/share/native/sun/management/Flag.c @@ -84,6 +84,7 @@ Java_sun_management_Flag_getFlags jint num_flags, i, index; jmmVMGlobal* globals; + size_t gsize; const char* class_name = "sun/management/Flag"; const char* signature = "(Ljava/lang/String;Ljava/lang/Object;ZZLcom/sun/management/VMOption$Origin;)V"; jobject origin; @@ -100,12 +101,14 @@ Java_sun_management_Flag_getFlags return 0; } - globals = (jmmVMGlobal*) malloc(count * sizeof(jmmVMGlobal)); + gsize = count * sizeof(jmmVMGlobal); + globals = (jmmVMGlobal*) malloc(gsize); if (globals == NULL) { JNU_ThrowOutOfMemoryError(env, 0); return 0; } + memset(globals, 0, gsize); num_flags = jmm_interface->GetVMGlobals(env, names, globals, count); if (num_flags == 0) { free(globals); diff --git a/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c b/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c index eefc522e918..4610b4b2b8c 100644 --- a/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c +++ b/jdk/src/solaris/native/sun/net/spi/DefaultProxySelector.c @@ -44,6 +44,7 @@ * The GConf-2 settings used are: * - /system/http_proxy/use_http_proxy boolean * - /system/http_proxy/use_authentcation boolean + * - /system/http_proxy/use_same_proxy boolean * - /system/http_proxy/host string * - /system/http_proxy/authentication_user string * - /system/http_proxy/authentication_password string @@ -158,6 +159,7 @@ Java_sun_net_spi_DefaultProxySelector_getSystemProxy(JNIEnv *env, char *mode = NULL; int pport = 0; int use_proxy; + int use_same_proxy = 0; const char* urlhost; jobject isa = NULL; jobject proxy = NULL; @@ -179,6 +181,15 @@ Java_sun_net_spi_DefaultProxySelector_getSystemProxy(JNIEnv *env, * entries. */ + use_same_proxy = (*my_get_bool_func)(gconf_client, "/system/http_proxy/use_same_proxy", NULL); + if (use_same_proxy) { + use_proxy = (*my_get_bool_func)(gconf_client, "/system/http_proxy/use_http_proxy", NULL); + if (use_proxy) { + phost = (*my_get_string_func)(gconf_client, "/system/http_proxy/host", NULL); + pport = (*my_get_int_func)(gconf_client, "/system/http_proxy/port", NULL); + } + } + /** * HTTP: * /system/http_proxy/use_http_proxy (boolean) @@ -188,8 +199,10 @@ Java_sun_net_spi_DefaultProxySelector_getSystemProxy(JNIEnv *env, if (strcasecmp(cproto, "http") == 0) { use_proxy = (*my_get_bool_func)(gconf_client, "/system/http_proxy/use_http_proxy", NULL); if (use_proxy) { - phost = (*my_get_string_func)(gconf_client, "/system/http_proxy/host", NULL); - pport = (*my_get_int_func)(gconf_client, "/system/http_proxy/port", NULL); + if (!use_same_proxy) { + phost = (*my_get_string_func)(gconf_client, "/system/http_proxy/host", NULL); + pport = (*my_get_int_func)(gconf_client, "/system/http_proxy/port", NULL); + } CHECK_NULL(type_proxy = (*env)->GetStaticObjectField(env, ptype_class, ptype_httpID)); } } @@ -203,8 +216,10 @@ Java_sun_net_spi_DefaultProxySelector_getSystemProxy(JNIEnv *env, if (strcasecmp(cproto, "https") == 0) { mode = (*my_get_string_func)(gconf_client, "/system/proxy/mode", NULL); if (mode != NULL && (strcasecmp(mode,"manual") == 0)) { - phost = (*my_get_string_func)(gconf_client, "/system/proxy/secure_host", NULL); - pport = (*my_get_int_func)(gconf_client, "/system/proxy/secure_port", NULL); + if (!use_same_proxy) { + phost = (*my_get_string_func)(gconf_client, "/system/proxy/secure_host", NULL); + pport = (*my_get_int_func)(gconf_client, "/system/proxy/secure_port", NULL); + } use_proxy = (phost != NULL); if (use_proxy) type_proxy = (*env)->GetStaticObjectField(env, ptype_class, ptype_httpID); @@ -220,8 +235,10 @@ Java_sun_net_spi_DefaultProxySelector_getSystemProxy(JNIEnv *env, if (strcasecmp(cproto, "ftp") == 0) { mode = (*my_get_string_func)(gconf_client, "/system/proxy/mode", NULL); if (mode != NULL && (strcasecmp(mode,"manual") == 0)) { - phost = (*my_get_string_func)(gconf_client, "/system/proxy/ftp_host", NULL); - pport = (*my_get_int_func)(gconf_client, "/system/proxy/ftp_port", NULL); + if (!use_same_proxy) { + phost = (*my_get_string_func)(gconf_client, "/system/proxy/ftp_host", NULL); + pport = (*my_get_int_func)(gconf_client, "/system/proxy/ftp_port", NULL); + } use_proxy = (phost != NULL); if (use_proxy) type_proxy = (*env)->GetStaticObjectField(env, ptype_class, ptype_httpID); @@ -237,8 +254,10 @@ Java_sun_net_spi_DefaultProxySelector_getSystemProxy(JNIEnv *env, if (strcasecmp(cproto, "gopher") == 0) { mode = (*my_get_string_func)(gconf_client, "/system/proxy/mode", NULL); if (mode != NULL && (strcasecmp(mode,"manual") == 0)) { - phost = (*my_get_string_func)(gconf_client, "/system/proxy/gopher_host", NULL); - pport = (*my_get_int_func)(gconf_client, "/system/proxy/gopher_port", NULL); + if (!use_same_proxy) { + phost = (*my_get_string_func)(gconf_client, "/system/proxy/gopher_host", NULL); + pport = (*my_get_int_func)(gconf_client, "/system/proxy/gopher_port", NULL); + } use_proxy = (phost != NULL); if (use_proxy) type_proxy = (*env)->GetStaticObjectField(env, ptype_class, ptype_httpID); @@ -254,8 +273,10 @@ Java_sun_net_spi_DefaultProxySelector_getSystemProxy(JNIEnv *env, if (strcasecmp(cproto, "socks") == 0) { mode = (*my_get_string_func)(gconf_client, "/system/proxy/mode", NULL); if (mode != NULL && (strcasecmp(mode,"manual") == 0)) { - phost = (*my_get_string_func)(gconf_client, "/system/proxy/socks_host", NULL); - pport = (*my_get_int_func)(gconf_client, "/system/proxy/socks_port", NULL); + if (!use_same_proxy) { + phost = (*my_get_string_func)(gconf_client, "/system/proxy/socks_host", NULL); + pport = (*my_get_int_func)(gconf_client, "/system/proxy/socks_port", NULL); + } use_proxy = (phost != NULL); if (use_proxy) type_proxy = (*env)->GetStaticObjectField(env, ptype_class, ptype_socksID); diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index 43d53e18b12..ddcd68d3624 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -692,7 +692,6 @@ java/net/URLConnection/TimeoutTest.java generic-all java/net/URLConnection/ZeroContentLength.java generic-all # Solaris 11 i586 fails with samevm, not sure why -java/net/Authenticator/B4769350.java generic-all java/net/HttpURLConnection/HttpResponseCode.java generic-all java/net/ResponseCache/B6181108.java generic-all java/net/ResponseCache/ResponseCacheTest.java generic-all diff --git a/jdk/test/java/net/Authenticator/B4769350.java b/jdk/test/java/net/Authenticator/B4769350.java index e21cd869daf..1f673763508 100644 --- a/jdk/test/java/net/Authenticator/B4769350.java +++ b/jdk/test/java/net/Authenticator/B4769350.java @@ -26,9 +26,12 @@ * @bug 4769350 * @library ../../../sun/net/www/httptest/ * @build HttpCallback HttpServer ClosedChannelList HttpTransaction AbstractCallback - * @run main B4769350 server - * @run main B4769350 proxy + * @run main/othervm B4769350 server + * @run main/othervm B4769350 proxy * @summary proxy authentication username and password caching only works in serial case + * Run in othervm since the test sets system properties that are read by the + * networking stack and cached when the HTTP handler is invoked, and previous + * tests may already have invoked the HTTP handler. */ import java.io.*; diff --git a/jdk/test/java/net/ProxySelector/SystemProxies.java b/jdk/test/java/net/ProxySelector/SystemProxies.java new file mode 100644 index 00000000000..5d7a7bc6ecd --- /dev/null +++ b/jdk/test/java/net/ProxySelector/SystemProxies.java @@ -0,0 +1,61 @@ +/* + * Copyright 2010 Sun Microsystems, Inc. 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + */ + +/* + * This is a manual test to determine the proxies set on the system for various + * protocols. See bug 6912868. + */ +import java.net.Proxy; +import java.net.ProxySelector; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.List; + +public class SystemProxies { + + static final String uriAuthority = "myMachine/"; + static final ProxySelector proxySel = ProxySelector.getDefault(); + + public static void main(String[] args) { + if (! "true".equals(System.getProperty("java.net.useSystemProxies"))) { + System.out.println("Usage: java -Djava.net.useSystemProxies SystemProxies"); + return; + } + + printProxies("http://"); + printProxies("https://"); + printProxies("ftp://"); + } + + static void printProxies(String proto) { + String uriStr = proto + uriAuthority; + try { + List proxies = proxySel.select(new URI(uriStr)); + System.out.println("Proxies returned for " + uriStr); + for (Proxy proxy : proxies) + System.out.println("\t" + proxy); + } catch (URISyntaxException e) { + System.err.println(e); + } + } +}