Skip to content

Commit ec98087

Browse files
authored
Make JULIA_BUILD_MODE=debug work with make install. (#46320)
Replaces BUNDLE_DEBUG_LIBS, and fixes fixup-libstdc++.sh.
1 parent c80316e commit ec98087

File tree

2 files changed

+38
-32
lines changed

2 files changed

+38
-32
lines changed

Makefile

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -169,14 +169,17 @@ $(build_datarootdir)/julia/base.cache: $(JULIA_SYSIMG) | $(DIRS) $(build_dataroo
169169
$(call cygpath_w,$@))
170170

171171
# public libraries, that are installed in $(prefix)/lib
172+
ifeq ($(JULIA_BUILD_MODE),release)
172173
JL_TARGETS := julia
173-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
174-
JL_TARGETS += julia-debug
174+
else ifeq ($(JULIA_BUILD_MODE),debug)
175+
JL_TARGETS := julia-debug
175176
endif
176177

177178
# private libraries, that are installed in $(prefix)/lib/julia
178-
JL_PRIVATE_LIBS-0 := libccalltest libllvmcalltest libjulia-internal libjulia-codegen
179-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
179+
JL_PRIVATE_LIBS-0 := libccalltest libllvmcalltest
180+
ifeq ($(JULIA_BUILD_MODE),release)
181+
JL_PRIVATE_LIBS-0 += libjulia-internal libjulia-codegen
182+
else ifeq ($(JULIA_BUILD_MODE),debug)
180183
JL_PRIVATE_LIBS-0 += libjulia-internal-debug libjulia-codegen-debug
181184
endif
182185
ifeq ($(USE_GPL_LIBS), 1)
@@ -237,38 +240,32 @@ endef
237240

238241

239242
install: $(build_depsbindir)/stringreplace $(BUILDROOT)/doc/_build/html/en/index.html
240-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
241-
@$(MAKE) $(QUIET_MAKE) all
242-
else
243-
@$(MAKE) $(QUIET_MAKE) release
244-
endif
243+
@$(MAKE) $(QUIET_MAKE) $(JULIA_BUILD_MODE)
245244
@for subdir in $(bindir) $(datarootdir)/julia/stdlib/$(VERSDIR) $(docdir) $(man1dir) $(includedir)/julia $(libdir) $(private_libdir) $(sysconfdir) $(libexecdir); do \
246245
mkdir -p $(DESTDIR)$$subdir; \
247246
done
248247

249-
$(INSTALL_M) $(build_bindir)/julia $(DESTDIR)$(bindir)/
250-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
251-
$(INSTALL_M) $(build_bindir)/julia-debug $(DESTDIR)$(bindir)/
252-
endif
248+
$(INSTALL_M) $(JULIA_EXECUTABLE_$(JULIA_BUILD_MODE)) $(DESTDIR)$(bindir)/
253249
ifeq ($(OS),WINNT)
254-
-$(INSTALL_M) $(filter-out $(build_bindir)/libjulia-debug.dll,$(wildcard $(build_bindir)/*.dll)) $(DESTDIR)$(bindir)/
250+
-$(INSTALL_M) $(wildcard $(build_bindir)/*.dll) $(DESTDIR)$(bindir)/
251+
ifeq ($(JULIA_BUILD_MODE),release)
255252
-$(INSTALL_M) $(build_libdir)/libjulia.dll.a $(DESTDIR)$(libdir)/
253+
else ifeq ($(JULIA_BUILD_MODE),debug)
254+
-$(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
255+
endif
256256

257257
# We have a single exception; we want 7z.dll to live in libexec, not bin, so that 7z.exe can find it.
258258
-mv $(DESTDIR)$(bindir)/7z.dll $(DESTDIR)$(libexecdir)/
259-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
260-
-$(INSTALL_M) $(build_bindir)/libjulia-debug.dll $(DESTDIR)$(bindir)/
261-
-$(INSTALL_M) $(build_libdir)/libjulia-debug.dll.a $(DESTDIR)$(libdir)/
262-
endif
263259
-$(INSTALL_M) $(build_bindir)/libopenlibm.dll.a $(DESTDIR)$(libdir)/
264260
else
265261

266262
# Copy over .dSYM directories directly for Darwin
267263
ifneq ($(DARWIN_FRAMEWORK),1)
268264
ifeq ($(OS),Darwin)
265+
ifeq ($(JULIA_BUILD_MODE),release)
269266
-cp -a $(build_libdir)/libjulia.*.dSYM $(DESTDIR)$(libdir)
270267
-cp -a $(build_private_libdir)/sys.dylib.dSYM $(DESTDIR)$(private_libdir)
271-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
268+
else ifeq ($(JULIA_BUILD_MODE),debug)
272269
-cp -a $(build_libdir)/libjulia-debug.*.dSYM $(DESTDIR)$(libdir)
273270
-cp -a $(build_private_libdir)/sys-debug.dylib.dSYM $(DESTDIR)$(private_libdir)
274271
endif
@@ -283,10 +280,11 @@ endif
283280
done
284281
else
285282
# libjulia in Darwin framework has special location and name
283+
ifeq ($(JULIA_BUILD_MODE),release)
286284
$(INSTALL_M) $(build_libdir)/libjulia.$(SOMAJOR).$(SOMINOR).dylib $(DESTDIR)$(prefix)/$(framework_dylib)
287285
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/$(FRAMEWORK_NAME).dSYM $(DESTDIR)$(prefix)/$(framework_dylib)
288286
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/sys.dylib.dSYM $(build_private_libdir)/sys.dylib
289-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
287+
else ifeq ($(JULIA_BUILD_MODE),debug)
290288
$(INSTALL_M) $(build_libdir)/libjulia-debug.$(SOMAJOR).$(SOMINOR).dylib $(DESTDIR)$(prefix)/$(framework_dylib)_debug
291289
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/$(FRAMEWORK_NAME)_debug.dSYM $(DESTDIR)$(prefix)/$(framework_dylib)_debug
292290
@$(DSYMUTIL) -o $(DESTDIR)$(prefix)/$(framework_resources)/sys-debug.dylib.dSYM $(build_private_libdir)/sys-debug.dylib
@@ -314,8 +312,9 @@ endif
314312
# Copy public headers
315313
cp -R -L $(build_includedir)/julia/* $(DESTDIR)$(includedir)/julia
316314
# Copy system image
315+
ifeq ($(JULIA_BUILD_MODE),release)
317316
$(INSTALL_M) $(build_private_libdir)/sys.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
318-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
317+
else ifeq ($(JULIA_BUILD_MODE),debug)
319318
$(INSTALL_M) $(build_private_libdir)/sys-debug.$(SHLIB_EXT) $(DESTDIR)$(private_libdir)
320319
endif
321320

@@ -364,33 +363,35 @@ endif
364363
RELEASE_TARGET=$(DESTDIR)$(prefix)/$(framework_dylib); \
365364
DEBUG_TARGET=$(DESTDIR)$(prefix)/$(framework_dylib)_debug; \
366365
fi; \
367-
$(call stringreplace,$${RELEASE_TARGET},sys.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys.$(SHLIB_EXT)); \
368-
if [ "$(BUNDLE_DEBUG_LIBS)" = "1" ]; then \
366+
if [ "$(JULIA_BUILD_MODE)" = "release" ]; then \
367+
$(call stringreplace,$${RELEASE_TARGET},sys.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys.$(SHLIB_EXT)); \
368+
elif [ "$(JULIA_BUILD_MODE)" = "debug" ]; then \
369369
$(call stringreplace,$${DEBUG_TARGET},sys-debug.$(SHLIB_EXT)$$,$(private_libdir_rel)/sys-debug.$(SHLIB_EXT)); \
370370
fi;
371371
endif
372372

373373
# Set rpath for libjulia-internal, which is moving from `../lib` to `../lib/julia`. We only need to do this for Linux/FreeBSD
374374
ifneq (,$(findstring $(OS),Linux FreeBSD))
375+
ifeq ($(JULIA_BUILD_MODE),release)
375376
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal.$(SHLIB_EXT)
376-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
377+
else ifeq ($(JULIA_BUILD_MODE),debug)
377378
$(PATCHELF) --set-rpath '$$ORIGIN:$$ORIGIN/$(reverse_private_libdir_rel)' $(DESTDIR)$(private_libdir)/libjulia-internal-debug.$(SHLIB_EXT)
378379
endif
379380
endif
380381

381382

382383
ifneq ($(LOADER_BUILD_DEP_LIBS),$(LOADER_INSTALL_DEP_LIBS))
383384
# Next, overwrite relative path to libjulia-internal in our loader if $$(LOADER_BUILD_DEP_LIBS) != $$(LOADER_INSTALL_DEP_LIBS)
385+
ifeq ($(JULIA_BUILD_MODE),release)
384386
$(call stringreplace,$(DESTDIR)$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT),$(LOADER_BUILD_DEP_LIBS)$$,$(LOADER_INSTALL_DEP_LIBS))
385-
ifeq ($(OS),Darwin)
386-
# Codesign the libjulia we just modified
387-
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT)"
388-
endif
389-
390-
ifeq ($(BUNDLE_DEBUG_LIBS),1)
387+
else ifeq ($(JULIA_BUILD_MODE),debug)
391388
$(call stringreplace,$(DESTDIR)$(shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT),$(LOADER_DEBUG_BUILD_DEP_LIBS)$$,$(LOADER_DEBUG_INSTALL_DEP_LIBS))
389+
endif
392390
ifeq ($(OS),Darwin)
393391
# Codesign the libjulia we just modified
392+
ifeq ($(JULIA_BUILD_MODE),release)
393+
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia.$(JL_MAJOR_MINOR_SHLIB_EXT)"
394+
else ifeq ($(JULIA_BUILD_MODE),debug)
394395
$(JULIAHOME)/contrib/codesign.sh "$(MACOS_CODESIGN_IDENTITY)" "$(DESTDIR)$(shlibdir)/libjulia-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)"
395396
endif
396397
endif

contrib/fixup-libstdc++.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ fi
1111
libdir="$1"
1212
private_libdir="$2"
1313

14-
if [ ! -f "$private_libdir/libjulia-internal.so" ]; then
14+
if [ ! -f "$private_libdir/libjulia-internal.so" ] && \
15+
[ ! -f "$private_libdir/libjulia-internal-debug.so" ]; then
1516
echo "ERROR: Could not open $private_libdir/libjulia-internal.so" >&2
1617
exit 2
1718
fi
@@ -24,7 +25,11 @@ find_shlib ()
2425
}
2526

2627
# Discover libstdc++ location and name
27-
LIBSTD=$(find_shlib "$private_libdir/libjulia-internal.so" "libstdc++.so")
28+
if [ -f "$private_libdir/libjulia-internal.so" ]; then
29+
LIBSTD=$(find_shlib "$private_libdir/libjulia-internal.so" "libstdc++.so")
30+
elif [ -f "$private_libdir/libjulia-internal-debug.so" ]; then
31+
LIBSTD=$(find_shlib "$private_libdir/libjulia-internal-debug.so" "libstdc++.so")
32+
fi
2833
LIBSTD_NAME=$(basename $LIBSTD)
2934
LIBSTD_DIR=$(dirname $LIBSTD)
3035

0 commit comments

Comments
 (0)