Skip to content

Commit 3f2403b

Browse files
committed
fix binary locations and install
Notably: delete lib/julia/*-o.a files that should not get installed
1 parent 6594dbd commit 3f2403b

File tree

9 files changed

+163
-100
lines changed

9 files changed

+163
-100
lines changed

Make.inc

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,11 +374,15 @@ $(1)_rel_eval = $(call rel_path,$(2),$($(1)))
374374
$(1)_rel = $$(call hit_cache,$(1)_rel_eval)
375375
endef
376376
$(foreach D,libdir private_libdir datarootdir libexecdir private_libexecdir docdir sysconfdir includedir,$(eval $(call cache_rel_path,$(D),$(bindir))))
377-
$(foreach D,build_libdir build_private_libdir,$(eval $(call cache_rel_path,$(D),$(build_bindir))))
377+
$(foreach D,build_libdir build_private_libdir ,$(eval $(call cache_rel_path,$(D),$(build_bindir))))
378378

379379
# Save a special one: reverse_private_libdir_rel: usually just `../`, but good to be general:
380380
reverse_private_libdir_rel_eval = $(call rel_path,$(private_libdir),$(libdir))
381381
reverse_private_libdir_rel = $(call hit_cache,reverse_private_libdir_rel_eval)
382+
reverse_private_libexecdir_rel_eval = $(call rel_path,$(private_libexecdir),$(private_libdir))
383+
reverse_private_libexecdir_rel = $(call hit_cache,reverse_private_libexecdir_rel_eval)
384+
reverse_build_private_libexecdir_rel_eval = $(call rel_path,$(build_private_libexecdir),$(build_libdir))
385+
reverse_build_private_libexecdir_rel = $(call hit_cache,reverse_build_private_libexecdir_rel_eval)
382386

383387
INSTALL_F := $(JULIAHOME)/contrib/install.sh 644
384388
INSTALL_M := $(JULIAHOME)/contrib/install.sh 755

Makefile

Lines changed: 71 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ default: $(JULIA_BUILD_MODE) # contains either "debug" or "release"
2626
all: 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))
3030
ifneq ($(BUILDROOT),$(JULIAHOME))
3131
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)
3232
BUILDDIRMAKE := $(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
205205
JL_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 :=
206212
ifeq ($(JULIA_BUILD_MODE),release)
207213
JL_PRIVATE_LIBS-0 += libjulia-internal libjulia-codegen
208214
else ifeq ($(JULIA_BUILD_MODE),debug)
@@ -233,9 +239,11 @@ else
233239
JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libz
234240
endif
235241
JL_PRIVATE_LIBS-$(USE_SYSTEM_ZLIB) += libzstd
242+
JL_PRIVATE_EXES := zstd$(EXE) zstdmt$(EXE)
236243
ifeq ($(USE_LLVM_SHLIB),1)
237244
JL_PRIVATE_LIBS-$(USE_SYSTEM_LLVM) += libLLVM $(LLVM_SHARED_LIB_NAME)
238245
endif
246+
JL_PRIVATE_TOOLS += lld$(EXE) dsymutil$(EXE)
239247
JL_PRIVATE_LIBS-$(USE_SYSTEM_LIBUNWIND) += libunwind
240248

241249
ifeq ($(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)/
316324
ifeq ($(OS),WINNT)
317-
-$(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
325+
$(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
318326
ifeq ($(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)/
321329
else 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)/
324332
endif
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)/
333337
else
334338

335339
# Copy over .dSYM directories directly for Darwin
336340
ifneq ($(DARWIN_FRAMEWORK),1)
337341
ifeq ($(OS),Darwin)
338342
ifeq ($(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)
343347
else 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)
348352
endif
349353
endif
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
386390
endif
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))
443445
ifeq ($(OS), Darwin)
444446
ifneq ($(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
449451
endif
450452
else 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
454456
endif
455457

@@ -472,11 +474,11 @@ endif
472474
ifeq ($(OS), Darwin)
473475
ifneq ($(DARWIN_FRAMEWORK),1)
474476
ifeq ($(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)
477479
else 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)
480482
endif
481483
endif
482484
else 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)
489491
endif
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
490520
endif
491521

492522
# Fix rpaths for dependencies. This should be fixed in BinaryBuilder later.
493523
ifeq ($(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)
495525
endif
496526
ifneq ($(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
517547
endif
518548

deps/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,12 @@ endif
7272
endif
7373
endif
7474

75+
PATCHELF_MANIFEST :=
7576
ifneq (,$(findstring $(OS),Linux FreeBSD OpenBSD))
7677
ifeq ($(USE_SYSTEM_PATCHELF), 0)
7778
DEP_LIBS += patchelf
7879
PATCHELF:=$(build_depsbindir)/patchelf
80+
PATCHELF_MANIFEST:=$(build_prefix)/manifest/patchelf
7981
else
8082
PATCHELF:=patchelf
8183
endif

deps/csl.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ install-csl:
128128
cp -a $(build_libdir)/gcc/$(BB_TRIPLET)/$(GCC_VERSION)/libssp.dll.a $(build_libdir)/
129129
endif
130130
endif
131+
131132
ifeq ($(OS),WINNT)
132133
uninstall-csl: uninstall-gcc-libraries
133134
uninstall-gcc-libraries:
@@ -137,4 +138,5 @@ uninstall-gcc-libraries:
137138
-rm -f $(build_private_libdir)/libmsvcrt.a
138139
-rm -f $(build_private_libdir)/libssp.dll.a
139140
-rm -f $(build_libdir)/libssp.dll.a
141+
.PHONY: uninstall-gcc-libraries
140142
endif

deps/p7zip.mk

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ include $(SRCDIR)/p7zip.version
33

44
ifneq ($(USE_BINARYBUILDER_P7ZIP),1)
55

6+
P7ZIP_BUILD_OPTS := bindir=$(build_private_libexecdir) CC="$(CC)" CXX="$(CXX)"
7+
68
$(SRCCACHE)/p7zip-$(P7ZIP_VER).tar.gz: | $(SRCCACHE)
79
$(JLDOWNLOAD) $@ https://github.com/p7zip-project/p7zip/archive/refs/tags/v$(P7ZIP_VER).tar.gz
810

@@ -17,21 +19,21 @@ checksum-p7zip: $(SRCCACHE)/p7zip-$(P7ZIP_VER).tar.gz
1719

1820
$(BUILDDIR)/p7zip-$(P7ZIP_VER)/build-configured: $(BUILDDIR)/p7zip-$(P7ZIP_VER)/source-extracted
1921
$(BUILDDIR)/p7zip-$(P7ZIP_VER)/build-compiled: $(BUILDDIR)/p7zip-$(P7ZIP_VER)/build-configured
20-
$(MAKE) -C $(dir $<) $(MAKE_COMMON) CC="$(CC)" CXX="$(CXX)" 7za
22+
$(MAKE) -C $(dir $<) $(MAKE_COMMON) $(P7ZIP_BUILD_OPTS) 7za$(EXE)
2123
echo 1 > $@
2224

2325
define P7ZIP_INSTALL
24-
mkdir -p $2/$$(build_bindir)
25-
cp -a $1/bin/7za $2/$$(build_bindir)/7z
26+
mkdir -p $2/$$(build_private_libexecdir)/
27+
cp -a $1/bin/7za$(EXE) $2/$$(build_private_libexecdir)/7z$(EXE)
2628
endef
2729
$(eval $(call staged-install, \
2830
p7zip,p7zip-$(P7ZIP_VER), \
2931
P7ZIP_INSTALL,,,))
3032

3133
clean-p7zip:
3234
-rm -f $(BUILDDIR)/p7zip-$(P7ZIP_VER)/build-configured $(BUILDDIR)/p7zip-$(P7ZIP_VER)/build-compiled
33-
-rm -f $(build_bindir)/7za
34-
-$(MAKE) -C $(BUILDDIR)/p7zip-$(P7ZIP_VER) clean
35+
-rm -f $(build_bindir)/7z$(EXE) $(build_bindir)/7z$(EXE) $(build_private_libexecdir)/7z$(EXE)
36+
-$(MAKE) -C $(BUILDDIR)/p7zip-$(P7ZIP_VER) $(MAKE_COMMON) $(P7ZIP_BUILD_OPTS) clean
3537

3638
distclean-p7zip:
3739
rm -rf $(SRCCACHE)/p7zip-$(P7ZIP_VER).tar.gz $(SRCCACHE)/p7zip-$(P7ZIP_VER) $(BUILDDIR)/p7zip-$(P7ZIP_VER)
@@ -48,5 +50,23 @@ check-p7zip: compile-p7zip
4850
else # USE_BINARYBUILDER_P7ZIP
4951

5052
$(eval $(call bb-install,p7zip,P7ZIP,false))
53+
# move from bindir to shlibdir, where we expect to install it
54+
install-p7zip: post-install-p7zip
55+
uninstall-p7zip: pre-uninstall-p7zip
56+
post-install-p7zip: $(build_prefix)/manifest/p7zip
57+
mkdir -p $(build_private_libexecdir)/
58+
[ ! -e $(build_bindir)/7z$(EXE) ] || mv $(build_bindir)/7z$(EXE) $(build_private_libexecdir)/7z$(EXE)
59+
[ -e $(build_private_libexecdir)/7z$(EXE) ]
60+
ifeq ($(OS),WINNT)
61+
[ ! -e $(build_bindir)/7z.dll ] || mv $(build_bindir)/7z.dll $(build_private_libexecdir)/7z.dll
62+
[ -e $(build_private_libexecdir)/7z.dll ]
63+
endif
64+
pre-uninstall-p7zip:
65+
-rm -f $(build_private_libexecdir)/7z$(EXE)
66+
ifeq ($(OS),WINNT)
67+
-rm -f $(build_private_libexecdir)/7z.dll
68+
endif
69+
70+
.PHONY: post-install-p7zip pre-uninstall-p7zip
5171

5272
endif

deps/sanitizers.mk

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ install-sanitizers: $$(addprefix $$(build_libdir)/, $$(notdir $$(call pathsearch
1717
echo "Sanitizer library $(1) not found in $$(SANITIZER_LIB_PATH)"; \
1818
exit 1; \
1919
fi
20-
$$(addprefix $$(build_shlibdir)/,$(2)): $$(addprefix $$(dir $$(call pathsearch_all,$(1),$$(SANITIZER_LIB_PATH))),$(2)) | $$(build_shlibdir)
20+
$$(addprefix $$(build_shlibdir)/,$(2)): $$(addprefix $$(dir $$(call pathsearch_all,$(1),$$(SANITIZER_LIB_PATH))),$(2)) $$(PATCHELF_MANIFEST) | $$(build_shlibdir)
2121
-cp $$< $$@
22-
$(if $(filter $(OS), Linux), \
23-
-$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$$$ORIGIN' $$@ , 0)
22+
ifneq (,$(findstring $(OS),Linux))
23+
-$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$$$ORIGIN' $$@ , 0)
24+
endif
2425
endef
2526

2627
ifeq ($(USECLANG),1)

deps/zstd.mk

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ZSTD_GIT_URL := https://github.com/facebook/zstd.git
44
ZSTD_TAR_URL = https://api.github.com/repos/facebook/zstd/tarball/$1
55
$(eval $(call git-external,zstd,ZSTD,,,$(BUILDDIR)))
66

7-
ZSTD_BUILD_OPTS := MOREFLAGS="-DZSTD_MULTITHREAD $(fPIC)"
7+
ZSTD_BUILD_OPTS := MOREFLAGS="-DZSTD_MULTITHREAD $(fPIC)" bindir=$(build_private_libexecdir)
88

99
$(BUILDDIR)/$(ZSTD_SRC_DIR)/build-configured: $(BUILDDIR)/$(ZSTD_SRC_DIR)/source-extracted
1010
echo 1 > $@
@@ -13,16 +13,14 @@ $(BUILDDIR)/$(ZSTD_SRC_DIR)/build-compiled: $(BUILDDIR)/$(ZSTD_SRC_DIR)/build-co
1313
$(MAKE) -C $(dir $<) $(MAKE_COMMON) $(ZSTD_BUILD_OPTS)
1414
echo 1 > $@
1515

16-
ZSTD_INSTALL=$(MAKE_INSTALL)
17-
1816
$(eval $(call staged-install, \
1917
zstd,$(ZSTD_SRC_DIR), \
20-
ZSTD_INSTALL,$(ZSTD_BUILD_OPTS) MT=1,, \
21-
$(INSTALL_NAME_CMD)libzstd.$(SHLIB_EXT) $(build_shlibdir)/libzstd.$(SHLIB_EXT)))
18+
MAKE_INSTALL,$(ZSTD_BUILD_OPTS) MT=1,, \
19+
$(INSTALL_NAME_CMD)libzstd.$(SHLIB_EXT) $(build_private_libexecdir)/libzstd.$(SHLIB_EXT)))
2220

2321
clean-zstd:
2422
-rm -f $(BUILDDIR)/$(ZSTD_SRC_DIR)/build-configured $(BUILDDIR)/$(ZSTD_SRC_DIR)/build-compiled
25-
-$(MAKE) -C $(BUILDDIR)/$(ZSTD_SRC_DIR) $(ZSTD_BUILD_OPTS) clean
23+
-$(MAKE) -C $(BUILDDIR)/$(ZSTD_SRC_DIR) $(MAKE_COMMON) $(ZSTD_BUILD_OPTS) clean
2624

2725
get-zstd: $(ZSTD_SRC_FILE)
2826
extract-zstd: $(BUILDDIR)/$(ZSTD_SRC_DIR)/source-extracted
@@ -34,5 +32,27 @@ check-zstd: compile-zstd
3432
else # USE_BINARYBUILDER_ZSTD
3533

3634
$(eval $(call bb-install,zstd,ZSTD,false))
35+
# move from bindir to shlibdir, where we expect to install it
36+
install-zstd: post-install-zstd
37+
uninstall-zstd: pre-uninstall-zstd
38+
post-install-zstd: $(build_prefix)/manifest/zstd $(PATCHELF_MANIFEST)
39+
mkdir -p $(build_private_libexecdir)/
40+
[ ! -e $(build_bindir)/zstdmt$(EXE) ] || mv $(build_bindir)/zstdmt$(EXE) $(build_private_libexecdir)/zstdmt$(EXE)
41+
[ ! -e $(build_bindir)/zstd$(EXE) ] || mv $(build_bindir)/zstd$(EXE) $(build_private_libexecdir)/zstd$(EXE)
42+
[ -e $(build_private_libexecdir)/zstd$(EXE) ]
43+
[ -e $(build_private_libexecdir)/zstdmt$(EXE) ]
44+
ifeq ($(OS), Darwin)
45+
for j in zstd zstdmt ; do \
46+
install_name_tool -rpath @executable_path/$(reverse_build_private_libexecdir_rel) @loader_path/$(build_libdir_rel) $(build_private_libexecdir)/$$j || true; \
47+
install_name_tool -rpath @loader_path/$(build_libdir_rel) @executable_path/$(reverse_build_private_libexecdir_rel) $(build_private_libexecdir)/$$j || exit 1; \
48+
done
49+
else ifneq (,$(findstring $(OS),Linux FreeBSD))
50+
for j in zstd zstdmt ; do \
51+
$(PATCHELF) $(PATCHELF_SET_RPATH_ARG) '$$ORIGIN/$(reverse_build_private_libexecdir_rel)' $(build_private_libexecdir)/$$j || exit 1; \
52+
done
53+
endif
54+
55+
pre-uninstall-zstd:
56+
-rm -f $(build_private_libexecdir)/zstd$(EXE) $(build_private_libexecdir)/zstdmt$(EXE)
3757

3858
endif # USE_BINARYBUILDER_ZSTD

0 commit comments

Comments
 (0)