@@ -11,7 +11,7 @@ all: debug release
1111# sort is used to remove potential duplicates
1212DIRS := $(sort $(build_bindir ) $(build_depsbindir ) $(build_libdir ) $(build_private_libdir ) $(build_libexecdir ) $(build_includedir ) $(build_includedir ) /julia $(build_sysconfdir ) /julia $(build_datarootdir ) /julia $(build_datarootdir ) /julia/stdlib $(build_man1dir ) )
1313ifneq ($(BUILDROOT ) ,$(JULIAHOME ) )
14- BUILDDIRS := $(BUILDROOT ) $(addprefix $(BUILDROOT ) /,base src src/flisp src/support src/clangsa cli doc deps stdlib test test/clangsa test/embedding test/llvmpasses)
14+ BUILDDIRS := $(BUILDROOT ) $(addprefix $(BUILDROOT ) /,base src src/flisp src/support src/clangsa cli doc deps stdlib test test/clangsa test/embedding test/gcext test/ llvmpasses)
1515BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS ) ) $(BUILDROOT ) /sysimage.mk
1616DIRS := $(DIRS ) $(BUILDDIRS )
1717$(BUILDDIRMAKE ) : | $(BUILDDIRS )
@@ -247,13 +247,21 @@ ifeq ($(OS),WINNT)
247247 -$(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
248248ifeq ($(JULIA_BUILD_MODE ) ,release)
249249 -$(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
250+ -$(INSTALL_M) $(build_libdir)/libjulia-internal.dll.a $(DESTDIR)$(libdir)/
250251else ifeq ($(JULIA_BUILD_MODE),debug)
251252 -$(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
253+ -$(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
252254endif
253255
254256 # We have a single exception; we want 7z.dll to live in libexec, not bin, so that 7z.exe can find it.
255257 -mv $(DESTDIR)$(bindir)/7z.dll $(DESTDIR)$(libexecdir)/
256258 -$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
259+ -$(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
260+ # The rest are compiler dependencies, as an example memcpy is exported by msvcrt
261+ # These are files from mingw32 and required for creating shared libraries like our caches.
262+ -$(INSTALL_M) $(build_libdir)/libgcc_s.a $(DESTDIR)$(libdir)/
263+ -$(INSTALL_M) $(build_libdir)/libgcc.a $(DESTDIR)$(libdir)/
264+ -$(INSTALL_M) $(build_libdir)/libmsvcrt.a $(DESTDIR)$(libdir)/
257265else
258266
259267# Copy over .dSYM directories directly for Darwin
@@ -318,6 +326,11 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
318326 $(INSTALL_M) $(build_private_libdir)/sys-debug.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
319327endif
320328
329+ # Cache stdlibs
330+ @$(call PRINT_JULIA, $(call spawn,$(JULIA_EXECUTABLE)) --startup-file=no $(JULIAHOME)/contrib/cache_stdlibs.jl)
331+ # CI uses `--check-bounds=yes` which impacts the cache flags
332+ @$(call PRINT_JULIA, $(call spawn,$(JULIA_EXECUTABLE)) --startup-file=no --check-bounds=yes $(JULIAHOME)/contrib/cache_stdlibs.jl)
333+
321334 # Copy in all .jl sources as well
322335 mkdir -p $(DESTDIR)$(datarootdir)/julia/base $(DESTDIR)$(datarootdir)/julia/test
323336 cp -R -L $(JULIAHOME)/base/* $(DESTDIR)$(datarootdir)/julia/base
@@ -371,8 +384,18 @@ endif
371384 fi;
372385endif
373386
374- # Set rpath for libjulia-internal, which is moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD
375- ifneq (,$(findstring $(OS ) ,Linux FreeBSD) )
387+ # Set rpath for libjulia-internal, which is moving from `../lib` to `../lib/julia`.
388+ ifeq ($(OS ) , Darwin)
389+ ifneq ($(DARWIN_FRAMEWORK ) ,1)
390+ ifeq ($(JULIA_BUILD_MODE ) ,release)
391+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
392+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
393+ else ifeq ($(JULIA_BUILD_MODE),debug)
394+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
395+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
396+ endif
397+ endif
398+ else ifneq (,$(findstring $(OS),Linux FreeBSD))
376399ifeq ($(JULIA_BUILD_MODE ) ,release)
377400 $(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
378401 $(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
0 commit comments