@@ -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
@@ -204,6 +204,12 @@ endif
204204
205205# private libraries, that are installed in $(prefix)/lib/julia
206206JL_PRIVATE_LIBS-0 := libccalltest libccalllazyfoo libccalllazybar libllvmcalltest
207+ JL_PRIVATE_LIBS-1 := # libraries from USE_SYSTEM=1
208+ JL_PRIVATE_EXES := 7z
209+ ifeq ($(OS ) ,WINNT)
210+ JL_PRIVATE_EXES += 7z.dll
211+ endif
212+ JL_PRIVATE_TOOLS :=
207213ifeq ($(JULIA_BUILD_MODE ) ,release)
208214JL_PRIVATE_LIBS-0 += libjulia-internal libjulia-codegen
209215else ifeq ($(JULIA_BUILD_MODE),debug)
@@ -233,9 +239,12 @@ JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += zlib
233239else
234240JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libz
235241endif
242+ JL_PRIVATE_LIBS-$(USE_SYSTEM_ZSTD) += libzstd
243+ JL_PRIVATE_EXES += zstd$(EXE ) zstdmt$(EXE )
236244ifeq ($(USE_LLVM_SHLIB ) ,1)
237245JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM $(LLVM_SHARED_LIB_NAME )
238246endif
247+ JL_PRIVATE_TOOLS += lld$(EXE ) dsymutil$(EXE )
239248JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBUNWIND) += libunwind
240249
241250ifeq ($(USE_SYSTEM_LIBM ) ,0)
@@ -314,45 +323,41 @@ install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index
314323
315324 $(INSTALL_M) $(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE)) $(DESTDIR)$(bindir)/
316325ifeq ($(OS ) ,WINNT)
317- - $(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
326+ $(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
318327ifeq ($(JULIA_BUILD_MODE ) ,release)
319- - $(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
320- - $(INSTALL_M) $(build_libdir)/libjulia-internal.dll.a $(DESTDIR)$(libdir)/
328+ $(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
329+ $(INSTALL_M) $(build_libdir)/libjulia-internal.dll.a $(DESTDIR)$(libdir)/
321330else ifeq ($(JULIA_BUILD_MODE),debug)
322- - $(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
323- - $(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
331+ $(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
332+ $(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
324333endif
325- -$(INSTALL_M) $(wildcard $(build_private_libdir)/*.a) $(DESTDIR)$(private_libdir)/
326- -rm -f $(DESTDIR)$(private_libdir)/sys-o.a
334+ $(INSTALL_M) $(filter-out %-bc.a %-o.a,$(wildcard $(build_private_libdir)/lib*.a)) $(DESTDIR)$(private_libdir)/
327335
328- # We have a single exception; we want 7z.dll to live in private_libexecdir,
329- # not bindir, so that 7z.exe can find it.
330- -mv $(DESTDIR)$(bindir)/7z.dll $(DESTDIR)$(private_libexecdir)/
331- -$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
332- -$(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
336+ $(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
337+ $(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
333338else
334339
335340# Copy over .dSYM directories directly for Darwin
336341ifneq ($(DARWIN_FRAMEWORK ) ,1)
337342ifeq ($(OS ) ,Darwin)
338343ifeq ($(JULIA_BUILD_MODE ) ,release)
339- - cp -a $(build_libdir)/libjulia.*.dSYM $(DESTDIR)$(libdir)
340- - cp -a $(build_libdir)/libjulia-internal.*.dSYM $(DESTDIR)$(private_libdir)
341- - cp -a $(build_libdir)/libjulia-codegen.*.dSYM $(DESTDIR)$(private_libdir)
342- - cp -a $(build_private_libdir)/sys.dylib.dSYM $(DESTDIR)$(private_libdir)
344+ cp -a $(build_libdir)/libjulia.*.dSYM $(DESTDIR)$(libdir)
345+ cp -a $(build_libdir)/libjulia-internal.*.dSYM $(DESTDIR)$(private_libdir)
346+ cp -a $(build_libdir)/libjulia-codegen.*.dSYM $(DESTDIR)$(private_libdir)
347+ cp -a $(build_private_libdir)/sys.dylib.dSYM $(DESTDIR)$(private_libdir)
343348else ifeq ($(JULIA_BUILD_MODE),debug)
344- - cp -a $(build_libdir)/libjulia-debug.*.dSYM $(DESTDIR)$(libdir)
345- - cp -a $(build_libdir)/libjulia-internal-debug.*.dSYM $(DESTDIR)$(private_libdir)
346- - cp -a $(build_libdir)/libjulia-codegen-debug.*.dSYM $(DESTDIR)$(private_libdir)
347- - cp -a $(build_private_libdir)/sys-debug.dylib.dSYM $(DESTDIR)$(private_libdir)
349+ cp -a $(build_libdir)/libjulia-debug.*.dSYM $(DESTDIR)$(libdir)
350+ cp -a $(build_libdir)/libjulia-internal-debug.*.dSYM $(DESTDIR)$(private_libdir)
351+ cp -a $(build_libdir)/libjulia-codegen-debug.*.dSYM $(DESTDIR)$(private_libdir)
352+ cp -a $(build_private_libdir)/sys-debug.dylib.dSYM $(DESTDIR)$(private_libdir)
348353endif
349354endif
350355
351356# Copy over shared library file for libjulia.*
352357 for suffix in $(JL_TARGETS) ; do \
353358 for lib in $(build_libdir)/lib$${suffix}.*$(SHLIB_EXT)*; do \
354359 if [ "$${lib# #*.}" != "dSYM" ]; then \
355- $(INSTALL_M) $$lib $(DESTDIR)$(libdir) ; \
360+ $(INSTALL_M) $$lib $(DESTDIR)$(libdir) || exit 1 ; \
356361 fi \
357362 done \
358363 done
@@ -372,26 +377,24 @@ endif
372377 for suffix in $(JL_PRIVATE_LIBS-0) ; do \
373378 for lib in $(build_libdir)/$${suffix}.*$(SHLIB_EXT)*; do \
374379 if [ "$${lib# #*.}" != "dSYM" ]; then \
375- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
380+ $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) || exit 1 ; \
376381 fi \
377382 done \
378383 done
379384 for suffix in $(JL_PRIVATE_LIBS-1) ; do \
380385 for lib in $(build_private_libdir)/$${suffix}.$(SHLIB_EXT)*; do \
381386 if [ "$${lib# #*.}" != "dSYM" ]; then \
382- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
387+ $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) || exit 1 ; \
383388 fi \
384389 done \
385390 done
386391endif
387- # Install `7z` into private_libexecdir
388- $(INSTALL_M) $(build_bindir)/7z$(EXE) $(DESTDIR)$(private_libexecdir)/
389-
390- # Install `lld` into private_libexecdir
391- $(INSTALL_M) $(build_depsbindir)/lld$(EXE) $(DESTDIR)$(private_libexecdir)/
392-
393- # Install `dsymutil` into private_libexecdir/
394- $(INSTALL_M) $(build_depsbindir)/dsymutil$(EXE) $(DESTDIR)$(private_libexecdir)/
392+ for exe in $(JL_PRIVATE_EXES) ; do \
393+ $(INSTALL_M) $(build_private_libexecdir)/$$exe $(DESTDIR)$(private_libexecdir) || exit 1; \
394+ done
395+ for exe in $(JL_PRIVATE_TOOLS) ; do \
396+ $(INSTALL_M) $(build_depsbindir)/$$exe $(DESTDIR)$(private_libexecdir) || exit 1; \
397+ done
395398
396399 # Copy public headers
397400 cp -R -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
@@ -443,13 +446,13 @@ ifneq ($(private_libdir_rel),$(build_private_libdir_rel))
443446ifeq ($(OS ) , Darwin)
444447ifneq ($(DARWIN_FRAMEWORK ) ,1)
445448 for j in $(JL_TARGETS) ; do \
446- install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $(DESTDIR)$(bindir)/$$j; \
447- install_name_tool -add_rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $(DESTDIR)$(bindir)/$$j; \
449+ install_name_tool -rpath @executable_path/$(build_private_libdir_rel) @executable_path/$(private_libdir_rel) $(DESTDIR)$(bindir)/$$j || exit 1 ; \
450+ install_name_tool -rpath @executable_path/$(build_libdir_rel) @executable_path/$(libdir_rel) $(DESTDIR)$(bindir)/$$j || exit 1 ; \
448451 done
449452endif
450453else ifneq (,$(findstring $(OS),Linux FreeBSD))
451454 for j in $(JL_TARGETS) ; do \
452- $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j; \
455+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(private_libdir_rel):$$ORIGIN/$(libdir_rel)' $(DESTDIR)$(bindir)/$$j || exit 1 ; \
453456 done
454457endif
455458
@@ -472,11 +475,11 @@ endif
472475ifeq ($(OS ) , Darwin)
473476ifneq ($(DARWIN_FRAMEWORK ) ,1)
474477ifeq ($(JULIA_BUILD_MODE ) ,release)
475- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
476- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
478+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
479+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-codegen.$(SHLIB_EXT)
477480else ifeq ($(JULIA_BUILD_MODE),debug)
478- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
479- install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel)/ $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
481+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
482+ install_name_tool -add_rpath @loader_path/$(reverse_private_libdir_rel) $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
480483endif
481484endif
482485else ifneq (,$(findstring $(OS),Linux FreeBSD))
@@ -487,11 +490,43 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
487490 $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
488491 $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
489492endif
493+ endif
494+
495+ ifeq ($(OS ) , Darwin)
496+ ifneq ($(DARWIN_FRAMEWORK ) ,1)
497+ for j in $(JL_PRIVATE_TOOLS) ; do \
498+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
499+ install_name_tool -rpath @loader_path/$(build_libdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
500+ done
501+ endif
502+ else ifneq (,$(findstring $(OS),Linux FreeBSD))
503+ for j in $(JL_PRIVATE_TOOLS) ; do \
504+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
505+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
506+ done
507+ endif
508+
509+ ifneq ($(reverse_private_libexecdir_rel ) ,$(reverse_build_private_libexecdir_rel ) )
510+ ifeq ($(OS ) , Darwin)
511+ ifneq ($(DARWIN_FRAMEWORK ) ,1)
512+ for j in $(JL_PRIVATE_EXES) ; do \
513+ [ $$j = 7z ] && continue; \
514+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
515+ install_name_tool -rpath @executable_path/$(reverse_build_private_libexecdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
516+ done
517+ endif
518+ else ifneq (,$(findstring $(OS),Linux FreeBSD))
519+ for j in $(JL_PRIVATE_EXES) ; do \
520+ [ $$j = 7z ] && continue; \
521+ [ -L $(DESTDIR)$(private_libexecdir)/$$j ] && continue; \
522+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
523+ done
524+ endif
490525endif
491526
492527 # Fix rpaths for dependencies. This should be fixed in BinaryBuilder later.
493528ifeq ($(OS ) , Linux)
494- - $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
529+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
495530endif
496531ifneq ($(LOADER_BUILD_DEP_LIBS ) ,$(LOADER_INSTALL_DEP_LIBS ) )
497532 # Next, overwrite relative path to libjulia-internal in our loader if $$(LOADER_BUILD_DEP_LIBS) != $$(LOADER_INSTALL_DEP_LIBS)
@@ -512,7 +547,7 @@ ifeq ($(OS),FreeBSD)
512547 # don't set libgfortran's RPATH, it won't be able to find its friends on systems
513548 # that don't have the exact GCC port installed used for the build.
514549 for lib in $(DESTDIR)$(private_libdir)/libgfortran*$(SHLIB_EXT)*; do \
515- $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $$lib; \
550+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $$lib || exit 1 ; \
516551 done
517552endif
518553
0 commit comments