Skip to content

Commit

Permalink
FreeBSD: propose a simpler way to deal with libgcc_s
Browse files Browse the repository at this point in the history
Tweak the order of libgcc_s in DT_NEEDED.
Make FreeBSD do not require `BUILD_CUSTOM_LIBCXX`.

See also: JuliaLang#21788, JuliaLang#22352
  • Loading branch information
iblislin committed Jul 2, 2017
1 parent a967db3 commit fba8996
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 16 deletions.
14 changes: 10 additions & 4 deletions Make.inc
Original file line number Diff line number Diff line change
Expand Up @@ -544,9 +544,6 @@ LDFLAGS += -L$(build_libdir) -L$(GCCPATH) -Wl,-rpath,$(build_libdir) -Wl,-rpath,
# This ensures we get the right RPATH even if we're missing FFLAGS somewhere
FC += -Wl,-rpath=$(GCCPATH)

# Build our own libc++ and libc++abi because otherwise /usr/lib/libc++.so and /lib/libcxxrt.so will
# be linked in when building LLVM, and those link to /lib/libgcc_s.so
BUILD_CUSTOM_LIBCXX ?= 1
endif # gfortran
endif # FreeBSD

Expand Down Expand Up @@ -959,7 +956,16 @@ endif

ifeq ($(OS), FreeBSD)
JLDFLAGS := -Wl,-Bdynamic
OSLIBS += -lelf -lkvm -lrt -Wl,--export-dynamic -Wl,--version-script=$(JULIAHOME)/src/julia.expmap $(NO_WHOLE_ARCHIVE) $(LIBUNWIND)
OSLIBS += -lelf -lkvm -lrt

# Tweak order of libgcc_s in DT_NEEDED,
# make it loaded first to
# prevent from linking to outdated system libs.
# See #21788
OSLIBS += -lgcc_s

OSLIBS += -Wl,--export-dynamic -Wl,--version-script=$(JULIAHOME)/src/julia.expmap \
$(NO_WHOLE_ARCHIVE) $(LIBUNWIND)
endif

ifeq ($(OS), Darwin)
Expand Down
7 changes: 0 additions & 7 deletions deps/llvm.mk
Original file line number Diff line number Diff line change
Expand Up @@ -133,13 +133,6 @@ LLVM_CMAKE += -DLLDB_DISABLE_PYTHON=ON
endif # LLDB_DISABLE_PYTHON
endif # BUILD_LLDB

# Part of the FreeBSD libgcc_s kludge
ifeq ($(OS),FreeBSD)
ifneq ($(GCCPATH),)
LLVM_LDFLAGS += -Wl,-rpath,'\$$ORIGIN',-rpath,$(GCCPATH)
endif
endif

ifneq (,$(filter $(ARCH), powerpc64le ppc64le))
LLVM_CXXFLAGS += -mminimal-toc
endif
Expand Down
5 changes: 0 additions & 5 deletions deps/tools/common.mk
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,6 @@ endif
# NOTE: Do not make RPATH changes in CMAKE_COMMON on platforms other than FreeBSD, since
# it will make its way into the LLVM build flags, and LLVM is picky about RPATH (though
# apparently not on FreeBSD). Ref PR #22352
ifeq ($(OS),FreeBSD)
ifneq ($(GCCPATH),)
CMAKE_COMMON += -DCMAKE_INSTALL_RPATH="\$$ORIGIN:$(GCCPATH)"
endif
endif

# For now this is LLVM specific, but I expect it won't be in the future
ifeq ($(CMAKE_GENERATOR),Ninja)
Expand Down

0 comments on commit fba8996

Please sign in to comment.