8187444: Forest Consolidation: Make build work

Co-authored-by: Maurizio Cimadamore <[email protected]>
Co-authored-by: Sundararajan Athijegannathan <[email protected]>
Co-authored-by: Jonathan Gibbons <[email protected]>
Reviewed-by: darcy, ihse
diff --git a/make/BuildNashorn.gmk b/make/BuildNashorn.gmk
index a0929c4..f176f5b 100644
--- a/make/BuildNashorn.gmk
+++ b/make/BuildNashorn.gmk
@@ -32,18 +32,17 @@
 include JavaCompilation.gmk
 include SetupJavaCompilers.gmk
 include TextFileProcessing.gmk
+include Modules.gmk
 
 JDK_CLASSES := $(call PathList, $(strip $(addprefix $(JDK_OUTPUTDIR)/modules/, \
       java.base java.logging java.scripting jdk.dynalink)))
 
-MODULESOURCEPATH := $(NASHORN_TOPDIR)/src/*/share/classes
-
 # Need to use source and target 8 for nasgen to work.
 $(eval $(call SetupJavaCompiler, GENERATE_NEWBYTECODE_DEBUG, \
     JVM := $(JAVA_JAVAC), \
     JAVAC := $(NEW_JAVAC), \
     FLAGS := -g -source 9 -target 9 --upgrade-module-path "$(JDK_OUTPUTDIR)/modules/" \
-         --system none --module-source-path "$(MODULESOURCEPATH)", \
+         --system none --module-source-path $(call GetModuleSrcPath), \
     SERVER_DIR := $(SJAVAC_SERVER_DIR), \
     SERVER_JVM := $(SJAVAC_SERVER_JAVA)))
 
@@ -54,12 +53,12 @@
 $(eval $(call SetupJavaCompilation, jdk.scripting.nashorn, \
     SETUP := GENERATE_NEWBYTECODE_DEBUG, \
     MODULE := jdk.scripting.nashorn, \
-    SRC := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes, \
+    SRC := $(TOPDIR)/src/jdk.scripting.nashorn/share/classes, \
     COPY := .properties .js, \
     BIN := $(SUPPORT_OUTPUTDIR)/special_classes))
 
-NASGEN_SRC := $(NASHORN_TOPDIR)/buildtools/nasgen/src
-ASM_SRC := $(JDK_TOPDIR)/src/java.base/share/classes/jdk/internal/org/objectweb/asm
+NASGEN_SRC := $(TOPDIR)/make/nashorn/buildtools/nasgen/src
+ASM_SRC := $(TOPDIR)/src/java.base/share/classes/jdk/internal/org/objectweb/asm
 
 # Build nasgen
 $(eval $(call SetupJavaCompilation, BUILD_NASGEN, \
@@ -94,7 +93,7 @@
 
 # Version file needs to be processed with version numbers
 $(eval $(call SetupTextFileProcessing, BUILD_VERSION_FILE, \
-  SOURCE_FILES := $(NASHORN_TOPDIR)/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties.template, \
+  SOURCE_FILES := $(TOPDIR)/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/version.properties.template, \
   OUTPUT_FILE := $(JDK_OUTPUTDIR)/modules/jdk.scripting.nashorn/jdk/nashorn/internal/runtime/resources/version.properties, \
   REPLACEMENTS := \
       @@VERSION_STRING@@ => $(VERSION_STRING) ; \
diff --git a/make/Bundles.gmk b/make/Bundles.gmk
index 8132155..1f9d229 100644
--- a/make/Bundles.gmk
+++ b/make/Bundles.gmk
@@ -56,7 +56,7 @@
     $$(eval $1_$$d_RELATIVE_FILES := $$$$(patsubst $$d/%, %, \
         $$$$(filter $$d/%, $$$$($1_FILES)))) \
     $$(eval $1_$$d_LIST_FILE := \
-        $(SUPPORT_OUTPUTDIR)/bundles/_$1_$$$$(subst /,_,$$$$(patsubst $(TOPDIR)/%,%,$$d)_files)) \
+        $(SUPPORT_OUTPUTDIR)/bundles/_$1_$$$$(subst /,_,$$$$(patsubst $(OUTPUT_ROOT)/%,%,$$d)_files)) \
   )
 
   ifneq ($$(filter %.tar.gz, $$($1_BUNDLE_NAME)), )
diff --git a/make/CompileDemos.gmk b/make/CompileDemos.gmk
index 5b09393..0892f05 100644
--- a/make/CompileDemos.gmk
+++ b/make/CompileDemos.gmk
@@ -38,8 +38,8 @@
 include ZipArchive.gmk
 
 # Prepare the find cache.
-$(eval $(call FillCacheFind, $(wildcard $(JDK_TOPDIR)/src/demo \
-    $(JDK_TOPDIR)/src/*/demo)))
+$(eval $(call FillCacheFind, $(wildcard $(TOPDIR)/src/demo \
+    $(TOPDIR)/src/*/demo)))
 
 # Append demo goals to this variable.
 TARGETS =
@@ -48,15 +48,15 @@
 # Now every other demo has its own quirks where to put the
 # READMEs and other files.
 
-DEMO_SHARE_SRC := $(JDK_TOPDIR)/src/demo/share
-GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc
+DEMO_SHARE_SRC := $(TOPDIR)/src/demo/share
+GLOBAL_VERSION_INFO_RESOURCE := $(TOPDIR)/src/java.base/windows/native/common/version.rc
 
 DEMO_MANIFEST := $(SUPPORT_OUTPUTDIR)/demos/java-main-manifest.mf
 
 # This rule will be depended on due to the MANIFEST line in SetupBuildDemo
 # and SetupBuildJvmtiDemo.
 $(eval $(call SetupTextFileProcessing, BUILD_JAVA_MANIFEST, \
-  SOURCE_FILES := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
+  SOURCE_FILES := $(TOPDIR)/make/data/mainmanifest/manifest.mf, \
   OUTPUT_FILE := $(DEMO_MANIFEST), \
   REPLACEMENTS := \
       @@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
@@ -303,7 +303,7 @@
 
 ################################################################################
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, CompileDemos.gmk))
+$(eval $(call IncludeCustomExtension, , CompileDemos.gmk))
 
 all: $(TARGETS)
 images: $(IMAGES_TARGETS)
diff --git a/make/CompileInterimLangtools.gmk b/make/CompileInterimLangtools.gmk
index 20b967a..5d2f7f2 100644
--- a/make/CompileInterimLangtools.gmk
+++ b/make/CompileInterimLangtools.gmk
@@ -43,7 +43,7 @@
   $$(eval $$(call SetupJavaCompilation,BUILD_INTERIM_$(strip $1), \
       SETUP := BOOT_JAVAC, \
       DISABLE_SJAVAC := true, \
-      SRC := $(LANGTOOLS_TOPDIR)/src/$(strip $1)/share/classes \
+      SRC := $(TOPDIR)/src/$(strip $1)/share/classes \
           $$(wildcard $(SUPPORT_OUTPUTDIR)/gensrc/$(strip $1)), \
       EXCLUDES := sun com/sun/tools/jdeps com/sun/tools/javap \
           com/sun/tools/jdeprscan, \
diff --git a/make/CompileInterimRmic.gmk b/make/CompileInterimRmic.gmk
index 9a30893..2f56fbc 100644
--- a/make/CompileInterimRmic.gmk
+++ b/make/CompileInterimRmic.gmk
@@ -43,7 +43,7 @@
 
 $(eval $(call SetupJavaCompilation,BUILD_INTERIM_RMIC, \
     SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(JDK_TOPDIR)/src/jdk.rmic/share/classes, \
+    SRC := $(TOPDIR)/src/jdk.rmic/share/classes, \
     EXCLUDE_FILES := module-info.java, \
     INCLUDES := $(RMIC_PKGS), \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/override_modules/jdk.rmic, \
diff --git a/make/CompileJavaModules.gmk b/make/CompileJavaModules.gmk
index ed9fb56..327d139 100644
--- a/make/CompileJavaModules.gmk
+++ b/make/CompileJavaModules.gmk
@@ -47,7 +47,7 @@
 java.base_CLEAN += intrinsic.properties
 
 java.base_EXCLUDE_FILES += \
-  $(JDK_TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java
+  $(TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java
 
 java.base_EXCLUDES += java/lang/doc-files
 
@@ -146,10 +146,10 @@
       com/sun/java/swing/plaf/gtk \
       #
   java.desktop_EXCLUDE_FILES += \
-      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/java2d/*.java) \
-      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/java2d/opengl/*.java) \
-      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/awt/*.java) \
-      $(wildcard $(JDK_TOPDIR)/src/java.desktop/unix/classes/sun/font/*.java) \
+      $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/java2d/*.java) \
+      $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/java2d/opengl/*.java) \
+      $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/awt/*.java) \
+      $(wildcard $(TOPDIR)/src/java.desktop/unix/classes/sun/font/*.java) \
       #
 else
   # TBD: figure out how to eliminate this long list
@@ -267,15 +267,15 @@
 
 java.sql.rowset_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
 java.sql.rowset_CLEAN_FILES += $(wildcard \
-    $(JDK_TOPDIR)/src/java.sql.rowset/share/classes/com/sun/rowset/*.properties \
-    $(JDK_TOPDIR)/src/java.sql.rowset/share/classes/javax/sql/rowset/*.properties)
+    $(TOPDIR)/src/java.sql.rowset/share/classes/com/sun/rowset/*.properties \
+    $(TOPDIR)/src/java.sql.rowset/share/classes/javax/sql/rowset/*.properties)
 
 ################################################################################
 
 java.rmi_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:java.*,javax.*'
 java.rmi_CLEAN_FILES += $(wildcard \
-    $(JDK_TOPDIR)/src/java.rmi/share/classes/sun/rmi/registry/resources/*.properties \
-    $(JDK_TOPDIR)/src/java.rmi/share/classes/sun/rmi/server/resources/*.properties)
+    $(TOPDIR)/src/java.rmi/share/classes/sun/rmi/registry/resources/*.properties \
+    $(TOPDIR)/src/java.rmi/share/classes/sun/rmi/server/resources/*.properties)
 
 ################################################################################
 
@@ -351,10 +351,11 @@
 
 ################################################################################
 
-jdk.compiler_ADD_JAVAC_FLAGS += -Xdoclint:all/protected '-Xdoclint/package:-com.sun.tools.*,-jdk.internal.*' \
+jdk.compiler_ADD_JAVAC_FLAGS += -Xdoclint:all/protected \
+    '-Xdoclint/package:-com.sun.tools.*,-jdk.internal.*,sun.tools.serialver.resources.*' \
     -XDstringConcat=inline
 jdk.compiler_CLEAN_FILES += $(wildcard \
-    $(patsubst %, $(JDK_TOPDIR)/src/jdk.compiler/share/classes/%/*.properties, \
+    $(patsubst %, $(TOPDIR)/src/jdk.compiler/share/classes/%/*.properties, \
         sun/tools/serialver/resources))
 
 ################################################################################
@@ -399,17 +400,17 @@
 
 # No SCTP implementation on Mac OS X or AIX. These classes should be excluded.
 SCTP_IMPL_CLASSES = \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationChange.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationImpl.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/PeerAddrChange.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/ResultContainer.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpChannelImpl.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNet.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNotification.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SendFailed.java \
-    $(JDK_TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/Shutdown.java
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationChange.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/AssociationImpl.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/PeerAddrChange.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/ResultContainer.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpChannelImpl.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpMultiChannelImpl.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNet.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpNotification.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SctpServerChannelImpl.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/SendFailed.java \
+    $(TOPDIR)/src/jdk.sctp/unix/classes/sun/nio/ch/sctp/Shutdown.java
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
   jdk.sctp_EXCLUDE_FILES += $(SCTP_IMPL_CLASSES)
@@ -424,15 +425,15 @@
 jdk.jconsole_COPY += .gif .png
 
 jdk.jconsole_CLEAN_FILES += $(wildcard \
-    $(JDK_TOPDIR)/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/*.properties)
+    $(TOPDIR)/src/jdk.jconsole/share/classes/sun/tools/jconsole/resources/*.properties)
 
 ################################################################################
 
 jdk.jdeps_COPY += .txt
 
 jdk.jdeps_CLEAN_FILES += $(wildcard \
-    $(JDK_TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/*.properties \
-    $(JDK_TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/*.properties)
+    $(TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/jdeps/resources/*.properties \
+    $(TOPDIR)/src/jdk.jdeps/share/classes/com/sun/tools/javap/resources/*.properties)
 
 ################################################################################
 
@@ -448,7 +449,7 @@
 ################################################################################
 
 jdk.dev_CLEAN_FILES += $(wildcard \
-    $(patsubst %, $(JDK_TOPDIR)/src/jdk.dev/share/classes/%/*.properties, \
+    $(patsubst %, $(TOPDIR)/src/jdk.dev/share/classes/%/*.properties, \
         com/sun/tools/script/shell))
 
 jdk.dev_COPY += .js oqlhelp.html .txt
@@ -601,7 +602,7 @@
   ## WORKAROUND jdk.internal.vm.ci source structure issue
   JVMCI_MODULESOURCEPATH := $(MODULESOURCEPATH) \
       $(subst /$(MODULE)/,/*/, $(filter-out %processor/src, \
-          $(wildcard $(HOTSPOT_TOPDIR)/src/$(MODULE)/share/classes/*/src)))
+          $(wildcard $(TOPDIR)/src/$(MODULE)/share/classes/*/src)))
   MODULESOURCEPATH := $(call PathList, $(JVMCI_MODULESOURCEPATH))
 endif
 
@@ -609,7 +610,7 @@
   ## WORKAROUND jdk.internal.vm.compiler source structure issue
   VM_COMPILER_MODULESOURCEPATH := $(MODULESOURCEPATH) \
       $(subst /$(MODULE)/,/*/, $(filter-out %processor/src %test/src %jtt/src %bench/src %microbenchmarks/src, \
-          $(wildcard $(HOTSPOT_TOPDIR)/src/$(MODULE)/share/classes/*/src)))
+          $(wildcard $(TOPDIR)/src/$(MODULE)/share/classes/*/src)))
   MODULESOURCEPATH := $(call PathList, $(VM_COMPILER_MODULESOURCEPATH))
 endif
 
@@ -617,7 +618,7 @@
   ## WORKAROUND jdk.aot source structure issue
   AOT_MODULESOURCEPATH := $(MODULESOURCEPATH) \
       $(subst /$(MODULE)/,/*/, $(filter-out %processor/src, \
-          $(wildcard $(HOTSPOT_TOPDIR)/src/$(MODULE)/share/classes/*/src)))
+          $(wildcard $(TOPDIR)/src/$(MODULE)/share/classes/*/src)))
   MODULESOURCEPATH := $(call PathList, $(AOT_MODULESOURCEPATH))
 endif
 
@@ -654,7 +655,7 @@
 	$(install-file)
 
 CreateHkTargets = \
