@@ -307,17 +307,36 @@ endef
307
307
# There are two versions, either creating a relative or an absolute link. Be
308
308
# careful when using this on Windows since the symlink created is only valid in
309
309
# the unix emulation environment.
310
- define link-file-relative
310
+ # In msys2 we use mklink /J because its ln would perform a deep copy of the target.
311
+ # This inhibits performance and can lead to issues with long paths. With mklink /J
312
+ # relative linking does not work, so we handle the link as absolute path.
313
+ ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys2)
314
+ define link-file-relative
315
+ $(call MakeTargetDir)
316
+ $(RM) '$(call DecodeSpace, $@)'
317
+ cmd //c "mklink /J $(call FixPath, $(call DecodeSpace, $@)) $(call FixPath, $(call DecodeSpace, $<))"
318
+ endef
319
+ else
320
+ define link-file-relative
311
321
$(call MakeTargetDir)
312
322
$(RM) '$(call DecodeSpace, $@)'
313
323
$(LN) -s '$(call DecodeSpace, $(call RelativePath, $<, $(@D)))' '$(call DecodeSpace, $@)'
314
- endef
324
+ endef
325
+ endif
315
326
316
- define link-file-absolute
327
+ ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys2)
328
+ define link-file-absolute
329
+ $(call MakeTargetDir)
330
+ $(RM) '$(call DecodeSpace, $@)'
331
+ cmd //c "mklink /J $(call FixPath, $(call DecodeSpace, $@)) $(call FixPath, $(call DecodeSpace, $<))"
332
+ endef
333
+ else
334
+ define link-file-absolute
317
335
$(call MakeTargetDir)
318
336
$(RM) '$(call DecodeSpace, $@)'
319
337
$(LN) -s '$(call DecodeSpace, $<)' '$(call DecodeSpace, $@)'
320
- endef
338
+ endef
339
+ endif
321
340
322
341
################################################################################
323
342
0 commit comments