@@ -26,7 +26,7 @@ default: $(JULIA_BUILD_MODE) # contains either "debug" or "release"
2626all : debug release
2727
2828# sort is used to remove potential duplicates
29- DIRS := $(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 ) )
29+ DIRS := $(sort $(build_bindir ) $(build_depsbindir ) $(build_libdir ) $(build_private_libdir ) $(build_private_libexecdir ) $( build_libexecdir ) $(build_includedir ) $(build_includedir ) /julia $(build_sysconfdir ) /julia $(build_datarootdir ) /julia $(build_datarootdir ) /julia/stdlib $(build_man1dir ) )
3030ifneq ($(BUILDROOT ) ,$(JULIAHOME ) )
3131BUILDDIRS := $(BUILDROOT ) $(addprefix $(BUILDROOT ) /,base src src/flisp src/support src/clangsa cli doc deps stdlib test test/clangsa test/embedding test/gcext test/llvmpasses)
3232BUILDDIRMAKE := $(addsuffix /Makefile,$(BUILDDIRS ) ) $(BUILDROOT ) /sysimage.mk $(BUILDROOT ) /pkgimage.mk
@@ -203,6 +203,12 @@ endif
203203
204204# private libraries, that are installed in $(prefix)/lib/julia
205205JL_PRIVATE_LIBS-0 := libccalltest libccalllazyfoo libccalllazybar libllvmcalltest
206+ JL_PRIVATE_LIBS-1 := # libraries from USE_SYSTEM=1
207+ JL_PRIVATE_EXES := 7z
208+ ifeq ($(OS ) ,WINNT)
209+ JL_PRIVATE_EXES += 7z.dll
210+ endif
211+ JL_PRIVATE_TOOLS :=
206212ifeq ($(JULIA_BUILD_MODE ) ,release)
207213JL_PRIVATE_LIBS-0 += libjulia-internal libjulia-codegen
208214else ifeq ($(JULIA_BUILD_MODE),debug)
@@ -232,9 +238,12 @@ JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += zlib
232238else
233239JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libz
234240endif
241+ JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libzstd
242+ JL_PRIVATE_EXES += zstd$(EXE ) zstdmt$(EXE )
235243ifeq ($(USE_LLVM_SHLIB ) ,1)
236244JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM $(LLVM_SHARED_LIB_NAME )
237245endif
246+ JL_PRIVATE_TOOLS += lld$(EXE ) dsymutil$(EXE )
238247JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBUNWIND) += libunwind
239248
240249ifeq ($(USE_SYSTEM_LIBM ) ,0)
@@ -313,45 +322,41 @@ install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index
313322
314323 $(INSTALL_M) $(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE)) $(DESTDIR)$(bindir)/
315324ifeq ($(OS ) ,WINNT)
316- - $(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
325+ $(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
317326ifeq ($(JULIA_BUILD_MODE ) ,release)
318- - $(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
319- - $(INSTALL_M) $(build_libdir)/libjulia-internal.dll.a $(DESTDIR)$(libdir)/
327+ $(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
328+ $(INSTALL_M) $(build_libdir)/libjulia-internal.dll.a $(DESTDIR)$(libdir)/
320329else ifeq ($(JULIA_BUILD_MODE),debug)
321- - $(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
322- - $(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
330+ $(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
331+ $(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
323332endif
324- -$(INSTALL_M) $(wildcard $(build_private_libdir)/*.a) $(DESTDIR)$(private_libdir)/
325- -rm -f $(DESTDIR)$(private_libdir)/sys-o.a
333+ $(INSTALL_M) $(filter-out %-bc.a %-o.a,$(wildcard $(build_private_libdir)/lib*.a)) $(DESTDIR)$(private_libdir)/
326334
327- # We have a single exception; we want 7z.dll to live in private_libexecdir,
328- # not bindir, so that 7z.exe can find it.
329- -mv $(DESTDIR)$(bindir)/7z.dll $(DESTDIR)$(private_libexecdir)/
330- -$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
331- -$(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
335+ $(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
336+ $(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
332337else
333338
334339# Copy over .dSYM directories directly for Darwin
335340ifneq ($(DARWIN_FRAMEWORK ) ,1)
336341ifeq ($(OS ) ,Darwin)
337342ifeq ($(JULIA_BUILD_MODE ) ,release)
338- - cp -a $(build_libdir)/libjulia.*.dSYM $(DESTDIR)$(libdir)
339- - cp -a $(build_libdir)/libjulia-internal.*.dSYM $(DESTDIR)$(private_libdir)
340- - cp -a $(build_libdir)/libjulia-codegen.*.dSYM $(DESTDIR)$(private_libdir)
341- - cp -a $(build_private_libdir)/sys.dylib.dSYM $(DESTDIR)$(private_libdir)
343+ cp -a $(build_libdir)/libjulia.*.dSYM $(DESTDIR)$(libdir)
344+ cp -a $(build_libdir)/libjulia-internal.*.dSYM $(DESTDIR)$(private_libdir)
345+ cp -a $(build_libdir)/libjulia-codegen.*.dSYM $(DESTDIR)$(private_libdir)
346+ cp -a $(build_private_libdir)/sys.dylib.dSYM $(DESTDIR)$(private_libdir)
342347else ifeq ($(JULIA_BUILD_MODE),debug)
343- - cp -a $(build_libdir)/libjulia-debug.*.dSYM $(DESTDIR)$(libdir)
344- - cp -a $(build_libdir)/libjulia-internal-debug.*.dSYM $(DESTDIR)$(private_libdir)
345- - cp -a $(build_libdir)/libjulia-codegen-debug.*.dSYM $(DESTDIR)$(private_libdir)
346- - cp -a $(build_private_libdir)/sys-debug.dylib.dSYM $(DESTDIR)$(private_libdir)
348+ cp -a $(build_libdir)/libjulia-debug.*.dSYM $(DESTDIR)$(libdir)
349+ cp -a $(build_libdir)/libjulia-internal-debug.*.dSYM $(DESTDIR)$(private_libdir)
350+ cp -a $(build_libdir)/libjulia-codegen-debug.*.dSYM $(DESTDIR)$(private_libdir)
351+ cp -a $(build_private_libdir)/sys-debug.dylib.dSYM $(DESTDIR)$(private_libdir)
347352endif
348353endif
349354
350355# Copy over shared library file for libjulia.*
351356 for suffix in $(JL_TARGETS) ; do \
352357 for lib in $(build_libdir)/lib$${suffix}.*$(SHLIB_EXT)*; do \
353358 if [ "$${lib# #*.}" != "dSYM" ]; then \
354- $(INSTALL_M) $$lib $(DESTDIR)$(libdir) ; \
359+ $(INSTALL_M) $$lib $(DESTDIR)$(libdir) || exit 1 ; \
355360 fi \
356361 done \
357362 done
@@ -371,26 +376,24 @@ endif
371376 for suffix in $(JL_PRIVATE_LIBS-0) ; do \
372377 for lib in $(build_libdir)/$${suffix}.*$(SHLIB_EXT)*; do \
373378 if [ "$${lib# #*.}" != "dSYM" ]; then \
374- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
379+ $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) || exit 1 ; \
375380 fi \
376381 done \
377382 done
378383 for suffix in $(JL_PRIVATE_LIBS-1) ; do \
379384 for lib in $(build_private_libdir)/$${suffix}.$(SHLIB_EXT)*; do \
380385 if [ "$${lib# #*.}" != "dSYM" ]; then \
381- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
386+ $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) || exit 1 ; \
382387 fi \
383388 done \
384389 done
385390endif
386- # Install `7z` into private_libexecdir
387- $(INSTALL_M) $(build_bindir)/7z$(EXE) $(DESTDIR)$(private_libexecdir)/
388-
389- # Install `lld` into private_libexecdir
390- $(INSTALL_M) $(build_depsbindir)/lld$(EXE) $(DESTDIR)$(private_libexecdir)/
391-
392- # Install `dsymutil` into private_libexecdir/
393- $(INSTALL_M) $(build_depsbindir)/dsymutil$(EXE) $(DESTDIR)$(private_libexecdir)/
391+ for exe in $(JL_PRIVATE_EXES) ; do \
392+ $(INSTALL_M) $(build_private_libexecdir)/$$exe $(DESTDIR)$(private_libexecdir) || exit 1; \
393+ done
394+ for exe in $(JL_PRIVATE_TOOLS) ; do \
395+ $(INSTALL_M) $(build_depsbindir)/$$exe $(DESTDIR)$(private_libexecdir) || exit 1; \
396+ done
394397
395398 # Copy public headers
396399 cp -R -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
@@ -442,13 +445,13 @@ ifneq ($(private_libdir_rel),$(build_private_libdir_rel))
442445ifeq ($(OS ) , Darwin)
443446ifneq ($(DARWIN_FRAMEWORK ) ,1)
444447 for j in $(JL_TARGETS) ; do \
445- install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $(DESTDIR)$(bindir)/$$j; \
446- install_name_tool -add_rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $(DESTDIR)$(bindir)/$$j; \
448+ install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $(DESTDIR)$(bindir)/$$j || exit 1 ; \
449+ install_name_tool -rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $(DESTDIR)$(bindir)/$$j || exit 1 ; \
447450 done
448451endif
449452else ifneq (,$(findstring $(OS),Linux FreeBSD))
450453 for j in $(JL_TARGETS) ; do \
451- $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \
454+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j || exit 1 ; \
452455 done
453456endif
454457
@@ -471,11 +474,11 @@ endif
471474ifeq ($(OS ) , Darwin)
472475ifneq ($(DARWIN_FRAMEWORK ) ,1)
473476ifeq ($(JULIA_BUILD_MODE ) ,release)
474- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
475- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
477+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
478+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
476479else ifeq ($(JULIA_BUILD_MODE),debug)
477- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
478- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
480+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
481+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
479482endif
480483endif
481484else ifneq (,$(findstring $(OS),Linux FreeBSD))
@@ -486,11 +489,43 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
486489 $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
487490 $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
488491endif
492+ endif
493+
494+ ifeq ($(OS ) , Darwin)
495+ ifneq ($(DARWIN_FRAMEWORK ) ,1)
496+ for j in $(JL_PRIVATE_TOOLS) ; do \
497+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
498+ install_name_tool -rpath @loader_path/$(build_libdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
499+ done
500+ endif
501+ else ifneq (,$(findstring $(OS),Linux FreeBSD))
502+ for j in $(JL_PRIVATE_TOOLS) ; do \
503+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
504+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
505+ done
506+ endif
507+
508+ ifneq ($(reverse_private_libexecdir_rel ) ,$(reverse_build_private_libexecdir_rel ) )
509+ ifeq ($(OS ) , Darwin)
510+ ifneq ($(DARWIN_FRAMEWORK ) ,1)
511+ for j in $(JL_PRIVATE_EXES) ; do \
512+ [ $$j = 7z ] && continue; \
513+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
514+ install_name_tool -rpath @executable_path/$(reverse_build_private_libexecdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
515+ done
516+ endif
517+ else ifneq (,$(findstring $(OS),Linux FreeBSD))
518+ for j in $(JL_PRIVATE_EXES) ; do \
519+ [ $$j = 7z ] && continue; \
520+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
521+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
522+ done
523+ endif
489524endif
490525
491526 # Fix rpaths for dependencies. This should be fixed in BinaryBuilder later.
492527ifeq ($(OS ) , Linux)
493- - $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
528+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
494529endif
495530ifneq ($(LOADER_BUILD_DEP_LIBS ) ,$(LOADER_INSTALL_DEP_LIBS ) )
496531 # Next, overwrite relative path to libjulia-internal in our loader if $$(LOADER_BUILD_DEP_LIBS) != $$(LOADER_INSTALL_DEP_LIBS)
@@ -511,7 +546,7 @@ ifeq ($(OS),FreeBSD)
511546 # don't set libgfortran's RPATH, it won't be able to find its friends on systems
512547 # that don't have the exact GCC port installed used for the build.
513548 for lib in $(DESTDIR)$(private_libdir)/libgfortran*$(SHLIB_EXT)*; do \
514- $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $$lib; \
549+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $$lib || exit 1 ; \
515550 done
516551endif
517552
0 commit comments