diff --git a/Makefile.rules b/Makefile.rules index 68f6cf8ec5d..1eeadac1989 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -608,6 +608,22 @@ ifndef KEEP_SYMBOLS Install.StripFlag += -s endif +# By default, strip dead symbols at link time +ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) +ifneq ($(HOST_OS),Darwin) + CXX.Flags += -ffunction-sections -fdata-sections +endif +endif +ifndef NO_DEAD_STRIP + ifeq ($(HOST_OS),Darwin) + LD.Flags += -Wl,-dead_strip + else + ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) + LD.Flags += -Wl,--gc-sections + endif + endif +endif + # Adjust linker flags for building an executable ifneq ($(HOST_OS), $(filter $(HOST_OS), Cygwin MingW)) ifndef TOOL_NO_EXPORTS diff --git a/tools/bugpoint/Makefile b/tools/bugpoint/Makefile index 20493218b06..96c0fcf519e 100644 --- a/tools/bugpoint/Makefile +++ b/tools/bugpoint/Makefile @@ -12,4 +12,7 @@ TOOLNAME := bugpoint LINK_COMPONENTS := asmparser instrumentation scalaropts ipo linker bitreader \ bitwriter irreader vectorize objcarcopts +# Support plugins. +NO_DEAD_STRIP := 1 + include $(LEVEL)/Makefile.common diff --git a/tools/llc/Makefile b/tools/llc/Makefile index c24f378bc53..71bce4dc1ad 100644 --- a/tools/llc/Makefile +++ b/tools/llc/Makefile @@ -11,5 +11,8 @@ LEVEL := ../.. TOOLNAME := llc LINK_COMPONENTS := all-targets bitreader asmparser irreader +# Support plugins. +NO_DEAD_STRIP := 1 + include $(LEVEL)/Makefile.common diff --git a/tools/llvm-shlib/Makefile b/tools/llvm-shlib/Makefile index 92f3132ff53..317da517202 100644 --- a/tools/llvm-shlib/Makefile +++ b/tools/llvm-shlib/Makefile @@ -49,9 +49,6 @@ ifeq ($(HOST_OS),Darwin) endif # Include everything from the .a's into the shared library. LLVMLibsOptions := $(LLVMLibsOptions) -all_load - # extra options to override libtool defaults - LLVMLibsOptions := $(LLVMLibsOptions) \ - -Wl,-dead_strip # Mac OS X 10.4 and earlier tools do not allow a second -install_name on command line DARWIN_VERS := $(shell echo $(TARGET_TRIPLE) | sed 's/.*darwin\([0-9]*\).*/\1/') diff --git a/tools/lto/Makefile b/tools/lto/Makefile index cedbee188c0..e2b0ff80ef2 100644 --- a/tools/lto/Makefile +++ b/tools/lto/Makefile @@ -37,9 +37,6 @@ ifeq ($(HOST_OS),Darwin) -Wl,$(LTO_LIBRARY_VERSION).$(LLVM_SUBMIT_SUBVERSION) \ -Wl,-compatibility_version -Wl,1 endif - # extra options to override libtool defaults - LLVMLibsOptions := $(LLVMLibsOptions) \ - -Wl,-dead_strip # Mac OS X 10.4 and earlier tools do not allow a second -install_name on command line DARWIN_VERS := $(shell echo $(TARGET_TRIPLE) | sed 's/.*darwin\([0-9]*\).*/\1/') diff --git a/tools/opt/Makefile b/tools/opt/Makefile index a451005574a..fa2d0145531 100644 --- a/tools/opt/Makefile +++ b/tools/opt/Makefile @@ -11,4 +11,7 @@ LEVEL := ../.. TOOLNAME := opt LINK_COMPONENTS := bitreader bitwriter asmparser irreader instrumentation scalaropts objcarcopts ipo vectorize all-targets +# Support plugins. +NO_DEAD_STRIP := 1 + include $(LEVEL)/Makefile.common