-    $(patsubst $(JDK_TOPDIR)/src/%, $(JDK_OUTPUTDIR)/modules/%, \
+    $(patsubst $(TOPDIR)/src/%, $(JDK_OUTPUTDIR)/modules/%, \
       $(subst /share/classes,, \
         $(subst _zh_TW,_zh_HK, $(filter %_zh_TW.properties, $1))))
 
diff --git a/make/CompileModuleTools.gmk b/make/CompileModuleTools.gmk
index c539533..841f116 100644
--- a/make/CompileModuleTools.gmk
+++ b/make/CompileModuleTools.gmk
@@ -36,7 +36,7 @@
 
 $(eval $(call SetupJavaCompilation,BUILD_JIGSAW_TOOLS, \
     SETUP := GENERATE_USINGJDKBYTECODE, \
-    SRC := $(JDK_TOPDIR)/make/src/classes, \
+    SRC := $(TOPDIR)/make/jdk/src/classes, \
     INCLUDES := build/tools/deps \
                 build/tools/docs \
                 build/tools/jigsaw, \
diff --git a/make/CompileToolsHotspot.gmk b/make/CompileToolsHotspot.gmk
index 309d9c9..48ac77a 100644
--- a/make/CompileToolsHotspot.gmk
+++ b/make/CompileToolsHotspot.gmk
@@ -35,12 +35,12 @@
 TARGETS :=
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, hotspot, CompileTools.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/CompileTools.gmk))
 
 ifeq ($(INCLUDE_GRAAL), true)
-  VM_CI_SRC_DIR := $(HOTSPOT_TOPDIR)/src/jdk.internal.vm.ci/share/classes
+  VM_CI_SRC_DIR := $(TOPDIR)/src/jdk.internal.vm.ci/share/classes
 
-  SRC_DIR := $(HOTSPOT_TOPDIR)/src/jdk.internal.vm.compiler/share/classes
+  SRC_DIR := $(TOPDIR)/src/jdk.internal.vm.compiler/share/classes
 
   ##############################################################################
   # Compile the annotation processors
diff --git a/make/CompileToolsJdk.gmk b/make/CompileToolsJdk.gmk
index 23c3bdb..e52a5eb 100644
--- a/make/CompileToolsJdk.gmk
+++ b/make/CompileToolsJdk.gmk
@@ -32,13 +32,13 @@
 
 ################################################################################
 
-$(eval $(call IncludeCustomExtension, jdk, CompileTools.gmk))
+$(eval $(call IncludeCustomExtension, , CompileTools.gmk))
 
 ################################################################################
 
 # Use += to be able to add to this from a custom extension
 BUILD_TOOLS_SRC_DIRS += \
-    $(JDK_TOPDIR)/make/src/classes \
+    $(TOPDIR)/make/jdk/src/classes \
     $(BUILDTOOLS_OUTPUTDIR)/interim_cldrconverter_classes \
     #
 
@@ -53,9 +53,9 @@
 TARGETS += $(BUILD_TOOLS_JDK)
 
 $(eval $(call SetupCopyFiles,COPY_NIMBUS_TEMPLATES, \
-    SRC := $(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus, \
+    SRC := $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus, \
     DEST := $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes/build/tools/generatenimbus/resources, \
-    FILES := $(wildcard $(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus/*.template)))
+    FILES := $(wildcard $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus/*.template)))
 
 TARGETS += $(COPY_NIMBUS_TEMPLATES)
 
diff --git a/make/CopyInterimCLDRConverter.gmk b/make/CopyInterimCLDRConverter.gmk
index 44eb63a..eabd832 100644
--- a/make/CopyInterimCLDRConverter.gmk
+++ b/make/CopyInterimCLDRConverter.gmk
@@ -42,7 +42,7 @@
 endef
 
 $(eval $(call SetupCopyFiles,COPY_INTERIM_CLDRCONVERTER, \
-    SRC := $(JDK_TOPDIR)/src/java.base/share/classes/sun/util/resources, \
+    SRC := $(TOPDIR)/src/java.base/share/classes/sun/util/resources, \
     DEST := $(BUILDTOOLS_OUTPUTDIR)/interim_cldrconverter_classes/build/tools/cldrconverter, \
     FILES := TimeZoneNames.java, \
     MACRO := cldrconverter_copytznames))
diff --git a/make/Docs.gmk b/make/Docs.gmk
index 7b5194a..645852d 100644
--- a/make/Docs.gmk
+++ b/make/Docs.gmk
@@ -29,8 +29,8 @@
 include Modules.gmk
 include ProcessMarkdown.gmk
 include ZipArchive.gmk
-include $(JDK_TOPDIR)/make/Tools.gmk
-include $(JDK_TOPDIR)/make/ModuleTools.gmk
+include $(TOPDIR)/make/ToolsJdk.gmk
+include $(TOPDIR)/make/ModuleTools.gmk
 
 # This is needed to properly setup DOCS_MODULES.
 $(eval $(call ReadImportMetaData))
@@ -58,7 +58,7 @@
 # On top of the sources that was used to compile the JDK, we need some
 # extra java.rmi sources that are used just for javadoc.
 MODULES_SOURCE_PATH := $(call PathList, $(call GetModuleSrcPath) \
-    $(SUPPORT_OUTPUTDIR)/rmic/* $(JDK_TOPDIR)/src/*/share/doc/stub)
+    $(SUPPORT_OUTPUTDIR)/rmic/* $(TOPDIR)/src/*/share/doc/stub)
 
 # URLs
 JAVADOC_BASE_URL := http://www.oracle.com/pls/topic/lookup?ctx=javase9&amp;id=homepage
@@ -340,7 +340,7 @@
     # First we run the GenGraph tool. It will query the module structure of the
     # running JVM and output .dot files for all existing modules.
     GENGRAPHS_PROPS := \
-        $$(JDK_TOPDIR)/make/src/classes/build/tools/jigsaw/javadoc-graphs.properties
+        $$(TOPDIR)/make/jdk/src/classes/build/tools/jigsaw/javadoc-graphs.properties
 
     $1_GENGRAPHS_DIR := $$(SUPPORT_OUTPUTDIR)/docs/$1-gengraphs
     $1_GENGRAPHS_MARKER := $$($1_GENGRAPHS_DIR)/_gengraphs_run.marker
@@ -448,7 +448,7 @@
 JDK_INDEX_TARGETS += $(JDK_INDEX_HTML)
 
 # Copy the global resources
-GLOBAL_SPECS_RESOURCES_DIR := $(JDK_TOPDIR)/make/data/docs-resources/
+GLOBAL_SPECS_RESOURCES_DIR := $(TOPDIR)/make/data/docs-resources/
 $(eval $(call SetupCopyFiles, COPY_GLOBAL_RESOURCES, \
     SRC := $(GLOBAL_SPECS_RESOURCES_DIR), \
     FILES := $(call CacheFind, $(GLOBAL_SPECS_RESOURCES_DIR)), \
@@ -459,7 +459,7 @@
 # Copy the legal notices distributed with the docs bundle
 DOCS_LEGAL_NOTICES := jquery.md jszip.md pako.md
 $(eval $(call SetupCopyFiles, COPY_DOCS_LEGAL_NOTICES, \
-    SRC := $(LANGTOOLS_TOPDIR)/src/jdk.javadoc/share/legal, \
+    SRC := $(TOPDIR)/src/jdk.javadoc/share/legal, \
     FILES := $(DOCS_LEGAL_NOTICES), \
     DEST := $(DOCS_OUTPUTDIR)/legal, \
 ))
@@ -498,14 +498,15 @@
     $(eval SPECS_$m := $(call FindModuleSpecsDirs, $m)) \
     $(foreach d, $(SPECS_$m), \
       $(if $(filter %.md, $(call CacheFind, $d)), \
-        $(eval $(call SetupProcessMarkdown, CONVERT_MARKDOWN_$m_$(patsubst $(TOPDIR)/%,%,$d), \
+        $(eval $m_$d_NAME := CONVERT_MARKDOWN_$m_$(strip $(call RelativePath, $d, $(TOPDIR)))) \
+        $(eval $(call SetupProcessMarkdown, $($m_$d_NAME), \
             SRC := $d, \
             FILES := $(filter %.md, $(call CacheFind, $d)), \
             DEST := $(DOCS_OUTPUTDIR)/specs/, \
             CSS := $(GLOBAL_SPECS_DEFAULT_CSS_FILE), \
         )) \
+        $(eval JDK_SPECS_TARGETS += $($($m_$d_NAME))) \
       ) \
-      $(eval JDK_SPECS_TARGETS += $(CONVERT_MARKDOWN_$m_$(patsubst $(TOPDIR)/%,%,$d))) \
     ) \
   )
 endif
diff --git a/make/ExplodedImageOptimize.gmk b/make/ExplodedImageOptimize.gmk
index 36c27d8..dedac6d 100644
--- a/make/ExplodedImageOptimize.gmk
+++ b/make/ExplodedImageOptimize.gmk
@@ -29,7 +29,7 @@
 
 include $(SPEC)
 include MakeBase.gmk
-include $(JDK_TOPDIR)/make/ModuleTools.gmk
+include $(TOPDIR)/make/ModuleTools.gmk
 
 ################################################################################
 
diff --git a/make/GenerateModuleSummary.gmk b/make/GenerateModuleSummary.gmk
index b96e9de..1b48e1d 100644
--- a/make/GenerateModuleSummary.gmk
+++ b/make/GenerateModuleSummary.gmk
@@ -32,7 +32,7 @@
 
 GENGRAPHS_DIR := $(IMAGES_OUTPUTDIR)/gengraphs
 SPEC_DOTFILES_DIR := $(GENGRAPHS_DIR)/spec-dotfiles
-TOOLS_MODULE_SRCDIR := $(JDK_TOPDIR)/make/src/classes/build/tools/jigsaw
+TOOLS_MODULE_SRCDIR := $(TOPDIR)/make/jdk/src/classes/build/tools/jigsaw
 
 $(GENGRAPHS_DIR)/jdk.dot: $(BUILD_JIGSAW_TOOLS)
 	$(MKDIR) -p $(@D)
diff --git a/make/Images.gmk b/make/Images.gmk
index c8567bd..5a210ca 100644
--- a/make/Images.gmk
+++ b/make/Images.gmk
@@ -232,7 +232,7 @@
       xjc.1
 
   # This variable is potentially overridden in the closed makefile.
-  MAN_SRC_BASEDIR ?= $(JDK_TOPDIR)/src
+  MAN_SRC_BASEDIR ?= $(TOPDIR)/src
 
   ifeq ($(OPENJDK_TARGET_OS), linux)
     MAN_SRC_DIR = $(MAN_SRC_BASEDIR)/linux/doc
diff --git a/make/Init.gmk b/make/Init.gmk
index aeda160..7ead7fc 100644
--- a/make/Init.gmk
+++ b/make/Init.gmk
@@ -266,7 +266,7 @@
 	  $(ECHO) "Re-running configure using default settings"
         endif
 	( cd $(OUTPUT_ROOT) && PATH="$(ORIGINAL_PATH)" \
-	    $(BASH) $(TOPDIR)/configure $(CONFIGURE_COMMAND_LINE) )
+	    $(BASH) $(CONFIGURE_CMD) $(CONFIGURE_COMMAND_LINE) )
 
   ##############################################################################
   # The main target, for delegating into Main.gmk
diff --git a/make/InitSupport.gmk b/make/InitSupport.gmk
index ecb8f8b..fa296f3 100644
--- a/make/InitSupport.gmk
+++ b/make/InitSupport.gmk
@@ -69,7 +69,11 @@
       $(subst \ ,\#,$(MAKEOVERRIDES))))
 
   # Setup information about available configurations, if any.
-  build_dir=$(topdir)/build
+  ifeq ($(CUSTOM_BUILD_DIR), )
+    build_dir=$(topdir)/build
+  else
+    build_dir=$(CUSTOM_BUILD_DIR)
+  endif
   all_spec_files=$(wildcard $(build_dir)/*/spec.gmk)
   # Extract the configuration names from the path
   all_confs=$(patsubst %/spec.gmk, %, $(patsubst $(build_dir)/%, %, $(all_spec_files)))
@@ -342,7 +346,7 @@
   # proper and existing SPEC is included.
   ##############################################################################
 
-  include $(SRC_ROOT)/make/common/MakeBase.gmk
+  include $(TOPDIR)/make/common/MakeBase.gmk
 
   # Define basic logging setup
   BUILD_LOG := $(OUTPUT_ROOT)/build.log
diff --git a/make/JrtfsJar.gmk b/make/JrtfsJar.gmk
index a950490..83a6908 100644
--- a/make/JrtfsJar.gmk
+++ b/make/JrtfsJar.gmk
@@ -33,7 +33,7 @@
 
 # This rule will be depended on due to the MANIFEST line
 $(eval $(call SetupTextFileProcessing, BUILD_JAVA_MANIFEST, \
-  SOURCE_FILES := $(JDK_TOPDIR)/make/data/mainmanifest/manifest.mf, \
+  SOURCE_FILES := $(TOPDIR)/make/data/mainmanifest/manifest.mf, \
   OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/java-main-manifest.mf, \
   REPLACEMENTS := \
       @@VERSION_SPECIFICATION@@ => $(VERSION_SPECIFICATION) ; \
@@ -48,7 +48,7 @@
 
 $(eval $(call SetupJavaCompilation, BUILD_JRTFS, \
     SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(JDK_TOPDIR)/src/java.base/share/classes, \
+    SRC := $(TOPDIR)/src/java.base/share/classes, \
     EXCLUDE_FILES := module-info.java, \
     INCLUDES := $(JIMAGE_PKGS), \
     BIN := $(SUPPORT_OUTPUTDIR)/jrtfs_classes))
@@ -58,7 +58,7 @@
 # Adding META-INF/services would include all files in that directory when only the one
 # is needed, which is why this explicit copy is defined instead.
 $(eval $(call SetupCopyFiles, COPY_JIMAGE_SERVICE_PROVIDER, \
-    SRC := $(JDK_TOPDIR)/src/java.base/share/classes, \
+    SRC := $(TOPDIR)/src/java.base/share/classes, \
     DEST := $(SUPPORT_OUTPUTDIR)/jrtfs_classes, \
     FILES := META-INF/services/java.nio.file.spi.FileSystemProvider))
 
diff --git a/make/MacBundles.gmk b/make/MacBundles.gmk
index a4e7db3..23b9c88 100644
--- a/make/MacBundles.gmk
+++ b/make/MacBundles.gmk
@@ -36,7 +36,7 @@
 
   # JDK_MACOSX_CONTENTS_DIR and JRE_MACOSX_CONTENTS_DIR are defined in SPEC.
 
-  MACOSX_PLIST_SRC := $(JDK_TOPDIR)/make/data/bundle
+  MACOSX_PLIST_SRC := $(TOPDIR)/make/data/bundle
 
   BUNDLE_ID := $(MACOSX_BUNDLE_ID_BASE).$(VERSION_SHORT)
   BUNDLE_NAME := $(MACOSX_BUNDLE_NAME_BASE) $(VERSION_SHORT)
diff --git a/make/Main.gmk b/make/Main.gmk
index f367d48..6ed6909 100644
--- a/make/Main.gmk
+++ b/make/Main.gmk
@@ -38,12 +38,12 @@
 # Now load the spec
 include $(SPEC)
 
-include $(SRC_ROOT)/make/MainSupport.gmk
+include $(TOPDIR)/make/MainSupport.gmk
 
 # Load the vital tools for all the makefiles.
-include $(SRC_ROOT)/make/common/MakeBase.gmk
-include $(SRC_ROOT)/make/common/Modules.gmk
-include $(SRC_ROOT)/make/common/FindTests.gmk
+include $(TOPDIR)/make/common/MakeBase.gmk
+include $(TOPDIR)/make/common/Modules.gmk
+include $(TOPDIR)/make/common/FindTests.gmk
 
 # Declare ALL_TARGETS as an immediate variable. This variable is a list of all
 # valid top level targets. It's used to declare them all as PHONY and to
@@ -70,25 +70,25 @@
 # been built and should not be built again.
 ifneq ($(CREATING_BUILDJDK), true)
   buildtools-langtools:
-	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Tools.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ToolsLangtools.gmk)
 
   interim-langtools:
-	+($(CD) $(LANGTOOLS_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterim.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimLangtools.gmk)
 
   interim-rmic:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileInterimRmic.gmk)
 
   interim-cldrconverter:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CopyInterimCLDRConverter.gmk)
 
   buildtools-jdk:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsJdk.gmk)
 
   buildtools-modules:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileModuleTools.gmk)
 
   buildtools-hotspot:
-	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileTools.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileToolsHotspot.gmk)
 endif
 
 ALL_TARGETS += buildtools-langtools interim-langtools \
@@ -99,7 +99,7 @@
 # Special targets for certain modules
 
 unpack-sec:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UnpackSecurity.gmk)
 
 generate-exported-symbols:
 	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f BuildStatic.gmk)
@@ -113,16 +113,19 @@
 # into the buildjdk so no need to generate sources.
 ifneq ($(CREATING_BUILDJDK), true)
   $(eval $(call DeclareRecipesForPhase, GENSRC, \
-      TARGET_SUFFIX := gensrc, \
+      TARGET_SUFFIX := gensrc-src, \
       FILE_PREFIX := Gensrc, \
       MAKE_SUBDIR := gensrc, \
       CHECK_MODULES := $(ALL_MODULES), \
-      MULTIPLE_MAKEFILES := true))
+  ))
 
-  JDK_GENSRC_TARGETS := $(filter %-gensrc-jdk, $(GENSRC_TARGETS))
-  LANGTOOLS_GENSRC_TARGETS := $(filter %-gensrc-langtools, $(GENSRC_TARGETS))
-  CORBA_GENSRC_TARGETS := $(filter %-gensrc-corba, $(GENSRC_TARGETS))
-  HOTSPOT_GENSRC_TARGETS := $(filter %-gensrc-hotspot, $(GENSRC_TARGETS))
+  $(foreach m, $(GENSRC_MODULES), $(eval $m-gensrc: $m-gensrc-src))
+
+  LANGTOOLS_GENSRC_TARGETS := $(filter $(addsuffix -%, $(LANGTOOLS_MODULES)), $(GENSRC_TARGETS))
+  CORBA_GENSRC_TARGETS := $(filter $(addsuffix -%, $(CORBA_MODULES)), $(GENSRC_TARGETS))
+  HOTSPOT_GENSRC_TARGETS := $(filter $(addsuffix -%, $(HOTSPOT_MODULES)), $(GENSRC_TARGETS))
+  JDK_GENSRC_TARGETS := $(filter-out $(LANGTOOLS_GENSRC_TARGETS) \
+      $(CORBA_GENSRC_TARGETS) $(HOTSPOT_GENSRC_TARGETS), $(GENSRC_TARGETS))
 
   GENSRC_MODULEINFO_MODULES := $(ALL_MODULES)
   GENSRC_MODULEINFO_TARGETS := $(addsuffix -gensrc-moduleinfo, \
@@ -134,7 +137,7 @@
 
   define DeclareModuleInfoRecipe
     $1-gensrc-moduleinfo:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
 	    -f GensrcModuleInfo.gmk MODULE=$1)
 
     $1-gensrc: $1-gensrc-moduleinfo
@@ -164,7 +167,7 @@
     MAKE_SUBDIR := copy, \
     CHECK_MODULES := $(ALL_MODULES), \
     USE_WRAPPER := true, \
-    MULTIPLE_MAKEFILES := true))
+))
 
 ALL_COPY_MODULES += $(COPY_MODULES)
 ALL_COPY_TARGETS += $(COPY_TARGETS)
@@ -176,7 +179,7 @@
 
 define DeclareImportCopyRecipe
   $1-copy:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
 	    -f CopyImportModules.gmk MODULE=$1)
 endef
 
@@ -191,7 +194,7 @@
 
 define DeclareCompileJavaRecipe
   $1-java:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
 	    -f CompileJavaModules.gmk MODULE=$1)
 endef
 
@@ -201,7 +204,7 @@
 # Build nashorn. Needs to be compiled separately from the rest of the modules
 # due to nasgen.
 jdk.scripting.nashorn-java:
-	+($(CD) $(NASHORN_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
 	    -f BuildNashorn.gmk compile)
 
 ALL_TARGETS += $(JAVA_TARGETS)
@@ -248,7 +251,7 @@
 define DeclareHotspotGensrcRecipe
   hotspot-$1-gensrc:
 	$$(call LogInfo, Building JVM variant '$1' with features '$(JVM_FEATURES_$1)')
-	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f gensrc/GenerateSources.gmk \
+	+($(CD) $(TOPDIR)/make/hotspot && $(MAKE) $(MAKE_ARGS) -f gensrc/GenerateSources.gmk \
 	    JVM_VARIANT=$1)
 endef
 
@@ -256,17 +259,17 @@
 
 define DeclareHotspotLibsRecipe
   hotspot-$1-libs:
-	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibraries.gmk \
+	+($(CD) $(TOPDIR)/make/hotspot && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibraries.gmk \
 	    JVM_VARIANT=$1)
 endef
 
 $(foreach v, $(JVM_VARIANTS), $(eval $(call DeclareHotspotLibsRecipe,$v)))
 
 hotspot-jsig:
-	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibjsig.gmk)
+	+($(CD) $(TOPDIR)/make/hotspot && $(MAKE) $(MAKE_ARGS) -f lib/CompileLibjsig.gmk)
 
 hotspot-ide-project:
-	+($(CD) $(HOTSPOT_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk)
+	+($(CD) $(TOPDIR)/make/hotspot && $(MAKE) $(MAKE_ARGS) -f ide/CreateVSProject.gmk)
 
 ALL_TARGETS += $(HOTSPOT_VARIANT_TARGETS) $(HOTSPOT_VARIANT_GENSRC_TARGETS) \
     $(HOTSPOT_VARIANT_LIBS_TARGETS) hotspot-jsig hotspot-ide-project
@@ -275,10 +278,10 @@
 # Build demos targets
 
 demos-jdk:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk)
 
 test-image-demos-jdk:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk images)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CompileDemos.gmk images)
 
 ALL_TARGETS += demos-jdk test-image-demos-jdk
 
@@ -286,7 +289,7 @@
 # Jigsaw specific data and analysis targets.
 
 generate-summary:
-	+($(CD) $(JDK_TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateModuleSummary.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateModuleSummary.gmk)
 
 ALL_TARGETS += generate-summary
 
@@ -298,7 +301,7 @@
 
 define DeclareJmodRecipe
   $1-jmod:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
 	    MODULE=$1)
 endef
 
@@ -310,50 +313,50 @@
 # Images targets
 
 store-source-revision:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk store-source-revision)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk store-source-revision)
 
 create-source-revision-tracker:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk create-source-revision-tracker)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f SourceRevision.gmk create-source-revision-tracker)
 
 BOOTCYCLE_TARGET := product-images
 bootcycle-images:
         ifneq ($(COMPILE_TYPE), cross)
 	  $(call LogWarn, Boot cycle build step 2: Building a new JDK image using previously built image)
-	  +$(MAKE) $(MAKE_ARGS) -f $(SRC_ROOT)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
+	  +$(MAKE) $(MAKE_ARGS) -f $(TOPDIR)/make/Init.gmk PARALLEL_TARGETS=$(BOOTCYCLE_TARGET) \
 	      JOBS= SPEC=$(dir $(SPEC))bootcycle-spec.gmk main
         else
 	  $(call LogWarn, Boot cycle build disabled when cross compiling)
         endif
 
 zip-security:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ZipSecurity.gmk)
 
 zip-source:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ZipSource.gmk)
 
 jrtfs-jar:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f JrtfsJar.gmk)
 
 jdk-image:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jdk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jdk)
 
 jre-image:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jre)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk jre)
 
 symbols-image:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk symbols)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk symbols)
 
 profiles-image:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Images.gmk profiles)
 
 mac-bundles-jdk:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk)
 
 release-file:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ReleaseFile.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ReleaseFile.gmk)
 
 exploded-image-optimize:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f ExplodedImageOptimize.gmk)
 
 ALL_TARGETS += store-source-revision create-source-revision-tracker bootcycle-images zip-security \
     zip-source jrtfs-jar jdk-image jre-image \
@@ -366,28 +369,28 @@
 # If building full docs, to complete docs-*-api we need both the javadoc and
 # modulegraph targets.
 docs-jdk-api-javadoc:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-javadoc)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-javadoc)
 
 docs-jdk-api-modulegraph:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-modulegraph)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-api-modulegraph)
 
 docs-javase-api-javadoc:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-javadoc)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-javadoc)
 
 docs-javase-api-modulegraph:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-modulegraph)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-javase-api-modulegraph)
 
 docs-jdk-specs:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-specs)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-specs)
 
 docs-jdk-index:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-index)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-jdk-index)
 
 docs-zip:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-zip)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Docs.gmk docs-zip)
 
 update-build-docs:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f UpdateBuildDocs.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f UpdateBuildDocs.gmk)
 
 ALL_TARGETS += docs-jdk-api-javadoc docs-jdk-api-modulegraph \
     docs-javase-api-javadoc docs-javase-api-modulegraph docs-jdk-specs \
@@ -403,10 +406,10 @@
 endif
 
 create-buildjdk-copy:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateBuildJdkCopy.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CreateBuildJdkCopy.gmk)
 
 create-buildjdk-interim-image:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Main.gmk \
 	    $@-helper \
 	    SPEC=$(dir $(SPEC))buildjdk-spec.gmk \
 	    HOTSPOT_SPEC=$(dir $(SPEC))buildjdk-spec.gmk \
@@ -422,7 +425,7 @@
 
 define DeclareInterimJmodRecipe
   $1-interim-jmod:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f CreateJmods.gmk \
 	    MODULE=$1 \
 	    JMODS_DIR=$(INTERIM_JMODS_DIR) \
 	    JMODS_TEMPDIR=$(INTERIM_JMODS_DIR)/temp \
@@ -433,11 +436,11 @@
 $(foreach m, $(INTERIM_IMAGE_MODULES), $(eval $(call DeclareInterimJmodRecipe,$m)))
 
 interim-image:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f InterimImage.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f InterimImage.gmk)
 
 ifeq ($(ENABLE_GENERATE_CLASSLIST), true)
   generate-link-opt-data:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f GenerateLinkOptData.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f GenerateLinkOptData.gmk)
 endif
 
 ALL_TARGETS += $(INTERIM_JMOD_TARGETS) interim-image generate-link-opt-data
@@ -448,10 +451,10 @@
 
 define DeclareRunTestRecipe
   run-test-$1:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$1")
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test TEST="$1")
 
   exploded-run-test-$1:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f RunTests.gmk run-test \
 	    TEST="$1" JDK_IMAGE_DIR=$(JDK_OUTPUTDIR))
 
 endef
@@ -472,19 +475,19 @@
 	$(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image'
 
 build-test-hotspot-jtreg-native:
-	+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeHotspot.gmk \
 	    build-test-hotspot-jtreg-native)
 
 test-image-hotspot-jtreg-native:
-	+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeHotspot.gmk \
 	    test-image-hotspot-jtreg-native)
 
 build-test-jdk-jtreg-native:
-	+($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeJdk.gmk \
 	    build-test-jdk-jtreg-native)
 
 test-image-jdk-jtreg-native:
-	+($(CD) $(JDK_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNative.gmk \
+	+($(CD) $(TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f JtregNativeJdk.gmk \
 	    test-image-jdk-jtreg-native)
 
 run-test:
@@ -496,7 +499,7 @@
 
 ifeq ($(BUILD_GTEST), true)
   test-image-hotspot-gtest:
-	+($(CD) $(HOTSPOT_TOPDIR)/make/test && $(MAKE) $(MAKE_ARGS) -f GtestImage.gmk)
+	+($(CD) $(TOPDIR)/make/hotspot/test && $(MAKE) $(MAKE_ARGS) -f GtestImage.gmk)
 endif
 
 build-test-lib:
@@ -548,7 +551,7 @@
 	$(call RunTests, "jdk_native_sanity", $(JDK_IMAGE_DIR))
 
 test-make:
-	($(CD) $(SRC_ROOT)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
+	($(CD) $(TOPDIR)/test/make && $(MAKE) $(MAKE_ARGS) -f TestMake.gmk $(TEST_TARGET))
 
 ALL_TARGETS += test test-hotspot-jtreg test-hotspot-jtreg-native \
     test-hotspot-internal test-hotspot-gtest test-jdk-jtreg-native test-make
@@ -574,7 +577,7 @@
 # Install targets
 
 install:
-	+($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk)
+	+($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) -f Install.gmk)
 
 ALL_TARGETS += install
 
@@ -681,18 +684,18 @@
 
   # The swing beans need to have java base properly generated to avoid errors
   # in javadoc.
-  java.desktop-gensrc-jdk: java.base-gensrc
+  java.desktop-gensrc-src: java.base-gensrc
 
   # The annotation processing for jdk.internal.vm.ci and jdk.internal.vm.compiler
   # needs classes from the current JDK.
-  jdk.internal.vm.ci-gensrc-hotspot: $(addsuffix -java, \
+  jdk.internal.vm.ci-gensrc-src: $(addsuffix -java, \
       $(call FindTransitiveDepsForModule, jdk.internal.vm.ci))
-  jdk.internal.vm.compiler-gensrc-hotspot: $(addsuffix -java, \
+  jdk.internal.vm.compiler-gensrc-src: $(addsuffix -java, \
       $(call FindTransitiveDepsForModule, jdk.internal.vm.compiler))
 
   # For jdk.internal.vm.compiler, the gensrc step is generating a module-info.java.extra
   # file to be processed by the gensrc-moduleinfo target.
-  jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-hotspot
+  jdk.internal.vm.compiler-gensrc-moduleinfo: jdk.internal.vm.compiler-gensrc-src
 
   # Explicitly add dependencies for special targets
   java.base-java: unpack-sec
@@ -1084,7 +1087,7 @@
 	  if test "x`$(LS) $(OUTPUT_ROOT)`" != x; then \
 	    $(ECHO) "Warning: Not removing non-empty configuration directory for '$(CONF_NAME)'" ; \
 	  else \
-	    ($(CD) $(SRC_ROOT) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
+	    ($(CD) $(TOPDIR) && $(ECHO) "Removing configuration directory for '$(CONF_NAME)'" \
 	        && $(RM) -r $(OUTPUT_ROOT)) \
 	  fi \
 	)
@@ -1103,7 +1106,7 @@
 ################################################################################
 
 # Include JPRT targets
-include $(SRC_ROOT)/make/Jprt.gmk
+include $(TOPDIR)/make/Jprt.gmk
 
 ################################################################################
 
diff --git a/make/MainSupport.gmk b/make/MainSupport.gmk
index 73bb88e..8637fba 100644
--- a/make/MainSupport.gmk
+++ b/make/MainSupport.gmk
@@ -33,7 +33,7 @@
 # Run the tests specified by $1, with PRODUCT_HOME specified by $2
 # JT_JAVA is picked up by the jtreg launcher and used to run Jtreg itself.
 define RunTests
-	($(CD) $(SRC_ROOT)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
+	($(CD) $(TOPDIR)/test && $(MAKE) $(MAKE_ARGS) -j1 -k MAKEFLAGS= \
 	    JT_HOME=$(JT_HOME) PRODUCT_HOME=$(strip $2) \
 	    TEST_IMAGE_DIR=$(TEST_IMAGE_DIR) \
 	    ALT_OUTPUTDIR=$(OUTPUT_ROOT) TEST_JOBS=$(TEST_JOBS) \
@@ -118,42 +118,36 @@
 
 ################################################################################
 
-MAKE_TOPDIR_LIST := $(JDK_TOPDIR) $(CORBA_TOPDIR) $(LANGTOOLS_TOPDIR) \
-    $(HOTSPOT_TOPDIR)
-MAKE_MAKEDIR_LIST := make
+PHASE_MAKEDIRS := $(TOPDIR)/make
 
 # Helper macro for DeclareRecipesForPhase
 # Declare a recipe for calling the module and phase specific makefile.
 # If there are multiple makefiles to call, create a rule for each topdir
 # that contains a makefile with the target $module-$suffix-$repodir,
-# (i.e: java.base-gensrc-jdk)
+# (i.e: java.base-gensrc-src)
 # Normally there is only one makefile, and the target will just be
 # $module-$suffix
 # Param 1: Name of list to add targets to
 # Param 2: Module name
-# Param 3: Topdir
 define DeclareRecipeForModuleMakefile
-  ifeq ($$($1_MULTIPLE_MAKEFILES), true)
-    $2-$$($1_TARGET_SUFFIX): $2-$$($1_TARGET_SUFFIX)-$$(notdir $3)
-
-    $2-$$($1_TARGET_SUFFIX)-$$(notdir $3):
-  else
-    $2-$$($1_TARGET_SUFFIX):
-  endif
+  $2-$$($1_TARGET_SUFFIX):
         ifeq ($$($1_USE_WRAPPER), true)
-	  +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) \
+	  +($(CD) $(TOPDIR)/make && $(MAKE) $(MAKE_ARGS) \
 	      -f ModuleWrapper.gmk \
-	          $$(addprefix -I, $$(wildcard $$(addprefix $3/, $(MAKE_MAKEDIR_LIST)) \
-	          $$(addsuffix /$$($1_MAKE_SUBDIR), $$(addprefix $3/, $(MAKE_MAKEDIR_LIST))))) \
-	          MODULE=$2 MAKEFILE_PREFIX=$$($1_FILE_PREFIX))
+	      $$(addprefix -I, $$(PHASE_MAKEDIRS) \
+	          $$(addsuffix /$$($1_MAKE_SUBDIR), $$(PHASE_MAKEDIRS)) \
+	      ) \
+	      MODULE=$2 MAKEFILE_PREFIX=$$($1_FILE_PREFIX))
         else
-	  +($(CD) $$(dir $$(firstword $$(wildcard $$(patsubst %, \
-	          $3/%/$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, $(MAKE_MAKEDIR_LIST))))) \
-	    && $(MAKE) $(MAKE_ARGS) \
-	          -f $$($1_FILE_PREFIX)-$2.gmk \
-	          $$(addprefix -I, $$(wildcard $$(addprefix $3/, $(MAKE_MAKEDIR_LIST)) \
-	          $$(addsuffix /$$($1_MAKE_SUBDIR), $$(addprefix $3/, $(MAKE_MAKEDIR_LIST))))) \
-	          MODULE=$2)
+	  +($(CD) $$(dir $$(firstword $$(wildcard $$(addsuffix \
+	      /$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, $$(PHASE_MAKEDIRS))))) \
+	  && $(MAKE) $(MAKE_ARGS) \
+	      -f $$($1_FILE_PREFIX)-$2.gmk \
+	      $$(addprefix -I, $$(PHASE_MAKEDIRS) \
+	          $$(addsuffix /$$($1_MAKE_SUBDIR), $$(PHASE_MAKEDIRS)) \
+	      ) \
+	      MODULE=$2 \
+	  )
         endif
 
 endef
@@ -162,14 +156,11 @@
 # Param 1: Name of list to add targets to
 # Param 2: Module name
 define DeclareRecipesForPhaseAndModule
-  $1_$2_TOPDIRS := $$(strip $$(sort $$(foreach d, $(MAKE_TOPDIR_LIST), \
-      $$(patsubst $$d/%, $$d, $$(filter $$d/%, \
-          $$(wildcard $$(patsubst %, %/$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, \
-          $$(foreach s, $(MAKE_MAKEDIR_LIST), \
-              $$(addsuffix /$$s, $(MAKE_TOPDIR_LIST))))))))))
+  $1_$2_MAKEFILES := $$(strip $$(wildcard \
+      $$(addsuffix /$$($1_MAKE_SUBDIR)/$$($1_FILE_PREFIX)-$2.gmk, $$(PHASE_MAKEDIRS))))
 
   # Only declare recipes if there are makefiles to call
-  ifneq ($$($1_$2_TOPDIRS), )
+  ifneq ($$($1_$2_MAKEFILES), )
     # Add the top dir specific target to target list regardless of if recipe
     # generation is disabled.
     ifeq ($$($1_MULTIPLE_MAKEFILES), true)
@@ -177,8 +168,7 @@
         $$(eval $1 += $2-$$($1_TARGET_SUFFIX)-$$(notdir $$d)))
     endif
     ifeq ($(NO_RECIPES),)
-      $$(foreach d, $$($1_$2_TOPDIRS), \
-          $$(eval $$(call DeclareRecipeForModuleMakefile,$1,$2,$$d)))
+      $$(eval $$(call DeclareRecipeForModuleMakefile,$1,$2))
     endif
     $1 += $2-$$($1_TARGET_SUFFIX)
     $1_MODULES += $2
@@ -200,7 +190,7 @@
 # $1_MODULES : All modules that had rules generated
 # $1_TARGETS : All targets generated
 define DeclareRecipesForPhase
-  $(foreach i,2 3 4 5 6 7, $(if $($i),$(strip $1)_$(strip $($i)))$(NEWLINE))
+  $(foreach i,2 3 4 5 6 7, $(if $(strip $($i)),$(strip $1)_$(strip $($i)))$(NEWLINE))
   $(if $(8),$(error Internal makefile error: Too many arguments to \
       DeclareRecipesForPhase, please update MakeHelper.gmk))
 
diff --git a/make/SourceRevision.gmk b/make/SourceRevision.gmk
index a14b3ef..f4987cf 100644
--- a/make/SourceRevision.gmk
+++ b/make/SourceRevision.gmk
@@ -28,6 +28,8 @@
 include $(SPEC)
 include MakeBase.gmk
 
+$(eval $(call IncludeCustomExtension, , SourceRevision.gmk))
+
 ################################################################################
 # Keep track of what source revision is used to create the build, by creating
 # a tracker file in the output directory. This tracker file is included in the
diff --git a/make/ToolsJdk.gmk b/make/ToolsJdk.gmk
index 55c3934..34be124 100644
--- a/make/ToolsJdk.gmk
+++ b/make/ToolsJdk.gmk
@@ -29,7 +29,7 @@
 include JavaCompilation.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, Tools.gmk))
+$(eval $(call IncludeCustomExtension, , Tools.gmk))
 
 ################################################################################
 # To avoid reevaluating the compilation setup for the tools each time this file
@@ -60,7 +60,7 @@
 TOOL_CHARACTERNAME = $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes \
     build.tools.generatecharacter.CharacterName
 
-TOOL_DTDBUILDER = $(JAVA_SMALL) -Ddtd_home=$(JDK_TOPDIR)/make/data/dtdbuilder \
+TOOL_DTDBUILDER = $(JAVA_SMALL) -Ddtd_home=$(TOPDIR)/make/data/dtdbuilder \
     -Djava.awt.headless=true \
     -cp $(BUILDTOOLS_OUTPUTDIR)/jdk_tools_classes build.tools.dtdbuilder.DTDBuilder
 
diff --git a/make/ToolsLangtools.gmk b/make/ToolsLangtools.gmk
index d6fae56..2f2df25 100644
--- a/make/ToolsLangtools.gmk
+++ b/make/ToolsLangtools.gmk
@@ -38,7 +38,7 @@
     SETUP := BOOT_JAVAC, \
     DISABLE_SJAVAC := true, \
     ADD_JAVAC_FLAGS := -Xprefer:source, \
-    SRC := $(LANGTOOLS_TOPDIR)/make/tools, \
+    SRC := $(TOPDIR)/make/langtools/tools, \
     INCLUDES := compileproperties propertiesparser, \
     COPY := .properties, \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes))
diff --git a/make/UnpackSecurity.gmk b/make/UnpackSecurity.gmk
index 9e5e615..0a3b2d0 100644
--- a/make/UnpackSecurity.gmk
+++ b/make/UnpackSecurity.gmk
@@ -30,10 +30,10 @@
 
 ################################################################################
 # Unpack the binary distributions of the crypto classes if they exist.
-SEC_FILES_ZIP := $(JDK_TOPDIR)/make/tools/crypto/sec-bin.zip
-SEC_FILES_WIN_ZIP := $(JDK_TOPDIR)/make/tools/crypto/sec-windows-bin.zip
-JGSS_WIN32_FILES_ZIP := $(JDK_TOPDIR)/make/tools/crypto/jgss-windows-i586-bin.zip
-JGSS_WIN64_FILES_ZIP := $(JDK_TOPDIR)/make/tools/crypto/jgss-windows-x64-bin.zip
+SEC_FILES_ZIP := $(TOPDIR)/make/tools/crypto/sec-bin.zip
+SEC_FILES_WIN_ZIP := $(TOPDIR)/make/tools/crypto/sec-windows-bin.zip
+JGSS_WIN32_FILES_ZIP := $(TOPDIR)/make/tools/crypto/jgss-windows-i586-bin.zip
+JGSS_WIN64_FILES_ZIP := $(TOPDIR)/make/tools/crypto/jgss-windows-x64-bin.zip
 
 define unzip-sec-file
 	$(ECHO) Unzipping $(<F)
diff --git a/make/UpdateBuildDocs.gmk b/make/UpdateBuildDocs.gmk
index edcd648..fe04899 100644
--- a/make/UpdateBuildDocs.gmk
+++ b/make/UpdateBuildDocs.gmk
@@ -39,11 +39,11 @@
   $(error Cannot continue)
 endif
 
-GLOBAL_SPECS_DEFAULT_CSS_FILE := $(JDK_TOPDIR)/make/data/docs-resources/resources/jdk-default.css
+GLOBAL_SPECS_DEFAULT_CSS_FILE := $(TOPDIR)/make/data/docs-resources/resources/jdk-default.css
 
 ################################################################################
 
-DOCS_DIR := $(TOPDIR)/common/doc
+DOCS_DIR := $(TOPDIR)/doc
 
 $(eval $(call SetupProcessMarkdown, building, \
   FILES := $(DOCS_DIR)/building.md, \
diff --git a/make/autoconf/basics.m4 b/make/autoconf/basics.m4
index 0bce558..890121a 100644
--- a/make/autoconf/basics.m4
+++ b/make/autoconf/basics.m4
@@ -577,7 +577,7 @@
   AC_SUBST(CANONICAL_TOPDIR)
 
   # Locate the directory of this script.
-  AUTOCONF_DIR=$TOPDIR/common/autoconf
+  AUTOCONF_DIR=$TOPDIR/make/autoconf
 
   # Setup username (for use in adhoc version strings etc)
   # Outer [ ] to quote m4.
@@ -768,11 +768,14 @@
   AC_ARG_WITH(conf-name, [AS_HELP_STRING([--with-conf-name],
       [use this as the name of the configuration @<:@generated from important configuration options@:>@])],
       [ CONF_NAME=${with_conf_name} ])
+  AC_ARG_WITH(output-base-dir, [AS_HELP_STRING([--with-output-base-dir],
+      [override the default output base directory @<:@./build@:>@])],
+      [ OUTPUT_BASE=${with_output_base_dir} ], [ OUTPUT_BASE="$SRC_ROOT/build" ] )
 
   # Test from where we are running configure, in or outside of src root.
   AC_MSG_CHECKING([where to store configuration])
   if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" \
-      || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" \
+      || test "x$CURDIR" = "x$SRC_ROOT/make/autoconf" \
       || test "x$CURDIR" = "x$SRC_ROOT/make" ; then
     # We are running configure from the src root.
     # Create a default ./build/target-variant-debuglevel output root.
@@ -782,7 +785,7 @@
     else
       AC_MSG_RESULT([in build directory with custom name])
     fi
-    OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
+    OUTPUT_ROOT="${OUTPUT_BASE}/${CONF_NAME}"
     $MKDIR -p "$OUTPUT_ROOT"
     if test ! -d "$OUTPUT_ROOT"; then
       AC_MSG_ERROR([Could not create build directory $OUTPUT_ROOT])
diff --git a/make/autoconf/basics_windows.m4 b/make/autoconf/basics_windows.m4
index 2ae6e34..01c28d3 100644
--- a/make/autoconf/basics_windows.m4
+++ b/make/autoconf/basics_windows.m4
@@ -382,7 +382,7 @@
   FIXPATH=
   if test "x$OPENJDK_BUILD_OS" = xwindows; then
     AC_MSG_CHECKING([if fixpath can be created])
-    FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c"
+    FIXPATH_SRC="$SRC_ROOT/make/src/native/fixpath.c"
     FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
     FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
     if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
diff --git a/make/autoconf/compare.sh.in b/make/autoconf/compare.sh.in
index 76d921f..2d9a218 100644
--- a/make/autoconf/compare.sh.in
+++ b/make/autoconf/compare.sh.in
@@ -88,7 +88,7 @@
 fi
 
 # Now locate the main script and run it.
-REAL_COMPARE_SCRIPT="$SRC_ROOT/common/bin/compare.sh"
+REAL_COMPARE_SCRIPT="$SRC_ROOT/make/scripts/compare.sh"
 if [ ! -e "$REAL_COMPARE_SCRIPT" ]; then
   echo "Error: Cannot locate compare script, it should have been in $REAL_COMPARE_SCRIPT"
   exit 1
@@ -100,4 +100,4 @@
 
 export SCRIPT_DIR="$( cd "$( dirname "$0" )" > /dev/null && pwd )"
 
-$BASH $SRC_ROOT/common/bin/logger.sh $OUTPUT_ROOT/compare.log $BASH "$REAL_COMPARE_SCRIPT" "$@"
+$BASH $SRC_ROOT/make/scripts/logger.sh $OUTPUT_ROOT/compare.log $BASH "$REAL_COMPARE_SCRIPT" "$@"
diff --git a/make/autoconf/configure b/make/autoconf/configure
index 547cb33..1c5b406 100644
--- a/make/autoconf/configure
+++ b/make/autoconf/configure
@@ -44,7 +44,7 @@
 export CONFIG_SHELL=$BASH
 export _as_can_reexec=no
 
-conf_script_dir="$TOPDIR/common/autoconf"
+conf_script_dir="$TOPDIR/make/autoconf"
 
 if [ "$CUSTOM_CONFIG_DIR" = "" ]; then
   conf_custom_script_dir="$TOPDIR/closed/autoconf"
diff --git a/make/autoconf/configure.ac b/make/autoconf/configure.ac
index 0bf6cf9..333b818 100644
--- a/make/autoconf/configure.ac
+++ b/make/autoconf/configure.ac
@@ -33,7 +33,7 @@
 AC_PREREQ([2.69])
 AC_INIT(OpenJDK, jdk9, [email protected],,http://openjdk.java.net)
 
-AC_CONFIG_AUX_DIR([$TOPDIR/common/autoconf/build-aux])
+AC_CONFIG_AUX_DIR([$TOPDIR/make/autoconf/build-aux])
 m4_include([build-aux/pkg.m4])
 
 # Include these first...
diff --git a/make/autoconf/flags.m4 b/make/autoconf/flags.m4
index 6f0aa50..03b4a7d 100644
--- a/make/autoconf/flags.m4
+++ b/make/autoconf/flags.m4
@@ -1162,11 +1162,11 @@
   # Setup some hard coded includes
   $2COMMON_CCXXFLAGS_JDK="[$]$2COMMON_CCXXFLAGS_JDK \
       -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
-      -I${JDK_TOPDIR}/src/java.base/share/native/include \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS/native/include \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/include \
-      -I${JDK_TOPDIR}/src/java.base/share/native/libjava \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/libjava"
+      -I${TOPDIR}/src/java.base/share/native/include \
+      -I${TOPDIR}/src/java.base/$OPENJDK_$1_OS/native/include \
+      -I${TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/include \
+      -I${TOPDIR}/src/java.base/share/native/libjava \
+      -I${TOPDIR}/src/java.base/$OPENJDK_$1_OS_TYPE/native/libjava"
 
   # The shared libraries are compiled using the picflag.
   $2CFLAGS_JDKLIB="[$]$2COMMON_CCXXFLAGS_JDK \
diff --git a/make/autoconf/generated-configure.sh b/make/autoconf/generated-configure.sh
index 08d6ccb..28eaa47 100644
--- a/make/autoconf/generated-configure.sh
+++ b/make/autoconf/generated-configure.sh
@@ -871,7 +871,6 @@
 IMPORT_MODULES_CMDS
 IMPORT_MODULES_CLASSES
 BUILD_OUTPUT
-JDK_TOPDIR
 NASHORN_TOPDIR
 HOTSPOT_TOPDIR
 JAXWS_TOPDIR
@@ -1140,6 +1139,7 @@
 with_extra_path
 with_sdk_name
 with_conf_name
+with_output_base_dir
 with_output_sync
 with_default_make_target
 enable_headless_only
@@ -2059,6 +2059,7 @@
   --with-sdk-name         use the platform SDK of the given name. [macosx]
   --with-conf-name        use this as the name of the configuration [generated
                           from important configuration options]
+  --with-output-base-dir  override the default output base directory [./build]
   --with-output-sync      set make output sync type if supported by make.
                           [recurse]
   --with-default-make-target
@@ -3451,7 +3452,7 @@
 
 
 ac_aux_dir=
-for ac_dir in $TOPDIR/common/autoconf/build-aux "$srcdir"/$TOPDIR/common/autoconf/build-aux; do
+for ac_dir in $TOPDIR/make/autoconf/build-aux "$srcdir"/$TOPDIR/make/autoconf/build-aux; do
   if test -f "$ac_dir/install-sh"; then
     ac_aux_dir=$ac_dir
     ac_install_sh="$ac_aux_dir/install-sh -c"
@@ -3467,7 +3468,7 @@
   fi
 done
 if test -z "$ac_aux_dir"; then
-  as_fn_error $? "cannot find install-sh, install.sh, or shtool in $TOPDIR/common/autoconf/build-aux \"$srcdir\"/$TOPDIR/common/autoconf/build-aux" "$LINENO" 5
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in $TOPDIR/make/autoconf/build-aux \"$srcdir\"/$TOPDIR/make/autoconf/build-aux" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -5161,7 +5162,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1504441177
+DATE_WHEN_GENERATED=1505235832
 
 ###############################################################################
 #
@@ -16905,7 +16906,7 @@
 
 
   # Locate the directory of this script.
-  AUTOCONF_DIR=$TOPDIR/common/autoconf
+  AUTOCONF_DIR=$TOPDIR/make/autoconf
 
   # Setup username (for use in adhoc version strings etc)
   # Outer [ ] to quote m4.
@@ -17600,11 +17601,19 @@
 fi
 
 
+# Check whether --with-output-base-dir was given.
+if test "${with_output_base_dir+set}" = set; then :
+  withval=$with_output_base_dir;  OUTPUT_BASE=${with_output_base_dir}
+else
+   OUTPUT_BASE="$SRC_ROOT/build"
+fi
+
+
   # Test from where we are running configure, in or outside of src root.
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to store configuration" >&5
 $as_echo_n "checking where to store configuration... " >&6; }
   if test "x$CURDIR" = "x$SRC_ROOT" || test "x$CURDIR" = "x$SRC_ROOT/common" \
-      || test "x$CURDIR" = "x$SRC_ROOT/common/autoconf" \
+      || test "x$CURDIR" = "x$SRC_ROOT/make/autoconf" \
       || test "x$CURDIR" = "x$SRC_ROOT/make" ; then
     # We are running configure from the src root.
     # Create a default ./build/target-variant-debuglevel output root.
@@ -17616,7 +17625,7 @@
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: in build directory with custom name" >&5
 $as_echo "in build directory with custom name" >&6; }
     fi
-    OUTPUT_ROOT="$SRC_ROOT/build/${CONF_NAME}"
+    OUTPUT_ROOT="${OUTPUT_BASE}/${CONF_NAME}"
     $MKDIR -p "$OUTPUT_ROOT"
     if test ! -d "$OUTPUT_ROOT"; then
       as_fn_error $? "Could not create build directory $OUTPUT_ROOT" "$LINENO" 5
@@ -51890,11 +51899,11 @@
   # Setup some hard coded includes
   COMMON_CCXXFLAGS_JDK="$COMMON_CCXXFLAGS_JDK \
       -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
-      -I${JDK_TOPDIR}/src/java.base/share/native/include \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS/native/include \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/include \
-      -I${JDK_TOPDIR}/src/java.base/share/native/libjava \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/libjava"
+      -I${TOPDIR}/src/java.base/share/native/include \
+      -I${TOPDIR}/src/java.base/$OPENJDK_TARGET_OS/native/include \
+      -I${TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/include \
+      -I${TOPDIR}/src/java.base/share/native/libjava \
+      -I${TOPDIR}/src/java.base/$OPENJDK_TARGET_OS_TYPE/native/libjava"
 
   # The shared libraries are compiled using the picflag.
   CFLAGS_JDKLIB="$COMMON_CCXXFLAGS_JDK \
@@ -52769,11 +52778,11 @@
   # Setup some hard coded includes
   OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
       -I\$(SUPPORT_OUTPUTDIR)/modules_include/java.base \
-      -I${JDK_TOPDIR}/src/java.base/share/native/include \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS/native/include \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/include \
-      -I${JDK_TOPDIR}/src/java.base/share/native/libjava \
-      -I${JDK_TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/libjava"
+      -I${TOPDIR}/src/java.base/share/native/include \
+      -I${TOPDIR}/src/java.base/$OPENJDK_BUILD_OS/native/include \
+      -I${TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/include \
+      -I${TOPDIR}/src/java.base/share/native/libjava \
+      -I${TOPDIR}/src/java.base/$OPENJDK_BUILD_OS_TYPE/native/libjava"
 
   # The shared libraries are compiled using the picflag.
   OPENJDK_BUILD_CFLAGS_JDKLIB="$OPENJDK_BUILD_COMMON_CCXXFLAGS_JDK \
@@ -54200,19 +54209,19 @@
   if test "x$ENABLE_AOT" = "xtrue"; then
     # Only enable AOT on X64 platforms.
     if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
-      if test -e "$HOTSPOT_TOPDIR/src/jdk.aot"; then
-        if test -e "$HOTSPOT_TOPDIR/src/jdk.internal.vm.compiler"; then
+      if test -e "${TOPDIR}/src/jdk.aot"; then
+        if test -e "${TOPDIR}/src/jdk.internal.vm.compiler"; then
           ENABLE_AOT="true"
         else
           ENABLE_AOT="false"
           if test "x$enable_aot" = "xyes"; then
-            as_fn_error $? "Cannot build AOT without hotspot/src/jdk.internal.vm.compiler sources. Remove --enable-aot." "$LINENO" 5
+            as_fn_error $? "Cannot build AOT without src/jdk.internal.vm.compiler sources. Remove --enable-aot." "$LINENO" 5
           fi
         fi
       else
         ENABLE_AOT="false"
         if test "x$enable_aot" = "xyes"; then
-          as_fn_error $? "Cannot build AOT without hotspot/src/jdk.aot sources. Remove --enable-aot." "$LINENO" 5
+          as_fn_error $? "Cannot build AOT without src/jdk.aot sources. Remove --enable-aot." "$LINENO" 5
         fi
       fi
     else
@@ -54249,7 +54258,7 @@
 fi
 
 
-  if test -e "$HOTSPOT_TOPDIR/test/native"; then
+  if test -e "${TOPDIR}/test/hotspot/gtest"; then
     GTEST_DIR_EXISTS="true"
   else
     GTEST_DIR_EXISTS="false"
@@ -54302,7 +54311,7 @@
   if test "x$OPENJDK_BUILD_OS" = xwindows; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking if fixpath can be created" >&5
 $as_echo_n "checking if fixpath can be created... " >&6; }
-    FIXPATH_SRC="$SRC_ROOT/common/src/fixpath.c"
+    FIXPATH_SRC="$SRC_ROOT/make/src/native/fixpath.c"
     FIXPATH_BIN="$CONFIGURESUPPORT_OUTPUTDIR/bin/fixpath.exe"
     FIXPATH_DIR="$CONFIGURESUPPORT_OUTPUTDIR/fixpath"
     if test "x$OPENJDK_BUILD_OS_ENV" = xwindows.cygwin; then
@@ -65934,7 +65943,7 @@
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking if elliptic curve crypto implementation is present" >&5
 $as_echo_n "checking if elliptic curve crypto implementation is present... " >&6; }
 
-  if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
+  if test -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then
     ENABLE_INTREE_EC=true
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
diff --git a/make/autoconf/hotspot.m4 b/make/autoconf/hotspot.m4
index 636a7f4..487dbde 100644
--- a/make/autoconf/hotspot.m4
+++ b/make/autoconf/hotspot.m4
@@ -214,19 +214,19 @@
   if test "x$ENABLE_AOT" = "xtrue"; then
     # Only enable AOT on X64 platforms.
     if test "x$OPENJDK_TARGET_CPU" = "xx86_64"; then
-      if test -e "$HOTSPOT_TOPDIR/src/jdk.aot"; then
-        if test -e "$HOTSPOT_TOPDIR/src/jdk.internal.vm.compiler"; then
+      if test -e "${TOPDIR}/src/jdk.aot"; then
+        if test -e "${TOPDIR}/src/jdk.internal.vm.compiler"; then
           ENABLE_AOT="true"
         else
           ENABLE_AOT="false"
           if test "x$enable_aot" = "xyes"; then
-            AC_MSG_ERROR([Cannot build AOT without hotspot/src/jdk.internal.vm.compiler sources. Remove --enable-aot.])
+            AC_MSG_ERROR([Cannot build AOT without src/jdk.internal.vm.compiler sources. Remove --enable-aot.])
           fi
         fi
       else
         ENABLE_AOT="false"
         if test "x$enable_aot" = "xyes"; then
-          AC_MSG_ERROR([Cannot build AOT without hotspot/src/jdk.aot sources. Remove --enable-aot.])
+          AC_MSG_ERROR([Cannot build AOT without src/jdk.aot sources. Remove --enable-aot.])
         fi
       fi
     else
@@ -488,7 +488,7 @@
   AC_ARG_ENABLE([hotspot-gtest], [AS_HELP_STRING([--disable-hotspot-gtest],
       [Disables building of the Hotspot unit tests])])
 
-  if test -e "$HOTSPOT_TOPDIR/test/native"; then
+  if test -e "${TOPDIR}/test/hotspot/gtest"; then
     GTEST_DIR_EXISTS="true"
   else
     GTEST_DIR_EXISTS="false"
diff --git a/make/autoconf/jdk-options.m4 b/make/autoconf/jdk-options.m4
index 2ce5830..df5d8a5 100644
--- a/make/autoconf/jdk-options.m4
+++ b/make/autoconf/jdk-options.m4
@@ -258,7 +258,7 @@
 [
   AC_MSG_CHECKING([if elliptic curve crypto implementation is present])
 
-  if test -d "${SRC_ROOT}/jdk/src/jdk.crypto.ec/share/native/libsunec/impl"; then
+  if test -d "${TOPDIR}/src/jdk.crypto.ec/share/native/libsunec/impl"; then
     ENABLE_INTREE_EC=true
     AC_MSG_RESULT([yes])
   else
diff --git a/make/autoconf/source-dirs.m4 b/make/autoconf/source-dirs.m4
index 95053e7..e5d82a2 100644
--- a/make/autoconf/source-dirs.m4
+++ b/make/autoconf/source-dirs.m4
@@ -39,7 +39,7 @@
   AC_SUBST(JAXWS_TOPDIR)
   AC_SUBST(HOTSPOT_TOPDIR)
   AC_SUBST(NASHORN_TOPDIR)
-  AC_SUBST(JDK_TOPDIR)
+  AC_SUBST(TOPDIR)
 ])
 
 AC_DEFUN_ONCE([SRCDIRS_SETUP_ALTERNATIVE_TOPDIRS],
diff --git a/make/autoconf/spec.gmk.in b/make/autoconf/spec.gmk.in
index 72e28cf..2dbce9a 100644
--- a/make/autoconf/spec.gmk.in
+++ b/make/autoconf/spec.gmk.in
@@ -857,6 +857,8 @@
 TEST_BUNDLE :=  $(BUNDLES_OUTPUTDIR)/$(TEST_BUNDLE_NAME)
 DOCS_BUNDLE :=  $(BUNDLES_OUTPUTDIR)/$(DOCS_BUNDLE_NAME)
 
+CONFIGURE_CMD := $(TOPDIR)/configure
+
 # This macro is called to allow inclusion of closed source counterparts.
 # Unless overridden in closed sources, it expands to nothing.
 # Usage: This function is called in an open makefile, with the following
diff --git a/make/common/JavaCompilation.gmk b/make/common/JavaCompilation.gmk
index 21e8517..f063e03 100644
--- a/make/common/JavaCompilation.gmk
+++ b/make/common/JavaCompilation.gmk
@@ -124,7 +124,7 @@
 	export LC_ALL=C ; ( $(CAT) $$< && $(ECHO) "" ) \
 	    | $(SED) -e 's/\([^\\]\):/\1\\:/g' -e 's/\([^\\]\)=/\1\\=/g' \
 	        -e 's/\([^\\]\)!/\1\\!/g' -e 's/^[ 	]*#.*/#/g' \
-	    | $(SED) -f "$(SRC_ROOT)/make/common/support/unicode2x.sed" \
+	    | $(SED) -f "$(TOPDIR)/make/common/support/unicode2x.sed" \
 	    | $(SED) -e '/^#/d' -e '/^$$$$/d' \
 	        -e :a -e '/\\$$$$/N; s/\\\n//; ta' \
 	        -e 's/^[ 	]*//;s/[ 	]*$$$$//' \
diff --git a/make/common/MakeBase.gmk b/make/common/MakeBase.gmk
index 3a8a900..e2372d0 100644
--- a/make/common/MakeBase.gmk
+++ b/make/common/MakeBase.gmk
@@ -152,18 +152,18 @@
 else # HAS_FILE_FUNCTION = false
 
   $(eval compress_paths = \
-      $(strip $(shell $(CAT) $(SRC_ROOT)/make/common/support/ListPathsSafely-pre-compress.incl)))
+      $(strip $(shell $(CAT) $(TOPDIR)/make/common/support/ListPathsSafely-pre-compress.incl)))
   compress_paths += \
-      $(subst $(SRC_ROOT),X97, \
+      $(subst $(TOPDIR),X97, \
       $(subst $(OUTPUT_ROOT),X98, \
       $(subst X,X00, \
       $(subst $(SPACE),\n,$(strip $1)))))
   $(eval compress_paths += \
-      $(strip $(shell $(CAT) $(SRC_ROOT)/make/common/support/ListPathsSafely-post-compress.incl)))
+      $(strip $(shell $(CAT) $(TOPDIR)/make/common/support/ListPathsSafely-post-compress.incl)))
 
-  decompress_paths=$(SED) -f $(SRC_ROOT)/make/common/support/ListPathsSafely-uncompress.sed \
+  decompress_paths=$(SED) -f $(TOPDIR)/make/common/support/ListPathsSafely-uncompress.sed \
       -e 's|X99|\\n|g' \
-      -e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(SRC_ROOT)|g' \
+      -e 's|X98|$(OUTPUT_ROOT)|g' -e 's|X97|$(TOPDIR)|g' \
       -e 's|X00|X|g'
 
   ListPathsSafely_IfPrintf = \
@@ -344,24 +344,24 @@
 
 # Locate all hg repositories included in the forest, as absolute paths
 FindAllReposAbs = \
-    $(strip $(sort $(dir $(filter-out $(SRC_ROOT)/build/%, $(wildcard \
-        $(addprefix $(SRC_ROOT)/, .hg */.hg */*/.hg */*/*/.hg) \
+    $(strip $(sort $(dir $(filter-out $(TOPDIR)/build/%, $(wildcard \
+        $(addprefix $(TOPDIR)/, .hg */.hg */*/.hg */*/*/.hg */*/*/*/.hg) \
     )))))
 
 # Locate all hg repositories included in the forest, as relative paths
 FindAllReposRel = \
-    $(strip $(subst $(SRC_ROOT)/,.,$(patsubst $(SRC_ROOT)/%/, %, $(FindAllReposAbs))))
+    $(strip $(subst $(TOPDIR)/,.,$(patsubst $(TOPDIR)/%/, %, $(FindAllReposAbs))))
 
 ################################################################################
 
 define SetupLogging
   ifeq ($$(LOG_PROFILE_TIMES_FILE), true)
     ifeq ($$(IS_GNU_TIME), yes)
-      SHELL :=  $$(BASH) $$(SRC_ROOT)/common/bin/shell-profiler.sh \
+      SHELL :=  $$(BASH) $$(TOPDIR)/make/scripts/shell-profiler.sh \
                 gnutime $$(TIME) \
                 $$(OUTPUT_ROOT)/build-profile.log $$(SHELL)
     else ifneq ($$(FLOCK), )
-      SHELL :=  $$(BASH) $$(SRC_ROOT)/common/bin/shell-profiler.sh \
+      SHELL :=  $$(BASH) $$(TOPDIR)/make/scripts/shell-profiler.sh \
                 flock $$(FLOCK) \
                 $$(OUTPUT_ROOT)/build-profile.log $$(SHELL)
     endif
@@ -874,7 +874,7 @@
 # Defines the sub directory structure to store variable value file in
 DependOnVariableDirName = \
     $(strip $(addsuffix $(if $(MODULE),/$(MODULE)), \
-        $(subst $(SRC_ROOT)/,, $(if $(filter /%, $(firstword $(MAKEFILE_LIST))), \
+        $(subst $(TOPDIR)/,, $(if $(filter /%, $(firstword $(MAKEFILE_LIST))), \
           $(firstword $(MAKEFILE_LIST)), \
           $(CURDIR)/$(firstword $(MAKEFILE_LIST))))))
 
diff --git a/make/common/Modules.gmk b/make/common/Modules.gmk
index 9bbcf6c..86486b4 100644
--- a/make/common/Modules.gmk
+++ b/make/common/Modules.gmk
@@ -187,6 +187,23 @@
 # before building the real images.
 INTERIM_IMAGE_MODULES := java.base java.logging
 
+LANGTOOLS_MODULES := \
+    java.compiler \
+    jdk.compiler \
+    jdk.javadoc \
+    jdk.jdeps \
+    jdk.jshell \
+    #
+
+CORBA_MODULES := java.corba
+
+HOTSPOT_MODULES := \
+    jdk.aot \
+    jdk.hotspot.agent \
+    jdk.internal.vm.ci \
+    jdk.internal.vm.compiler \
+    #
+
 ################################################################################
 # Some platforms don't have the serviceability agent
 
@@ -218,13 +235,7 @@
     #
 
 TOP_SRC_DIRS += \
-    $(CORBA_TOPDIR)/src \
-    $(HOTSPOT_TOPDIR)/src \
-    $(JDK_TOPDIR)/src \
-    $(LANGTOOLS_TOPDIR)/src \
-    $(JAXP_TOPDIR)/src \
-    $(JAXWS_TOPDIR)/src \
-    $(NASHORN_TOPDIR)/src \
+    $(TOPDIR)/src \
     #
 
 SRC_SUBDIRS += $(OPENJDK_TARGET_OS)/classes
diff --git a/make/common/NativeCompilation.gmk b/make/common/NativeCompilation.gmk
index f772e2e..d56ce93 100644
--- a/make/common/NativeCompilation.gmk
+++ b/make/common/NativeCompilation.gmk
@@ -510,8 +510,8 @@
   $$(foreach d,$$($1_SRC), $$(if $$(wildcard $$d),, \
       $$(error SRC specified to SetupNativeCompilation $1 contains missing directory $$d)))
 
-  # Find all files in the source trees. Sort to remove duplicates.
-  $1_SRCS := $$(sort $$(call CacheFind,$$($1_SRC)))
+  # Find all files in the source trees. Preserve order.
+  $1_SRCS := $$(foreach s, $$($1_SRC), $$(call CacheFind,$$(s)))
   $1_SRCS := $$(filter $$(NATIVE_SOURCE_EXTENSIONS), $$($1_SRCS))
   # Extract the C/C++ files.
   ifneq ($$($1_EXCLUDE_PATTERNS), )
diff --git a/make/conf/jib-profiles.js b/make/conf/jib-profiles.js
index dcac9dc..b2dfdf3 100644
--- a/make/conf/jib-profiles.js
+++ b/make/conf/jib-profiles.js
@@ -1287,7 +1287,7 @@
     // Read version information from common/autoconf/version-numbers
     if (version_numbers == null) {
         version_numbers = new java.util.Properties();
-        var stream = new java.io.FileInputStream(__DIR__ + "/../../common/autoconf/version-numbers");
+        var stream = new java.io.FileInputStream(__DIR__ + "/../autoconf/version-numbers");
         version_numbers.load(stream);
         stream.close();
     }
diff --git a/make/copy/Copy-java.base.gmk b/make/copy/Copy-java.base.gmk
index 0176490..ddcc895 100644
--- a/make/copy/Copy-java.base.gmk
+++ b/make/copy/Copy-java.base.gmk
@@ -25,7 +25,7 @@
 
 include CopyCommon.gmk
 
-$(eval $(call IncludeCustomExtension, jdk, copy/Copy-java.base.gmk))
+$(eval $(call IncludeCustomExtension, , copy/Copy-java.base.gmk))
 
 ################################################################################
 #
@@ -38,18 +38,18 @@
     $(INCLUDE_DST_OS_DIR)/jni_md.h \
     #
 
-$(INCLUDE_DST_DIR)/%.h: $(JDK_TOPDIR)/src/java.base/share/native/include/%.h
+$(INCLUDE_DST_DIR)/%.h: $(TOPDIR)/src/java.base/share/native/include/%.h
 	$(call install-file)
 
 $(INCLUDE_DST_OS_DIR)/%.h: \
-    $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_EXPORT_DIR)/native/include/%.h
+    $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_EXPORT_DIR)/native/include/%.h
 	$(call install-file)
 
 ################################################################################
 
 ifneq ($(findstring $(OPENJDK_TARGET_OS), windows aix),)
 
-  TZMAPPINGS_SRC := $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/conf
+  TZMAPPINGS_SRC := $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/conf
 
   $(LIB_DST_DIR)/tzmappings: $(TZMAPPINGS_SRC)/tzmappings
 	$(call install-file)
@@ -94,9 +94,9 @@
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
-  JVMCFG_SRC := $(JDK_TOPDIR)/src/java.base/macosx/conf/$(JVMCFG_ARCH)/jvm.cfg
+  JVMCFG_SRC := $(TOPDIR)/src/java.base/macosx/conf/$(JVMCFG_ARCH)/jvm.cfg
 else
-  JVMCFG_SRC := $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/$(JVMCFG_ARCH)/jvm.cfg
+  JVMCFG_SRC := $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/$(JVMCFG_ARCH)/jvm.cfg
   # Allow override by ALT_JVMCFG_SRC if it exists
   JVMCFG_SRC := $(if $(wildcard $(ALT_JVMCFG_SRC)),$(ALT_JVMCFG_SRC),$(JVMCFG_SRC))
 endif
@@ -161,7 +161,7 @@
 
 ################################################################################
 
-POLICY_SRC := $(JDK_TOPDIR)/src/java.base/share/conf/security/java.policy
+POLICY_SRC := $(TOPDIR)/src/java.base/share/conf/security/java.policy
 POLICY_DST := $(CONF_DST_DIR)/security/java.policy
 
 POLICY_SRC_LIST := $(POLICY_SRC)
@@ -176,14 +176,14 @@
 
 ################################################################################
 
-DEF_POLICY_SRC := $(JDK_TOPDIR)/src/java.base/share/lib/security/default.policy
+DEF_POLICY_SRC := $(TOPDIR)/src/java.base/share/lib/security/default.policy
 DEF_POLICY_DST := $(LIB_DST_DIR)/security/default.policy
 
 DEF_POLICY_SRC_LIST := $(DEF_POLICY_SRC)
 DEF_POLICY_SRC_LIST += $(CUSTOM_POLICY_SRC_LIST)
 
 ifneq ($(filter $(OPENJDK_TARGET_OS), windows solaris), )
-  DEF_POLICY_SRC_LIST += $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/lib/security/default.policy
+  DEF_POLICY_SRC_LIST += $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/lib/security/default.policy
 endif
 
 # Allow imported modules to modify the java.policy
@@ -202,7 +202,7 @@
 ################################################################################
 
 ifeq ($(CACERTS_FILE), )
-  CACERTS_FILE := $(JDK_TOPDIR)/src/java.base/share/lib/security/cacerts
+  CACERTS_FILE := $(TOPDIR)/src/java.base/share/lib/security/cacerts
 endif
 
 CACERTS_DST := $(LIB_DST_DIR)/security/cacerts
@@ -216,7 +216,7 @@
 ################################################################################
 
 $(eval $(call SetupCopyFiles, COPY_NET_PROPERTIES, \
-    FILES := $(JDK_TOPDIR)/src/java.base/share/conf/net.properties, \
+    FILES := $(TOPDIR)/src/java.base/share/conf/net.properties, \
     DEST := $(CONF_DST_DIR), \
 ))
 
@@ -224,7 +224,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   $(eval $(call SetupCopyFiles, COPY_SDP_CONF, \
-      FILES := $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/sdp/sdp.conf.template, \
+      FILES := $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/conf/sdp/sdp.conf.template, \
       DEST := $(CONF_DST_DIR)/sdp, \
   ))
 
diff --git a/make/copy/Copy-java.corba.gmk b/make/copy/Copy-java.corba.gmk
index fbc26a5..61628c4 100644
--- a/make/copy/Copy-java.corba.gmk
+++ b/make/copy/Copy-java.corba.gmk
@@ -26,9 +26,9 @@
 ################################################################################
 # Copy idl files to jdk/lib.
 $(eval $(call SetupCopyFiles,COPY_IDL, \
-    SRC := $(CORBA_TOPDIR)/src/java.corba/share/classes/com/sun/tools/corba/se/idl, \
+    SRC := $(TOPDIR)/src/java.corba/share/classes/com/sun/tools/corba/se/idl, \
     DEST := $(SUPPORT_OUTPUTDIR)/modules_include/$(MODULE), \
-    FILES := $(CORBA_TOPDIR)/src/java.corba/share/classes/com/sun/tools/corba/se/idl/orb.idl \
-        $(CORBA_TOPDIR)/src/java.corba/share/classes/com/sun/tools/corba/se/idl/ir.idl))
+    FILES := $(TOPDIR)/src/java.corba/share/classes/com/sun/tools/corba/se/idl/orb.idl \
+        $(TOPDIR)/src/java.corba/share/classes/com/sun/tools/corba/se/idl/ir.idl))
 
 TARGETS := $(COPY_IDL)
diff --git a/make/copy/Copy-java.desktop.gmk b/make/copy/Copy-java.desktop.gmk
index 7103755..a40d65f 100644
--- a/make/copy/Copy-java.desktop.gmk
+++ b/make/copy/Copy-java.desktop.gmk
@@ -25,7 +25,7 @@
 
 include CopyCommon.gmk
 
-$(eval $(call IncludeCustomExtension, jdk, copy/Copy-java.desktop.gmk))
+$(eval $(call IncludeCustomExtension, , copy/Copy-java.desktop.gmk))
 
 ################################################################################
 
@@ -34,11 +34,11 @@
     $(INCLUDE_DST_OS_DIR)/jawt_md.h \
     #
 
-$(INCLUDE_DST_DIR)/%.h: $(JDK_TOPDIR)/src/java.desktop/share/native/include/%.h
+$(INCLUDE_DST_DIR)/%.h: $(TOPDIR)/src/java.desktop/share/native/include/%.h
 	$(call install-file)
 
 $(INCLUDE_DST_OS_DIR)/%.h: \
-    $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_EXPORT_DIR)/native/include/%.h
+    $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_EXPORT_DIR)/native/include/%.h
 	$(call install-file)
 
 ################################################################################
@@ -88,7 +88,7 @@
 
 ################################################################################
 
-$(CONF_DST_DIR)/sound.properties: $(JDK_TOPDIR)/src/java.desktop/share/conf/sound.properties
+$(CONF_DST_DIR)/sound.properties: $(TOPDIR)/src/java.desktop/share/conf/sound.properties
 	$(call install-file)
 
 TARGETS += $(CONF_DST_DIR)/sound.properties
@@ -97,7 +97,7 @@
 #
 # Copy property files from sun/print to LIB_DST_DIR
 #
-PSFONTPROPFILE_SRC_DIR := $(JDK_TOPDIR)/src/java.desktop/share/conf
+PSFONTPROPFILE_SRC_DIR := $(TOPDIR)/src/java.desktop/share/conf
 PSFONTPROPFILE_SRCS := $(wildcard $(PSFONTPROPFILE_SRC_DIR)/psfont*.properties*)
 PSFONTPROPFILE_TARGET_FILES := $(subst $(PSFONTPROPFILE_SRC_DIR),$(LIB_DST_DIR),$(PSFONTPROPFILE_SRCS))
 
diff --git a/make/copy/Copy-java.logging.gmk b/make/copy/Copy-java.logging.gmk
index 8791e57..8c9e677 100644
--- a/make/copy/Copy-java.logging.gmk
+++ b/make/copy/Copy-java.logging.gmk
@@ -27,7 +27,7 @@
 
 ################################################################################
 
-LOGGING_LIB_SRC := $(JDK_TOPDIR)/src/java.logging/share/conf
+LOGGING_LIB_SRC := $(TOPDIR)/src/java.logging/share/conf
 
 $(CONF_DST_DIR)/logging.properties: $(LOGGING_LIB_SRC)/logging.properties
 	$(call install-file)
diff --git a/make/copy/Copy-jdk.accessibility.gmk b/make/copy/Copy-jdk.accessibility.gmk
index f3c136b..bde3206 100644
--- a/make/copy/Copy-jdk.accessibility.gmk
+++ b/make/copy/Copy-jdk.accessibility.gmk
@@ -33,7 +33,7 @@
       $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgePackages.h
 
   $(INCLUDE_DST_OS_DIR)/bridge/%: \
-      $(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge/%
+      $(TOPDIR)/src/jdk.accessibility/windows/native/include/bridge/%
 		$(install-file)
 
 endif
diff --git a/make/copy/Copy-jdk.crypto.cryptoki.gmk b/make/copy/Copy-jdk.crypto.cryptoki.gmk
index fafbeef..7965c56 100644
--- a/make/copy/Copy-jdk.crypto.cryptoki.gmk
+++ b/make/copy/Copy-jdk.crypto.cryptoki.gmk
@@ -30,7 +30,7 @@
 ifeq ($(OPENJDK_TARGET_OS), solaris)
 
   SUNPKCS11_CFG_SRC := \
-      $(JDK_TOPDIR)/src/jdk.crypto.cryptoki/solaris/conf/security/sunpkcs11-solaris.cfg
+      $(TOPDIR)/src/jdk.crypto.cryptoki/solaris/conf/security/sunpkcs11-solaris.cfg
   SUNPKCS11_CFG_DST := $(CONF_DST_DIR)/security/sunpkcs11-solaris.cfg
 
   $(SUNPKCS11_CFG_DST): $(SUNPKCS11_CFG_SRC)
diff --git a/make/copy/Copy-jdk.crypto.ucrypto.gmk b/make/copy/Copy-jdk.crypto.ucrypto.gmk
index 521c81b..0007e44 100644
--- a/make/copy/Copy-jdk.crypto.ucrypto.gmk
+++ b/make/copy/Copy-jdk.crypto.ucrypto.gmk
@@ -29,7 +29,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), solaris)
 
-  UCRYPTO_CFG_SRC := $(JDK_TOPDIR)/src/jdk.crypto.ucrypto/solaris/conf/security/ucrypto-solaris.cfg
+  UCRYPTO_CFG_SRC := $(TOPDIR)/src/jdk.crypto.ucrypto/solaris/conf/security/ucrypto-solaris.cfg
   UCRYPTO_CFG_DST := $(CONF_DST_DIR)/security/ucrypto-solaris.cfg
 
   $(UCRYPTO_CFG_DST): $(UCRYPTO_CFG_SRC)
diff --git a/make/copy/Copy-jdk.jdwp.agent.gmk b/make/copy/Copy-jdk.jdwp.agent.gmk
index 279f274..a765567 100644
--- a/make/copy/Copy-jdk.jdwp.agent.gmk
+++ b/make/copy/Copy-jdk.jdwp.agent.gmk
@@ -29,7 +29,7 @@
 
 TARGETS := $(INCLUDE_DST_DIR)/jdwpTransport.h
 
-$(INCLUDE_DST_DIR)/%.h: $(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/include/%.h
+$(INCLUDE_DST_DIR)/%.h: $(TOPDIR)/src/jdk.jdwp.agent/share/native/include/%.h
 	$(call install-file)
 
 ################################################################################
diff --git a/make/copy/Copy-jdk.management.agent.gmk b/make/copy/Copy-jdk.management.agent.gmk
index 6910ca2..5600989 100644
--- a/make/copy/Copy-jdk.management.agent.gmk
+++ b/make/copy/Copy-jdk.management.agent.gmk
@@ -28,7 +28,7 @@
 ################################################################################
 
 MGMT_CONF_DIR := $(CONF_DST_DIR)/management
-MGMT_CONF_SRC := $(JDK_TOPDIR)/src/jdk.management.agent/share/conf
+MGMT_CONF_SRC := $(TOPDIR)/src/jdk.management.agent/share/conf
 MGMT_SRC_FILES := $(wildcard $(MGMT_CONF_SRC)/*)
 MGMT_TARGET_FILES := $(subst $(MGMT_CONF_SRC),$(MGMT_CONF_DIR),$(MGMT_SRC_FILES))
 
diff --git a/make/gendata/Gendata-java.base.gmk b/make/gendata/Gendata-java.base.gmk
index 88acb5b..a55a3d7 100644
--- a/make/gendata/Gendata-java.base.gmk
+++ b/make/gendata/Gendata-java.base.gmk
@@ -26,7 +26,7 @@
 include GendataCommon.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, gendata/Gendata-java.base.gmk))
+$(eval $(call IncludeCustomExtension, , gendata/Gendata-java.base.gmk))
 
 include GendataBreakIterator.gmk
 
@@ -40,7 +40,7 @@
 
 GENDATA_UNINAME := $(JDK_OUTPUTDIR)/modules/java.base/java/lang/uniName.dat
 
-$(GENDATA_UNINAME): $(JDK_TOPDIR)/make/data/unicodedata/UnicodeData.txt $(BUILD_TOOLS_JDK)
+$(GENDATA_UNINAME): $(TOPDIR)/make/data/unicodedata/UnicodeData.txt $(BUILD_TOOLS_JDK)
 	$(call MakeDir, $(@D))
 	$(TOOL_CHARACTERNAME) $< $@
 
@@ -50,7 +50,7 @@
 
 GENDATA_CURDATA := $(JDK_OUTPUTDIR)/modules/java.base/java/util/currency.data
 
-$(GENDATA_CURDATA): $(JDK_TOPDIR)/make/data/currency/CurrencyData.properties $(BUILD_TOOLS_JDK)
+$(GENDATA_CURDATA): $(TOPDIR)/make/data/currency/CurrencyData.properties $(BUILD_TOOLS_JDK)
 	$(call MakeDir, $(@D))
 	$(RM) $@
 	$(TOOL_GENERATECURRENCYDATA) -o [email protected] < $<
@@ -61,7 +61,7 @@
 
 ################################################################################
 
-GENDATA_JAVA_SECURITY_SRC := $(JDK_TOPDIR)/src/java.base/share/conf/security/java.security
+GENDATA_JAVA_SECURITY_SRC := $(TOPDIR)/src/java.base/share/conf/security/java.security
 GENDATA_JAVA_SECURITY := $(SUPPORT_OUTPUTDIR)/modules_conf/java.base/security/java.security
 
 ifeq ($(UNLIMITED_CRYPTO), true)
diff --git a/make/gendata/Gendata-jdk.compiler.gmk b/make/gendata/Gendata-jdk.compiler.gmk
index 93574ce..25f9e37 100644
--- a/make/gendata/Gendata-jdk.compiler.gmk
+++ b/make/gendata/Gendata-jdk.compiler.gmk
@@ -39,11 +39,11 @@
 # Get the complete module source path:
 CT_MODULESOURCEPATH := $(call GetModuleSrcPath)
 
-CT_DATA_DESCRIPTION ?= $(LANGTOOLS_TOPDIR)/make/data/symbols/symbols
+CT_DATA_DESCRIPTION ?= $(TOPDIR)/make/data/symbols/symbols
 
 $(eval $(call SetupJavaCompilation, COMPILE_CREATE_SYMBOLS, \
     SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(LANGTOOLS_TOPDIR)/make/src/classes, \
+    SRC := $(TOPDIR)/make/langtools/src/classes, \
     INCLUDES := build/tools/symbolgenerator, \
     ADD_JAVAC_FLAGS := -Xbootclasspath/p:"$(INTERIM_LANGTOOLS_JAR)", \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/create_symbols, \
@@ -60,7 +60,7 @@
 
 $(SUPPORT_OUTPUTDIR)/symbols/ct.sym-files/_the.symbols: \
     $(COMPILE_CREATE_SYMBOLS) \
-    $(wildcard $(LANGTOOLS_TOPDIR)/make/data/symbols/*) \
+    $(wildcard $(TOPDIR)/make/data/symbols/*) \
     $(MODULE_INFOS)
 	$(RM) -r $(@D)
 	$(MKDIR) -p $(@D)
diff --git a/make/gendata/GendataBlacklistedCerts.gmk b/make/gendata/GendataBlacklistedCerts.gmk
index c25fb52..0772a79 100644
--- a/make/gendata/GendataBlacklistedCerts.gmk
+++ b/make/gendata/GendataBlacklistedCerts.gmk
@@ -23,9 +23,9 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, jdk, gendata/GendataBlacklistedCerts.gmk))
+$(eval $(call IncludeCustomExtension, , gendata/GendataBlacklistedCerts.gmk))
 
-GENDATA_BLACKLISTED_CERTS_SRC += $(JDK_TOPDIR)/make/data/blacklistedcertsconverter/blacklisted.certs.pem
+GENDATA_BLACKLISTED_CERTS_SRC += $(TOPDIR)/make/data/blacklistedcertsconverter/blacklisted.certs.pem
 GENDATA_BLACKLISTED_CERTS := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/security/blacklisted.certs
 
 $(GENDATA_BLACKLISTED_CERTS): $(BUILD_TOOLS) $(GENDATA_BLACKLISTED_CERTS_SRC)
diff --git a/make/gendata/GendataBreakIterator.gmk b/make/gendata/GendataBreakIterator.gmk
index 39a5dfb..4b97b63 100644
--- a/make/gendata/GendataBreakIterator.gmk
+++ b/make/gendata/GendataBreakIterator.gmk
@@ -46,7 +46,7 @@
 # These two files should be moved out to a build tool!
 $(eval $(call SetupJavaCompilation,BUILD_BREAKITERATOR_BASE, \
     SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(JDK_TOPDIR)/src/java.base/share/classes, \
+    SRC := $(TOPDIR)/src/java.base/share/classes, \
     INCLUDE_FILES := \
         $(TEXT_PKG)/BreakIteratorRules.java \
         $(TEXT_PKG)/BreakIteratorInfo.java, \
@@ -54,7 +54,7 @@
 
 $(eval $(call SetupJavaCompilation,BUILD_BREAKITERATOR_LD, \
     SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(JDK_TOPDIR)/src/jdk.localedata/share/classes, \
+    SRC := $(TOPDIR)/src/jdk.localedata/share/classes, \
     INCLUDE_FILES := \
         $(TEXT_PKG_LD)/BreakIteratorRules_th.java \
         $(TEXT_PKG_LD)/BreakIteratorInfo_th.java, \
@@ -76,7 +76,7 @@
 
 # Generate data resource files.
 # input
-UNICODEDATA := $(JDK_TOPDIR)/make/data/unicodedata/UnicodeData.txt
+UNICODEDATA := $(TOPDIR)/make/data/unicodedata/UnicodeData.txt
 
 # output
 BASE_DATA_PKG_DIR := $(JDK_OUTPUTDIR)/modules/java.base/sun/text/resources
diff --git a/make/gendata/GendataCommon.gmk b/make/gendata/GendataCommon.gmk
index 0eb8ed3..42c82eb 100644
--- a/make/gendata/GendataCommon.gmk
+++ b/make/gendata/GendataCommon.gmk
@@ -26,5 +26,5 @@
 include JavaCompilation.gmk
 include SetupJavaCompilers.gmk
 # We need the tools.
-include Tools.gmk
+include ToolsJdk.gmk
 
diff --git a/make/gendata/GendataCryptoPolicy.gmk b/make/gendata/GendataCryptoPolicy.gmk
index dff5123..e36a1b9 100644
--- a/make/gendata/GendataCryptoPolicy.gmk
+++ b/make/gendata/GendataCryptoPolicy.gmk
@@ -48,7 +48,7 @@
 LIMITED_POLICY_DIR := $(POLICY_DIR)/limited
 UNLIMITED_POLICY_DIR := $(POLICY_DIR)/unlimited
 
-POLICY_SRC_DIR := $(JDK_TOPDIR)/src/java.base/share/conf/security/policy
+POLICY_SRC_DIR := $(TOPDIR)/src/java.base/share/conf/security/policy
 LIMITED_POLICY_SRC_DIR := $(POLICY_SRC_DIR)/limited
 UNLIMITED_POLICY_SRC_DIR := $(POLICY_SRC_DIR)/unlimited
 
diff --git a/make/gendata/GendataFontConfig.gmk b/make/gendata/GendataFontConfig.gmk
index 048c445..1031bfb 100644
--- a/make/gendata/GendataFontConfig.gmk
+++ b/make/gendata/GendataFontConfig.gmk
@@ -23,11 +23,11 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, jdk, gendata/GendataFontConfig.gmk))
+$(eval $(call IncludeCustomExtension, , gendata/GendataFontConfig.gmk))
 
 GENDATA_FONT_CONFIG_DST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)
 
-GENDATA_FONT_CONFIG_DATA_DIR ?= $(JDK_TOPDIR)/make/data/fontconfig
+GENDATA_FONT_CONFIG_DATA_DIR ?= $(TOPDIR)/make/data/fontconfig
 
 GENDATA_FONT_CONFIG_SRC_FILES := \
     $(wildcard $(GENDATA_FONT_CONFIG_DATA_DIR)/$(OPENJDK_TARGET_OS).*)
diff --git a/make/gendata/GendataTZDB.gmk b/make/gendata/GendataTZDB.gmk
index 5d17b4f..e9be176 100644
--- a/make/gendata/GendataTZDB.gmk
+++ b/make/gendata/GendataTZDB.gmk
@@ -28,7 +28,7 @@
 #
 # Time zone data file creation
 #
-TZDATA_DIR := $(JDK_TOPDIR)/make/data/tzdata
+TZDATA_DIR := $(TOPDIR)/make/data/tzdata
 TZDATA_TZFILE := africa antarctica asia australasia europe northamerica pacificnew southamerica backward etcetera gmt jdk11_backward
 TZDATA_TZFILES := $(addprefix $(TZDATA_DIR)/,$(TZDATA_TZFILE))
 
diff --git a/make/gensrc/Gensrc-java.base.gmk b/make/gensrc/Gensrc-java.base.gmk
index c750489..3aaae2c 100644
--- a/make/gensrc/Gensrc-java.base.gmk
+++ b/make/gensrc/Gensrc-java.base.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 include GensrcLocaleData.gmk
 include GensrcCLDR.gmk
@@ -41,12 +41,12 @@
 include GensrcProperties.gmk
 
 $(eval $(call SetupCompileProperties, LIST_RESOURCE_BUNDLE, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/java.base/share/classes/sun/launcher/resources, \
+    SRC_DIRS := $(TOPDIR)/src/java.base/share/classes/sun/launcher/resources, \
     CLASS := ListResourceBundle, \
 ))
 
 $(eval $(call SetupCompileProperties, SUN_UTIL, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/java.base/share/classes/sun/util/resources, \
+    SRC_DIRS := $(TOPDIR)/src/java.base/share/classes/sun/util/resources, \
     CLASS := sun.util.resources.LocaleNamesBundle, \
 ))
 
@@ -55,7 +55,7 @@
 # Some resources bundles are already present as java files but still need to be
 # copied to zh_HK locale.
 $(eval $(call SetupCopy-zh_HK,COPY_ZH_HK, \
-    $(addprefix $(JDK_TOPDIR)/src/java.base/share/classes/, \
+    $(addprefix $(TOPDIR)/src/java.base/share/classes/, \
         sun/security/util/AuthResources_zh_TW.java \
         sun/security/util/Resources_zh_TW.java)))
 
@@ -65,7 +65,7 @@
 
 GENSRC_LSREQUIVMAPS := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/util/locale/LocaleEquivalentMaps.java
 
-$(GENSRC_LSREQUIVMAPS): $(JDK_TOPDIR)/make/data/lsrdata/language-subtag-registry.txt $(BUILD_TOOLS_JDK)
+$(GENSRC_LSREQUIVMAPS): $(TOPDIR)/make/data/lsrdata/language-subtag-registry.txt $(BUILD_TOOLS_JDK)
 	$(call MakeDir, $(@D))
 	$(TOOL_GENERATELSREQUIVMAPS) $< $@
 
diff --git a/make/gensrc/Gensrc-java.corba.gmk b/make/gensrc/Gensrc-java.corba.gmk
index 4899790..45c2301 100644
--- a/make/gensrc/Gensrc-java.corba.gmk
+++ b/make/gensrc/Gensrc-java.corba.gmk
@@ -35,7 +35,7 @@
 
 $(eval $(call SetupJavaCompilation,BUILD_TOOLS_CORBA, \
     SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(CORBA_TOPDIR)/make/src/classes, \
+    SRC := $(TOPDIR)/make/corba/src/classes, \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/corba_tools_classes))
 
 TOOL_LOGUTIL_CMD := $(JAVA_SMALL) -cp $(BUILDTOOLS_OUTPUTDIR)/corba_tools_classes \
@@ -43,7 +43,7 @@
 
 $(eval $(call SetupJavaCompilation,BUILD_IDLJ, \
     SETUP := GENERATE_OLDBYTECODE, \
-    SRC := $(CORBA_TOPDIR)/src/java.corba/share/classes, \
+    SRC := $(TOPDIR)/src/java.corba/share/classes, \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/idlj_classes, \
     COPY := .prp, \
     INCLUDES := com/sun/tools/corba/se/idl, \
@@ -60,7 +60,7 @@
 
 # Generate LogWrapper classes
 $(EXCEPTION_DIR)/%SystemException.java: \
-    $(CORBA_TOPDIR)/src/java.corba/share/classes/com/sun/corba/se/spi/logging/data/%.mc \
+    $(TOPDIR)/src/java.corba/share/classes/com/sun/corba/se/spi/logging/data/%.mc \
     $(BUILD_TOOLS_CORBA)
 	$(call LogInfo, Generating class file from $*.mc)
 	$(call MakeDir, $(@D))
@@ -83,7 +83,7 @@
 
 # The resources files are generated from lisp-like .mc files.
 $(LOGWRAPPER_DIR)/%SystemException.resource: \
-    $(CORBA_TOPDIR)/src/java.corba/share/classes/com/sun/corba/se/spi/logging/data/%.mc \
+    $(TOPDIR)/src/java.corba/share/classes/com/sun/corba/se/spi/logging/data/%.mc \
     $(BUILD_TOOLS_CORBA)
 	$(call LogInfo, Generating resource file from $*.mc)
 	$(call MakeDir, $(@D))
@@ -216,7 +216,7 @@
 
 $(eval $(call SetupIdlCompilation,BUILD_IDLS, \
     IDLJ := $(TOOL_IDLJ_CMD), \
-    SRC := $(CORBA_TOPDIR)/src/java.corba/share/classes, \
+    SRC := $(TOPDIR)/src/java.corba/share/classes, \
     BIN := $(SUPPORT_OUTPUTDIR)/gensrc/java.corba, \
     EXCLUDES := com/sun/tools/corba/se/idl/% \
         org/omg/CORBA/% \
@@ -233,7 +233,7 @@
 # zh_HK is just a copy of zh_TW
 
 $(SUPPORT_OUTPUTDIR)/gensrc/java.corba/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_HK.properties: \
-    $(CORBA_TOPDIR)/src/java.corba/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties
+    $(TOPDIR)/src/java.corba/share/classes/com/sun/corba/se/impl/orbutil/resources/sunorb_zh_TW.properties
 	$(install-file)
 
 ################################################################################
diff --git a/make/gensrc/Gensrc-java.desktop.gmk b/make/gensrc/Gensrc-java.desktop.gmk
index 42eb1a2..d28027d 100644
--- a/make/gensrc/Gensrc-java.desktop.gmk
+++ b/make/gensrc/Gensrc-java.desktop.gmk
@@ -23,10 +23,10 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, gensrc/Gensrc-java.desktop.gmk))
+$(eval $(call IncludeCustomExtension, , gensrc/Gensrc-java.desktop.gmk))
 
 ifneq ($(OPENJDK_TARGET_OS), windows)
   include GensrcIcons.gmk
@@ -43,29 +43,29 @@
 include GensrcProperties.gmk
 
 PROP_SRC_DIRS := \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/sun/awt/resources \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/accessibility/internal/resources \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/resources \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/sun/print/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/sun/awt/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/com/sun/accessibility/internal/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/motif/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/windows/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/basic/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/metal/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/com/sun/swing/internal/plaf/synth/resources \
+    $(TOPDIR)/src/java.desktop/share/classes/sun/print/resources \
     #
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
   PROP_SRC_DIRS += \
-      $(JDK_TOPDIR)/src/java.desktop/macosx/classes/com/apple/laf/resources \
-      $(JDK_TOPDIR)/src/java.desktop/macosx/classes/sun/awt/resources \
+      $(TOPDIR)/src/java.desktop/macosx/classes/com/apple/laf/resources \
+      $(TOPDIR)/src/java.desktop/macosx/classes/sun/awt/resources \
       #
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
-  PROP_SRC_DIRS += $(JDK_TOPDIR)/src/java.desktop/windows/classes/sun/awt/windows
+  PROP_SRC_DIRS += $(TOPDIR)/src/java.desktop/windows/classes/sun/awt/windows
 endif
 
 ifeq ($(filter $(OPENJDK_TARGET_OS), windows macosx), )
-  PROP_SRC_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources
+  PROP_SRC_DIRS += $(TOPDIR)/src/java.desktop/share/classes/com/sun/java/swing/plaf/gtk/resources
 endif
 
 $(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
@@ -79,7 +79,7 @@
 # Some resources bundles are already present as java files but still need to be
 # copied to zh_HK locale.
 $(eval $(call SetupCopy-zh_HK,COPY_ZH_HK, \
-    $(JDK_TOPDIR)/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java))
+    $(TOPDIR)/src/java.desktop/share/classes/sun/applet/resources/MsgAppletViewer_zh_TW.java))
 
 GENSRC_JAVA_DESKTOP += $(COPY_ZH_HK)
 
diff --git a/make/gensrc/Gensrc-java.logging.gmk b/make/gensrc/Gensrc-java.logging.gmk
index ea44f57..cd57b20 100644
--- a/make/gensrc/Gensrc-java.logging.gmk
+++ b/make/gensrc/Gensrc-java.logging.gmk
@@ -23,14 +23,14 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 ################################################################################
 
 include GensrcProperties.gmk
 
 $(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/java.logging/share/classes/sun/util/logging/resources, \
+    SRC_DIRS := $(TOPDIR)/src/java.logging/share/classes/sun/util/logging/resources, \
     CLASS := ListResourceBundle, \
 ))
 
diff --git a/make/gensrc/Gensrc-jdk.charsets.gmk b/make/gensrc/Gensrc-jdk.charsets.gmk
index c5f79ce5..6db7289 100644
--- a/make/gensrc/Gensrc-jdk.charsets.gmk
+++ b/make/gensrc/Gensrc-jdk.charsets.gmk
@@ -23,23 +23,23 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 ################################################################################
 #
 # Generate files using the charsetmapping tool
 #
-CHARSET_DATA_DIR := $(JDK_TOPDIR)/make/data/charsetmapping
+CHARSET_DATA_DIR := $(TOPDIR)/make/data/charsetmapping
 
 CHARSET_GENSRC_JAVA_DIR_CS := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.charsets/sun/nio/cs/ext
 CHARSET_DONE_CS := $(CHARSET_GENSRC_JAVA_DIR_CS)/_the.charsetmapping
-CHARSET_COPYRIGHT_HEADER := $(JDK_TOPDIR)/make/src/classes/build/tools/charsetmapping
+CHARSET_COPYRIGHT_HEADER := $(TOPDIR)/make/jdk/src/classes/build/tools/charsetmapping
 CHARSET_TEMPLATES := \
     $(CHARSET_DATA_DIR)/SingleByte-X.java.template \
     $(CHARSET_DATA_DIR)/DoubleByte-X.java.template
 CHARSET_EXTENDED_JAVA_TEMPLATES := \
-    $(JDK_TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext/ExtendedCharsets.java.template
-CHARSET_EXTENDED_JAVA_DIR := $(JDK_TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext
+    $(TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext/ExtendedCharsets.java.template
+CHARSET_EXTENDED_JAVA_DIR := $(TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext
 CHARSET_STANDARD_OS := stdcs-$(OPENJDK_TARGET_OS)
 
 $(CHARSET_DONE_CS)-extcs: $(CHARSET_DATA_DIR)/charsets \
diff --git a/make/gensrc/Gensrc-jdk.compiler.gmk b/make/gensrc/Gensrc-jdk.compiler.gmk
index 2f8f863..7f2bf50 100644
--- a/make/gensrc/Gensrc-jdk.compiler.gmk
+++ b/make/gensrc/Gensrc-jdk.compiler.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonLangtools.gmk
 
 $(eval $(call SetupVersionProperties,JAVAC_VERSION, \
     com/sun/tools/javac/resources/version.properties))
diff --git a/make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk b/make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk
index 623430a..059437d 100644
--- a/make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk
+++ b/make/gensrc/Gensrc-jdk.internal.vm.compiler.gmk
@@ -28,10 +28,10 @@
 include $(SPEC)
 include MakeBase.gmk
 
-$(eval $(call IncludeCustomExtension, hotspot, gensrc/Gensrc-jdk.internal.vm.compiler.gmk))
+$(eval $(call IncludeCustomExtension, , gensrc/Gensrc-jdk.internal.vm.compiler.gmk))
 
 GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)
-SRC_DIR := $(HOTSPOT_TOPDIR)/src/$(MODULE)/share/classes
+SRC_DIR := $(TOPDIR)/src/$(MODULE)/share/classes
 
 ################################################################################
 
diff --git a/make/gensrc/Gensrc-jdk.jartool.gmk b/make/gensrc/Gensrc-jdk.jartool.gmk
index 8cb04f3..5376ae3 100644
--- a/make/gensrc/Gensrc-jdk.jartool.gmk
+++ b/make/gensrc/Gensrc-jdk.jartool.gmk
@@ -23,14 +23,14 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 ################################################################################
 
 include GensrcProperties.gmk
 
 $(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/jdk.jartool/share/classes/sun/tools/jar/resources, \
+    SRC_DIRS := $(TOPDIR)/src/jdk.jartool/share/classes/sun/tools/jar/resources, \
     CLASS := ListResourceBundle, \
 ))
 
diff --git a/make/gensrc/Gensrc-jdk.javadoc.gmk b/make/gensrc/Gensrc-jdk.javadoc.gmk
index 3720b1b..c0561bb 100644
--- a/make/gensrc/Gensrc-jdk.javadoc.gmk
+++ b/make/gensrc/Gensrc-jdk.javadoc.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonLangtools.gmk
 
 $(eval $(call SetupVersionProperties,OLD_JAVADOC_VERSION,\
     com/sun/tools/javadoc/resources/version.properties))
diff --git a/make/gensrc/Gensrc-jdk.jdeps.gmk b/make/gensrc/Gensrc-jdk.jdeps.gmk
index 9109543..36d7ca1 100644
--- a/make/gensrc/Gensrc-jdk.jdeps.gmk
+++ b/make/gensrc/Gensrc-jdk.jdeps.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonLangtools.gmk
 
 $(eval $(call SetupVersionProperties,JAVAP_VERSION, \
     com/sun/tools/javap/resources/version.properties))
diff --git a/make/gensrc/Gensrc-jdk.jdi.gmk b/make/gensrc/Gensrc-jdk.jdi.gmk
index 720b685..ef53990 100644
--- a/make/gensrc/Gensrc-jdk.jdi.gmk
+++ b/make/gensrc/Gensrc-jdk.jdi.gmk
@@ -23,13 +23,13 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 ################################################################################
 # Translate the Java debugger wire protocol (jdwp.spec) file into a JDWP.java file
 # and a JDWPCommands.h C-header file.
 
-JDWP_SPEC_FILE := $(JDK_TOPDIR)/make/data/jdwp/jdwp.spec
+JDWP_SPEC_FILE := $(TOPDIR)/make/data/jdwp/jdwp.spec
 HEADER_FILE := $(SUPPORT_OUTPUTDIR)/headers/jdk.jdwp.agent/JDWPCommands.h
 JAVA_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.jdi/com/sun/tools/jdi/JDWP.java
 
@@ -64,7 +64,7 @@
 include GensrcProperties.gmk
 
 $(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/jdk.jdi/share/classes/com/sun/tools/jdi/resources, \
+    SRC_DIRS := $(TOPDIR)/src/jdk.jdi/share/classes/com/sun/tools/jdi/resources, \
     CLASS := ListResourceBundle, \
 ))
 
diff --git a/make/gensrc/Gensrc-jdk.jlink.gmk b/make/gensrc/Gensrc-jdk.jlink.gmk
index 9ac5b19..5904a03 100644
--- a/make/gensrc/Gensrc-jdk.jlink.gmk
+++ b/make/gensrc/Gensrc-jdk.jlink.gmk
@@ -23,24 +23,24 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 ################################################################################
 
 include GensrcProperties.gmk
 
 $(eval $(call SetupCompileProperties, JLINK_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/jdk.jlink/share/classes/jdk/tools/jlink/resources, \
+    SRC_DIRS := $(TOPDIR)/src/jdk.jlink/share/classes/jdk/tools/jlink/resources, \
     CLASS := ListResourceBundle, \
 ))
 
 $(eval $(call SetupCompileProperties, JMOD_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/jdk.jlink/share/classes/jdk/tools/jmod/resources, \
+    SRC_DIRS := $(TOPDIR)/src/jdk.jlink/share/classes/jdk/tools/jmod/resources, \
     CLASS := ListResourceBundle, \
 ))
 
 $(eval $(call SetupCompileProperties, JIMAGE_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/jdk.jlink/share/classes/jdk/tools/jimage/resources, \
+    SRC_DIRS := $(TOPDIR)/src/jdk.jlink/share/classes/jdk/tools/jimage/resources, \
     CLASS := ListResourceBundle, \
 ))
 
diff --git a/make/gensrc/Gensrc-jdk.jshell.gmk b/make/gensrc/Gensrc-jdk.jshell.gmk
index d677309..a0ec734 100644
--- a/make/gensrc/Gensrc-jdk.jshell.gmk
+++ b/make/gensrc/Gensrc-jdk.jshell.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonLangtools.gmk
 
 $(eval $(call SetupVersionProperties,JSHELL_VERSION, \
     jdk/internal/jshell/tool/resources/version.properties))
diff --git a/make/gensrc/Gensrc-jdk.localedata.gmk b/make/gensrc/Gensrc-jdk.localedata.gmk
index 5bbe512..64e1fa9 100644
--- a/make/gensrc/Gensrc-jdk.localedata.gmk
+++ b/make/gensrc/Gensrc-jdk.localedata.gmk
@@ -23,10 +23,10 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, gensrc/Gensrc-jdk.localedata.gmk))
+$(eval $(call IncludeCustomExtension, , gensrc/Gensrc-jdk.localedata.gmk))
 
 include GensrcLocaleData.gmk
 include GensrcCLDR.gmk
@@ -36,7 +36,7 @@
 include GensrcProperties.gmk
 
 $(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/jdk.localedata/share/classes/sun/util/resources, \
+    SRC_DIRS := $(TOPDIR)/src/jdk.localedata/share/classes/sun/util/resources, \
     CLASS := sun.util.resources.LocaleNamesBundle, \
 ))
 
diff --git a/make/gensrc/Gensrc-jdk.management.agent.gmk b/make/gensrc/Gensrc-jdk.management.agent.gmk
index 726a6f3..1d5d919 100644
--- a/make/gensrc/Gensrc-jdk.management.agent.gmk
+++ b/make/gensrc/Gensrc-jdk.management.agent.gmk
@@ -23,14 +23,14 @@
 # questions.
 #
 
-include GensrcCommon.gmk
+include GensrcCommonJdk.gmk
 
 ################################################################################
 
 include GensrcProperties.gmk
 
 $(eval $(call SetupCompileProperties, COMPILE_PROPERTIES, \
-    SRC_DIRS := $(JDK_TOPDIR)/src/jdk.management.agent/share/classes/jdk/internal/agent/resources, \
+    SRC_DIRS := $(TOPDIR)/src/jdk.management.agent/share/classes/jdk/internal/agent/resources, \
     CLASS := ListResourceBundle, \
 ))
 
diff --git a/make/gensrc/GensrcBuffer.gmk b/make/gensrc/GensrcBuffer.gmk
index 34c6712..7258a05 100644
--- a/make/gensrc/GensrcBuffer.gmk
+++ b/make/gensrc/GensrcBuffer.gmk
@@ -27,7 +27,7 @@
 
 GENSRC_BUFFER_DST := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/nio
 
-GENSRC_BUFFER_SRC := $(JDK_TOPDIR)/src/java.base/share/classes/java/nio
+GENSRC_BUFFER_SRC := $(TOPDIR)/src/java.base/share/classes/java/nio
 
 ###
 
diff --git a/make/gensrc/GensrcCLDR.gmk b/make/gensrc/GensrcCLDR.gmk
index 63487b0..8ceb371 100644
--- a/make/gensrc/GensrcCLDR.gmk
+++ b/make/gensrc/GensrcCLDR.gmk
@@ -24,7 +24,7 @@
 #
 
 CLDRVERSION := 29.0.0
-CLDRSRCDIR := $(JDK_TOPDIR)/src/jdk.localedata/share/classes/sun/util/cldr/resources/common
+CLDRSRCDIR := $(TOPDIR)/src/jdk.localedata/share/classes/sun/util/cldr/resources/common
 
 GENSRC_BASEDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base
 GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata
diff --git a/make/gensrc/GensrcCharacterData.gmk b/make/gensrc/GensrcCharacterData.gmk
index 7e0abff..7e88211 100644
--- a/make/gensrc/GensrcCharacterData.gmk
+++ b/make/gensrc/GensrcCharacterData.gmk
@@ -29,8 +29,8 @@
 
 GENSRC_CHARACTERDATA :=
 
-CHARACTERDATA = $(JDK_TOPDIR)/make/data/characterdata
-UNICODEDATA = $(JDK_TOPDIR)/make/data/unicodedata
+CHARACTERDATA = $(TOPDIR)/make/data/characterdata
+UNICODEDATA = $(TOPDIR)/make/data/unicodedata
 
 define SetupCharacterData
   $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/$1.java: \
diff --git a/make/gensrc/GensrcCharsetCoder.gmk b/make/gensrc/GensrcCharsetCoder.gmk
index 47dab1c..1a88366 100644
--- a/make/gensrc/GensrcCharsetCoder.gmk
+++ b/make/gensrc/GensrcCharsetCoder.gmk
@@ -27,7 +27,7 @@
 
 GENSRC_CHARSETCODER_DST := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/nio/charset
 
-GENSRC_CHARSETCODER_SRC := $(JDK_TOPDIR)/src/java.base/share/classes/java/nio
+GENSRC_CHARSETCODER_SRC := $(TOPDIR)/src/java.base/share/classes/java/nio
 
 GENSRC_CHARSETCODER_TEMPLATE := $(GENSRC_CHARSETCODER_SRC)/charset/Charset-X-Coder.java.template
 
diff --git a/make/gensrc/GensrcCharsetMapping.gmk b/make/gensrc/GensrcCharsetMapping.gmk
index c904c54..842e742 100644
--- a/make/gensrc/GensrcCharsetMapping.gmk
+++ b/make/gensrc/GensrcCharsetMapping.gmk
@@ -28,16 +28,16 @@
 # Generate StandardCharsets.java and individul sun.nio.cs charset class using
 # the charsetmapping tool
 #
-CHARSET_DATA_DIR := $(JDK_TOPDIR)/make/data/charsetmapping
-CHARSET_EXTSRC_DIR := $(JDK_TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext
+CHARSET_DATA_DIR := $(TOPDIR)/make/data/charsetmapping
+CHARSET_EXTSRC_DIR := $(TOPDIR)/src/jdk.charsets/share/classes/sun/nio/cs/ext
 CHARSET_GENSRC_JAVA_DIR_BASE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/cs
 CHARSET_DONE_BASE := $(CHARSET_GENSRC_JAVA_DIR_BASE)/_the.charsetmapping
-CHARSET_COPYRIGHT_HEADER := $(JDK_TOPDIR)/make/src/classes/build/tools/charsetmapping
+CHARSET_COPYRIGHT_HEADER := $(TOPDIR)/make/jdk/src/classes/build/tools/charsetmapping
 CHARSET_TEMPLATES := \
     $(CHARSET_DATA_DIR)/SingleByte-X.java.template \
     $(CHARSET_DATA_DIR)/DoubleByte-X.java.template
 CHARSET_STANDARD_JAVA_TEMPLATES := \
-    $(JDK_TOPDIR)/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template
+    $(TOPDIR)/src/java.base/share/classes/sun/nio/cs/StandardCharsets.java.template
 CHARSET_STANDARD_OS := stdcs-$(OPENJDK_TARGET_OS)
 
 $(CHARSET_DONE_BASE)-stdcs: $(CHARSET_DATA_DIR)/charsets \
diff --git a/make/gensrc/GensrcCommonJdk.gmk b/make/gensrc/GensrcCommonJdk.gmk
index a337063..60ad33b 100644
--- a/make/gensrc/GensrcCommonJdk.gmk
+++ b/make/gensrc/GensrcCommonJdk.gmk
@@ -32,4 +32,4 @@
 include TextFileProcessing.gmk
 include SetupJavaCompilers.gmk
 # We need the tools.
-include Tools.gmk
+include ToolsJdk.gmk
diff --git a/make/gensrc/GensrcCommonLangtools.gmk b/make/gensrc/GensrcCommonLangtools.gmk
index 96aed34..97b5a5d 100644
--- a/make/gensrc/GensrcCommonLangtools.gmk
+++ b/make/gensrc/GensrcCommonLangtools.gmk
@@ -64,13 +64,13 @@
 define SetupCompileProperties
   # Lookup the properties that need to be compiled into resource bundles.
   PROPSOURCES := $2 \
-      $$(shell $(FIND) $(LANGTOOLS_TOPDIR)/src/$(MODULE)/share/classes -name "*.properties")
+      $$(shell $(FIND) $(TOPDIR)/src/$(MODULE)/share/classes -name "*.properties")
 
   # Convert .../src/<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties
   # to .../langtools/gensrc/<module>/com/sun/tools/javac/resources/javac_zh_CN.java
   # Strip away prefix and suffix, leaving for example only:
   # "<module>/share/classes/com/sun/tools/javac/resources/javac_zh_CN"
-  PROPJAVAS := $$(patsubst $(LANGTOOLS_TOPDIR)/src/%, \
+  PROPJAVAS := $$(patsubst $(TOPDIR)/src/%, \
       $(SUPPORT_OUTPUTDIR)/gensrc/%, \
       $$(patsubst %.properties, %.java, \
       $$(subst /share/classes,, $$(PROPSOURCES))))
@@ -104,9 +104,9 @@
 # Param 2 - Extra properties files to process
 define SetupParseProperties
   # property files to process
-  PARSEPROPSOURCES := $$(addprefix $(LANGTOOLS_TOPDIR)/src/$(MODULE)/share/classes/, $2)
+  PARSEPROPSOURCES := $$(addprefix $(TOPDIR)/src/$(MODULE)/share/classes/, $2)
 
-  PARSEPROPALLDIRS := $$(patsubst $(LANGTOOLS_TOPDIR)/src/$(MODULE)/share/classes/%, \
+  PARSEPROPALLDIRS := $$(patsubst $(TOPDIR)/src/$(MODULE)/share/classes/%, \
       $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/%, \
       $$(dir $$(PARSEPROPSOURCES)))
 
diff --git a/make/gensrc/GensrcExceptions.gmk b/make/gensrc/GensrcExceptions.gmk
index 947cd01..4e7b5b5 100644
--- a/make/gensrc/GensrcExceptions.gmk
+++ b/make/gensrc/GensrcExceptions.gmk
@@ -27,8 +27,8 @@
 
 GENSRC_EXCEPTIONS_DST := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/nio
 
-GENSRC_EXCEPTIONS_SRC := $(JDK_TOPDIR)/src/java.base/share/classes/java/nio
-GENSRC_EXCEPTIONS_CMD := $(JDK_TOPDIR)/make/scripts/genExceptions.sh
+GENSRC_EXCEPTIONS_SRC := $(TOPDIR)/src/java.base/share/classes/java/nio
+GENSRC_EXCEPTIONS_CMD := $(TOPDIR)/make/scripts/genExceptions.sh
 
 GENSRC_EXCEPTIONS_SRC_DIRS := . charset channels
 
@@ -36,7 +36,7 @@
     $(GENSRC_EXCEPTIONS_CMD)
 	$(call LogInfo, Generating exceptions java.nio $*)
 	$(call MakeDir, $(@D)/$*)
-	SCRIPTS="$(JDK_TOPDIR)/make/scripts" NAWK="$(NAWK)" SH="$(SH)" $(SH) \
+	SCRIPTS="$(TOPDIR)/make/scripts" NAWK="$(NAWK)" SH="$(SH)" $(SH) \
 	    $(GENSRC_EXCEPTIONS_CMD) $< $(@D)/$* $(LOG_DEBUG)
 	$(TOUCH) $@
 
diff --git a/make/gensrc/GensrcIcons.gmk b/make/gensrc/GensrcIcons.gmk
index 62e31fb..b2fcad6 100644
--- a/make/gensrc/GensrcIcons.gmk
+++ b/make/gensrc/GensrcIcons.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, jdk, gensrc/GensrcIcons.gmk))
+$(eval $(call IncludeCustomExtension, , gensrc/GensrcIcons.gmk))
 
 GENSRC_AWT_ICONS :=
 GENSRC_AWT_ICONS_SRC :=
@@ -31,7 +31,7 @@
 GENSRC_AWT_ICONS_DST := $(GENSRC_AWT_ICONS_TMP)/sun/awt/
 
 # Allow this to be overridden from a custom makefile
-X11_ICONS_PATH_PREFIX ?= $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)
+X11_ICONS_PATH_PREFIX ?= $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)
 
 GENSRC_AWT_ICONS_SRC += \
     $(X11_ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon16.png \
@@ -40,7 +40,7 @@
     $(X11_ICONS_PATH_PREFIX)/classes/sun/awt/X11/java-icon48.png
 
 
-AWT_ICONPATH := $(JDK_TOPDIR)/src/java.desktop/share/classes/sun/awt/resources
+AWT_ICONPATH := $(TOPDIR)/src/java.desktop/share/classes/sun/awt/resources
 
 GENSRC_AWT_ICONS_SRC += \
     $(AWT_ICONPATH)/security-icon-bw16.png \
@@ -113,7 +113,7 @@
   GENSRC_OSX_ICONS_DST := $(SUPPORT_OUTPUTDIR)/headers/java.desktop
   GENSRC_OSX_ICONS := $(GENSRC_OSX_ICONS_DST)/AWTIconData.h
 
-  GENSRC_OSX_ICONS_SRC ?= $(JDK_TOPDIR)/make/data/macosxicons/JavaApp.icns
+  GENSRC_OSX_ICONS_SRC ?= $(TOPDIR)/make/data/macosxicons/JavaApp.icns
 
 
   $(GENSRC_OSX_ICONS): $(GENSRC_OSX_ICONS_SRC) $(BUILD_TOOLS_JDK)
diff --git a/make/gensrc/GensrcLocaleData.gmk b/make/gensrc/GensrcLocaleData.gmk
index c02db19..3235136 100644
--- a/make/gensrc/GensrcLocaleData.gmk
+++ b/make/gensrc/GensrcLocaleData.gmk
@@ -29,8 +29,8 @@
 
 # First go look for all locale files
 LOCALE_FILES := $(shell $(FIND) \
-    $(JDK_TOPDIR)/src/$(MODULE)/share/classes/sun/text/resources \
-    $(JDK_TOPDIR)/src/$(MODULE)/share/classes/sun/util/resources \
+    $(TOPDIR)/src/$(MODULE)/share/classes/sun/text/resources \
+    $(TOPDIR)/src/$(MODULE)/share/classes/sun/util/resources \
     -name "FormatData_*.java" -o -name "FormatData_*.properties" -o \
     -name "CollationData_*.java" -o -name "CollationData_*.properties" -o \
     -name "TimeZoneNames_*.java" -o -name "TimeZoneNames_*.properties" -o \
@@ -129,7 +129,7 @@
 SED_NONBASEARGS += -e 's/$(HASH)AvailableLocales_Locales$(HASH)/$(sort $(ALL_NON_BASE_LOCALES))/g'
 
 $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/util/locale/provider/BaseLocaleDataMetaInfo.java: \
-    $(JDK_TOPDIR)/src/java.base/share/classes/sun/util/locale/provider/LocaleDataMetaInfo-XLocales.java.template
+    $(TOPDIR)/src/java.base/share/classes/sun/util/locale/provider/LocaleDataMetaInfo-XLocales.java.template
 	$(call LogInfo, Creating sun/util/locale/provider/BaseLocaleDataMetaInfo.java from $(words $(LOCALE_RESOURCES)) found resources)
 	$(MKDIR) -p $(@D)
 	$(PRINTF) "PREV_LOCALE_RESOURCES:=$(LOCALE_RESOURCES)" \
@@ -137,7 +137,7 @@
 	$(SED) $(SED_BASEARGS) $< > $@
 
 $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata/sun/util/resources/provider/NonBaseLocaleDataMetaInfo.java: \
-    $(JDK_TOPDIR)/src/java.base/share/classes/sun/util/locale/provider/LocaleDataMetaInfo-XLocales.java.template
+    $(TOPDIR)/src/java.base/share/classes/sun/util/locale/provider/LocaleDataMetaInfo-XLocales.java.template
 	$(call LogInfo, Creating sun/util/resources/provider/NonBaseLocaleDataMetaInfo.java from $(words $(LOCALE_RESOURCES)) found resources)
 	$(MKDIR) -p $(@D)
 	$(PRINTF) "PREV_LOCALE_RESOURCES:=$(LOCALE_RESOURCES)" \
diff --git a/make/gensrc/GensrcMisc.gmk b/make/gensrc/GensrcMisc.gmk
index 9a03f11..804cbcd 100644
--- a/make/gensrc/GensrcMisc.gmk
+++ b/make/gensrc/GensrcMisc.gmk
@@ -28,7 +28,7 @@
 # string and the runtime name into the VersionProps.java file.
 
 $(eval $(call SetupTextFileProcessing, BUILD_VERSION_JAVA, \
-    SOURCE_FILES := $(JDK_TOPDIR)/src/java.base/share/classes/java/lang/VersionProps.java.template, \
+    SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/java/lang/VersionProps.java.template, \
     OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/VersionProps.java, \
     REPLACEMENTS := \
         @@LAUNCHER_NAME@@ => $(LAUNCHER_NAME) ; \
@@ -74,7 +74,7 @@
 GENSRC_SOR_FILE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/ch/SocketOptionRegistry.java
 
 $(GENSRC_SOR_FILE): \
-    $(JDK_TOPDIR)/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template
+    $(TOPDIR)/src/java.base/share/classes/sun/nio/ch/SocketOptionRegistry.java.template
 	$(generate-preproc-src)
 
 GENSRC_JAVA_BASE += $(GENSRC_SOR_FILE)
@@ -86,7 +86,7 @@
   GENSRC_UC_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/UnixConstants.java
 
   $(GENSRC_UC_FILE): \
-      $(JDK_TOPDIR)/src/java.base/unix/classes/sun/nio/fs/UnixConstants.java.template
+      $(TOPDIR)/src/java.base/unix/classes/sun/nio/fs/UnixConstants.java.template
 	$(generate-preproc-src)
 
   GENSRC_JAVA_BASE += $(GENSRC_UC_FILE)
@@ -100,7 +100,7 @@
   GENSRC_SC_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/sun/nio/fs/SolarisConstants.java
 
   $(GENSRC_SC_FILE): \
-      $(JDK_TOPDIR)/src/java.base/solaris/classes/sun/nio/fs/SolarisConstants.java.template
+      $(TOPDIR)/src/java.base/solaris/classes/sun/nio/fs/SolarisConstants.java.template
 	$(generate-preproc-src)
 
   GENSRC_JAVA_BASE += $(GENSRC_SC_FILE)
@@ -116,9 +116,9 @@
     JCE_DEFAULT_POLICY = limited
 endif
 
-ifneq ($(wildcard $(JDK_TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template), )
+ifneq ($(wildcard $(TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template), )
   $(eval $(call SetupTextFileProcessing, BUILD_JCESECURITY_JAVA, \
-      SOURCE_FILES := $(JDK_TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template, \
+      SOURCE_FILES := $(TOPDIR)/src/java.base/share/classes/javax/crypto/JceSecurity.java.template, \
       OUTPUT_FILE := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/javax/crypto/JceSecurity.java, \
       REPLACEMENTS := \
         @@JCE_DEFAULT_POLICY@@ => $(JCE_DEFAULT_POLICY), \
diff --git a/make/gensrc/GensrcModuleLoaderMap.gmk b/make/gensrc/GensrcModuleLoaderMap.gmk
index 365c83d..5d4adee 100644
--- a/make/gensrc/GensrcModuleLoaderMap.gmk
+++ b/make/gensrc/GensrcModuleLoaderMap.gmk
@@ -44,7 +44,7 @@
 ############################################################################
 
 $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/module/ModuleLoaderMap.java: \
-    $(JDK_TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java \
+    $(TOPDIR)/src/java.base/share/classes/jdk/internal/module/ModuleLoaderMap.java \
     $(VARDEPS_FILE) $(BUILD_TOOLS_JDK)
 	$(MKDIR) -p $(@D)
 	$(RM) $@ [email protected]
@@ -55,7 +55,7 @@
 GENSRC_JAVA_BASE += $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/module/ModuleLoaderMap.java
 
 $(SUPPORT_OUTPUTDIR)/gensrc/java.base/jdk/internal/vm/cds/resources/ModuleLoaderMap.dat: \
-    $(JDK_TOPDIR)/src/java.base/share/classes/jdk/internal/vm/cds/resources/ModuleLoaderMap.dat \
+    $(TOPDIR)/src/java.base/share/classes/jdk/internal/vm/cds/resources/ModuleLoaderMap.dat \
     $(VARDEPS_FILE) $(BUILD_TOOLS_JDK)
 	$(MKDIR) -p $(@D)
 	$(RM) $@ [email protected]
diff --git a/make/gensrc/GensrcProperties.gmk b/make/gensrc/GensrcProperties.gmk
index 7293a19..b0381e9 100644
--- a/make/gensrc/GensrcProperties.gmk
+++ b/make/gensrc/GensrcProperties.gmk
@@ -29,7 +29,7 @@
 ################################################################################
 # Helper macro for SetupCopy-zh_HK.
 define SetupOneCopy-zh_HK
-  $1_$2_TARGET := $$(patsubst $(JDK_TOPDIR)/src/$(MODULE)/share/classes/%, \
+  $1_$2_TARGET := $$(patsubst $(TOPDIR)/src/$(MODULE)/share/classes/%, \
       $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/%, \
       $$(subst _zh_TW,_zh_HK, $2))
 
@@ -58,12 +58,12 @@
 # SRC_DIRS   Directories containing properties files to process.
 # EXCLUDE   Exclude files matching this pattern.
 # CLASS   The super class for the generated classes.
-# MODULE_PATH_ROOT   Module path root, defaults to $(JDK_TOPDIR)/src.
+# MODULE_PATH_ROOT   Module path root, defaults to $(TOPDIR)/src.
 SetupCompileProperties = $(NamedParamsMacroTemplate)
 define SetupCompilePropertiesBody
   # Set default value unless overridden
   ifeq ($$($1_MODULE_PATH_ROOT), )
-    $1_MODULE_PATH_ROOT := $(JDK_TOPDIR)/src
+    $1_MODULE_PATH_ROOT := $(TOPDIR)/src
   endif
 
   # Locate all properties files in the given source dirs.
diff --git a/make/gensrc/GensrcSwing.gmk b/make/gensrc/GensrcSwing.gmk
index eee0c04..713f1d3 100644
--- a/make/gensrc/GensrcSwing.gmk
+++ b/make/gensrc/GensrcSwing.gmk
@@ -28,7 +28,7 @@
 #
 NIMBUS_PACKAGE = javax.swing.plaf
 NIMBUS_GENSRC_DIR = $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/javax/swing/plaf/nimbus
-NIMBUS_SKIN_FILE = $(JDK_TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf
+NIMBUS_SKIN_FILE = $(TOPDIR)/src/java.desktop/share/classes/javax/swing/plaf/nimbus/skin.laf
 
 $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/_the.generated_nimbus: $(NIMBUS_SKIN_FILE) $(BUILD_TOOLS_JDK)
 	$(call LogInfo, Generating Nimbus source files)
diff --git a/make/gensrc/GensrcVarHandles.gmk b/make/gensrc/GensrcVarHandles.gmk
index 773c0f4..acdce6c 100644
--- a/make/gensrc/GensrcVarHandles.gmk
+++ b/make/gensrc/GensrcVarHandles.gmk
@@ -26,7 +26,7 @@
 GENSRC_VARHANDLES :=
 
 VARHANDLES_GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base/java/lang/invoke
-VARHANDLES_SRC_DIR := $(JDK_TOPDIR)/src/java.base/share/classes/java/lang/invoke
+VARHANDLES_SRC_DIR := $(TOPDIR)/src/java.base/share/classes/java/lang/invoke
 
 ################################################################################
 # Setup a rule for generating a VarHandle java class
diff --git a/make/gensrc/GensrcX11Wrappers.gmk b/make/gensrc/GensrcX11Wrappers.gmk
index e4e3bba..b3081b2 100644
--- a/make/gensrc/GensrcX11Wrappers.gmk
+++ b/make/gensrc/GensrcX11Wrappers.gmk
@@ -42,7 +42,7 @@
 GENSRC_X11WRAPPERS_DST := $(SUPPORT_OUTPUTDIR)/gensrc/java.desktop/sun/awt/X11
 
 # The pre-calculated offset file are stored here:
-GENSRC_SIZER_DIR := $(JDK_TOPDIR)/make/data/x11wrappergen
+GENSRC_SIZER_DIR := $(TOPDIR)/make/data/x11wrappergen
 
 # Normal case is to generate only according to target bits
 GENSRC_X11_VERSION := $(OPENJDK_TARGET_CPU_BITS)
@@ -92,13 +92,13 @@
   endif
 
   SIZER_CFLAGS := \
-      -I$(JDK_TOPDIR)/src/java.base/share/native/include \
-      -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_EXPORT_DIR)/native/include \
-      -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
-      -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
+      -I$(TOPDIR)/src/java.base/share/native/include \
+      -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_EXPORT_DIR)/native/include \
+      -I$(TOPDIR)/src/java.base/share/native/libjava \
+      -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
       #
 
   # Compile the C code into an executable.
diff --git a/make/hotspot/copy/Copy-java.base.gmk b/make/hotspot/copy/Copy-java.base.gmk
index 2185b60..1d7ed7a 100644
--- a/make/hotspot/copy/Copy-java.base.gmk
+++ b/make/hotspot/copy/Copy-java.base.gmk
@@ -33,7 +33,7 @@
 ################################################################################
 # Copy platform-independent .h files
 $(eval $(call SetupCopyFiles, COPY_INCLUDE_FILES, \
-    SRC := $(HOTSPOT_TOPDIR)/src/share/vm, \
+    SRC := $(TOPDIR)/src/hotspot/share, \
     DEST := $(INCLUDE_DST_DIR), \
     FLATTEN := true, \
     FILES := prims/jni.h code/jvmticmlr.h \
@@ -45,7 +45,7 @@
 # Copy jni_md.h
 
 # This might have been defined in a custom extension
-JNI_MD_H_SRC ?= $(HOTSPOT_TOPDIR)/src/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm/jni_$(HOTSPOT_TARGET_CPU_ARCH).h
+JNI_MD_H_SRC ?= $(TOPDIR)/src/hotspot/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/jni_$(HOTSPOT_TARGET_CPU_ARCH).h
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
   # NOTE: This should most likely be darwin, but the old hotspot build uses bsd
diff --git a/make/hotspot/gensrc/GenerateSources.gmk b/make/hotspot/gensrc/GenerateSources.gmk
index 31c342a..4c96e46 100644
--- a/make/hotspot/gensrc/GenerateSources.gmk
+++ b/make/hotspot/gensrc/GenerateSources.gmk
@@ -39,14 +39,14 @@
 include gensrc/GensrcDtrace.gmk
 include gensrc/GensrcJvmti.gmk
 
-$(eval $(call IncludeCustomExtension, hotspot, gensrc/GenerateSources.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/gensrc/GenerateSources.gmk))
 
 # While technically the rules below are "gendata" which can be done in parallel
 # with native compilation, let's keep it here for simplicity.
 
 # The Xusage.txt file needs to have platform specific path separator
 $(eval $(call SetupTextFileProcessing, CREATE_XUSAGE, \
-    SOURCE_FILES := $(HOTSPOT_TOPDIR)/src/share/vm/Xusage.txt, \
+    SOURCE_FILES := $(TOPDIR)/src/hotspot/share/Xusage.txt, \
     OUTPUT_FILE := $(JVM_LIB_OUTPUTDIR)/Xusage.txt, \
     REPLACEMENTS := separated by ;> => separated by $(PATH_SEP)> ; , \
 ))
@@ -55,7 +55,7 @@
 
 # Setup the hotspot launcher script for developer use
 $(eval $(call SetupTextFileProcessing, CREATE_HOTSPOT_LAUNCHER, \
-    SOURCE_FILES := $(HOTSPOT_TOPDIR)/make/hotspot.script, \
+    SOURCE_FILES := $(TOPDIR)/make/hotspot/hotspot.script, \
     OUTPUT_FILE := $(JVM_OUTPUTDIR)/hotspot, \
     REPLACEMENTS := \
         @@LIBARCH@@ => $(OPENJDK_TARGET_CPU_LEGACY_LIB) ; \
diff --git a/make/hotspot/gensrc/GensrcAdlc.gmk b/make/hotspot/gensrc/GensrcAdlc.gmk
index ef3b1cf..f6622e8 100644
--- a/make/hotspot/gensrc/GensrcAdlc.gmk
+++ b/make/hotspot/gensrc/GensrcAdlc.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, hotspot, gensrc/GensrcAdlc.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/gensrc/GensrcAdlc.gmk))
 
 ifeq ($(call check-jvm-feature, compiler2), true)
 
@@ -60,12 +60,12 @@
 
   ADLC_CFLAGS += -D$(HOTSPOT_TARGET_CPU_DEFINE)
 
-  ADLC_CFLAGS += -I$(HOTSPOT_TOPDIR)/src/share/vm
+  ADLC_CFLAGS += -I$(TOPDIR)/src/hotspot/share
 
   $(eval $(call SetupNativeCompilation, BUILD_ADLC, \
       TOOLCHAIN := TOOLCHAIN_BUILD_LINK_CXX, \
-      SRC := $(HOTSPOT_TOPDIR)/src/share/vm/adlc, \
-      EXTRA_FILES := $(HOTSPOT_TOPDIR)/src/share/vm/opto/opcodes.cpp, \
+      SRC := $(TOPDIR)/src/hotspot/share/adlc, \
+      EXTRA_FILES := $(TOPDIR)/src/hotspot/share/opto/opcodes.cpp, \
       CFLAGS := $(ADLC_CFLAGS) $(ADLC_CFLAGS_WARNINGS), \
       LDFLAGS := $(ADLC_LDFLAGS), \
       LIBS := $(ADLC_LIBS), \
@@ -127,12 +127,12 @@
   # #line directives in those files will be pointing back to <arch>.ad.
 
   # AD_SRC_ROOTS might have been added to by a custom extension
-  AD_SRC_ROOTS += $(HOTSPOT_TOPDIR)/src
+  AD_SRC_ROOTS += $(TOPDIR)/src/hotspot
 
   AD_SRC_FILES := $(call uniq, $(wildcard $(foreach d, $(AD_SRC_ROOTS), \
-      $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm/$(HOTSPOT_TARGET_CPU).ad \
-      $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm/$(HOTSPOT_TARGET_CPU_ARCH).ad \
-      $d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/vm/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH).ad \
+      $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_CPU).ad \
+      $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_CPU_ARCH).ad \
+      $d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH).ad \
     )))
 
   SINGLE_AD_SRCFILE := $(ADLC_SUPPORT_DIR)/all-ad-src.ad
diff --git a/make/hotspot/gensrc/GensrcDtrace.gmk b/make/hotspot/gensrc/GensrcDtrace.gmk
index 126be0b..9df23a8 100644
--- a/make/hotspot/gensrc/GensrcDtrace.gmk
+++ b/make/hotspot/gensrc/GensrcDtrace.gmk
@@ -37,7 +37,7 @@
     DTRACE_CPP_FLAGS := -x c
   endif
 
-  DTRACE_SOURCE_DIR := $(HOTSPOT_TOPDIR)/src/os/posix/dtrace
+  DTRACE_SOURCE_DIR := $(TOPDIR)/src/hotspot/os/posix/dtrace
   DTRACE_GENSRC_DIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/dtracefiles
 
   # Make sure we run our selected compiler for preprocessing instead of letting
diff --git a/make/hotspot/gensrc/GensrcJvmti.gmk b/make/hotspot/gensrc/GensrcJvmti.gmk
index d91c2b6..c7340da 100644
--- a/make/hotspot/gensrc/GensrcJvmti.gmk
+++ b/make/hotspot/gensrc/GensrcJvmti.gmk
@@ -23,12 +23,12 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, hotspot, gensrc/GensrcJvmti.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/gensrc/GensrcJvmti.gmk))
 
 ################################################################################
 # Build tools needed for the JVMTI source code generation
 
-JVMTI_TOOLS_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/prims
+JVMTI_TOOLS_SRCDIR := $(TOPDIR)/src/hotspot/share/prims
 JVMTI_TOOLS_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/tools/jvmti
 
 $(eval $(call SetupJavaCompiler, GENERATE_OLDBYTECODE, \
@@ -79,7 +79,7 @@
 ################################################################################
 # Create JVMTI files in gensrc/jvmtifiles
 
-JVMTI_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/prims
+JVMTI_SRCDIR := $(TOPDIR)/src/hotspot/share/prims
 JVMTI_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles
 
 # Setup rule for generating a jvmti file
@@ -106,7 +106,7 @@
 $(eval $(call SetupJvmtiGeneration, jvmti.html, jvmti.xsl))
 $(eval $(call SetupJvmtiGeneration, jvmtiEnvStub.cpp, jvmtiEnv.xsl))
 
-JVMTI_BC_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/interpreter
+JVMTI_BC_SRCDIR := $(TOPDIR)/src/hotspot/share/interpreter
 
 $(eval $(call SetupXslTransform, bytecodeInterpreterWithChecks.cpp, \
     XML_FILE := $(JVMTI_BC_SRCDIR)/bytecodeInterpreterWithChecks.xml, \
@@ -146,7 +146,7 @@
 # Create trace files in gensrc/tracefiles
 
 TRACE_OUTPUTDIR := $(JVM_VARIANT_OUTPUTDIR)/gensrc/tracefiles
-TRACE_SRCDIR := $(HOTSPOT_TOPDIR)/src/share/vm/trace
+TRACE_SRCDIR := $(TOPDIR)/src/hotspot/share/trace
 
 # Append list of XSL files to search (might have been set by custom extensions)
 TRACE_XSL_FILES += $(wildcard $(TRACE_SRCDIR)/*.xsl)
diff --git a/make/hotspot/ide/CreateVSProject.gmk b/make/hotspot/ide/CreateVSProject.gmk
index 2a9da91..94c75a4 100644
--- a/make/hotspot/ide/CreateVSProject.gmk
+++ b/make/hotspot/ide/CreateVSProject.gmk
@@ -90,7 +90,7 @@
   $(eval $(call SetupJavaCompilation, BUILD_PROJECT_CREATOR, \
       SETUP := GENERATE_OLDBYTECODE, \
       ADD_JAVAC_FLAGS := -Xlint:-auxiliaryclass, \
-      SRC := $(HOTSPOT_TOPDIR)/make/src/classes, \
+      SRC := $(TOPDIR)/make/hotspot/src/classes, \
       BIN := $(TOOLS_OUTPUTDIR), \
   ))
 
diff --git a/make/hotspot/lib/CompileDtracePostJvm.gmk b/make/hotspot/lib/CompileDtracePostJvm.gmk
index 1051caf..49a21b2 100644
--- a/make/hotspot/lib/CompileDtracePostJvm.gmk
+++ b/make/hotspot/lib/CompileDtracePostJvm.gmk
@@ -46,8 +46,7 @@
     # in the libjvm.so, using JVM_CFLAGS as setup in CompileJvm.gmk. Otherwise
     # this would preferrably have been done as a part of GensrcDtrace.gmk.
     $(eval $(call SetupNativeCompilation, BUILD_DTRACE_GEN_OFFSETS, \
-        SRC := $(HOTSPOT_TOPDIR)/src/os/$(OPENJDK_TARGET_OS)/dtrace, \
-        INCLUDE_FILES := generateJvmOffsets.cpp generateJvmOffsetsMain.c, \
+        SRC := $(TOPDIR)/make/hotspot/src/native/dtrace, \
         CC := $(BUILD_CXX), \
         CXX := $(BUILD_CXX), \
         LDEXE := $(BUILD_CXX), \
@@ -100,7 +99,7 @@
     # Generate DTRACE_OBJ which is linked with libjvm.so.
 
     # Concatenate all *.d files into a single file
-    DTRACE_SOURCE_FILES := $(addprefix $(HOTSPOT_TOPDIR)/src/os/posix/dtrace/, \
+    DTRACE_SOURCE_FILES := $(addprefix $(TOPDIR)/src/hotspot/os/posix/dtrace/, \
         hotspot_jni.d \
         hotspot.d \
         hs_private.d \
@@ -158,7 +157,7 @@
     # Unfortunately dtrace generates incorrect types for some symbols in
     # dtrace_jhelper.o, resulting in "warning: symbol X has differing types"
     # This is tracked in JDK-6890703.
-    $(DTRACE_JHELPER_OBJ): $(HOTSPOT_TOPDIR)/src/os/solaris/dtrace/jhelper.d \
+    $(DTRACE_JHELPER_OBJ): $(TOPDIR)/src/hotspot/os/solaris/dtrace/jhelper.d \
         $(JVM_OFFSETS_INDEX_H)
 	$(call LogInfo, Running dtrace for $(<F))
 	$(call ExecuteWithLog, $@, $(DTRACE) $(DTRACE_FLAGS) $(DTRACE_CPP_FLAGS) -C \
@@ -181,12 +180,11 @@
     $(eval $(call SetupNativeCompilation, BUILD_LIBJVM_DTRACE, \
         LIBRARY := jvm_dtrace, \
         OUTPUT_DIR := $(JVM_LIB_OUTPUTDIR), \
-        SRC := $(HOTSPOT_TOPDIR)/src/os/solaris/dtrace, \
-        INCLUDE_FILES := jvm_dtrace.c, \
+        SRC := $(TOPDIR)/src/java.base/solaris/native/libjvm_dtrace, \
         CFLAGS := -m64 -G -mt -KPIC, \
         LDFLAGS := -m64 -mt -xnolib $(SHARED_LIBRARY_FLAGS), \
         LIBS := $(LIBDL) -lc -lthread -ldoor, \
-        MAPFILE := $(HOTSPOT_TOPDIR)/make/mapfiles/libjvm_dtrace/mapfile-vers, \
+        MAPFILE := $(TOPDIR)/make/mapfiles/libjvm_dtrace/mapfile-vers, \
         OBJECT_DIR := $(LIBJVM_DTRACE_OUTPUTDIR)/objs, \
     ))
 
@@ -197,13 +195,12 @@
     $(eval $(call SetupNativeCompilation, BUILD_LIBJVM_DB, \
         LIBRARY := jvm_db, \
         OUTPUT_DIR := $(JVM_LIB_OUTPUTDIR), \
-        SRC := $(HOTSPOT_TOPDIR)/src/os/solaris/dtrace, \
-        INCLUDE_FILES := libjvm_db.c, \
+        SRC := $(TOPDIR)/src/java.base/solaris/native/libjvm_db, \
         CFLAGS := -I$(JVM_VARIANT_OUTPUTDIR)/gensrc -I$(DTRACE_SUPPORT_DIR) \
             -m64 -G -mt -KPIC, \
         LDFLAGS := -m64 -mt -xnolib $(SHARED_LIBRARY_FLAGS), \
         LIBS := -lc, \
-        MAPFILE := $(HOTSPOT_TOPDIR)/make/mapfiles/libjvm_db/mapfile-vers, \
+        MAPFILE := $(TOPDIR)/make/mapfiles/libjvm_db/mapfile-vers, \
         OBJECT_DIR := $(LIBJVM_DB_OUTPUTDIR)/objs, \
     ))
 
diff --git a/make/hotspot/lib/CompileGtest.gmk b/make/hotspot/lib/CompileGtest.gmk
index 10e3f14..c944c34 100644
--- a/make/hotspot/lib/CompileGtest.gmk
+++ b/make/hotspot/lib/CompileGtest.gmk
@@ -23,11 +23,11 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, hotspot, lib/CompileGtest.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/lib/CompileGtest.gmk))
 
-GTEST_TEST_SRC += $(HOTSPOT_TOPDIR)/test/native
-GTEST_LAUNCHER_SRC := $(HOTSPOT_TOPDIR)/test/native/gtestLauncher.cpp
-GTEST_FRAMEWORK_SRC := $(SRC_ROOT)/test/fmw/gtest
+GTEST_TEST_SRC += $(TOPDIR)/test/hotspot/gtest
+GTEST_LAUNCHER_SRC := $(TOPDIR)/test/hotspot/gtest/gtestLauncher.cpp
+GTEST_FRAMEWORK_SRC := $(TOPDIR)/test/fmw/gtest
 
 # On Windows, there are no internal debug symbols so must set copying to true
 # to get any at all.
diff --git a/make/hotspot/lib/CompileJvm.gmk b/make/hotspot/lib/CompileJvm.gmk
index d5ecb25..da7d4ea 100644
--- a/make/hotspot/lib/CompileJvm.gmk
+++ b/make/hotspot/lib/CompileJvm.gmk
@@ -28,7 +28,7 @@
 include lib/JvmFeatures.gmk
 include lib/JvmOverrideFiles.gmk
 
-$(eval $(call IncludeCustomExtension, hotspot, lib/CompileJvm.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/lib/CompileJvm.gmk))
 
 ################################################################################
 # Setup compilation of the main Hotspot native library (libjvm).
@@ -40,14 +40,14 @@
 # Platform independent setup
 
 # This variable may be added to by a custom extension
-JVM_SRC_ROOTS += $(HOTSPOT_TOPDIR)/src
+JVM_SRC_ROOTS += $(TOPDIR)/src/hotspot
 
 JVM_SRC_DIRS += $(call uniq, $(wildcard $(foreach d, $(JVM_SRC_ROOTS), \
-        $d/share/vm \
-        $d/os/$(HOTSPOT_TARGET_OS)/vm \
-        $d/os/$(HOTSPOT_TARGET_OS_TYPE)/vm \
-        $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH)/vm \
-        $d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH)/vm \
+        $d/share \
+        $d/os/$(HOTSPOT_TARGET_OS) \
+        $d/os/$(HOTSPOT_TARGET_OS_TYPE) \
+        $d/cpu/$(HOTSPOT_TARGET_CPU_ARCH) \
+        $d/os_cpu/$(HOTSPOT_TARGET_OS)_$(HOTSPOT_TARGET_CPU_ARCH) \
     ))) \
     $(JVM_VARIANT_OUTPUTDIR)/gensrc/jvmtifiles \
     $(JVM_VARIANT_OUTPUTDIR)/gensrc/tracefiles \
@@ -56,8 +56,8 @@
 JVM_CFLAGS_INCLUDES += \
     $(patsubst %,-I%,$(filter-out $(JVM_VARIANT_OUTPUTDIR)/gensrc/%, $(JVM_SRC_DIRS))) \
     -I$(JVM_VARIANT_OUTPUTDIR)/gensrc \
-    -I$(HOTSPOT_TOPDIR)/src/share/vm/precompiled \
-    -I$(HOTSPOT_TOPDIR)/src/share/vm/prims \
+    -I$(TOPDIR)/src/hotspot/share/precompiled \
+    -I$(TOPDIR)/src/hotspot/share/prims \
     #
 
 # INCLUDE_SUFFIX_* is only meant for including the proper
@@ -161,7 +161,7 @@
 endif
 
 ifneq ($(filter $(OPENJDK_TARGET_OS), linux macosx windows), )
-  JVM_PRECOMPILED_HEADER := $(HOTSPOT_TOPDIR)/src/share/vm/precompiled/precompiled.hpp
+  JVM_PRECOMPILED_HEADER := $(TOPDIR)/src/hotspot/share/precompiled/precompiled.hpp
 endif
 
 ifeq ($(OPENJDK_TARGET_CPU), x86)
@@ -173,9 +173,9 @@
 # Inline assembly for solaris
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   ifeq ($(OPENJDK_TARGET_CPU), x86_64)
-    JVM_CFLAGS += $(HOTSPOT_TOPDIR)/src/os_cpu/solaris_x86/vm/solaris_x86_64.il
+    JVM_CFLAGS += $(TOPDIR)/src/hotspot/os_cpu/solaris_x86/solaris_x86_64.il
   else ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
-    JVM_CFLAGS += $(HOTSPOT_TOPDIR)/src/os_cpu/solaris_sparc/vm/solaris_sparc.il
+    JVM_CFLAGS += $(TOPDIR)/src/hotspot/os_cpu/solaris_sparc/solaris_sparc.il
   endif
 endif
 
@@ -231,7 +231,7 @@
     STRIPFLAGS := $(JVM_STRIPFLAGS), \
     EMBED_MANIFEST := true, \
     RC_FLAGS := $(JVM_RCFLAGS), \
-    VERSIONINFO_RESOURCE := $(HOTSPOT_TOPDIR)/src/os/windows/vm/version.rc, \
+    VERSIONINFO_RESOURCE := $(TOPDIR)/src/hotspot/os/windows/version.rc, \
     PRECOMPILED_HEADER := $(JVM_PRECOMPILED_HEADER), \
     PRECOMPILED_HEADER_EXCLUDE := $(JVM_PRECOMPILED_HEADER_EXCLUDE), \
 ))
diff --git a/make/hotspot/lib/CompileLibjsig.gmk b/make/hotspot/lib/CompileLibjsig.gmk
index fbc8abb..fbe557c 100644
--- a/make/hotspot/lib/CompileLibjsig.gmk
+++ b/make/hotspot/lib/CompileLibjsig.gmk
@@ -57,7 +57,7 @@
       endif
 
     else ifeq ($(OPENJDK_TARGET_OS), solaris)
-      LIBJSIG_CFLAGS := -m64 -KPIC -mt
+      LIBJSIG_CFLAGS := -m64 -KPIC -mt -I $(TOPDIR)/src/hotspot/os/solaris
       LIBJSIG_LDFLAGS := -m64 -mt -xnolib
       LIBJSIG_LIBS := $(LIBDL)
 
@@ -81,8 +81,8 @@
       $(error Unknown target OS $(OPENJDK_TARGET_OS) in CompileLibjsig.gmk)
     endif
 
-    LIBJSIG_SRC_FILE := $(HOTSPOT_TOPDIR)/src/os/$(HOTSPOT_TARGET_OS)/vm/jsig.c
-    LIBJSIG_MAPFILE := $(wildcard $(HOTSPOT_TOPDIR)/make/mapfiles/libjsig/mapfile-vers-$(OPENJDK_TARGET_OS))
+    LIBJSIG_SRC_FILE := $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjsig/jsig.c
+    LIBJSIG_MAPFILE := $(wildcard $(TOPDIR)/make/mapfiles/libjsig/mapfile-vers-$(OPENJDK_TARGET_OS))
     LIBJSIG_OUTPUTDIR := $(HOTSPOT_OUTPUTDIR)/libjsig
 
     LIBJSIG_LDFLAGS += $(SHARED_LIBRARY_FLAGS)
diff --git a/make/hotspot/lib/JvmFeatures.gmk b/make/hotspot/lib/JvmFeatures.gmk
index db07898..3880e68 100644
--- a/make/hotspot/lib/JvmFeatures.gmk
+++ b/make/hotspot/lib/JvmFeatures.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, hotspot, lib/JvmFeatures.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/lib/JvmFeatures.gmk))
 
 ################################################################################
 # Setup CFLAGS and EXCLUDES for the libjvm compilation, depending on which
diff --git a/make/hotspot/lib/JvmMapfile.gmk b/make/hotspot/lib/JvmMapfile.gmk
index 9f9c928..aae8d0c 100644
--- a/make/hotspot/lib/JvmMapfile.gmk
+++ b/make/hotspot/lib/JvmMapfile.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, hotspot, lib/JvmMapfile.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/lib/JvmMapfile.gmk))
 
 ################################################################################
 # Combine a list of static symbols
@@ -31,20 +31,20 @@
 ifneq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU), windows-x86_64)
   # On Windows x86_64, we should not have any symbols at all, since that
   # results in duplicate warnings from the linker (JDK-8043491).
-  SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-shared
+  SYMBOLS_SRC += $(TOPDIR)/make/hotspot/symbols/symbols-shared
 endif
 
 ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
-  SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-unix
+  SYMBOLS_SRC += $(TOPDIR)/make/hotspot/symbols/symbols-unix
 endif
 
-ifneq ($(wildcard $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)), )
-  SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)
+ifneq ($(wildcard $(TOPDIR)/make/hotspot/symbols/symbols-$(OPENJDK_TARGET_OS)), )
+  SYMBOLS_SRC += $(TOPDIR)/make/hotspot/symbols/symbols-$(OPENJDK_TARGET_OS)
 endif
 
 ifneq ($(findstring debug, $(DEBUG_LEVEL)), )
-  ifneq ($(wildcard $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)-debug), )
-    SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-$(OPENJDK_TARGET_OS)-debug
+  ifneq ($(wildcard $(TOPDIR)/make/hotspot/symbols/symbols-$(OPENJDK_TARGET_OS)-debug), )
+    SYMBOLS_SRC += $(TOPDIR)/make/hotspot/symbols/symbols-$(OPENJDK_TARGET_OS)-debug
   endif
 endif
 
@@ -53,9 +53,9 @@
     # Additional mapfiles that are only used when dtrace is enabled
     ifeq ($(call check-jvm-feature, compiler2), true)
       # This also covers the case of compiler1+compiler2.
-      SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-solaris-dtrace-compiler2
+      SYMBOLS_SRC += $(TOPDIR)/make/hotspot/symbols/symbols-solaris-dtrace-compiler2
     else ifeq ($(call check-jvm-feature, compiler1), true)
-      SYMBOLS_SRC += $(HOTSPOT_TOPDIR)/make/symbols/symbols-solaris-dtrace-compiler1
+      SYMBOLS_SRC += $(TOPDIR)/make/hotspot/symbols/symbols-solaris-dtrace-compiler1
     endif
   endif
 endif
diff --git a/make/hotspot/lib/JvmOverrideFiles.gmk b/make/hotspot/lib/JvmOverrideFiles.gmk
index dabdf3b..b8eddbd 100644
--- a/make/hotspot/lib/JvmOverrideFiles.gmk
+++ b/make/hotspot/lib/JvmOverrideFiles.gmk
@@ -23,7 +23,7 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, hotspot, lib/JvmOverrideFiles.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/lib/JvmOverrideFiles.gmk))
 
 ################################################################################
 # This file contains explicit overrides of CFLAGS and/or precompiled header
@@ -55,8 +55,8 @@
     # significantly reduce the GC pause time on 32 bit Linux/Unix platforms by
     # compiling without the PIC flag (-fPIC on linux).
     # See 6454213 for more details.
-    ALL_SRC := $(filter %.cpp, $(call CacheFind, $(HOTSPOT_TOPDIR)/src/share/vm))
-    NONPIC_FILTER := $(addsuffix %, $(addprefix $(HOTSPOT_TOPDIR)/src/share/vm/, \
+    ALL_SRC := $(filter %.cpp, $(call CacheFind, $(TOPDIR)/src/hotspot/share))
+    NONPIC_FILTER := $(addsuffix %, $(addprefix $(TOPDIR)/src/hotspot/share/, \
         memory oops gc))
     # Due to what looks like a bug in the old build implementation of this, add a
     # couple of more files that were accidentally matched as substrings of GC related
diff --git a/make/idea/template/ant.xml b/make/idea/template/ant.xml
index f5274de..9e7c19b 100644
--- a/make/idea/template/ant.xml
+++ b/make/idea/template/ant.xml
@@ -4,9 +4,8 @@
     <buildFile url="file://$PROJECT_DIR$/.idea/build.xml">
       <properties>
         <property name="boot.java.home" value="$JDKPath$" />
-        <property name="jtreg.tests" value="$FilePath$" />
-        <property name="jtreg.home" value="jtreg.home" />
-        <property name="build.target.dir" value="specDir" /> <!-- this will be replaced --> 
+        <property name="intellij.ismake" value="$IsMake$" />
+        <property name="build.target.dir" value="specDir" /> <!-- this will be replaced -->
         <property name="module.name" value="java.base" /> <!-- this will be replaced -->
       </properties>
       <executeOn event="afterCompilation" target="post-make" />
diff --git a/make/idea/template/build.xml b/make/idea/template/build.xml
index b10490f..7f0eff4 100644
--- a/make/idea/template/build.xml
+++ b/make/idea/template/build.xml
@@ -33,7 +33,11 @@
             </sequential>
         </macrodef>
 
-    <target name="post-make" depends="build-module"/>
+    <target name="cond-clean" unless="${intellij.ismake}">
+        <antcall target="clean"/>
+    </target>
+
+    <target name="post-make" depends="cond-clean, build-module"/>
 
     <!--
         **** Global JDK Build Targets
@@ -106,68 +110,4 @@
             </sequential>
         </macrodef>
     </target>
-
-    <macrodef name="exec-target">
-        <attribute name="antfile" default="${ant.file}" />
-        <attribute name="target" />
-        <sequential>
-            <java classname="org.apache.tools.ant.Main" fork="true" spawn="true">
-                <arg value="-f"/>
-                <arg value="@{antfile}"/>
-                <arg value="-Dbuild.target.dir=${build.target.dir}"/>
-                <arg value="-Djtreg.home=${jtreg.home}"/>
-                <arg value="-Djtreg.tests=${jtreg.tests}"/>
-                <arg value="-Djtreg.jpda.jvmargs=${jtreg.jpda.jvmargs}"/>
-                <arg value="@{target}"/>
-                <classpath>
-                    <pathelement path="${java.class.path}"/>
-                </classpath>
-            </java>
-        </sequential>
-    </macrodef>
-
-    <target name="jtreg" depends="images,-def-jtreg">
-        <jtreg-tool name="all" tests="${jtreg.tests}"/>
-    </target>
-
-    <target name="-def-jtreg" unless="jtreg.defined" depends="-check-jtreg.home">
-        <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant">
-            <classpath>
-                <pathelement location="${jtreg.home}/lib/jtreg.jar"/>
-                <pathelement location="${jtreg.home}/lib/javatest.jar"/>
-            </classpath>
-        </taskdef>
-        <macrodef name="jtreg-tool">
-            <attribute name="name"/>
-            <attribute name="tests"/>
-            <attribute name="jdk" default="${build.target.dir}/images/jdk"/>
-            <attribute name="agentvm" default="true"/>
-            <attribute name="verbose" default="${default.jtreg.verbose}"/>
-            <attribute name="options" default="${other.jtreg.options}"/>
-            <attribute name="keywords" default="-keywords:!ignore"/>
-            <attribute name="jpda.jvmargs" default=""/>
-            <attribute name="extra.jvmargs" default=""/>
-            <attribute name="build.modules" default="${build.modules}"/>
-            <sequential>
-                <property name="coverage.options" value=""/>              <!-- default -->
-                <property name="coverage.classpath" value=""/>            <!-- default -->
-                <property name="default.jtreg.verbose" value="summary"/>  <!-- default -->
-                <property name="other.jtreg.options" value=""/>           <!-- default -->
-                <property name="jtreg.classfiles.to.modules" value="@{agentvm}"/>
-                <jtreg
-                    dir="${test.dir}"
-                    workDir="${build.target.dir}/idea/@{name}/work"
-                    reportDir="${build.target.dir}/idea/@{name}/report"
-                    jdk="@{jdk}"
-                    agentvm="@{agentvm}" verbose="@{verbose}"
-                    failonerror="false" resultproperty="jtreg.@{name}.result">
-                    <arg value="-debug:@{jpda.jvmargs}"/>
-                    <arg line="@{keywords}"/>
-                    <arg line="@{options}"/>
-                    <arg line="@{tests}"/>
-                </jtreg>
-            </sequential>
-        </macrodef>
-        <property name="jtreg.defined" value="true"/>
-    </target>
 </project>
diff --git a/make/idea/template/compiler.xml b/make/idea/template/compiler.xml
index f801895..51d78fb 100644
--- a/make/idea/template/compiler.xml
+++ b/make/idea/template/compiler.xml
@@ -3,17 +3,10 @@
   <component name="CompilerConfiguration">
     <option name="DEFAULT_COMPILER" value="Javac" />
     <excludeFromCompile>
-      <directory url="file://$PROJECT_DIR$/jdk/src" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/langtools/src" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/jaxp/src" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/jaxws/src" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/corba/src" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/nashorn/src" includeSubdirectories="true" />
+      <directory url="file://$PROJECT_DIR$/src" includeSubdirectories="true" />
       <directory url="file://$PROJECT_DIR$/build" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/jdk/test" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/jaxp/test" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/langtools/test" includeSubdirectories="true" />
-      <directory url="file://$PROJECT_DIR$/langtools" includeSubdirectories="true" />
+      <directory url="file://$PROJECT_DIR$/make" includeSubdirectories="true" />
+      <directory url="file://$PROJECT_DIR$/test" includeSubdirectories="true" />
     </excludeFromCompile>
     <resourceExtensions />
     <wildcardResourcePatterns>
diff --git a/make/idea/template/jdk.iml b/make/idea/template/jdk.iml
index 5e1436c..384f780 100644
--- a/make/idea/template/jdk.iml
+++ b/make/idea/template/jdk.iml
@@ -4,17 +4,10 @@
     <exclude-output />
     <content url="file://$MODULE_DIR$">
       <sourceFolder url="file://$MODULE_DIR$/####" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/jdk/test" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/langtools/test" isTestSource="true" />
-      <sourceFolder url="file://$MODULE_DIR$/jaxp/test" isTestSource="true" />
-      <excludeFolder url="file://$MODULE_DIR$/####/buildtools" />
-      <excludeFolder url="file://$MODULE_DIR$/####/configure-support" />
-      <excludeFolder url="file://$MODULE_DIR$/####/hotspot" />
-      <excludeFolder url="file://$MODULE_DIR$/####/images" />
-      <excludeFolder url="file://$MODULE_DIR$/####/ide" />
-      <excludeFolder url="file://$MODULE_DIR$/####/jdk" />
-      <excludeFolder url="file://$MODULE_DIR$/####/make-support" />
-      <excludeFolder url="file://$MODULE_DIR$/####/testoutput" />
+      <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
+      <excludeFolder url="file://$MODULE_DIR$/src" />
+      <excludeFolder url="file://$MODULE_DIR$/build" />
+      <excludeFolder url="file://$MODULE_DIR$/make" />
     </content>    
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="inheritedJdk" />
diff --git a/make/idea/template/misc.xml b/make/idea/template/misc.xml
index e5caa22..c597899 100644
--- a/make/idea/template/misc.xml
+++ b/make/idea/template/misc.xml
@@ -3,6 +3,15 @@
   <component name="EntryPointsManager">
     <entry_points version="2.0" />
   </component>
+  <component name="JTRegService">
+    <path>jtreg_home</path> <!-- this will be replaced -->
+    <workDir>build</workDir>
+    <jre alt="true" value="images_jdk" /> <!-- this will be replaced -->
+    <options></options>
+    <ant>
+      <target file="file://$PROJECT_DIR$/.idea/build.xml" name="images" />
+    </ant>
+  </component>
   <component name="ProjectRootManager" version="2" languageLevel="JDK_1_9" assert-keyword="true" jdk-15="true">
     <output url="file://$PROJECT_DIR$/build/idea/out" />
   </component>
diff --git a/make/idea/template/vcs.xml b/make/idea/template/vcs.xml
index 876d3cd..94ad925 100644
--- a/make/idea/template/vcs.xml
+++ b/make/idea/template/vcs.xml
@@ -2,13 +2,6 @@
 <project version="4">
   <component name="VcsDirectoryMappings">
     <mapping directory="$PROJECT_DIR$" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/jdk" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/langtools" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/hotspot" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/nashorn" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/jaxp" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/jaxws" vcs="hg4idea" />
-    <mapping directory="$PROJECT_DIR$/corba" vcs="hg4idea" />
   </component>
 </project>
 
diff --git a/make/idea/template/workspace.xml b/make/idea/template/workspace.xml
index e6377dd..7113a00 100644
--- a/make/idea/template/workspace.xml
+++ b/make/idea/template/workspace.xml
@@ -8,14 +8,6 @@
   <component name="StructureViewFactory">
     <option name="ACTIVE_ACTIONS" value=",ALPHA_COMPARATOR" />
   </component>
-  <component name="RunManager" selected="Ant Target.jtreg">
-    <configuration default="false" name="jtreg" type="AntRunConfiguration" factoryName="Ant Target">
-      <antsettings antfile="file://$PROJECT_DIR$/.idea/build.xml" target="jtreg" />
-      <method>
-        <option name="Make" enabled="false" />
-      </method>
-    </configuration>
-  </component>
   <component name="antWorkspaceConfiguration">
     <option name="IS_AUTOSCROLL_TO_SOURCE" value="false" />
     <option name="FILTER_TARGETS" value="false" />
@@ -43,7 +35,7 @@
     </buildFile>
   </component>
   <component name="ProjectView">
-    <navigator currentView="PackagesPane" proportions="" version="1">
+    <navigator currentView="ProjectPane" proportions="" version="1">
       <flattenPackages />
       <showMembers />
       <showModules />
diff --git a/make/jprt.properties b/make/jprt.properties
index 491462c..b3239b1 100644
--- a/make/jprt.properties
+++ b/make/jprt.properties
@@ -38,13 +38,13 @@
 jprt.sync.push=true
 
 # Directories to be excluded from the source bundles
-jprt.bundle.exclude.src.dirs=build dist webrev
+jprt.bundle.exclude.src.dirs=build dist webrev ${jprt.bundle.exclude.src.dirs.extra}
 
 # Use configure when building
 jprt.build.use.configure=true
 jprt.build.use.jib=true
 jprt.test.use.jib=true
-jprt.jib.launcher=common/bin/jib.sh
+jprt.jib.launcher=bin/jib.sh
 jprt.build.use.jib.publish=true
 
 # Clear out all the build needs as JIB handles this
diff --git a/make/langtools/build.properties b/make/langtools/build.properties
index 9ee7170..2b93479 100644
--- a/make/langtools/build.properties
+++ b/make/langtools/build.properties
@@ -33,6 +33,12 @@
 javac.build.source = 8
 javac.build.target = 8
 
+module.names = java.compiler \
+               jdk.compiler \
+               jdk.javadoc \
+               jdk.jdeps \
+               jdk.jshell
+
 langtools.resource.includes = \
         com/sun/tools/javac/resources/compiler.properties
 
diff --git a/make/langtools/build.xml b/make/langtools/build.xml
index c39ff0e..b1a9d03 100644
--- a/make/langtools/build.xml
+++ b/make/langtools/build.xml
@@ -53,7 +53,7 @@
  - utility definitions
  -->
 
-<project name="langtools" default="build" basedir="..">
+<project name="langtools" default="build" basedir="../..">
     <!--
     **** Global property definitions.
     -->
@@ -61,7 +61,7 @@
     <!-- The following locations can be used to override default property values. -->
 
     <!-- Use this location for customizations specific to this instance of this workspace -->
-    <property file="build.properties"/>
+    <property file="make/langtools/build.properties"/>
 
     <!-- Use this location for customizations common to all OpenJDK langtools workspaces -->
     <property file="${user.home}/.openjdk/${ant.project.name}-build.properties"/>
@@ -72,10 +72,10 @@
     <!-- Convenient shorthands for standard locations within the workspace. -->
     <property name="src.dir" location="src"/>
     <property name="test.dir" location="test"/>
-    <property name="make.dir" location="make"/>
+    <property name="make.dir" location="make/langtools"/>
     <property name="make.conf.dir" location="${make.dir}/conf"/>
     <property name="make.tools.dir" location="${make.dir}/tools"/>
-    <property name="build.dir" location="build"/>
+    <property name="build.dir" location="build/langtools"/>
     <property name="build.modules" location="${build.dir}/modules"/>
     <property name="build.gensrc" location="${build.dir}/gensrc"/>
     <property name="build.tools" location="${build.dir}/toolclasses"/>
@@ -83,29 +83,26 @@
     <property name="build.jtreg" location="${build.dir}/jtreg"/>
     <property name="build.prevsrc" location="${build.dir}/prevsrc"/>
 
-    <pathconvert property="modules.names" pathsep=",">
-        <globmapper from="${src.dir}/*" to="*" handledirsep="yes"/>
-        <dirset dir="${src.dir}" includes="*.*"/>
-    </pathconvert>
+    <dirset id="src.module.dirset" dir="${src.dir}" includes="${module.names}"/>
 
-    <pathconvert property="xpatch.rest" pathsep=" --patch-module=">
+    <pathconvert pathsep="," property="src.module.dirs" refid="src.module.dirset"/>
+
+    <pathconvert property="xpatch.rest" pathsep=" --patch-module=" refid="src.module.dirset">
         <scriptmapper language="javascript">
             fs = project.getProperty("file.separator");
             path = project.getProperty("build.modules");
             mod = source.substr(source.lastIndexOf(fs)+1);
             self.addMappedName(mod + "=\"" + path + fs + mod + "\"");
         </scriptmapper>
-        <dirset dir="${src.dir}" includes="*.*"/>
     </pathconvert>
 
-    <pathconvert property="xpatch.noquotes.rest" pathsep=" --patch-module=">
+    <pathconvert property="xpatch.noquotes.rest" pathsep=" --patch-module=" refid="src.module.dirset">
         <scriptmapper language="javascript">
             fs = project.getProperty("file.separator");
             path = project.getProperty("build.modules");
             mod = source.substr(source.lastIndexOf(fs)+1);
             self.addMappedName(mod + "=" + path + fs + mod);
         </scriptmapper>
-        <dirset dir="${src.dir}" includes="*.*"/>
     </pathconvert>
 
     <property name="xpatch.cmd" value="--patch-module=${xpatch.rest}"/>
@@ -198,6 +195,7 @@
 
     <target name="generate-sources-internal">
         <basename property="module.name" file="${basedir}"/>
+        <mkdir dir="${build.gensrc}/${module.name}"/>
         <pparse destdir="${build.gensrc}/${module.name}" includes="${langtools.resource.includes}">
             <src path="./share/classes"/>
         </pparse>
@@ -208,22 +206,48 @@
 
     <target name="generate-sources"  depends="-prepare-build,-def-pparse,-def-pcompile">
         <subant inheritall="true" target="generate-sources-internal" genericantfile="${make.dir}/build.xml">
-              <dirset dir="${src.dir}" includes="*.*"/>
+              <dirset refid="src.module.dirset"/>
         </subant>
     </target>
 
     <target name="build-all-classes" depends="generate-sources">
+        <pathconvert property="xpatch.src.rest" pathsep=" --patch-module=" refid="src.module.dirset">
+            <scriptmapper language="javascript">
+                fs = project.getProperty("file.separator");
+                path_src = project.getProperty("src.dir");
+                path_sep = project.getProperty("path.separator");
+                path_gensrc = project.getProperty("build.gensrc");
+                mod = source.substr(source.lastIndexOf(fs)+1);
+                self.addMappedName(mod + "=" + path_src + fs + mod + path_sep + path_gensrc + fs + mod);
+            </scriptmapper>
+        </pathconvert>
+        <property name="xpatch.src.cmd" value="--patch-module=${xpatch.src.rest}"/>
+        <pathconvert pathsep="," property="gensrc.module.dirs">
+            <dirset dir="${build.gensrc}" includes="${module.names}"/>
+        </pathconvert>
+        <multirootfileset id="source.fileset" basedirs="${src.module.dirs},${gensrc.module.dirs}">
+            <include name="**/*.java"/>
+            <different targetdir="${build.prevsrc}" ignoreFileTimes="true"/>
+        </multirootfileset>
+        <pathconvert pathsep=" " property="source.files" refid="source.fileset"/>
+        <echo file="${build.dir}/sources.txt">${source.files}</echo>
         <exec executable="${langtools.jdk.home}/bin/javac" failonerror="true">
             <arg line="-source ${javac.source} -target ${javac.target}" />
             <arg value="-d" />
             <arg value="${build.modules}" />
             <arg line="${javac.opts}" />
-            <arg line="--module-source-path ${src.dir}${file.separator}*${file.separator}share${file.separator}classes${path.separator}${build.gensrc}" />
-            <arg line="-m ${modules.names}" />
+            <arg line="${xpatch.src.cmd}" />
+            <arg line="--module-source-path ." />
+            <arg line="@${build.dir}/sources.txt" />
         </exec>
+        <delete file="${build.dir}/sources.txt"/>
         <delete>
             <fileset dir="${build.modules}" includes="**/module-info.class"/>
         </delete>
+        <!-- workaround for incremental compilation -->
+        <copy todir="${build.prevsrc}" >
+            <multirootfileset refid="source.fileset"/>
+        </copy>
     </target>
 
     <target name="build-all-tools" depends="build-all-classes, -def-build-tool">
@@ -247,7 +271,7 @@
     <target name="idea" depends="-check-langtools.jdk.home">
         <mkdir dir=".idea"/>
         <copy todir=".idea" >
-            <fileset dir="make/intellij">
+            <fileset dir="${make.dir}/intellij">
                <exclude name="**/src/**"/>
                <exclude name="**/utils/**"/>
             </fileset>
@@ -267,7 +291,7 @@
         <mkdir dir=".idea/classes"/>
         <javac source="${javac.build.source}"
                target="${javac.build.target}"
-               srcdir="make/intellij/src"
+               srcdir="${make.dir}/intellij/src"
                destdir=".idea/classes"/>
     </target>
 
diff --git a/make/langtools/intellij/ant.xml b/make/langtools/intellij/ant.xml
index ea4b820..bdfadea 100644
--- a/make/langtools/intellij/ant.xml
+++ b/make/langtools/intellij/ant.xml
@@ -3,7 +3,8 @@
   <component name="AntConfiguration">
     <buildFile url="file://$PROJECT_DIR$/.idea/build.xml">
       <properties>
-	<property name="langtools.jdk.home" value="@IDEA_TARGET_JDK@" />
+	    <property name="langtools.jdk.home" value="@IDEA_TARGET_JDK@" />
+        <property name="intellij.ismake" value="$IsMake$" />
       </properties>
       <executeOn event="afterCompilation" target="post-make" />
     </buildFile>
diff --git a/make/langtools/intellij/build.xml b/make/langtools/intellij/build.xml
index 238f54b..b6b92f5 100644
--- a/make/langtools/intellij/build.xml
+++ b/make/langtools/intellij/build.xml
@@ -6,7 +6,11 @@
         new LangtoolsLogger(project)
     </script>
 
-    <import file="../make/build.xml"/>
+    <import file="../make/langtools/build.xml"/>
 
-    <target name="post-make" depends="clean, build-all-tools"/>
+    <target name="cond-clean" unless="${intellij.ismake}">
+        <antcall target="clean"/>
+    </target>
+
+    <target name="post-make" depends="cond-clean, build-all-tools"/>
 </project>
diff --git a/make/langtools/intellij/langtools.iml b/make/langtools/intellij/langtools.iml
index c982a85..28f2643 100644
--- a/make/langtools/intellij/langtools.iml
+++ b/make/langtools/intellij/langtools.iml
@@ -7,12 +7,26 @@
       <sourceFolder url="file://$MODULE_DIR$/src/jdk.javadoc/share/classes" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/jdk.jdeps/share/classes" isTestSource="false" />
       <sourceFolder url="file://$MODULE_DIR$/src/jdk.jshell/share/classes" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/build/gensrc/jdk.compiler" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/build/gensrc/jdk.javadoc" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/build/gensrc/jdk.jdeps" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/make/tools" isTestSource="false" />
-      <sourceFolder url="file://$MODULE_DIR$/make/src/classes" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/langtools/gensrc/jdk.compiler" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/langtools/gensrc/jdk.javadoc" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/langtools/gensrc/jdk.jdeps" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/make/langtools/tools" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/make/langtools/src/classes" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/langtools/gensrc/jdk.compiler" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/langtools/gensrc/jdk.javadoc" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/langtools/gensrc/jdk.jdeps" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/build/langtools/gensrc/jdk.jshell" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/jdk.compiler" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/java.compiler" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/jdk.jdeps" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/jdk.jshell" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/src/jdk.javadoc" isTestSource="false" />
+      <excludeFolder url="file://$MODULE_DIR$/build" />
+      <excludeFolder url="file://$MODULE_DIR$/make" />
+      <excludeFolder url="file://$MODULE_DIR$/src" />
+      <excludeFolder url="file://$MODULE_DIR$/test" />
     </content>
+    <content url="file://$MODULE_DIR$/test/langtools"/>
     <orderEntry type="sourceFolder" forTests="false" />
     <orderEntry type="inheritedJdk" />
   </component>
diff --git a/make/langtools/netbeans/langtools/nbproject/project.xml b/make/langtools/netbeans/langtools/nbproject/project.xml
index aa5b4dd..f2d9ecf 100644
--- a/make/langtools/netbeans/langtools/nbproject/project.xml
+++ b/make/langtools/netbeans/langtools/nbproject/project.xml
@@ -39,7 +39,7 @@
             <!-- Do not use Project Properties customizer when editing this file manually. -->
             <name>langtools</name>
             <properties>
-                <property name="root">../../..</property>
+                <property name="root">../../../..</property>
             </properties>
             <folders>
                 <source-folder>
@@ -49,12 +49,12 @@
                 <source-folder>
                     <label>Test files</label>
                     <type>tests</type>
-                    <location>${root}/test</location>
+                    <location>${root}/test/langtools</location>
                 </source-folder>
                 <source-folder>
                     <label>Build files</label>
                     <type>build</type>
-                    <location>${root}/make</location>
+                    <location>${root}/make/langtools</location>
                 </source-folder>
                 <source-folder>
                     <label>Source files - java.compiler</label>
@@ -253,7 +253,7 @@
                     <target>jtreg</target>
                     <context>
                         <property>jtreg.tests</property>
-                        <folder>${root}/test</folder>
+                        <folder>${root}/test/langtools</folder>
                         <pattern>\.(java|sh)$</pattern>
                         <format>relative-path</format>
                         <arity>
@@ -335,7 +335,7 @@
                     <target>debug-jtreg</target>
                     <context>
                         <property>jtreg.tests</property>
-                        <folder>${root}/test</folder>
+                        <folder>${root}/test/langtools</folder>
                         <pattern>\.(java|sh)$</pattern>
                         <format>relative-path</format>
                         <arity>
@@ -447,7 +447,7 @@
                     </source-folder>
                     <source-folder style="tree">
                         <label>Test files</label>
-                        <location>${root}/test</location>
+                        <location>${root}/test/langtools</location>
                     </source-folder>
                     <source-folder style="tree">
                         <label>Build files</label>
diff --git a/make/launcher/Launcher-java.base.gmk b/make/launcher/Launcher-java.base.gmk
index 06ccec7..340072c 100644
--- a/make/launcher/Launcher-java.base.gmk
+++ b/make/launcher/Launcher-java.base.gmk
@@ -25,10 +25,10 @@
 
 include LauncherCommon.gmk
 
-$(eval $(call IncludeCustomExtension, jdk, launcher/Launcher-java.base.gmk))
+$(eval $(call IncludeCustomExtension, , launcher/Launcher-java.base.gmk))
 
-JAVA_RC_FLAGS += -I $(JDK_TOPDIR)/src/java.base/windows/native/common
-JAVA_RC_FLAGS += -I $(JDK_TOPDIR)/src/java.base/windows/native/launcher/icons
+JAVA_RC_FLAGS += -I $(TOPDIR)/src/java.base/windows/native/common
+JAVA_RC_FLAGS += -I $(TOPDIR)/src/java.base/windows/native/launcher/icons
 
 ################################################################################
 
@@ -73,11 +73,11 @@
 
 ifeq ($(OPENJDK_TARGET_OS), linux)
   $(eval $(call SetupNativeCompilation, BUILD_JEXEC, \
-      SRC := $(JDK_TOPDIR)/src/$(MODULE)/unix/native/launcher, \
+      SRC := $(TOPDIR)/src/$(MODULE)/unix/native/launcher, \
       INCLUDE_FILES := jexec.c, \
       OPTIMIZATION := LOW, \
       CFLAGS := $(CFLAGS_JDKEXE) \
-          -I$(JDK_TOPDIR)/src/$(MODULE)/share/native/libjli, \
+          -I$(TOPDIR)/src/$(MODULE)/share/native/libjli, \
       CFLAGS_linux := -fPIC, \
       CFLAGS_solaris := -KPIC, \
       LDFLAGS := $(LDFLAGS_JDKEXE), \
@@ -93,9 +93,9 @@
 
 ifneq ($(findstring $(OPENJDK_TARGET_OS), macosx solaris aix), )
   $(eval $(call SetupNativeCompilation, BUILD_JSPAWNHELPER, \
-      SRC := $(JDK_TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
+      SRC := $(TOPDIR)/src/$(MODULE)/unix/native/jspawnhelper, \
       OPTIMIZATION := LOW, \
-      CFLAGS := $(CFLAGS_JDKEXE) -I$(JDK_TOPDIR)/src/$(MODULE)/unix/native/libjava, \
+      CFLAGS := $(CFLAGS_JDKEXE) -I$(TOPDIR)/src/$(MODULE)/unix/native/libjava, \
       EXTRA_OBJECT_FILES := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libjava/childproc.o, \
       LDFLAGS := $(LDFLAGS_JDKEXE), \
       OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/jspawnhelper, \
diff --git a/make/launcher/Launcher-java.desktop.gmk b/make/launcher/Launcher-java.desktop.gmk
index 8cf4d79..ab60dea 100644
--- a/make/launcher/Launcher-java.desktop.gmk
+++ b/make/launcher/Launcher-java.desktop.gmk
@@ -26,7 +26,7 @@
 include LauncherCommon.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, launcher/Launcher-java.desktop.gmk))
+$(eval $(call IncludeCustomExtension, , launcher/Launcher-java.desktop.gmk))
 
 ifeq ($(ENABLE_HEADLESS_ONLY), false)
   $(eval $(call SetupBuildLauncher, appletviewer, \
diff --git a/make/launcher/Launcher-jdk.accessibility.gmk b/make/launcher/Launcher-jdk.accessibility.gmk
index 914b946..1163e76 100644
--- a/make/launcher/Launcher-jdk.accessibility.gmk
+++ b/make/launcher/Launcher-jdk.accessibility.gmk
@@ -30,8 +30,8 @@
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
 
-  JABSWITCH_SRC := $(JDK_TOPDIR)/src/jdk.accessibility/windows/native/jabswitch
-  ACCESSBRIDGE_SRC := $(JDK_TOPDIR)/src/jdk.accessibility/windows/native/common
+  JABSWITCH_SRC := $(TOPDIR)/src/jdk.accessibility/windows/native/jabswitch
+  ACCESSBRIDGE_SRC := $(TOPDIR)/src/jdk.accessibility/windows/native/common
 
   $(eval $(call SetupNativeCompilation,BUILD_JABSWITCH, \
       SRC := $(JABSWITCH_SRC), \
@@ -59,7 +59,7 @@
 ################################################################################
 # jaccessinspector
 
-  TOPDIR := $(JDK_TOPDIR)/src/jdk.accessibility/windows/native
+  TOPDIR := $(TOPDIR)/src/jdk.accessibility/windows/native
   TOOLS_CFLAGS := $(addprefix -I, \
       $(TOPDIR)/include/bridge \
       $(TOPDIR)/common \
diff --git a/make/launcher/Launcher-jdk.pack.gmk b/make/launcher/Launcher-jdk.pack.gmk
index 4fe0fdf..fed0ac8 100644
--- a/make/launcher/Launcher-jdk.pack.gmk
+++ b/make/launcher/Launcher-jdk.pack.gmk
@@ -34,17 +34,17 @@
 # The order of the object files on the link command line affects the size of the resulting
 # binary (at least on linux) which causes the size to differ between old and new build.
 
-UNPACKEXE_SRC := $(JDK_TOPDIR)/src/jdk.pack/share/native/common-unpack \
-    $(JDK_TOPDIR)/src/jdk.pack/share/native/unpack200
-UNPACKEXE_CFLAGS := -I$(JDK_TOPDIR)/src/jdk.pack/share/native/common-unpack \
-    -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
-    -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava
+UNPACKEXE_SRC := $(TOPDIR)/src/jdk.pack/share/native/common-unpack \
+    $(TOPDIR)/src/jdk.pack/share/native/unpack200
+UNPACKEXE_CFLAGS := -I$(TOPDIR)/src/jdk.pack/share/native/common-unpack \
+    -I$(TOPDIR)/src/java.base/share/native/libjava \
+    -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava
 
 ifeq ($(USE_EXTERNAL_LIBZ), true)
   UNPACKEXE_CFLAGS += -DSYSTEM_ZLIB
   UNPACKEXE_LIBS := -lz
 else
-  UNPACKEXE_CFLAGS += -I$(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib
+  UNPACKEXE_CFLAGS += -I$(TOPDIR)/src/java.base/share/native/libzip/zlib
   UNPACKEXE_ZIPOBJS := $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/zcrc32$(OBJ_SUFFIX) \
       $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/deflate$(OBJ_SUFFIX) \
       $(SUPPORT_OUTPUTDIR)/native/java.base/libzip/trees$(OBJ_SUFFIX) \
@@ -58,7 +58,7 @@
 
 endif
 
-UNPACK_MAPFILE_DIR := $(JDK_TOPDIR)/make/mapfiles/libunpack
+UNPACK_MAPFILE_DIR := $(TOPDIR)/make/mapfiles/libunpack
 UNPACK_MAPFILE_PLATFORM_FILE := \
     $(UNPACK_MAPFILE_DIR)/mapfile-vers-unpack200-$(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH)
 
@@ -97,7 +97,7 @@
         -D "JDK_FNAME=unpack200.exe" \
         -D "JDK_INTERNAL_NAME=unpack200" \
         -D "JDK_FTYPE=0x1L", \
-    MANIFEST := $(JDK_TOPDIR)/src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest, \
+    MANIFEST := $(TOPDIR)/src/jdk.pack/windows/native/unpack200/unpack200_proto.exe.manifest, \
     MANIFEST_VERSION := $(VERSION_NUMBER_FOUR_POSITIONS), \
 ))
 
diff --git a/make/launcher/LauncherCommon.gmk b/make/launcher/LauncherCommon.gmk
index 08938e0..aa07cac 100644
--- a/make/launcher/LauncherCommon.gmk
+++ b/make/launcher/LauncherCommon.gmk
@@ -42,16 +42,16 @@
   endif
 endif
 
-LAUNCHER_SRC := $(JDK_TOPDIR)/src/java.base/share/native/launcher
-LAUNCHER_CFLAGS := -I$(JDK_TOPDIR)/src/java.base/share/native/launcher \
-    -I$(JDK_TOPDIR)/src/java.base/share/native/libjli \
-    -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \
-    -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli \
+LAUNCHER_SRC := $(TOPDIR)/src/java.base/share/native/launcher
+LAUNCHER_CFLAGS := -I$(TOPDIR)/src/java.base/share/native/launcher \
+    -I$(TOPDIR)/src/java.base/share/native/libjli \
+    -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjli \
+    -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libjli \
     #
-GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc
-JAVA_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/launcher/java.rc
-MACOSX_PLIST_DIR := $(JDK_TOPDIR)/src/java.base/macosx/native/launcher
-JAVA_MANIFEST := $(JDK_TOPDIR)/src/java.base/windows/native/launcher/java.manifest
+GLOBAL_VERSION_INFO_RESOURCE := $(TOPDIR)/src/java.base/windows/native/common/version.rc
+JAVA_VERSION_INFO_RESOURCE := $(TOPDIR)/src/java.base/windows/native/launcher/java.rc
+MACOSX_PLIST_DIR := $(TOPDIR)/src/java.base/macosx/native/launcher
+JAVA_MANIFEST := $(TOPDIR)/src/java.base/windows/native/launcher/java.manifest
 
 ################################################################################
 # Build standard launcher.
@@ -169,14 +169,14 @@
   # "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable."
   # if feeded with a version script which contains named tags.
   ifeq ($(USING_BROKEN_SUSE_LD),yes)
-    ifneq ($(wildcard $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous), )
-      $1_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous
+    ifneq ($(wildcard $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous), )
+      $1_MAPFILE := $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU).anonymous
     else
       $1_MAPFILE :=
     endif
   else
-    ifneq ($(wildcard $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)), )
-      $1_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)
+    ifneq ($(wildcard $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)), )
+      $1_MAPFILE := $(TOPDIR)/make/mapfiles/launchers/mapfile-$(OPENJDK_TARGET_CPU)
     else
       $1_MAPFILE :=
     endif
diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
index 3f714e12b..fcb6ead 100644
--- a/make/lib/Awt2dLibraries.gmk
+++ b/make/lib/Awt2dLibraries.gmk
@@ -23,20 +23,20 @@
 # questions.
 #
 
-$(eval $(call IncludeCustomExtension, jdk, lib/Awt2dLibraries-pre.gmk))
+$(eval $(call IncludeCustomExtension, , lib/Awt2dLibraries-pre.gmk))
 
 WIN_AWT_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libawt/awt.lib
 
 ################################################################################
 
-BUILD_LIBMLIB_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libmlib_image \
-    $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/medialib
+BUILD_LIBMLIB_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \
+    $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib
 BUILD_LIBMLIB_CFLAGS := -D__USE_J2D_NAMES -D__MEDIALIB_OLD_NAMES \
     $(addprefix -I, $(BUILD_LIBMLIB_SRC)) \
-    -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libmlib_image
+    -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libmlib_image
 
 BUILD_LIBMLIB_LDLIBS :=
-BUILD_LIBMLIB_IMAGE_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmlib_image/mapfile-vers
+BUILD_LIBMLIB_IMAGE_MAPFILE := $(TOPDIR)/make/mapfiles/libmlib_image/mapfile-vers
 
 BUILD_LIBMLIB_CFLAGS += -DMLIB_NO_LIBSUNMATH
 
@@ -78,12 +78,12 @@
 
 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
 
-  LIBMLIB_IMAGE_V_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libmlib_image \
-      $(JDK_TOPDIR)/src/java.desktop/unix/native/libmlib_image \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/medialib \
-      $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \
+  LIBMLIB_IMAGE_V_SRC := $(TOPDIR)/src/java.desktop/share/native/libmlib_image \
+      $(TOPDIR)/src/java.desktop/unix/native/libmlib_image \
+      $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib \
+      $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \
       #
-  LIBMLIB_IMAGE_V_CFLAGS := $(JDK_TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il \
+  LIBMLIB_IMAGE_V_CFLAGS := $(TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il \
       $(addprefix -I, $(LIBMLIB_IMAGE_V_SRC)) \
       #
 
@@ -131,18 +131,18 @@
 
 ################################################################################
 
-LIBAWT_DIRS := $(JDK_TOPDIR)/src/java.desktop/share/native/libawt \
-    $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
-    $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
-    $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
+LIBAWT_DIRS := $(TOPDIR)/src/java.desktop/share/native/libawt \
+    $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
+    $(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+    $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
     #
 
 ifeq ($(OPENJDK_TARGET_OS), aix)
-  LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/libawt
+  LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/libawt
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
-  LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/utility
+  LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/share/native/common/awt/utility
 endif
 
 ifneq ($(filter $(OPENJDK_TARGET_OS), solaris linux macosx aix), )
@@ -165,8 +165,8 @@
   LIBAWT_CFLAGS += -DMLIB_ADD_SUFF
   LIBAWT_CFLAGS += -xarch=sparcvis
 
-  LIBAWT_CFLAGS += $(JDK_TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il
-  LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/medialib
+  LIBAWT_CFLAGS += $(TOPDIR)/src/java.desktop/unix/native/libmlib_image/vis_$(OPENJDK_TARGET_CPU_BITS).il
+  LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/share/native/common/awt/medialib
   LIBAWT_EXFILES += java2d/loops/MapAccelFunc.c
 
   ifeq ($(OPENJDK_TARGET_CPU), sparcv9)
@@ -176,9 +176,9 @@
   endif
 else
   LIBAWT_EXCLUDES += \
-      $(JDK_TOPDIR)/src/java.desktop/unix/native/libawt/awt/medialib \
-      $(JDK_TOPDIR)/src/java.desktop/unix/native/libawt/java2d/loops \
-      $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \
+      $(TOPDIR)/src/java.desktop/unix/native/libawt/awt/medialib \
+      $(TOPDIR)/src/java.desktop/unix/native/libawt/java2d/loops \
+      $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib \
       #
 endif
 
@@ -187,15 +187,15 @@
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
-  LIBAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
-      $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \
+  LIBAWT_DIRS += $(TOPDIR)/src/java.desktop/share/native/common/font \
+      $(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
+      $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt/systemscale \
   # Why does libawt need java.base headers?
-  LIBAWT_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
-      -I$(JDK_TOPDIR)/src/java.desktop/windows/native/include \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
+  LIBAWT_CFLAGS += -I$(TOPDIR)/src/java.desktop/share/native/common/font \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
+      -I$(TOPDIR)/src/java.desktop/windows/native/include \
+      -I$(TOPDIR)/src/java.desktop/share/native/include \
       -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
       #
   LIBAWT_EXFILES += \
@@ -208,11 +208,11 @@
     LIBAWT_CFLAGS += -DMLIB_OS64BIT
   endif
 
-  LIBAWT_RC_FLAGS ?= -I $(JDK_TOPDIR)/src/java.base/windows/native/launcher/icons
-  LIBAWT_VERSIONINFO_RESOURCE := $(JDK_TOPDIR)/src/java.desktop/windows/native/libawt/windows/awt.rc
+  LIBAWT_RC_FLAGS ?= -I $(TOPDIR)/src/java.base/windows/native/launcher/icons
+  LIBAWT_VERSIONINFO_RESOURCE := $(TOPDIR)/src/java.desktop/windows/native/libawt/windows/awt.rc
 endif
 
-LIBAWT_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt/mapfile-vers
+LIBAWT_MAPFILE := $(TOPDIR)/make/mapfiles/libawt/mapfile-vers
 ifeq ($(OPENJDK_TARGET_OS), linux)
   LIBAWT_MAPFILE :=
 endif
@@ -285,33 +285,33 @@
   ifeq ($(ENABLE_HEADLESS_ONLY), false)
 
     LIBAWT_XAWT_DIRS := \
-        $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt_xawt \
-        $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
-        $(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/utility \
-        $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
-        $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d \
-        $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \
-        $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
+        $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt_xawt \
+        $(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+        $(TOPDIR)/src/java.desktop/share/native/common/awt/utility \
+        $(TOPDIR)/src/java.desktop/share/native/common/font \
+        $(TOPDIR)/src/java.desktop/share/native/common/java2d \
+        $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \
+        $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
         #
 
     ifneq ($(filter $(OPENJDK_TARGET_OS),linux solaris aix), )
-      LIBAWT_XAWT_DIRS += $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale
+      LIBAWT_XAWT_DIRS += $(TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale
     endif
 
     LIBAWT_XAWT_EXCLUDES := medialib
 
     LIBAWT_XAWT_CFLAGS := $(addprefix -I, $(shell $(FIND) $(LIBAWT_XAWT_DIRS) -type d)) \
         -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
-        -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
-        -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \
-        -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \
-        -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \
-        -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
-        -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
-        -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
-        -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
-        -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
-        -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
+        -I$(TOPDIR)/src/java.desktop/share/native/include \
+        -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \
+        -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \
+        -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \
+        -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
+        -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
+        -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
+        -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
+        -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
+        -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
         $(LIBJAVA_HEADER_FLAGS)
         #
 
@@ -360,7 +360,7 @@
             format-security int-to-pointer-cast parentheses, \
         DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE \
             E_ASSIGNMENT_TYPE_MISMATCH E_NON_CONST_INIT, \
-        MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \
+        MAPFILE := $(TOPDIR)/make/mapfiles/libawt_xawt/mapfile-vers, \
         LDFLAGS := $(LDFLAGS_JDKLIB) \
             $(call SET_SHARED_LIBRARY_ORIGIN) \
             -L$(INSTALL_LIBRARIES_HERE), \
@@ -384,10 +384,10 @@
 
 ################################################################################
 
-LIBLCMS_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/liblcms
+LIBLCMS_SRC := $(TOPDIR)/src/java.desktop/share/native/liblcms
 LIBLCMS_CPPFLAGS += -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
-    -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \
-    -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+    -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \
+    -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
     $(LIBJAVA_HEADER_FLAGS) \
     #
 # The fast floor code loses precision.
@@ -419,7 +419,7 @@
     DISABLED_WARNINGS_clang := tautological-compare, \
     DISABLED_WARNINGS_solstudio := E_STATEMENT_NOT_REACHED, \
     DISABLED_WARNINGS_microsoft := 4819, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/liblcms/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/liblcms/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
@@ -444,12 +444,12 @@
 
 ################################################################################
 
-LIBJAVAJPEG_SRC += $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg
+LIBJAVAJPEG_SRC += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg
 
 BUILD_LIBJAVAJPEG_REORDER :=
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   ifneq ($(OPENJDK_TARGET_CPU), x86_64)
-    BUILD_LIBJAVAJPEG_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
+    BUILD_LIBJAVAJPEG_REORDER := $(TOPDIR)/make/mapfiles/libjpeg/reorder-$(OPENJDK_TARGET_CPU)
   endif
 endif
 
@@ -491,7 +491,7 @@
         $(LIBJAVA_HEADER_FLAGS) \
         -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop, \
     DISABLED_WARNINGS_gcc := clobbered, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjpeg/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libjpeg/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS := $(LIBJPEG_LIBS) $(JDKLIB_LIBS), \
@@ -514,34 +514,34 @@
 # Mac and Windows only use the native AWT lib, do not build libawt_headless
 ifeq ($(findstring $(OPENJDK_TARGET_OS), windows macosx),)
 
-  LIBAWT_HEADLESS_DIRS := $(JDK_TOPDIR)/src/java.desktop/unix/native/libawt_headless/awt \
-      $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
-      $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
+  LIBAWT_HEADLESS_DIRS := $(TOPDIR)/src/java.desktop/unix/native/libawt_headless/awt \
+      $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
+      $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d \
+      $(TOPDIR)/src/java.desktop/share/native/common/java2d \
+      $(TOPDIR)/src/java.desktop/share/native/common/font \
       #
 
   LIBAWT_HEADLESS_EXCLUDES := medialib
   LIBAWT_HEADLESS_CFLAGS := -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
       $(addprefix -I, $(LIBAWT_HEADLESS_DIRS)) \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/font \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/font \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/java2d/opengl \
       $(LIBJAVA_HEADER_FLAGS) \
       #
 
   LIBAWT_HEADLESS_REORDER :=
   ifeq ($(OPENJDK_TARGET_OS), solaris)
     ifneq ($(OPENJDK_TARGET_CPU), x86_64)
-      LIBAWT_HEADLESS_REORDER := $(JDK_TOPDIR)/make/mapfiles/libawt_headless/reorder-$(OPENJDK_TARGET_CPU)
+      LIBAWT_HEADLESS_REORDER := $(TOPDIR)/make/mapfiles/libawt_headless/reorder-$(OPENJDK_TARGET_CPU)
     endif
   endif
 
@@ -559,7 +559,7 @@
           $(LIBAWT_HEADLESS_CFLAGS), \
       DISABLED_WARNINGS_xlc := 1506-356, \
       DISABLED_WARNINGS_solstudio := E_EMPTY_TRANSLATION_UNIT, \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libawt_headless/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libawt_headless/mapfile-vers, \
       LDFLAGS := $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN), \
       LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
@@ -582,15 +582,15 @@
 
 ################################################################################
 
-LIBFONTMANAGER_SRC := $(JDK_TOPDIR)/src/java.desktop/share/native/libfontmanager \
-    $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libfontmanager
+LIBFONTMANAGER_SRC := $(TOPDIR)/src/java.desktop/share/native/libfontmanager \
+    $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libfontmanager
 LIBFONTMANAGER_CFLAGS := \
     $(addprefix -I, $(shell $(FIND) \
       $(LIBFONTMANAGER_SRC) \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/libawt \
-      $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/common \
-      $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common -type d)) \
+      $(TOPDIR)/src/java.desktop/share/native/libawt \
+      $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt \
+      $(TOPDIR)/src/java.desktop/share/native/common \
+      $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common -type d)) \
     -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
     $(LIBJAVA_HEADER_FLAGS) \
     #
@@ -624,7 +624,7 @@
 
 LIBFONTMANAGER_CFLAGS += $(FREETYPE_CFLAGS)
 # This may be overridden in a custom makefile
-BUILD_LIBFONTMANAGER_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libfontmanager/mapfile-vers
+BUILD_LIBFONTMANAGER_MAPFILE ?= $(TOPDIR)/make/mapfiles/libfontmanager/mapfile-vers
 BUILD_LIBFONTMANAGER_FONTLIB += $(FREETYPE_LIBS)
 
 LIBFONTMANAGER_OPTIMIZATION := HIGH
@@ -633,7 +633,7 @@
   LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
       X11TextRenderer.c
   LIBFONTMANAGER_OPTIMIZATION := HIGHEST
-  LIBFONTMANAGER_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows
+  LIBFONTMANAGER_CFLAGS += -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows
 else ifeq ($(OPENJDK_TARGET_OS), macosx)
   LIBFONTMANAGER_EXCLUDE_FILES += X11FontScaler.c \
       X11TextRenderer.c \
@@ -711,15 +711,15 @@
 ################################################################################
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
-  LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt
-  LIBJAWT_CFLAGS := -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d/windows \
+  LIBJAWT_SRC := $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt
+  LIBJAWT_CFLAGS := -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/windows \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libawt/java2d/windows \
       -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
-      -I$(JDK_TOPDIR)/src/java.desktop/windows/native/include \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
+      -I$(TOPDIR)/src/java.desktop/windows/native/include \
+      -I$(TOPDIR)/src/java.desktop/share/native/include \
       $(LIBJAVA_HEADER_FLAGS) \
       #
 
@@ -759,15 +759,15 @@
 else # OPENJDK_TARGET_OS not windows
 
   ifeq ($(OPENJDK_TARGET_OS), macosx)
-    LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/macosx/native/libjawt
+    LIBJAWT_SRC := $(TOPDIR)/src/java.desktop/macosx/native/libjawt
   else
-    LIBJAWT_SRC := $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt
+    LIBJAWT_SRC := $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjawt
   endif
   LIBJAWT_CFLAGS := \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \
-      -I$(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/common/awt \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS)/native/include \
+      -I$(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/include \
+      -I$(TOPDIR)/src/java.desktop/share/native/include \
       $(LIBJAVA_HEADER_FLAGS) \
       #
 
@@ -796,7 +796,7 @@
           $(LIBJAWT_CFLAGS), \
       CFLAGS_linux := $(HEADLESS_CFLAG), \
       CFLAGS_macosx := $(LIBJAWT_CFLAGS_macosx), \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libjawt/mapfile-vers, \
       LDFLAGS := $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN), \
       LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
@@ -826,42 +826,42 @@
 ifeq ($(ENABLE_HEADLESS_ONLY), false)
 
   LIBSPLASHSCREEN_DIRS := \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/libsplashscreen \
+      $(TOPDIR)/src/java.desktop/share/native/libjavajpeg \
+      $(TOPDIR)/src/java.desktop/share/native/libsplashscreen \
       #
 
   ifeq ($(USE_EXTERNAL_LIBGIF), true)
     GIFLIB_LIBS := -lgif
     LIBSPLASHSCREEN_EXCLUDES := giflib
   else
-    LIBSPLASHSCREEN_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/share/native/libsplashscreen/giflib
+    LIBSPLASHSCREEN_CFLAGS += -I$(TOPDIR)/src/java.desktop/share/native/libsplashscreen/giflib
   endif
 
   ifeq ($(USE_EXTERNAL_LIBJPEG), true)
     LIBJPEG_LIBS := -ljpeg
   else
-    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg
-    LIBJPEG_CFLAGS := -I$(JDK_TOPDIR)/src/java.desktop/share/native/libjavajpeg
+    LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/share/native/libjavajpeg
+    LIBJPEG_CFLAGS := -I$(TOPDIR)/src/java.desktop/share/native/libjavajpeg
   endif
 
   ifeq ($(USE_EXTERNAL_LIBPNG), false)
-    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/share/native/libsplashscreen/libpng
+    LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/share/native/libsplashscreen/libpng
   else
     LIBSPLASHSCREEN_EXCLUDES += libpng
   endif
 
   ifneq ($(OPENJDK_TARGET_OS), macosx)
-    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsplashscreen
+    LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libsplashscreen
   else
-    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/macosx/native/libsplashscreen
+    LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/macosx/native/libsplashscreen
   endif
 
   ifneq ($(filter $(OPENJDK_TARGET_OS),linux solaris aix), )
-    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale
+    LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/unix/native/common/awt/systemscale
   endif
 
   ifeq ($(OPENJDK_TARGET_OS), windows)
-    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.desktop/windows/native/common/awt/systemscale
+    LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.desktop/windows/native/common/awt/systemscale
   endif
   LIBSPLASHSCREEN_CFLAGS += -DSPLASHSCREEN -DPNG_NO_MMX_CODE -DPNG_ARM_NEON_OPT=0 \
       $(addprefix -I, $(LIBSPLASHSCREEN_DIRS)) \
@@ -870,7 +870,7 @@
 
   ifeq ($(OPENJDK_TARGET_OS), macosx)
     LIBSPLASHSCREEN_CFLAGS += -DWITH_MACOSX
-    LIBSPLASHSCREEN_CFLAGS += -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp
+    LIBSPLASHSCREEN_CFLAGS += -I$(TOPDIR)/src/java.desktop/macosx/native/libosxapp
 
     BUILD_LIBSPLASHSCREEN_java_awt_SplashScreen.c_CFLAGS := -x objective-c -O0
     BUILD_LIBSPLASHSCREEN_splashscreen_gfx_impl.c_CFLAGS := -x objective-c -O0
@@ -889,7 +889,7 @@
   LIBSPLASHSCREEN_LIBS :=
 
   ifneq ($(USE_EXTERNAL_LIBZ), true)
-    LIBSPLASHSCREEN_DIRS += $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib
+    LIBSPLASHSCREEN_DIRS += $(TOPDIR)/src/java.base/share/native/libzip/zlib
     LIBSPLASHSCREEN_CFLAGS += $(ZLIB_CPPFLAGS)
   endif
 
@@ -922,7 +922,7 @@
       DISABLED_WARNINGS_solstudio := E_NEWLINE_NOT_LAST E_DECLARATION_IN_CODE \
           E_STATEMENT_NOT_REACHED, \
       DISABLED_WARNINGS_microsoft := 4018 4244 4267, \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libsplashscreen/mapfile-vers, \
       LDFLAGS := $(LIBSPLASHSCREEN_LDFLAGS) $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN), \
       LIBS := $(JDKLIB_LIBS) $(LIBSPLASHSCREEN_LIBS) $(LIBZ) \
@@ -949,36 +949,36 @@
 ifeq ($(OPENJDK_TARGET_OS), macosx)
 
   LIBAWT_LWAWT_DIRS := \
-      $(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt \
-      $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/common/font \
-      $(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d \
+      $(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt \
+      $(TOPDIR)/src/java.desktop/unix/native/common/awt \
+      $(TOPDIR)/src/java.desktop/share/native/common/font \
+      $(TOPDIR)/src/java.desktop/share/native/common/java2d \
       #
 
   LIBAWT_LWAWT_CFLAGS := \
       $(addprefix -I, $(LIBAWT_LWAWT_DIRS)) \
       -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
-      -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \
-      -I$(JDK_TOPDIR)/src/java.desktop/unix/native/libawt_xawt/awt \
-      -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/font \
-      -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/awt/debug \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
-      -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/include \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/include \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d \
-      -I$(JDK_TOPDIR)/src/java.desktop/unix/native/libawt/java2d \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/libmlib_image/ \
-      -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp \
+      -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \
+      -I$(TOPDIR)/src/java.desktop/unix/native/libawt_xawt/awt \
+      -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/font \
+      -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/java2d/opengl \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/awt/debug \
+      -I$(TOPDIR)/src/java.desktop/share/native/common/java2d/opengl \
+      -I$(TOPDIR)/src/java.desktop/macosx/native/include \
+      -I$(TOPDIR)/src/java.desktop/share/native/include \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/awt/image/cvutils \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d \
+      -I$(TOPDIR)/src/java.desktop/unix/native/libawt/java2d \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/loops \
+      -I$(TOPDIR)/src/java.desktop/share/native/libawt/java2d/pipe \
+      -I$(TOPDIR)/src/java.desktop/share/native/libmlib_image/ \
+      -I$(TOPDIR)/src/java.desktop/macosx/native/libosxapp \
       $(LIBJAVA_HEADER_FLAGS) \
       #
 
   LIBAWT_LWAWT_EXFILES := fontpath.c awt_Font.c X11Color.c
-  LIBAWT_LWAWT_EXCLUDES := $(JDK_TOPDIR)/src/java.desktop/unix/native/common/awt/medialib
+  LIBAWT_LWAWT_EXCLUDES := $(TOPDIR)/src/java.desktop/unix/native/common/awt/medialib
 
   $(eval $(call SetupNativeCompilation,BUILD_LIBAWT_LWAWT, \
       LIBRARY := awt_lwawt, \
@@ -1032,14 +1032,14 @@
   $(eval $(call SetupNativeCompilation,BUILD_LIBOSXUI, \
       LIBRARY := osxui, \
       OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-      SRC := $(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxui, \
+      SRC := $(TOPDIR)/src/java.desktop/macosx/native/libosxui, \
       OPTIMIZATION := LOW, \
       CFLAGS := $(CFLAGS_JDKLIB) \
-          -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxui \
-          -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \
-          -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp \
-          -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
-          -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
+          -I$(TOPDIR)/src/java.desktop/macosx/native/libosxui \
+          -I$(TOPDIR)/src/java.desktop/macosx/native/libawt_lwawt/awt \
+          -I$(TOPDIR)/src/java.desktop/macosx/native/libosxapp \
+          -I$(TOPDIR)/src/java.base/share/native/libjava \
+          -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
           -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop,  \
       LDFLAGS := $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN) \
@@ -1070,4 +1070,4 @@
 ################################################################################
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, lib/Awt2dLibraries.gmk))
+$(eval $(call IncludeCustomExtension, , lib/Awt2dLibraries.gmk))
diff --git a/make/lib/CoreLibraries.gmk b/make/lib/CoreLibraries.gmk
index 224b339..6b6f1ed 100644
--- a/make/lib/CoreLibraries.gmk
+++ b/make/lib/CoreLibraries.gmk
@@ -26,7 +26,7 @@
 WIN_VERIFY_LIB := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libverify/verify.lib
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, lib/CoreLibraries.gmk))
+$(eval $(call IncludeCustomExtension, , lib/CoreLibraries.gmk))
 
 
 ##########################################################################################
@@ -51,7 +51,7 @@
   endif
 endif
 
-LIBFDLIBM_SRC := $(JDK_TOPDIR)/src/java.base/share/native/libfdlibm
+LIBFDLIBM_SRC := $(TOPDIR)/src/java.base/share/native/libfdlibm
 LIBFDLIBM_CFLAGS := -I$(LIBFDLIBM_SRC)
 
 ifneq ($(OPENJDK_TARGET_OS), macosx)
@@ -96,7 +96,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   ifneq ($(OPENJDK_TARGET_CPU), x86_64)
-    BUILD_LIBVERIFY_REORDER := $(JDK_TOPDIR)/make/mapfiles/libverify/reorder-$(OPENJDK_TARGET_CPU)
+    BUILD_LIBVERIFY_REORDER := $(TOPDIR)/make/mapfiles/libverify/reorder-$(OPENJDK_TARGET_CPU)
   endif
 endif
 
@@ -110,11 +110,11 @@
 $(eval $(call SetupNativeCompilation,BUILD_LIBVERIFY, \
     LIBRARY := verify, \
     OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libverify, \
+    SRC := $(TOPDIR)/src/java.base/share/native/libverify, \
     OPTIMIZATION := $(LIBVERIFY_OPTIMIZATION), \
     CFLAGS := $(CFLAGS_JDKLIB), \
     DISABLED_WARNINGS_microsoft := 4244 4267, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libverify/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libverify/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS_unix := -ljvm -lc, \
@@ -136,12 +136,12 @@
 LIBJAVA_SRC_DIRS += $(call FindSrcDirsForLib, java.base, java)
 
 LIBJAVA_CFLAGS := $(addprefix -I, $(LIBJAVA_SRC_DIRS)) \
-    -I$(JDK_TOPDIR)/src/java.base/share/native/libfdlibm \
+    -I$(TOPDIR)/src/java.base/share/native/libfdlibm \
     -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
     -DARCHPROPNAME='"$(OPENJDK_TARGET_CPU_OSARCH)"'
 
 # Make it possible to override this variable
-LIBJAVA_MAPFILE ?= $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers
+LIBJAVA_MAPFILE ?= $(TOPDIR)/make/mapfiles/libjava/mapfile-vers
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
   BUILD_LIBJAVA_java_props_md.c_CFLAGS := -x objective-c
@@ -150,7 +150,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   ifneq ($(OPENJDK_TARGET_CPU), x86_64)
-    LIBJAVA_REORDER := $(JDK_TOPDIR)/make/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU)
+    LIBJAVA_REORDER := $(TOPDIR)/make/mapfiles/libjava/reorder-$(OPENJDK_TARGET_CPU)
   endif
 endif
 
@@ -209,7 +209,7 @@
 BUILD_LIBZIP_REORDER :=
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   ifneq ($(OPENJDK_TARGET_CPU), x86_64)
-    BUILD_LIBZIP_REORDER := $(JDK_TOPDIR)/make/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU)
+    BUILD_LIBZIP_REORDER := $(TOPDIR)/make/mapfiles/libzip/reorder-$(OPENJDK_TARGET_CPU)
   endif
 endif
 
@@ -221,15 +221,15 @@
     LIBRARY := zip, \
     OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
     OPTIMIZATION := LOW, \
-    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libzip, \
+    SRC := $(TOPDIR)/src/java.base/share/native/libzip, \
     EXCLUDES := $(LIBZIP_EXCLUDES), \
     CFLAGS := $(CFLAGS_JDKLIB) \
         $(ZLIB_CPPFLAGS) \
-        -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
-        -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
+        -I$(TOPDIR)/src/java.base/share/native/libjava \
+        -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
         -I$(SUPPORT_OUTPUTDIR)/headers/java.base, \
     CFLAGS_unix := $(BUILD_LIBZIP_MMAP) -UDEBUG, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libzip/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libzip/mapfile-vers, \
     REORDER := $(BUILD_LIBZIP_REORDER), \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
@@ -254,9 +254,9 @@
 ##########################################################################################
 
 JIMAGELIB_CPPFLAGS := \
-    -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
-    -I$(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
-    -I$(JDK_TOPDIR)/src/java.base/share/native/libjimage \
+    -I$(TOPDIR)/src/java.base/share/native/libjava \
+    -I$(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjava \
+    -I$(TOPDIR)/src/java.base/share/native/libjimage \
     -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
     #
 
@@ -265,13 +265,13 @@
     TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
     OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
     OPTIMIZATION := LOW, \
-    SRC := $(JDK_TOPDIR)/src/java.base/share/native/libjimage \
-        $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjimage, \
+    SRC := $(TOPDIR)/src/java.base/share/native/libjimage \
+        $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libjimage, \
     EXCLUDES := $(LIBJIMAGE_EXCLUDES), \
     CFLAGS := $(CFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \
     CXXFLAGS := $(CXXFLAGS_JDKLIB) $(JIMAGELIB_CPPFLAGS), \
     CFLAGS_unix := -UDEBUG, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjimage/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libjimage/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LDFLAGS_windows := -export:JIMAGE_Open -export:JIMAGE_Close \
@@ -344,7 +344,7 @@
 ifneq ($(USE_EXTERNAL_LIBZ), true)
   LIBJLI_CFLAGS += $(ZLIB_CPPFLAGS)
   LIBJLI_EXTRA_FILES += \
-      $(addprefix $(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib/, \
+      $(addprefix $(TOPDIR)/src/java.base/share/native/libzip/zlib/, \
           inflate.c \
           inftrees.c \
           inffast.c \
@@ -365,7 +365,7 @@
     DISABLED_WARNINGS_solstudio := \
         E_ASM_DISABLES_OPTIMIZATION \
         E_STATEMENT_NOT_REACHED, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjli/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libjli/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LDFLAGS_linux := $(call SET_SHARED_LIBRARY_ORIGIN,/..), \
diff --git a/make/lib/Lib-java.base.gmk b/make/lib/Lib-java.base.gmk
index 345fda6..d2c5f85 100644
--- a/make/lib/Lib-java.base.gmk
+++ b/make/lib/Lib-java.base.gmk
@@ -26,8 +26,8 @@
 include LibCommon.gmk
 
 # Prepare the find cache.
-$(eval $(call FillCacheFind, $(wildcard $(JDK_TOPDIR)/src/java.base/*/native \
-    $(JDK_TOPDIR)/src/*/java.base/*/native)))
+$(eval $(call FillCacheFind, $(wildcard $(TOPDIR)/src/java.base/*/native \
+    $(TOPDIR)/src/*/java.base/*/native)))
 
 include CoreLibraries.gmk
 include NetworkingLibraries.gmk
diff --git a/make/lib/Lib-java.desktop.gmk b/make/lib/Lib-java.desktop.gmk
index 1043ce7..156ac90 100644
--- a/make/lib/Lib-java.desktop.gmk
+++ b/make/lib/Lib-java.desktop.gmk
@@ -26,8 +26,8 @@
 include LibCommon.gmk
 
 # Prepare the find cache.
-$(eval $(call FillCacheFind, $(wildcard $(JDK_TOPDIR)/src/java.desktop/*/native \
-    $(JDK_TOPDIR)/src/*/java.desktop/*/native)))
+$(eval $(call FillCacheFind, $(wildcard $(TOPDIR)/src/java.desktop/*/native \
+    $(TOPDIR)/src/*/java.desktop/*/native)))
 
 include LibosxLibraries.gmk
 include PlatformLibraries.gmk
diff --git a/make/lib/Lib-java.instrument.gmk b/make/lib/Lib-java.instrument.gmk
index 64f25d0..caee912 100644
--- a/make/lib/Lib-java.instrument.gmk
+++ b/make/lib/Lib-java.instrument.gmk
@@ -26,18 +26,18 @@
 include LibCommon.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, lib/Lib-java.instrument.gmk))
+$(eval $(call IncludeCustomExtension, , lib/Lib-java.instrument.gmk))
 
 ################################################################################
 
-LIBINSTRUMENT_SRC := $(JDK_TOPDIR)/src/java.instrument/share/native/libinstrument \
-    $(JDK_TOPDIR)/src/java.instrument/$(OPENJDK_TARGET_OS_TYPE)/native/libinstrument \
+LIBINSTRUMENT_SRC := $(TOPDIR)/src/java.instrument/share/native/libinstrument \
+    $(TOPDIR)/src/java.instrument/$(OPENJDK_TARGET_OS_TYPE)/native/libinstrument \
     #
 LIBINSTRUMENT_CFLAGS := $(CFLAGS_JDKLIB) \
     $(addprefix -I, $(LIBINSTRUMENT_SRC)) \
     -I$(SUPPORT_OUTPUTDIR)/headers/java.instrument \
-    -I$(JDK_TOPDIR)/src/java.base/share/native/libjli \
-    -I$(JDK_TOPDIR)/src/java.base/share/native/libjava \
+    -I$(TOPDIR)/src/java.base/share/native/libjli \
+    -I$(TOPDIR)/src/java.base/share/native/libjava \
     #
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
@@ -57,7 +57,7 @@
     CFLAGS := $(LIBINSTRUMENT_CFLAGS), \
     CFLAGS_debug := -DJPLIS_LOGGING, \
     CFLAGS_release := -DNO_JPLIS_LOGGING, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libinstrument/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN) \
         $(LIBINSTRUMENT_LDFLAGS), \
diff --git a/make/lib/Lib-java.management.gmk b/make/lib/Lib-java.management.gmk
index 1847e2e..e583ca3 100644
--- a/make/lib/Lib-java.management.gmk
+++ b/make/lib/Lib-java.management.gmk
@@ -26,12 +26,12 @@
 include LibCommon.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, lib/Lib-java.management.gmk))
+$(eval $(call IncludeCustomExtension, , lib/Lib-java.management.gmk))
 
 ################################################################################
 
-LIBMANAGEMENT_SRC += $(JDK_TOPDIR)/src/java.management/share/native/libmanagement 
-LIBMANAGEMENT_CFLAGS := -I$(JDK_TOPDIR)/src/java.management/share/native/include \
+LIBMANAGEMENT_SRC += $(TOPDIR)/src/java.management/share/native/libmanagement 
+LIBMANAGEMENT_CFLAGS := -I$(TOPDIR)/src/java.management/share/native/include \
     $(addprefix -I,$(LIBMANAGEMENT_SRC)) \
     -I$(SUPPORT_OUTPUTDIR)/headers/java.management \
     $(LIBJAVA_HEADER_FLAGS) \
@@ -50,7 +50,7 @@
     SRC := $(LIBMANAGEMENT_SRC), \
     OPTIMIZATION := $(LIBMANAGEMENT_OPTIMIZATION), \
     CFLAGS := $(CFLAGS_JDKLIB) $(LIBMANAGEMENT_CFLAGS), \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmanagement/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libmanagement/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS := $(JDKLIB_LIBS), \
diff --git a/make/lib/Lib-java.prefs.gmk b/make/lib/Lib-java.prefs.gmk
index 4652415..358ccec 100644
--- a/make/lib/Lib-java.prefs.gmk
+++ b/make/lib/Lib-java.prefs.gmk
@@ -28,9 +28,9 @@
 ################################################################################
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
-  LIBPREF_SRC_DIRS := $(JDK_TOPDIR)/src/java.prefs/macosx/native/libprefs
+  LIBPREF_SRC_DIRS := $(TOPDIR)/src/java.prefs/macosx/native/libprefs
 else
-  LIBPREF_SRC_DIRS := $(JDK_TOPDIR)/src/java.prefs/$(OPENJDK_TARGET_OS_TYPE)/native/libprefs
+  LIBPREF_SRC_DIRS := $(TOPDIR)/src/java.prefs/$(OPENJDK_TARGET_OS_TYPE)/native/libprefs
 endif
 
 $(eval $(call SetupNativeCompilation,BUILD_LIBPREFS, \
@@ -40,7 +40,7 @@
     OPTIMIZATION := HIGH, \
     CFLAGS := $(CFLAGS_JDKLIB) $(addprefix -I, $(LIBPREF_SRC_DIRS)) \
         $(LIBJAVA_HEADER_FLAGS), \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libprefs/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libprefs/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS_unix := -ljvm, \
diff --git a/make/lib/Lib-java.rmi.gmk b/make/lib/Lib-java.rmi.gmk
index c01e2f8..0e32650 100644
--- a/make/lib/Lib-java.rmi.gmk
+++ b/make/lib/Lib-java.rmi.gmk
@@ -30,10 +30,10 @@
 $(eval $(call SetupNativeCompilation,BUILD_LIBRMI, \
     LIBRARY := rmi, \
     OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-    SRC := $(JDK_TOPDIR)/src/java.rmi/share/native/librmi, \
+    SRC := $(TOPDIR)/src/java.rmi/share/native/librmi, \
     OPTIMIZATION := LOW, \
     CFLAGS := $(CFLAGS_JDKLIB) -I$(SUPPORT_OUTPUTDIR)/headers/java.rmi, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/librmi/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/librmi/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS_unix := -ljvm, \
diff --git a/make/lib/Lib-java.security.jgss.gmk b/make/lib/Lib-java.security.jgss.gmk
index 56b290b..d56006d 100644
--- a/make/lib/Lib-java.security.jgss.gmk
+++ b/make/lib/Lib-java.security.jgss.gmk
@@ -28,8 +28,8 @@
 ################################################################################
 
 ifneq ($(OPENJDK_TARGET_OS), windows)
-  LIBJ2GSS_SRC := $(JDK_TOPDIR)/src/java.security.jgss/share/native/libj2gss \
-      $(JDK_TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_TYPE)/native/libj2gss \
+  LIBJ2GSS_SRC := $(TOPDIR)/src/java.security.jgss/share/native/libj2gss \
+      $(TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_TYPE)/native/libj2gss \
       #
 
   $(eval $(call SetupNativeCompilation,BUILD_LIBJ2GSS, \
@@ -40,7 +40,7 @@
       CFLAGS := $(CFLAGS_JDKLIB) $(addprefix -I, $(LIBJ2GSS_SRC)) \
           $(LIBJAVA_HEADER_FLAGS) \
           -I$(SUPPORT_OUTPUTDIR)/headers/java.security.jgss, \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2gss/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libj2gss/mapfile-vers, \
       LDFLAGS := $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN), \
       LIBS := $(LIBDL), \
@@ -57,13 +57,13 @@
   BUILD_LIBKRB5_NAME :=
   ifeq ($(OPENJDK_TARGET_OS), windows)
     BUILD_LIBKRB5_NAME := w2k_lsa_auth
-    BUILD_LIBKRB5_SRC := $(JDK_TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_TYPE)/native/libw2k_lsa_auth
+    BUILD_LIBKRB5_SRC := $(TOPDIR)/src/java.security.jgss/$(OPENJDK_TARGET_OS_TYPE)/native/libw2k_lsa_auth
     BUILD_LIBKRB5_LIBS := advapi32.lib Secur32.lib netapi32.lib kernel32.lib user32.lib \
         gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib \
         ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib
   else ifeq ($(OPENJDK_TARGET_OS), macosx)
     BUILD_LIBKRB5_NAME := osxkrb5
-    BUILD_LIBKRB5_SRC := $(JDK_TOPDIR)/src/java.security.jgss/macosx/native/libosxkrb5
+    BUILD_LIBKRB5_SRC := $(TOPDIR)/src/java.security.jgss/macosx/native/libosxkrb5
     BUILD_LIBKRB5_LIBS := \
         -framework JavaNativeFoundation \
         -framework Cocoa \
diff --git a/make/lib/Lib-java.smartcardio.gmk b/make/lib/Lib-java.smartcardio.gmk
index e013203..a89046d 100644
--- a/make/lib/Lib-java.smartcardio.gmk
+++ b/make/lib/Lib-java.smartcardio.gmk
@@ -27,10 +27,10 @@
 
 ################################################################################
 
-LIBJ2PCSC_SRC := $(JDK_TOPDIR)/src/java.smartcardio/share/native/libj2pcsc \
-    $(JDK_TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pcsc
+LIBJ2PCSC_SRC := $(TOPDIR)/src/java.smartcardio/share/native/libj2pcsc \
+    $(TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pcsc
 LIBJ2PCSC_CPPFLAGS := $(addprefix -I,$(LIBJ2PCSC_SRC)) \
-    -I$(JDK_TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pcsc/MUSCLE \
+    -I$(TOPDIR)/src/java.smartcardio/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pcsc/MUSCLE \
     -I$(SUPPORT_OUTPUTDIR)/headers/java.smartcardio
 
 $(eval $(call SetupNativeCompilation,BUILD_LIBJ2PCSC, \
@@ -40,7 +40,7 @@
     CFLAGS_unix := -D__sun_jdk, \
     OPTIMIZATION := LOW, \
     CFLAGS := $(CFLAGS_JDKLIB) $(LIBJ2PCSC_CPPFLAGS), \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2pcsc/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libj2pcsc/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS_unix := $(LIBDL), \
diff --git a/make/lib/Lib-jdk.accessibility.gmk b/make/lib/Lib-jdk.accessibility.gmk
index 542b20f..1ddcfdf 100644
--- a/make/lib/Lib-jdk.accessibility.gmk
+++ b/make/lib/Lib-jdk.accessibility.gmk
@@ -29,13 +29,13 @@
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
 
-  ROOT_SRCDIR := $(JDK_TOPDIR)/src/jdk.accessibility/windows/native
+  ROOT_SRCDIR := $(TOPDIR)/src/jdk.accessibility/windows/native
   JAVA_AB_SRCDIR := $(ROOT_SRCDIR)/libjavaaccessbridge $(ROOT_SRCDIR)/common
   WIN_AB_SRCDIR := $(ROOT_SRCDIR)/libwindowsaccessbridge $(ROOT_SRCDIR)/common
   SYSINFO_SRCDIR := $(ROOT_SRCDIR)/libjabsysinfo
   ACCESSBRIDGE_CFLAGS := -I$(SUPPORT_OUTPUTDIR)/headers/jdk.accessibility \
-      -I$(JDK_TOPDIR)/src/java.desktop/windows/native/include \
-      -I$(JDK_TOPDIR)/src/java.desktop/share/native/include
+      -I$(TOPDIR)/src/java.desktop/windows/native/include \
+      -I$(TOPDIR)/src/java.desktop/share/native/include
 
   define SetupJavaDLL
     # Parameter 1 Suffix
diff --git a/make/lib/Lib-jdk.attach.gmk b/make/lib/Lib-jdk.attach.gmk
index 552b855..b3fdb3b 100644
--- a/make/lib/Lib-jdk.attach.gmk
+++ b/make/lib/Lib-jdk.attach.gmk
@@ -43,7 +43,7 @@
         -I$(SUPPORT_OUTPUTDIR)/headers/jdk.attach \
         $(LIBJAVA_HEADER_FLAGS) $(LIBATTACH_CFLAGS), \
     CFLAGS_windows := /Gy, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libattach/mapfile-$(OPENJDK_TARGET_OS), \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libattach/mapfile-$(OPENJDK_TARGET_OS), \
     VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
     RC_FLAGS := $(RC_FLAGS) \
         -D "JDK_FNAME=attach.dll" \
@@ -51,7 +51,7 @@
         -D "JDK_FTYPE=0x2L", \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
-    LDFLAGS_windows := -order:@$(JDK_TOPDIR)/make/mapfiles/libattach/reorder-windows-$(OPENJDK_TARGET_CPU), \
+    LDFLAGS_windows := -order:@$(TOPDIR)/make/mapfiles/libattach/reorder-windows-$(OPENJDK_TARGET_CPU), \
     LIBS := $(JDKLIB_LIBS), \
     LIBS_solaris := -ldoor, \
     LIBS_windows := $(WIN_JAVA_LIB) advapi32.lib psapi.lib, \
diff --git a/make/lib/Lib-jdk.crypto.cryptoki.gmk b/make/lib/Lib-jdk.crypto.cryptoki.gmk
index 5abb592..ff1467c 100644
--- a/make/lib/Lib-jdk.crypto.cryptoki.gmk
+++ b/make/lib/Lib-jdk.crypto.cryptoki.gmk
@@ -27,8 +27,8 @@
 
 ################################################################################
 
-LIBJ2PKCS11_SRC := $(JDK_TOPDIR)/src/jdk.crypto.cryptoki/share/native/libj2pkcs11 \
-    $(JDK_TOPDIR)/src/jdk.crypto.cryptoki/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pkcs11
+LIBJ2PKCS11_SRC := $(TOPDIR)/src/jdk.crypto.cryptoki/share/native/libj2pkcs11 \
+    $(TOPDIR)/src/jdk.crypto.cryptoki/$(OPENJDK_TARGET_OS_TYPE)/native/libj2pkcs11
 
 $(eval $(call SetupNativeCompilation,BUILD_LIBJ2PKCS11, \
     LIBRARY := j2pkcs11, \
@@ -38,7 +38,7 @@
     CFLAGS := $(CFLAGS_JDKLIB) $(addprefix -I, $(LIBJ2PKCS11_SRC)) \
         $(LIBJAVA_HEADER_FLAGS) \
         -I$(SUPPORT_OUTPUTDIR)/headers/jdk.crypto.cryptoki, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2pkcs11/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libj2pkcs11/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS_unix := $(LIBDL), \
diff --git a/make/lib/Lib-jdk.crypto.ec.gmk b/make/lib/Lib-jdk.crypto.ec.gmk
index 8f59237..c71bc4f 100644
--- a/make/lib/Lib-jdk.crypto.ec.gmk
+++ b/make/lib/Lib-jdk.crypto.ec.gmk
@@ -29,7 +29,7 @@
 
 ifeq ($(ENABLE_INTREE_EC), true)
 
-  LIBSUNEC_SRC := $(JDK_TOPDIR)/src/jdk.crypto.ec/share/native/libsunec
+  LIBSUNEC_SRC := $(TOPDIR)/src/jdk.crypto.ec/share/native/libsunec
   BUILD_LIBSUNEC_FLAGS := $(addprefix -I, $(SUNEC_SRC))
 
   #
@@ -56,7 +56,7 @@
           $(BUILD_LIBSUNEC_FLAGS), \
       DISABLED_WARNINGS_gcc := sign-compare, \
       DISABLED_WARNINGS_microsoft := 4101 4244 4146 4018, \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsunec/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libsunec/mapfile-vers, \
       LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK), \
       LDFLAGS_macosx := $(call SET_SHARED_LIBRARY_ORIGIN), \
       LIBS := $(LIBCXX), \
diff --git a/make/lib/Lib-jdk.crypto.mscapi.gmk b/make/lib/Lib-jdk.crypto.mscapi.gmk
index ea73c1c..76d105a 100644
--- a/make/lib/Lib-jdk.crypto.mscapi.gmk
+++ b/make/lib/Lib-jdk.crypto.mscapi.gmk
@@ -29,7 +29,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
 
-  LIBSUNMSCAPI_SRC := $(JDK_TOPDIR)/src/jdk.crypto.mscapi/$(OPENJDK_TARGET_OS_TYPE)/native/libsunmscapi
+  LIBSUNMSCAPI_SRC := $(TOPDIR)/src/jdk.crypto.mscapi/$(OPENJDK_TARGET_OS_TYPE)/native/libsunmscapi
 
   $(eval $(call SetupNativeCompilation,BUILD_LIBSUNMSCAPI, \
       LIBRARY := sunmscapi, \
diff --git a/make/lib/Lib-jdk.crypto.ucrypto.gmk b/make/lib/Lib-jdk.crypto.ucrypto.gmk
index 81f51e1..92c3075 100644
--- a/make/lib/Lib-jdk.crypto.ucrypto.gmk
+++ b/make/lib/Lib-jdk.crypto.ucrypto.gmk
@@ -29,7 +29,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), solaris)
 
-  LIBJ2UCRYPTO_SRC := $(JDK_TOPDIR)/src/jdk.crypto.ucrypto/solaris/native/libj2ucrypto
+  LIBJ2UCRYPTO_SRC := $(TOPDIR)/src/jdk.crypto.ucrypto/solaris/native/libj2ucrypto
 
   $(eval $(call SetupNativeCompilation,BUILD_LIBJ2UCRYPTO, \
       LIBRARY := j2ucrypto, \
@@ -38,7 +38,7 @@
       OPTIMIZATION := LOW, \
       CFLAGS := $(CFLAGS_JDKLIB) \
           $(addprefix -I, $(LIBJ2UCRYPTO_SRC)), \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libj2ucrypto/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libj2ucrypto/mapfile-vers, \
       LDFLAGS := $(LDFLAGS_JDKLIB), \
       LIBS := $(LIBDL), \
       LIBS_solaris := -lc, \
diff --git a/make/lib/Lib-jdk.hotspot.agent.gmk b/make/lib/Lib-jdk.hotspot.agent.gmk
index f6b4a22..bd8cdaa 100644
--- a/make/lib/Lib-jdk.hotspot.agent.gmk
+++ b/make/lib/Lib-jdk.hotspot.agent.gmk
@@ -25,7 +25,7 @@
 
 include NativeCompilation.gmk
 
-$(eval $(call IncludeCustomExtension, hotspot, lib/Lib-jdk.hotspot.agent.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/lib/Lib-jdk.hotspot.agent.gmk))
 
 ################################################################################
 
@@ -33,17 +33,17 @@
   DISABLE_MAPFILES := true
 endif
 
-SA_TOPDIR := $(HOTSPOT_TOPDIR)/src/jdk.hotspot.agent
+SA_TOPDIR := $(TOPDIR)/src/jdk.hotspot.agent
 
 # Defaults for most platforms
 SA_TOOLCHAIN := TOOLCHAIN_DEFAULT
 SA_NAME := saproc
 SA_SRC += $(SA_TOPDIR)/share/native/libsaproc $(SA_TOPDIR)/$(OPENJDK_TARGET_OS)/native/libsaproc
-SA_MAPFILE := $(HOTSPOT_TOPDIR)/make/mapfiles/libsaproc/mapfile-$(OPENJDK_TARGET_OS)
+SA_MAPFILE := $(TOPDIR)/make/mapfiles/libsaproc/mapfile-$(OPENJDK_TARGET_OS)
 SA_INCLUDES := \
     $(addprefix -I, $(SA_SRC)) \
     -I$(SUPPORT_OUTPUTDIR)/headers/jdk.hotspot.agent \
-    -I$(HOTSPOT_TOPDIR)/src/os/$(OPENJDK_TARGET_OS) \
+    -I$(TOPDIR)/src/hotspot/os/$(OPENJDK_TARGET_OS) \
     #
 
 ifeq ($(OPENJDK_TARGET_CPU), x86_64)
diff --git a/make/lib/Lib-jdk.internal.le.gmk b/make/lib/Lib-jdk.internal.le.gmk
index cd9eaba..8b2d371 100644
--- a/make/lib/Lib-jdk.internal.le.gmk
+++ b/make/lib/Lib-jdk.internal.le.gmk
@@ -29,7 +29,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
 
-  LIBLE_SRC := $(JDK_TOPDIR)/src/jdk.internal.le/$(OPENJDK_TARGET_OS_TYPE)/native/lible \
+  LIBLE_SRC := $(TOPDIR)/src/jdk.internal.le/$(OPENJDK_TARGET_OS_TYPE)/native/lible \
       #
   LIBLE_CPPFLAGS := \
       $(addprefix -I, $(LIBLE_SRC)) \
diff --git a/make/lib/Lib-jdk.jdi.gmk b/make/lib/Lib-jdk.jdi.gmk
index f74b1c2..1b7b83f 100644
--- a/make/lib/Lib-jdk.jdi.gmk
+++ b/make/lib/Lib-jdk.jdi.gmk
@@ -29,13 +29,13 @@
 
 ifeq ($(OPENJDK_TARGET_OS), windows)
 
-  LIBDT_SHMEM_SRC := $(JDK_TOPDIR)/src/jdk.jdi/share/native/libdt_shmem \
-      $(JDK_TOPDIR)/src/jdk.jdi/$(OPENJDK_TARGET_OS_TYPE)/native/libdt_shmem \
+  LIBDT_SHMEM_SRC := $(TOPDIR)/src/jdk.jdi/share/native/libdt_shmem \
+      $(TOPDIR)/src/jdk.jdi/$(OPENJDK_TARGET_OS_TYPE)/native/libdt_shmem \
       #
   LIBDT_SHMEM_CPPFLAGS := -I$(INCLUDEDIR) -I$(JDK_OUTPUTDIR)/include/$(OPENJDK_TARGET_OS) \
       $(addprefix -I, $(LIBDT_SHMEM_SRC)) \
-      -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
-      -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/include \
+      -I$(TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
+      -I$(TOPDIR)/src/jdk.jdwp.agent/share/native/include \
       -I$(SUPPORT_OUTPUTDIR)/headers/jdk.jdi \
       #
 
diff --git a/make/lib/Lib-jdk.jdwp.agent.gmk b/make/lib/Lib-jdk.jdwp.agent.gmk
index fb5de3e..59cc4f6 100644
--- a/make/lib/Lib-jdk.jdwp.agent.gmk
+++ b/make/lib/Lib-jdk.jdwp.agent.gmk
@@ -27,13 +27,13 @@
 
 ################################################################################
 
-LIBDT_SOCKET_SRC := $(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libdt_socket \
-    $(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libdt_socket
+LIBDT_SOCKET_SRC := $(TOPDIR)/src/jdk.jdwp.agent/share/native/libdt_socket \
+    $(TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libdt_socket
 LIBDT_SOCKET_CPPFLAGS := \
     $(addprefix -I, $(LIBDT_SOCKET_SRC)) \
-    -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
-    -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp \
-    -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/include \
+    -I$(TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
+    -I$(TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp \
+    -I$(TOPDIR)/src/jdk.jdwp.agent/share/native/include \
     #
 
 $(eval $(call SetupNativeCompilation,BUILD_LIBDT_SOCKET, \
@@ -43,7 +43,7 @@
     OPTIMIZATION := LOW, \
     CFLAGS := $(CFLAGS_JDKLIB) -DUSE_MMAP \
         $(LIBDT_SOCKET_CPPFLAGS), \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libdt_socket/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libdt_socket/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LDFLAGS_windows := -export:jdwpTransport_OnLoad, \
@@ -65,11 +65,11 @@
 
 ################################################################################
 
-LIBJDWP_SRC := $(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp \
-    $(JDK_TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libjdwp
+LIBJDWP_SRC := $(TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp \
+    $(TOPDIR)/src/jdk.jdwp.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libjdwp
 LIBJDWP_CPPFLAGS := \
-    -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
-    -I$(JDK_TOPDIR)/src/jdk.jdwp.agent/share/native/include \
+    -I$(TOPDIR)/src/jdk.jdwp.agent/share/native/libjdwp/export \
+    -I$(TOPDIR)/src/jdk.jdwp.agent/share/native/include \
     $(addprefix -I, $(LIBJDWP_SRC))
 
 # JDWP_LOGGING causes log messages to be compiled into the library.
@@ -81,7 +81,7 @@
     CFLAGS := $(CFLAGS_JDKLIB) -DJDWP_LOGGING \
         $(LIBJDWP_CPPFLAGS) \
         -I$(SUPPORT_OUTPUTDIR)/headers/jdk.jdwp.agent, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjdwp/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libjdwp/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS := $(JDKLIB_LIBS), \
diff --git a/make/lib/Lib-jdk.management.agent.gmk b/make/lib/Lib-jdk.management.agent.gmk
index 46e7728..630163c 100644
--- a/make/lib/Lib-jdk.management.agent.gmk
+++ b/make/lib/Lib-jdk.management.agent.gmk
@@ -27,7 +27,7 @@
 
 ################################################################################
 
-LIBMANAGEMENT_AGENT_SRC += $(JDK_TOPDIR)/src/jdk.management.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libmanagement_agent
+LIBMANAGEMENT_AGENT_SRC += $(TOPDIR)/src/jdk.management.agent/$(OPENJDK_TARGET_OS_TYPE)/native/libmanagement_agent
 LIBMANAGEMENT_AGENT_CFLAGS := $(addprefix -I,$(LIBMANAGEMENT_AGENT_SRC)) \
     -I$(SUPPORT_OUTPUTDIR)/headers/jdk.management.agent \
     $(LIBJAVA_HEADER_FLAGS) \
@@ -39,7 +39,7 @@
     SRC := $(LIBMANAGEMENT_AGENT_SRC), \
     OPTIMIZATION := LOW, \
     CFLAGS := $(CFLAGS_JDKLIB) $(LIBMANAGEMENT_AGENT_CFLAGS), \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmanagement_agent/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libmanagement_agent/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS := $(JDKLIB_LIBS), \
diff --git a/make/lib/Lib-jdk.management.gmk b/make/lib/Lib-jdk.management.gmk
index 7f38553..f6f6804 100644
--- a/make/lib/Lib-jdk.management.gmk
+++ b/make/lib/Lib-jdk.management.gmk
@@ -26,14 +26,14 @@
 include LibCommon.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, lib/Lib-jdk.management.gmk))
+$(eval $(call IncludeCustomExtension, , lib/Lib-jdk.management.gmk))
 
 ################################################################################
 
-LIBMANAGEMENT_EXT_SRC += $(JDK_TOPDIR)/src/jdk.management/share/native/libmanagement_ext \
-    $(JDK_TOPDIR)/src/jdk.management/$(OPENJDK_TARGET_OS_TYPE)/native/libmanagement_ext       \
-    $(JDK_TOPDIR)/src/jdk.management/$(OPENJDK_TARGET_OS)/native/libmanagement_ext
-LIBMANAGEMENT_EXT_CFLAGS := -I$(JDK_TOPDIR)/src/java.management/share/native/include \
+LIBMANAGEMENT_EXT_SRC += $(TOPDIR)/src/jdk.management/share/native/libmanagement_ext \
+    $(TOPDIR)/src/jdk.management/$(OPENJDK_TARGET_OS_TYPE)/native/libmanagement_ext       \
+    $(TOPDIR)/src/jdk.management/$(OPENJDK_TARGET_OS)/native/libmanagement_ext
+LIBMANAGEMENT_EXT_CFLAGS := -I$(TOPDIR)/src/java.management/share/native/include \
     $(addprefix -I,$(LIBMANAGEMENT_EXT_SRC)) \
     -I$(SUPPORT_OUTPUTDIR)/headers/jdk.management \
     $(LIBJAVA_HEADER_FLAGS) \
@@ -60,7 +60,7 @@
     LANG := C, \
     OPTIMIZATION := $(LIBMANAGEMENT_EXT_OPTIMIZATION), \
     CFLAGS := $(CFLAGS_JDKLIB) $(LIBMANAGEMENT_EXT_CFLAGS), \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libmanagement_ext/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libmanagement_ext/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS := $(JDKLIB_LIBS), \
diff --git a/make/lib/Lib-jdk.net.gmk b/make/lib/Lib-jdk.net.gmk
index 69c789b..b085933 100644
--- a/make/lib/Lib-jdk.net.gmk
+++ b/make/lib/Lib-jdk.net.gmk
@@ -32,10 +32,10 @@
   $(eval $(call SetupNativeCompilation, BUILD_LIBEXTNET, \
       LIBRARY := extnet, \
       OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-      SRC := $(JDK_TOPDIR)/src/jdk.net/solaris/native/libextnet, \
+      SRC := $(TOPDIR)/src/jdk.net/solaris/native/libextnet, \
       OPTIMIZATION := LOW, \
       CFLAGS := $(CFLAGS_JDKLIB) -I$(SUPPORT_OUTPUTDIR)/headers/jdk.net, \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libextnet/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libextnet/mapfile-vers, \
       LDFLAGS := $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN), \
       LIBS := -lsocket -lc -ljava, \
diff --git a/make/lib/Lib-jdk.pack.gmk b/make/lib/Lib-jdk.pack.gmk
index cc482c9..7b8f970 100644
--- a/make/lib/Lib-jdk.pack.gmk
+++ b/make/lib/Lib-jdk.pack.gmk
@@ -30,17 +30,17 @@
 $(eval $(call SetupNativeCompilation,BUILD_LIBUNPACK, \
     LIBRARY := unpack, \
     OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-    SRC := $(JDK_TOPDIR)/src/jdk.pack/share/native/libunpack \
-        $(JDK_TOPDIR)/src/jdk.pack/share/native/common-unpack, \
+    SRC := $(TOPDIR)/src/jdk.pack/share/native/libunpack \
+        $(TOPDIR)/src/jdk.pack/share/native/common-unpack, \
     TOOLCHAIN := TOOLCHAIN_LINK_CXX, \
     OPTIMIZATION := LOW, \
     CFLAGS := $(CXXFLAGS_JDKLIB) \
         -DNO_ZLIB -DUNPACK_JNI -DFULL \
         -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
-        -I$(JDK_TOPDIR)/src/jdk.pack/share/native/common-unpack \
+        -I$(TOPDIR)/src/jdk.pack/share/native/common-unpack \
         $(LIBJAVA_HEADER_FLAGS), \
     CFLAGS_release := -DPRODUCT, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libunpack/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libunpack/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) $(LDFLAGS_CXX_JDK) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LDFLAGS_windows := -map:$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpack.map -debug, \
diff --git a/make/lib/Lib-jdk.sctp.gmk b/make/lib/Lib-jdk.sctp.gmk
index a31c0e7..d40d70e 100644
--- a/make/lib/Lib-jdk.sctp.gmk
+++ b/make/lib/Lib-jdk.sctp.gmk
@@ -33,16 +33,16 @@
     $(eval $(call SetupNativeCompilation,BUILD_LIBSCTP, \
         LIBRARY := sctp, \
         OUTPUT_DIR := $(INSTALL_LIBRARIES_HERE), \
-        SRC := $(JDK_TOPDIR)/src/jdk.sctp/$(OPENJDK_TARGET_OS_TYPE)/native/libsctp, \
+        SRC := $(TOPDIR)/src/jdk.sctp/$(OPENJDK_TARGET_OS_TYPE)/native/libsctp, \
         OPTIMIZATION := LOW, \
         CFLAGS := $(CFLAGS_JDKLIB) \
-            -I $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/ch \
-            -I $(JDK_TOPDIR)/src/java.base/share/native/libnio/ch \
+            -I $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/ch \
+            -I $(TOPDIR)/src/java.base/share/native/libnio/ch \
             $(addprefix -I, $(call FindSrcDirsForLib, java.base, net)) \
             $(LIBJAVA_HEADER_FLAGS) \
             -I$(SUPPORT_OUTPUTDIR)/headers/jdk.sctp \
             -I$(SUPPORT_OUTPUTDIR)/headers/java.base, \
-        MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libsctp/mapfile-vers, \
+        MAPFILE := $(TOPDIR)/make/mapfiles/libsctp/mapfile-vers, \
         LDFLAGS := $(LDFLAGS_JDKLIB) \
             $(call SET_SHARED_LIBRARY_ORIGIN), \
         LIBS_unix := -lnio -lnet -ljava -ljvm, \
diff --git a/make/lib/Lib-jdk.security.auth.gmk b/make/lib/Lib-jdk.security.auth.gmk
index e37e327..996cf9a 100644
--- a/make/lib/Lib-jdk.security.auth.gmk
+++ b/make/lib/Lib-jdk.security.auth.gmk
@@ -30,7 +30,7 @@
 LIBJAAS_MAPFILE :=
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   # only on solaris...wonder why
-  LIBJAAS_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjaas/mapfile-vers
+  LIBJAAS_MAPFILE := $(TOPDIR)/make/mapfiles/libjaas/mapfile-vers
 endif
 
 LIBJAAS_NAME := jaas_unix
diff --git a/make/lib/LibCommon.gmk b/make/lib/LibCommon.gmk
index 4e1cab9..112a234 100644
--- a/make/lib/LibCommon.gmk
+++ b/make/lib/LibCommon.gmk
@@ -26,11 +26,11 @@
 include NativeCompilation.gmk
 
 # Hook to include the corresponding custom file, if present.
-$(eval $(call IncludeCustomExtension, jdk, lib/LibCommon.gmk))
+$(eval $(call IncludeCustomExtension, , lib/LibCommon.gmk))
 
 ################################################################################
 
-GLOBAL_VERSION_INFO_RESOURCE := $(JDK_TOPDIR)/src/java.base/windows/native/common/version.rc
+GLOBAL_VERSION_INFO_RESOURCE := $(TOPDIR)/src/java.base/windows/native/common/version.rc
 
 # Absolute paths to lib files on windows for use in LDFLAGS. Should figure out a more
 # elegant solution to this.
@@ -46,9 +46,9 @@
 # Param 2 - library name
 FindSrcDirsForLib += \
   $(call uniq, $(wildcard \
-      $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \
-      $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
-      $(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
+      $(TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \
+      $(TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
+      $(TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
 
 ################################################################################
 # Find a library
@@ -73,7 +73,7 @@
 ifeq ($(USE_EXTERNAL_LIBZ), true)
   LIBZ := -lz
 else
-  ZLIB_CPPFLAGS := -I$(JDK_TOPDIR)/src/java.base/share/native/libzip/zlib
+  ZLIB_CPPFLAGS := -I$(TOPDIR)/src/java.base/share/native/libzip/zlib
 endif
 
 ###############################################################################
diff --git a/make/lib/LibosxLibraries.gmk b/make/lib/LibosxLibraries.gmk
index 91ab645..d7a99ab 100644
--- a/make/lib/LibosxLibraries.gmk
+++ b/make/lib/LibosxLibraries.gmk
@@ -27,9 +27,9 @@
 
   ################################################################################
 
-  LIBOSX_DIRS := $(JDK_TOPDIR)/src/java.desktop/macosx/native/libosx
+  LIBOSX_DIRS := $(TOPDIR)/src/java.desktop/macosx/native/libosx
   LIBOSX_CFLAGS := -I$(LIBOSX_DIRS) \
-      -I$(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp \
+      -I$(TOPDIR)/src/java.desktop/macosx/native/libosxapp \
       $(LIBJAVA_HEADER_FLAGS) \
       -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
       #
diff --git a/make/lib/NetworkingLibraries.gmk b/make/lib/NetworkingLibraries.gmk
index 90257b2..fbfecde 100644
--- a/make/lib/NetworkingLibraries.gmk
+++ b/make/lib/NetworkingLibraries.gmk
@@ -36,7 +36,7 @@
     DISABLED_WARNINGS_clang := parentheses-equality constant-logical-operand, \
     DISABLED_WARNINGS_microsoft := 4244 4047 4133 4996, \
     DISABLED_WARNINGS_solstudio := E_ARG_INCOMPATIBLE_WITH_ARG_L, \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnet/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libnet/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LDFLAGS_windows := -delayload:secur32.dll -delayload:iphlpapi.dll, \
diff --git a/make/lib/NioLibraries.gmk b/make/lib/NioLibraries.gmk
index 4a48ab1..2d298dd 100644
--- a/make/lib/NioLibraries.gmk
+++ b/make/lib/NioLibraries.gmk
@@ -24,14 +24,14 @@
 #
 
 BUILD_LIBNIO_SRC := \
-    $(JDK_TOPDIR)/src/java.base/share/native/libnio \
-    $(JDK_TOPDIR)/src/java.base/share/native/libnio/ch \
-    $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio \
+    $(TOPDIR)/src/java.base/share/native/libnio \
+    $(TOPDIR)/src/java.base/share/native/libnio/ch \
+    $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio \
     $(sort $(wildcard \
-      $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/ch \
-      $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/fs \
-      $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/ch \
-      $(JDK_TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/fs)) \
+      $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/ch \
+      $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS_TYPE)/native/libnio/fs \
+      $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/ch \
+      $(TOPDIR)/src/java.base/$(OPENJDK_TARGET_OS)/native/libnio/fs)) \
     #
 
 BUILD_LIBNIO_CFLAGS := \
@@ -41,19 +41,19 @@
     $(addprefix -I, $(BUILD_LIBNET_SRC))
 
 ifeq ($(OPENJDK_TARGET_OS), linux)
-  BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
+  BUILD_LIBNIO_MAPFILE := $(TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
-  BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
+  BUILD_LIBNIO_MAPFILE := $(TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), solaris)
-  BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
+  BUILD_LIBNIO_MAPFILE := $(TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), aix)
-  BUILD_LIBNIO_MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
+  BUILD_LIBNIO_MAPFILE := $(TOPDIR)/make/mapfiles/libnio/mapfile-$(OPENJDK_TARGET_OS)
 endif
 
 $(eval $(call SetupNativeCompilation,BUILD_LIBNIO, \
diff --git a/make/lib/PlatformLibraries.gmk b/make/lib/PlatformLibraries.gmk
index 85038b9..0cba6a3 100644
--- a/make/lib/PlatformLibraries.gmk
+++ b/make/lib/PlatformLibraries.gmk
@@ -27,7 +27,7 @@
 
 ifeq ($(OPENJDK_TARGET_OS), macosx)
 
-  LIBOSXAPP_SRC := $(JDK_TOPDIR)/src/java.desktop/macosx/native/libosxapp
+  LIBOSXAPP_SRC := $(TOPDIR)/src/java.desktop/macosx/native/libosxapp
 
   $(eval $(call SetupNativeCompilation,BUILD_LIBOSXAPP, \
       LIBRARY := osxapp, \
diff --git a/make/lib/SecurityLibraries.gmk b/make/lib/SecurityLibraries.gmk
index be73c52..4d96461 100644
--- a/make/lib/SecurityLibraries.gmk
+++ b/make/lib/SecurityLibraries.gmk
@@ -31,7 +31,7 @@
 
   ################################################################################
 
-    LIBOSXSECURITY_DIRS := $(JDK_TOPDIR)/src/java.base/macosx/native/libosxsecurity
+    LIBOSXSECURITY_DIRS := $(TOPDIR)/src/java.base/macosx/native/libosxsecurity
     LIBOSXSECURITY_CFLAGS := -I$(LIBOSXSECURITY_DIRS) \
         $(LIBJAVA_HEADER_FLAGS) \
         -I$(SUPPORT_OUTPUTDIR)/headers/java.base \
diff --git a/make/lib/SoundLibraries.gmk b/make/lib/SoundLibraries.gmk
index 77ed362..2174476 100644
--- a/make/lib/SoundLibraries.gmk
+++ b/make/lib/SoundLibraries.gmk
@@ -24,8 +24,8 @@
 #
 
 LIBJSOUND_SRC_DIRS := \
-    $(JDK_TOPDIR)/src/java.desktop/share/native/libjsound \
-    $(JDK_TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjsound \
+    $(TOPDIR)/src/java.desktop/share/native/libjsound \
+    $(TOPDIR)/src/java.desktop/$(OPENJDK_TARGET_OS_TYPE)/native/libjsound \
     #
 LIBJSOUND_CFLAGS := \
     -I$(SUPPORT_OUTPUTDIR)/headers/java.desktop \
@@ -86,7 +86,7 @@
       -DUSE_DAUDIO=TRUE \
       -DUSE_PLATFORM_MIDI_OUT=TRUE \
       -DUSE_PLATFORM_MIDI_IN=TRUE
-  LIBJSOUND_SRC_DIRS += $(JDK_TOPDIR)/src/java.desktop/macosx/native/libjsound
+  LIBJSOUND_SRC_DIRS += $(TOPDIR)/src/java.desktop/macosx/native/libjsound
   LIBJSOUND_SRC_FILES += \
       PLATFORM_API_MacOSX_Utils.cpp \
       PLATFORM_API_MacOSX_PCM.cpp \
@@ -124,7 +124,7 @@
     CFLAGS := $(CFLAGS_JDKLIB) \
         $(LIBJSOUND_CFLAGS), \
     CXXFLAGS := $(CXXFLAGS_JDKLIB) $(LIBJSOUND_CFLAGS), \
-    MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsound/mapfile-vers, \
+    MAPFILE := $(TOPDIR)/make/mapfiles/libjsound/mapfile-vers, \
     LDFLAGS := $(LDFLAGS_JDKLIB) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LIBS_unix := -ljava -ljvm, \
@@ -169,7 +169,7 @@
           -DUSE_PORTS=TRUE \
           -DUSE_PLATFORM_MIDI_OUT=TRUE \
           -DUSE_PLATFORM_MIDI_IN=TRUE, \
-      MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjsoundalsa/mapfile-vers, \
+      MAPFILE := $(TOPDIR)/make/mapfiles/libjsoundalsa/mapfile-vers, \
       LDFLAGS := $(LDFLAGS_JDKLIB) \
           $(call SET_SHARED_LIBRARY_ORIGIN), \
       LIBS := $(ALSA_LIBS) -ljava -ljvm, \
diff --git a/make/nashorn/build-nasgen.xml b/make/nashorn/build-nasgen.xml
index d233f55..4bd18d4 100644
--- a/make/nashorn/build-nasgen.xml
+++ b/make/nashorn/build-nasgen.xml
@@ -21,12 +21,12 @@
  or visit www.oracle.com if you need additional information or have any
  questions.
 -->
-<project name="build-nasgen" default="run-nasgen" basedir="..">
+<project name="build-nasgen" default="run-nasgen" basedir=".">
     <description>Builds and runs nasgen.</description>
     <import file="build.xml"/>
 
     <target name="build-nasgen" depends="prepare">
-        <ant inheritAll="false" dir="${basedir}/buildtools/nasgen"
+        <ant inheritAll="false" dir="${nashorn.make.dir}/buildtools/nasgen"
             antfile="build.xml" target="jar"/>
     </target>
 
@@ -34,7 +34,7 @@
         <java classname="${nasgen.tool}" fork="true" failonerror="true">
             <classpath>
                 <pathelement location="${basedir}/jcov2/lib/jcov_j2se_rt.jar"/>
-                <pathelement location="${basedir}/buildtools/nasgen/dist/nasgen.jar"/>
+                <pathelement location="${build.dir}/nasgen/dist/nasgen.jar"/>
             </classpath>
             <jvmarg line="${nasgen.module.imports}"/>
             <arg value="${nashorn.module.classes.dir}"/>
@@ -72,7 +72,7 @@
     </target>
 
     <target name="clean-nasgen">
-        <ant inheritAll="false" dir="${basedir}/buildtools/nasgen"
+        <ant inheritAll="false" dir="${nashorn.make.dir}/buildtools/nasgen"
             antfile="build.xml" target="clean"/>
     </target>
 
diff --git a/make/nashorn/build.xml b/make/nashorn/build.xml
index ef1c6b8..d128870 100644
--- a/make/nashorn/build.xml
+++ b/make/nashorn/build.xml
@@ -23,7 +23,7 @@
  questions.
 -->
 
-<project name="nashorn" default="test" basedir="..">
+<project name="nashorn" default="test" basedir="../..">
   <import file="build-nasgen.xml"/>
   <import file="code_coverage.xml"/>
 
@@ -35,7 +35,7 @@
     <!-- loading locally defined resources and properties. NB they owerwrite default ones defined later -->
     <property file="${user.home}/.nashorn.project.local.properties"/>
 
-    <loadproperties srcFile="make/project.properties"/>
+    <loadproperties srcFile="make/nashorn/project.properties"/>
   </target>
 
   <target name="init-conditions" depends="load-properties">
@@ -86,7 +86,7 @@
     </condition>
 
     <!-- exclude tests in exclude lists -->
-    <condition property="exclude.list" value="./exclude/exclude_list_cc.txt" else="./exclude/exclude_list.txt">
+    <condition property="exclude.list" value="${nashorn.make.dir}/exclude/exclude_list_cc.txt" else="${nashorn.make.dir}/exclude/exclude_list.txt">
       <istrue value="${make.code.coverage}" />
     </condition>
 
@@ -167,6 +167,8 @@
       <fileset dir="${build.dir}" erroronmissingdir="false"/>
     </delete>
     <delete dir="${dist.dir}"/>
+    <delete dir="${jdk.build.dir}/nashorn_code_cache"/>
+    <delete file="${basedir}/NashornProfile.txt"/>
   </target>
 
   <target name="compile" depends="prepare" description="Compiles nashorn">
@@ -271,7 +273,9 @@
         windowtitle="${nashorn.product.name} ${nashorn.version}"
         additionalparam="-quiet" failonerror="true" useexternalfile="true">
       <arg value="--module-source-path"/>
-      <arg value="${basedir}/src/*/share/classes"/>
+      <arg value="${nashorn.module.src.dir}"/>
+      <arg value="--module-source-path"/>
+      <arg value="${dynalink.module.src.dir}"/>
       <arg value="${javadoc.option}"/>
       <classpath>
         <pathelement location="${build.classes.dir}"/>
@@ -289,7 +293,7 @@
         extdirs="${nashorn.ext.path}" windowtitle="${nashorn.product.name} ${nashorn.version}"
         additionalparam="-quiet" failonerror="true" useexternalfile="true">
       <arg value="--module-source-path"/>
-      <arg value="${basedir}/src/*/share/classes"/>
+      <arg value="${nashorn.module.src.dir}"/>
       <arg value="${javadoc.option}"/>
       <classpath>
         <pathelement location="${build.classes.dir}"/>
@@ -306,7 +310,7 @@
         windowtitle="Dynalink"
         additionalparam="-quiet" failonerror="true" useexternalfile="true">
       <arg value="--module-source-path"/>
-      <arg value="${basedir}/src/*/share/classes"/>
+      <arg value="${dynalink.module.src.dir}"/>
       <arg value="${javadoc.option}"/>
       <classpath>
         <pathelement location="${build.classes.dir}"/>
@@ -425,7 +429,7 @@
     permission java.util.PropertyPermission "parserapitest.*", "read";
     permission java.util.PropertyPermission "test.*", "read";
     permission java.util.PropertyPermission "test262.*", "read";
-    permission java.io.FilePermission "${basedir}/test/-","read";
+    permission java.io.FilePermission "${basedir}/test/nashorn/-","read";
     permission java.io.FilePermission "$${user.dir}", "read";
     permission java.util.PropertyPermission "user.dir", "read";
 };
@@ -461,56 +465,56 @@
 };
 
 
-grant codeBase "file:/${basedir}/test/script/trusted/*" {
+grant codeBase "file:/${basedir}/${test.script.dir}/trusted/*" {
     permission java.security.AllPermission;
 };
 
-grant codeBase "file:/${basedir}/test/script/maptests/*" {
-    permission java.io.FilePermission "${basedir}/test/script/maptests/*","read";
+grant codeBase "file:/${basedir}/${test.script.dir}/maptests/*" {
+    permission java.io.FilePermission "${basedir}/${test.script.dir}/maptests/*","read";
     permission java.lang.RuntimePermission "nashorn.debugMode";
 };
 
-grant codeBase "file:/${basedir}/test/script/basic/*" {
-    permission java.io.FilePermission "${basedir}/test/script/-", "read";
+grant codeBase "file:/${basedir}/${test.script.dir}/basic/*" {
+    permission java.io.FilePermission "${basedir}/${test.script.dir}/-", "read";
     permission java.io.FilePermission "$${user.dir}", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "nashorn.test.*", "read";
 };
 
-grant codeBase "file:/${basedir}/test/script/basic/apply_to_call/*" {
-    permission java.io.FilePermission "${basedir}/test/script/-", "read";
+grant codeBase "file:/${basedir}/${test.script.dir}/basic/apply_to_call/*" {
+    permission java.io.FilePermission "${basedir}/${test.script.dir}/-", "read";
     permission java.io.FilePermission "$${user.dir}", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "nashorn.test.*", "read";
 };
 
-grant codeBase "file:/${basedir}/test/script/basic/parser/*" {
-    permission java.io.FilePermission "${basedir}/test/script/-", "read";
+grant codeBase "file:/${basedir}/${test.script.dir}/basic/parser/*" {
+    permission java.io.FilePermission "${basedir}/${test.script.dir}/-", "read";
     permission java.io.FilePermission "$${user.dir}", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "nashorn.test.*", "read";
 };
 
-grant codeBase "file:/${basedir}/test/script/basic/es6/*" {
-    permission java.io.FilePermission "${basedir}/test/script/-", "read";
+grant codeBase "file:/${basedir}/${test.script.dir}/basic/es6/*" {
+    permission java.io.FilePermission "${basedir}/${test.script.dir}/-", "read";
     permission java.io.FilePermission "$${user.dir}", "read";
     permission java.util.PropertyPermission "user.dir", "read";
     permission java.util.PropertyPermission "nashorn.test.*", "read";
 };
 
-grant codeBase "file:/${basedir}/test/script/basic/JDK-8010946-privileged.js" {
+grant codeBase "file:/${basedir}/${test.script.dir}/basic/JDK-8010946-privileged.js" {
     permission java.util.PropertyPermission "java.security.policy", "read";
 };
 
-grant codeBase "file:/${basedir}/test/script/basic/classloader.js" {
+grant codeBase "file:/${basedir}/${test.script.dir}/basic/classloader.js" {
     permission java.lang.RuntimePermission "nashorn.JavaReflection";
 };
 
-grant codeBase "file:/${basedir}/test/script/markdown.js" {
-    permission java.io.FilePermission "${basedir}/test/script/external/showdown/-", "read";
+grant codeBase "file:/${basedir}/${test.script.dir}/markdown.js" {
+    permission java.io.FilePermission "${basedir}/${test.script.dir}/external/showdown/-", "read";
 };
 
-grant codeBase "file:/${basedir}/test/script/basic/JDK-8158467.js" {
+grant codeBase "file:/${basedir}/${test.script.dir}/basic/JDK-8158467.js" {
     permission java.lang.RuntimePermission "nashorn.setConfig";
 };
 
@@ -610,7 +614,7 @@
     </testng>
   </target>
 
-  <target name="test" depends="prepare, javadoc, test-pessimistic, test-optimistic"/>
+  <target name="test" depends="prepare, test-pessimistic, test-optimistic"/>
 
   <target name="test-optimistic" depends="jar, -test-classes-all,-test-classes-single, check-testng, check-external-tests, compile-test, generate-security-config" if="testng.available">
     <echo message="Running test suite in OPTIMISTIC mode..."/>
diff --git a/make/nashorn/buildtools/nasgen/build.xml b/make/nashorn/buildtools/nasgen/build.xml
index 2116db1..db1dea1 100644
--- a/make/nashorn/buildtools/nasgen/build.xml
+++ b/make/nashorn/buildtools/nasgen/build.xml
@@ -27,19 +27,19 @@
   </target>
 
   <target name="prepare" depends="init">
-    <mkdir dir="${build.classes.dir}"/>
-    <mkdir dir="${dist.dir}"/>
-    <mkdir dir="${dist.dir}/lib"/>
+    <mkdir dir="${nasgen.build.classes.dir}"/>
+    <mkdir dir="${nasgen.dist.dir}"/>
+    <mkdir dir="${nasgen.dist.dir}/lib"/>
   </target>
 
   <target name="clean" depends="init">
-    <delete dir="${build.dir}"/>
-    <delete dir="${dist.dir}"/>
+    <delete dir="${nasgen.build.dir}"/>
+    <delete dir="${nasgen.dist.dir}"/>
   </target>
 
   <target name="compile" depends="prepare" description="Compiles the nasgen sources">
     <javac srcdir="${src.dir}"
-           destdir="${build.classes.dir}"
+           destdir="${nasgen.build.classes.dir}"
            debug="${javac.debug}"
            includeantruntime="false" fork="true">
       <compilerarg line="${nasgen.module.imports}"/>
@@ -50,7 +50,7 @@
   </target>
 
   <target name="jar" depends="compile" description="Creates nasgen.jar">
-    <jar jarfile="${dist.jar}" basedir="${build.classes.dir}" manifest="${meta.inf.dir}/MANIFEST.MF"/>
+    <jar jarfile="${nasgen.dist.jar}" basedir="${nasgen.build.classes.dir}" manifest="${meta.inf.dir}/MANIFEST.MF"/>
   </target>
 
   <target name="dist" depends="jar"/>
diff --git a/make/nashorn/buildtools/nasgen/project.properties b/make/nashorn/buildtools/nasgen/project.properties
index 2ad8b59..ec31db0 100644
--- a/make/nashorn/buildtools/nasgen/project.properties
+++ b/make/nashorn/buildtools/nasgen/project.properties
@@ -27,15 +27,14 @@
 javac.source=1.7
 javac.target=1.7
 
-build.classes.dir=${build.dir}/classes
+# This directory is removed when the project is cleaned:
+nasgen.build.dir=../../../../build/nashorn/nasgen
+nasgen.build.classes.dir=${nasgen.build.dir}/classes
 
 # This directory is removed when the project is cleaned:
-build.dir=build
-
-# This directory is removed when the project is cleaned:
-dist.dir=dist
-dist.jar=${dist.dir}/nasgen.jar
-dist.javadoc.dir=${dist.dir}/javadoc
+nasgen.dist.dir=${nasgen.build.dir}/dist
+nasgen.dist.jar=${nasgen.dist.dir}/nasgen.jar
+nasgen.dist.javadoc.dir=${nasgen.dist.dir}/javadoc
 
 javac.debug=true
 
diff --git a/make/nashorn/project.properties b/make/nashorn/project.properties
index 5626838..de829ab 100644
--- a/make/nashorn/project.properties
+++ b/make/nashorn/project.properties
@@ -24,11 +24,11 @@
 application.title=nashorn
 
 # location of JDK embedded ASM sources
-jdk.java.base.dir=../jdk/src/java.base/share/classes
+jdk.java.base.dir=src/java.base/share/classes
 jdk.asm.src.dir=${jdk.java.base.dir}/jdk/internal/org/objectweb/asm
 
 # location of JDK embedded jline sources
-jdk.jline.src.dir=../jdk/src/jdk.internal.le/share/classes
+jdk.jline.src.dir=src/jdk.internal.le/share/classes
 
 # source and target levels
 build.compiler=modern
@@ -45,8 +45,11 @@
 nashorn.fullversion=0.1
 nashorn.product.name=Oracle Nashorn
 
+jdk.build.dir=build
+nashorn.make.dir=make/nashorn
+
 # This directory is removed when the project is cleaned:
-build.dir=build
+build.dir=${jdk.build.dir}/nashorn
 build.classes.dir=${build.dir}/classes
 build.zip=${build.dir}/nashorn.zip
 build.gzip=${build.dir}/nashorn.tar.gz
@@ -85,7 +88,7 @@
 build.nooptimistic.test.results.dir=${build.dir}/test/nooptimistic/reports
 
 # This directory is removed when the project is cleaned:
-dist.dir=dist
+dist.dir=build/nashorn/dist
 dynalink.jar=${dist.dir}/dynalink.jar
 nashorn.jar=${dist.dir}/nashorn.jar
 jjs.jar=${dist.dir}/jjs.jar
@@ -97,7 +100,7 @@
 run.test.jvmargs.jfr=-XX:+UnlockCommercialFeatures -XX:+FlightRecorder -XX:FlightRecorderOptions=defaultrecording=true,disk=true,dumponexit=true,dumponexitpath=${build.dir},stackdepth=128
 
 # test library location
-test.lib=${basedir}${file.separator}test${file.separator}lib
+test.lib=test/nashorn/lib
 
 # jars refererred
 file.reference.testng.jar=${test.lib}${file.separator}testng-6.8.jar
@@ -165,15 +168,15 @@
     ${build.classes.dir}
 
 # test scripts to run
-test.dir=test
-test.nosecurity.dir=test/script/nosecurity
-test.script.dir=test/script
-test.basic.dir=test/script/basic
-test.maptests.dir=test/script/maptests
-test.error.dir=test/script/error
-test.sandbox.dir=test/script/sandbox
-test.trusted.dir=test/script/trusted
-test.external.dir=test/script/external
+test.dir=test/nashorn
+test.nosecurity.dir=${test.dir}/script/nosecurity
+test.script.dir=${test.dir}/script
+test.basic.dir=${test.script.dir}/basic
+test.maptests.dir=${test.script.dir}/maptests
+test.error.dir=${test.script.dir}/error
+test.sandbox.dir=${test.script.dir}/sandbox
+test.trusted.dir=${test.script.dir}/trusted
+test.external.dir=${test.script.dir}/external
 test262.dir=${test.external.dir}/test262
 test262.suite.dir=${test262.dir}/test/suite
 testjfx.dir=${test.script.dir}/jfx
@@ -337,7 +340,7 @@
         ${nashorn.shell.module.src.dir}${path.separator}\
         ${jdk.jline.src.dir}
 
-test.src.dir=test/src
+test.src.dir=test/nashorn/src
 
 # -Xmx is used for all tests, -Xms only for octane benchmark
 run.test.xmx=2G
@@ -470,11 +473,11 @@
 
 #naming of CC results
 #NB directory specified in the cc.dir will be cleaned up!!!
-cc.dir=${basedir}/../Codecoverage_Nashorn
+cc.dir=${build.dir}/Codecoverage_Nashorn
 cc.result.file.name=CC_${jcov}_nashorn.xml
 
 #dynamic CC parameters; please redefine in the ${user.home}/.nashorn.project.local.properties
-jcov2.lib.dir=${basedir}/../jcov2/lib
+jcov2.lib.dir=${build.dir}/jcov2/lib
 jcov.jar=${jcov2.lib.dir}/jcov.jar
 cc.include=jdk\.nashorn\.*
 cc.exclude=jdk\.nashorn\.internal\.scripts\.*
diff --git a/make/scripts/compare.sh b/make/scripts/compare.sh
index 3385423..4b17c7d 100644
--- a/make/scripts/compare.sh
+++ b/make/scripts/compare.sh
@@ -56,7 +56,7 @@
     STAT_PRINT_SIZE="-c %s"
 fi
 
-COMPARE_EXCEPTIONS_INCLUDE="$SRC_ROOT/common/bin/compare_exceptions.sh.incl"
+COMPARE_EXCEPTIONS_INCLUDE="$SRC_ROOT/make/scripts/compare_exceptions.sh.incl"
 if [ ! -e "$COMPARE_EXCEPTIONS_INCLUDE" ]; then
     echo "Error: Cannot locate the exceptions file, it should have been here: $COMPARE_EXCEPTIONS_INCLUDE"
     exit 1
@@ -363,7 +363,7 @@
                 $RM $OTHER_FILE $THIS_FILE
                 #Note that | doesn't work on mac sed.
                 HTML_FILTER="$SED \
-                    -e 's/20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6\}/<DATE>/g' \
+                    -e 's/20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}-[0-9]\{6,7\}/<DATE>/g' \
                     -e 's/20[0-9]\{2\}-[0-9]\{2\}-[0-9]\{2\}/<DATE>/g' \
                     -e 's/\(-- Generated by javadoc \).*\( --\)/\1(removed)\2/' \
                     -e 's/[A-Z][a-z]*, [A-Z][a-z]* [0-9][0-9]*, [0-9]\{4\} [0-9][0-9:]* [AMP]\{2,2\} [A-Z][A-Z]*/<DATE>/' \
@@ -452,13 +452,15 @@
 
     # Find all archives inside and unzip them as well to compare the contents rather than
     # the archives. pie.jar.pack.gz i app3.war is corrupt, skip it.
-    EXCEPTIONS="pie.jar.pack.gz"
-    for pack in $($FIND $THIS_UNZIPDIR \( -name "*.pack" -o -name "*.pack.gz" \) -a ! -name pie.jar.pack.gz); do
+    EXCEPTIONS="pie.jar.pack.gz jdk.pack"
+    for pack in $($FIND $THIS_UNZIPDIR \( -name "*.pack" -o -name "*.pack.gz" \) -a \
+                        ! -name pie.jar.pack.gz -a ! -name jdk.pack); do
         ($UNPACK200 $pack $pack.jar)
         # Filter out the unzipped archives from the diff below.
         EXCEPTIONS="$EXCEPTIONS $pack $pack.jar"
     done
-    for pack in $($FIND $OTHER_UNZIPDIR \( -name "*.pack" -o -name "*.pack.gz" \) -a ! -name pie.jar.pack.gz); do
+    for pack in $($FIND $OTHER_UNZIPDIR \( -name "*.pack" -o -name "*.pack.gz" \) -a \
+                        ! -name pie.jar.pack.gz -a ! -name jdk.pack); do
         ($UNPACK200 $pack $pack.jar)
         EXCEPTIONS="$EXCEPTIONS $pack $pack.jar"
     done
@@ -1089,7 +1091,7 @@
     echo ""
     echo "[FILTER]            List filenames in the image to compare, works for jars, zips, libs and execs"
     echo "Example:"
-    echo "bash ./common/bin/compareimages.sh CodePointIM.jar"
+    echo "bash ./make/scripts/compareimages.sh CodePointIM.jar"
     echo ""
     echo "-2zips <file1> <file2> Compare two zip files only"
     echo "-2bins <file1> <file2> Compare two binary files only"
diff --git a/make/test/BuildFailureHandler.gmk b/make/test/BuildFailureHandler.gmk
index e64541f..52b828b 100644
--- a/make/test/BuildFailureHandler.gmk
+++ b/make/test/BuildFailureHandler.gmk
@@ -35,7 +35,7 @@
 
 ################################################################################
 
-FH_BASEDIR := $(SRC_ROOT)/test/failure_handler
+FH_BASEDIR := $(TOPDIR)/test/failure_handler
 FH_SUPPORT := $(SUPPORT_OUTPUTDIR)/test/failure_handler
 FH_JAR := $(FH_SUPPORT)/jtregFailureHandler.jar
 
diff --git a/make/test/JtregNativeHotspot.gmk b/make/test/JtregNativeHotspot.gmk
index 3f1d3fd..277f9de 100644
--- a/make/test/JtregNativeHotspot.gmk
+++ b/make/test/JtregNativeHotspot.gmk
@@ -35,7 +35,7 @@
 include MakeBase.gmk
 include TestFilesCompilation.gmk
 
-$(eval $(call IncludeCustomExtension, hotspot, test/JtregNative.gmk))
+$(eval $(call IncludeCustomExtension, , hotspot/test/JtregNative.gmk))
 
 ################################################################################
 # Targets for building the native tests themselves.
@@ -43,51 +43,51 @@
 
 # Add more directories here when needed.
 BUILD_HOTSPOT_JTREG_NATIVE_SRC += \
-    $(HOTSPOT_TOPDIR)/test/gc/g1/TestJNIWeakG1 \
-    $(HOTSPOT_TOPDIR)/test/gc/stress/gclocker \
-    $(HOTSPOT_TOPDIR)/test/gc/cslocker \
-    $(HOTSPOT_TOPDIR)/test/native_sanity \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/8025979 \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/8033445 \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/checked \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/PrivateInterfaceMethods \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/ToStringInInterfaceTest \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/CalleeSavedRegisters \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/CallWithJNIWeak \
-    $(HOTSPOT_TOPDIR)/test/runtime/jni/ReturnJNIWeak \
-    $(HOTSPOT_TOPDIR)/test/runtime/modules/getModuleJNI \
-    $(HOTSPOT_TOPDIR)/test/runtime/SameObject \
-    $(HOTSPOT_TOPDIR)/test/runtime/BoolReturn \
-    $(HOTSPOT_TOPDIR)/test/runtime/noClassDefFoundMsg \
-    $(HOTSPOT_TOPDIR)/test/compiler/floatingpoint/ \
-    $(HOTSPOT_TOPDIR)/test/compiler/calls \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/GetOwnedMonitorInfo \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/GetNamedModule \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/IsModifiableModule \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/AddModuleReads \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/AddModuleExportsAndOpens \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/AddModuleUsesAndProvides \
-    $(HOTSPOT_TOPDIR)/test/testlibrary/jvmti \
-    $(HOTSPOT_TOPDIR)/test/compiler/jvmci/jdk.vm.ci.code.test \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/GetModulesInfo \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/ModuleAwareAgents/ClassFileLoadHook \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/ModuleAwareAgents/ClassLoadPrepare \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/ModuleAwareAgents/ThreadStart \
-    $(HOTSPOT_TOPDIR)/test/serviceability/jvmti/StartPhase/AllowedFunctions \
+    $(TOPDIR)/test/hotspot/jtreg/gc/g1/TestJNIWeakG1 \
+    $(TOPDIR)/test/hotspot/jtreg/gc/stress/gclocker \
+    $(TOPDIR)/test/hotspot/jtreg/gc/cslocker \
+    $(TOPDIR)/test/hotspot/jtreg/native_sanity \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/8025979 \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/8033445 \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/checked \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/PrivateInterfaceMethods \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/ToStringInInterfaceTest \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/CalleeSavedRegisters \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/CallWithJNIWeak \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jni/ReturnJNIWeak \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/modules/getModuleJNI \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/SameObject \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/BoolReturn \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/noClassDefFoundMsg \
+    $(TOPDIR)/test/hotspot/jtreg/compiler/floatingpoint/ \
+    $(TOPDIR)/test/hotspot/jtreg/compiler/calls \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/GetOwnedMonitorInfo \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/GetNamedModule \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/IsModifiableModule \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/AddModuleReads \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/AddModuleExportsAndOpens \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/AddModuleUsesAndProvides \
+    $(TOPDIR)/test/hotspot/jtreg/testlibrary/jvmti \
+    $(TOPDIR)/test/hotspot/jtreg/compiler/jvmci/jdk.vm.ci.code.test \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/GetModulesInfo \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/ModuleAwareAgents/ClassFileLoadHook \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/ModuleAwareAgents/ClassLoadPrepare \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/ModuleAwareAgents/ThreadStart \
+    $(TOPDIR)/test/hotspot/jtreg/serviceability/jvmti/StartPhase/AllowedFunctions \
     #
 
 # Add conditional directories here when needed.
 ifeq ($(OPENJDK_TARGET_OS)-$(OPENJDK_TARGET_CPU_ARCH), solaris-sparc)
 BUILD_HOTSPOT_JTREG_NATIVE_SRC += \
-    $(HOTSPOT_TOPDIR)/test/runtime/libadimalloc.solaris.sparc \
-    $(HOTSPOT_TOPDIR)/test/runtime/ThreadSignalMask
+    $(TOPDIR)/test/hotspot/jtreg/runtime/libadimalloc.solaris.sparc \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/ThreadSignalMask
 endif
 
 ifeq ($(OPENJDK_TARGET_OS), linux)
 BUILD_HOTSPOT_JTREG_NATIVE_SRC += \
-    $(HOTSPOT_TOPDIR)/test/runtime/execstack \
-    $(HOTSPOT_TOPDIR)/test/runtime/jsig \
-    $(HOTSPOT_TOPDIR)/test/runtime/StackGuardPages
+    $(TOPDIR)/test/hotspot/jtreg/runtime/execstack \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/jsig \
+    $(TOPDIR)/test/hotspot/jtreg/runtime/StackGuardPages
 endif
 
 ifeq ($(TOOLCHAIN_TYPE), solstudio)
diff --git a/make/test/JtregNativeJdk.gmk b/make/test/JtregNativeJdk.gmk
index baa572d..f4ba683 100644
--- a/make/test/JtregNativeJdk.gmk
+++ b/make/test/JtregNativeJdk.gmk
@@ -35,7 +35,7 @@
 include MakeBase.gmk
 include TestFilesCompilation.gmk
 
-$(eval $(call IncludeCustomExtension, jdk, test/JtregNative.gmk))
+$(eval $(call IncludeCustomExtension, , test/JtregNative.gmk))
 
 ################################################################################
 # Targets for building the native tests themselves.
@@ -43,8 +43,8 @@
 
 # Add more directories here when needed.
 BUILD_JDK_JTREG_NATIVE_SRC += \
-    $(JDK_TOPDIR)/test/native_sanity \
-    $(JDK_TOPDIR)/test/java/lang/String/nativeEncoding \
+    $(TOPDIR)/test/jdk/native_sanity \
+    $(TOPDIR)/test/jdk/java/lang/String/nativeEncoding \
     #
 
 BUILD_JDK_JTREG_OUTPUT_DIR := $(BUILD_OUTPUT)/support/test/jdk/jtreg/native