@@ -99,13 +99,16 @@ endif
99
99
100
100
################################################################################
101
101
# Setup the main compilation
102
+
103
+ COMPILATION_OUTPUTDIR := $(if $($(MODULE)_BIN), $($(MODULE)_BIN), $(JDK_OUTPUTDIR)/modules)
104
+
102
105
$(eval $(call SetupJavaCompilation, $(MODULE), \
103
106
SMALL_JAVA := false, \
104
107
MODULE := $(MODULE), \
105
108
SRC := $(wildcard $(MODULE_SRC_DIRS)), \
106
109
INCLUDES := $(JDK_USER_DEFINED_FILTER), \
107
110
FAIL_NO_SRC := $(FAIL_NO_SRC), \
108
- BIN := $(if $($(MODULE)_BIN), $($(MODULE)_BIN), $(JDK_OUTPUTDIR)/modules ), \
111
+ BIN := $(COMPILATION_OUTPUTDIR ), \
109
112
HEADERS := $(SUPPORT_OUTPUTDIR)/headers, \
110
113
CREATE_API_DIGEST := true, \
111
114
CLEAN := $(CLEAN), \
@@ -137,14 +140,23 @@ ifneq ($(COMPILER), bootjdk)
137
140
MODULE_VALUECLASS_SRC_DIRS := $(call FindModuleValueClassSrcDirs, $(MODULE))
138
141
MODULE_VALUECLASS_SOURCEPATH := $(call GetModuleValueClassSrcPath)
139
142
143
+ # Temporarily compile valueclasses into a separate directory with the form:
144
+ # <tempdir>/<module>/<classpath>
145
+ # and then copy the class files into:
146
+ # <outdir>/<module>/META-INF/preview/<classpath>
147
+ # We cannot compile directly into the desired directory because it's the
148
+ # compiler which creates the original '<module>/<classpath>/...' hierarchy.
149
+ VALUECLASS_OUTPUTDIR := $(SUPPORT_OUTPUTDIR)/$(VALUECLASSES_STR)
150
+ PREVIEW_OUTPUTDIR := $(COMPILATION_OUTPUTDIR)/$(MODULE)/META-INF/preview
151
+
140
152
ifneq ($(MODULE_VALUECLASS_SRC_DIRS),)
141
153
$(eval $(call SetupJavaCompilation, $(MODULE)-$(VALUECLASSES_STR), \
142
154
SMALL_JAVA := false, \
143
155
MODULE := $(MODULE), \
144
156
SRC := $(wildcard $(MODULE_VALUECLASS_SRC_DIRS)), \
145
157
INCLUDES := $(JDK_USER_DEFINED_FILTER), \
146
158
FAIL_NO_SRC := $(FAIL_NO_SRC), \
147
- BIN := $(SUPPORT_OUTPUTDIR)/$(VALUECLASSES_STR )/, \
159
+ BIN := $(VALUECLASS_OUTPUTDIR )/, \
148
160
JAR := $(JDK_OUTPUTDIR)/lib/$(VALUECLASSES_STR)/$(MODULE)-$(VALUECLASSES_STR).jar, \
149
161
HEADERS := $(SUPPORT_OUTPUTDIR)/headers, \
150
162
DISABLED_WARNINGS := $(DISABLED_WARNINGS_java) preview, \
@@ -162,6 +174,14 @@ ifneq ($(COMPILER), bootjdk)
162
174
163
175
TARGETS += $($(MODULE)-$(VALUECLASSES_STR))
164
176
177
+ # Restructure the class file hierarchy from <module>/<classpath>/... to <module>/META-INF/preview/<classpath>/...
178
+ $(PREVIEW_OUTPUTDIR)/_copy_valueclasses.marker: $($(MODULE)-$(VALUECLASSES_STR))
179
+ $(call MakeTargetDir)
180
+ $(CP) -R $(VALUECLASS_OUTPUTDIR)/$(MODULE)/. $(@D)/
181
+ $(TOUCH) $@
182
+
183
+ TARGETS += $(PREVIEW_OUTPUTDIR)/_copy_valueclasses.marker
184
+
165
185
$(eval $(call SetupCopyFiles, $(MODULE)-copy-valueclass-jar, \
166
186
FILES := $(JDK_OUTPUTDIR)/lib/$(VALUECLASSES_STR)/$(MODULE)-$(VALUECLASSES_STR).jar, \
167
187
DEST := $(SUPPORT_OUTPUTDIR)/modules_libs/$(MODULE)/$(VALUECLASSES_STR), \
0 commit comments