@@ -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)
@@ -233,9 +239,11 @@ else
233239JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libz
234240endif
235241JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libzstd
242+ JL_PRIVATE_EXES := zstd$(EXE ) zstdmt$(EXE )
236243ifeq ($(USE_LLVM_SHLIB ) ,1)
237244JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM $(LLVM_SHARED_LIB_NAME )
238245endif
246+ JL_PRIVATE_TOOLS += lld$(EXE ) dsymutil$(EXE )
239247JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBUNWIND) += libunwind
240248
241249ifeq ($(USE_SYSTEM_LIBM ) ,0)
@@ -314,45 +322,41 @@ install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index
314322
315323 $(INSTALL_M) $(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE)) $(DESTDIR)$(bindir)/
316324ifeq ($(OS ) ,WINNT)
317- - $(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
325+ $(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
318326ifeq ($(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)/
327+ $(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
328+ $(INSTALL_M) $(build_libdir)/libjulia-internal.dll.a $(DESTDIR)$(libdir)/
321329else 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)/
330+ $(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
331+ $(INSTALL_M) $(build_libdir)/libjulia-internal-debug.dll.a $(DESTDIR)$(libdir)/
324332endif
325- -$(INSTALL_M) $(wildcard $(build_private_libdir)/*.a) $(DESTDIR)$(private_libdir)/
326- -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)/
327334
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)/
335+ $(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
336+ $(INSTALL_M) $(build_libdir)/libssp.dll.a $(DESTDIR)$(libdir)/
333337else
334338
335339# Copy over .dSYM directories directly for Darwin
336340ifneq ($(DARWIN_FRAMEWORK ) ,1)
337341ifeq ($(OS ) ,Darwin)
338342ifeq ($(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)
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)
343347else 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)
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)
348352endif
349353endif
350354
351355# Copy over shared library file for libjulia.*
352356 for suffix in $(JL_TARGETS) ; do \
353357 for lib in $(build_libdir)/lib$${suffix}.*$(SHLIB_EXT)*; do \
354358 if [ "$${lib# #*.}" != "dSYM" ]; then \
355- $(INSTALL_M) $$lib $(DESTDIR)$(libdir) ; \
359+ $(INSTALL_M) $$lib $(DESTDIR)$(libdir) || exit 1 ; \
356360 fi \
357361 done \
358362 done
@@ -372,26 +376,24 @@ endif
372376 for suffix in $(JL_PRIVATE_LIBS-0) ; do \
373377 for lib in $(build_libdir)/$${suffix}.*$(SHLIB_EXT)*; do \
374378 if [ "$${lib# #*.}" != "dSYM" ]; then \
375- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
379+ $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) || exit 1 ; \
376380 fi \
377381 done \
378382 done
379383 for suffix in $(JL_PRIVATE_LIBS-1) ; do \
380384 for lib in $(build_private_libdir)/$${suffix}.$(SHLIB_EXT)*; do \
381385 if [ "$${lib# #*.}" != "dSYM" ]; then \
382- $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) ; \
386+ $(INSTALL_M) $$lib $(DESTDIR)$(private_libdir) || exit 1 ; \
383387 fi \
384388 done \
385389 done
386390endif
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)/
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
395397
396398 # Copy public headers
397399 cp -R -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
@@ -443,13 +445,13 @@ ifneq ($(private_libdir_rel),$(build_private_libdir_rel))
443445ifeq ($(OS ) , Darwin)
444446ifneq ($(DARWIN_FRAMEWORK ) ,1)
445447 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; \
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 ; \
448450 done
449451endif
450452else ifneq (,$(findstring $(OS),Linux FreeBSD))
451453 for j in $(JL_TARGETS) ; do \
452- $(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 ; \
453455 done
454456endif
455457
@@ -472,11 +474,11 @@ endif
472474ifeq ($(OS ) , Darwin)
473475ifneq ($(DARWIN_FRAMEWORK ) ,1)
474476ifeq ($(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)
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)
477479else 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)
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)
480482endif
481483endif
482484else ifneq (,$(findstring $(OS),Linux FreeBSD))
@@ -487,11 +489,39 @@ else ifeq ($(JULIA_BUILD_MODE),debug)
487489 $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
488490 $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-codegen-debug.$(SHLIB_EXT)
489491endif
492+ endif
493+
494+ ifeq ($(OS ) , Darwin)
495+ ifneq ($(DARWIN_FRAMEWORK ) ,1)
496+ for j in $(JL_PRIVATE_TOOLS) ; do \
497+ install_name_tool -rpath @loader_path/$(build_libdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
498+ done
499+ endif
500+ else ifneq (,$(findstring $(OS),Linux FreeBSD))
501+ for j in $(JL_PRIVATE_TOOLS) ; do \
502+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
503+ done
504+ endif
505+
506+ ifneq ($(reverse_private_libexecdir_rel ) ,$(reverse_build_private_libexecdir_rel ) )
507+ ifeq ($(OS ) , Darwin)
508+ ifneq ($(DARWIN_FRAMEWORK ) ,1)
509+ for j in $(JL_PRIVATE_EXES) ; do \
510+ [ $$j = 7z ] && continue; \
511+ install_name_tool -rpath @executable_path/$(reverse_build_private_libexecdir_rel) @executable_path/$(reverse_private_libexecdir_rel) $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
512+ done
513+ endif
514+ else ifneq (,$(findstring $(OS),Linux FreeBSD))
515+ for j in $(JL_PRIVATE_EXES) ; do \
516+ [ $$j = 7z ] && continue; \
517+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_private_libexecdir_rel)' $(DESTDIR)$(private_libexecdir)/$$j || exit 1; \
518+ done
519+ endif
490520endif
491521
492522 # Fix rpaths for dependencies. This should be fixed in BinaryBuilder later.
493523ifeq ($(OS ) , Linux)
494- - $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
524+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $(DESTDIR)$(private_shlibdir)/libLLVM.$(SHLIB_EXT)
495525endif
496526ifneq ($(LOADER_BUILD_DEP_LIBS ) ,$(LOADER_INSTALL_DEP_LIBS ) )
497527 # Next, overwrite relative path to libjulia-internal in our loader if $$(LOADER_BUILD_DEP_LIBS) != $$(LOADER_INSTALL_DEP_LIBS)
@@ -512,7 +542,7 @@ ifeq ($(OS),FreeBSD)
512542 # don't set libgfortran's RPATH, it won't be able to find its friends on systems
513543 # that don't have the exact GCC port installed used for the build.
514544 for lib in $(DESTDIR)$(private_libdir)/libgfortran*$(SHLIB_EXT)*; do \
515- $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $$lib; \
545+ $(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN' $$lib || exit 1 ; \
516546 done
517547endif
518548
0 commit comments