@@ -626,17 +626,36 @@ RelativePath = \
626
626
# There are two versions, either creating a relative or an absolute link. Be
627
627
# careful when using this on Windows since the symlink created is only valid in
628
628
# the unix emulation environment.
629
- define link-file-relative
629
+ # In msys2 we use mklink /J because its ln would perform a deep copy of the target.
630
+ # This inhibits performance and can lead to issues with long paths. With mklink /J
631
+ # relative linking does not work, so we handle the link as absolute path.
632
+ ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys2)
633
+ define link-file-relative
634
+ $(call MakeTargetDir)
635
+ $(RM) '$(call DecodeSpace, $@)'
636
+ cmd //c "mklink /J $(call FixPath, $(call DecodeSpace, $@)) $(call FixPath, $(call DecodeSpace, $<))"
637
+ endef
638
+ else
639
+ define link-file-relative
630
640
$(call MakeTargetDir)
631
641
$(RM) '$(call DecodeSpace, $@)'
632
642
$(LN) -s '$(call DecodeSpace, $(call RelativePath, $<, $(@D)))' '$(call DecodeSpace, $@)'
633
- endef
643
+ endef
644
+ endif
634
645
635
- define link-file-absolute
646
+ ifeq ($(OPENJDK_BUILD_OS_ENV), windows.msys2)
647
+ define link-file-absolute
648
+ $(call MakeTargetDir)
649
+ $(RM) '$(call DecodeSpace, $@)'
650
+ cmd //c "mklink /J $(call FixPath, $(call DecodeSpace, $@)) $(call FixPath, $(call DecodeSpace, $<))"
651
+ endef
652
+ else
653
+ define link-file-absolute
636
654
$(call MakeTargetDir)
637
655
$(RM) '$(call DecodeSpace, $@)'
638
656
$(LN) -s '$(call DecodeSpace, $<)' '$(call DecodeSpace, $@)'
639
- endef
657
+ endef
658
+ endif
640
659
641
660
################################################################################
642
661
# Filter out duplicate sub strings while preserving order. Keeps the first occurance.
0 commit comments