diff --git a/Makefile.rules b/Makefile.rules index 410a1422a88..21686aa2428 100644 --- a/Makefile.rules +++ b/Makefile.rules @@ -392,6 +392,17 @@ endif LD.Flags += -Wl,--no-relax endif +# GNU ld/PECOFF accepts but ignores them below; +# --version-script +# --export-dynamic +# --rpath +# FIXME: autoconf should be aware of them. +ifneq (,$(filter $(HOST_OS),Cygwin MingW)) + HAVE_LINK_VERSION_SCRIPT := 0 + RPATH := + RDYNAMIC := -Wl,--export-all-symbols +endif + #-------------------------------------------------------------------- # Directory locations #-------------------------------------------------------------------- @@ -949,11 +960,6 @@ ifdef EXPORTED_SYMBOL_FILE # First, set up the native export file, which may differ from the source # export file. -# The option --version-script is not effective on GNU ld win32. -ifneq (,$(filter $(HOST_OS),Cygwin MingW)) - HAVE_LINK_VERSION_SCRIPT := 0 -endif - ifeq ($(HOST_OS),Darwin) # Darwin convention prefixes symbols with underscores. NativeExportsFile := $(ObjDir)/$(notdir $(EXPORTED_SYMBOL_FILE)).sed diff --git a/unittests/CMakeLists.txt b/unittests/CMakeLists.txt index 41e20cfc902..7953fac3bfa 100644 --- a/unittests/CMakeLists.txt +++ b/unittests/CMakeLists.txt @@ -82,6 +82,10 @@ endif() add_llvm_unittest(JIT ${JITTestsSources}) +if(MINGW) + set_property(TARGET JITTests PROPERTY LINK_FLAGS -Wl,--export-all-symbols) +endif() + add_llvm_unittest(Transforms Transforms/Utils/Cloning.cpp ) diff --git a/unittests/Makefile.unittest b/unittests/Makefile.unittest index 9a75b2c2eb8..8be6174cb90 100644 --- a/unittests/Makefile.unittest +++ b/unittests/Makefile.unittest @@ -35,9 +35,11 @@ endif TESTLIBS = -lGoogleTest -lUnitTestMain ifeq ($(ENABLE_SHARED), 1) - # Add the absolute path to the dynamic library. This is ok because - # we'll never install unittests. - LD.Flags += $(RPATH) -Wl,$(SharedLibDir) + ifneq (,$(RPATH)) + # Add the absolute path to the dynamic library. This is ok because + # we'll never install unittests. + LD.Flags += $(RPATH) -Wl,$(SharedLibDir) + endif # Also set {DYLD,LD}_LIBRARY_PATH because OSX ignores the rpath most # of the time. Run.Shared := $(SHLIBPATH_VAR)="$(SharedLibDir)$${$(SHLIBPATH_VAR):+:}$$$(SHLIBPATH_VAR)"