[LLVMdev] Darwin option processing

Mike Stump mrs at apple.com
Fri May 8 12:58:24 PDT 2009

On May 8, 2009, at 11:49 AM, Chris Lattner wrote:
> On May 7, 2009, at 6:24 PM, Mike Stump wrote:
>> I'm toying with building with -mdynamic-no-pic, but for this to work,
>> the shared library bits in llvm can't be built with that flag.
> Hi Mike,
> If you're doing this for Clang's benefit,

No, not really, I'm doing it for the general benefit of llvm and all  
that use Makefile.rules.

> I think the best thing to do
> is to compile LLVM PIC (the default) and then build the clang front-
> end pieces with -mdynamic-no-pic.  Does this work for you?

The proposed patch is more general that that.  It avoids the flag,  
when it is known it can't work, and leaves it in otherwise.  This  
allows the configurer of llvm to make the choice.  Longer term, I'd  
like to have the build system default to this, as appropriate.  This  
patch is merely a bridge until that patch is in.  If you'd prefer that  
patch instead, I could just do that one up.  My only reservation is  
that a change like that precedes the testing I'd rather have on it  
before I did the flip.

The other patch would look something like this:

Index: Makefile.rules
--- Makefile.rules	(revision 71041)
+++ Makefile.rules	(working copy)
@@ -245,6 +245,13 @@
      OmitFramePointer := -fomit-frame-pointer
+    ifndef SHARED_LIBRARY
+      ifeq ($(OS),Darwin)
+        DynamicNoPic := -mdynamic-no-pic
+      endif
+    endif
+  endif

    # Darwin requires -fstrict-aliasing to be explicitly enabled.
    # Avoid -fstrict-aliasing on Darwin for now, there are unresolved  
@@ -252,8 +259,8 @@
    #ifeq ($(OS),Darwin)
    #  EXTRA_OPTIONS += -fstrict-aliasing -Wstrict-aliasing
-  CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer)
-  C.Flags   += $(OPTIMIZE_OPTION) $(OmitFramePointer)
+  CXX.Flags += $(OPTIMIZE_OPTION) $(OmitFramePointer) $(DynamicNoPic)
+  C.Flags   += $(OPTIMIZE_OPTION) $(OmitFramePointer) $(DynamicNoPic)
    LD.Flags  += $(OPTIMIZE_OPTION)
    BuildMode := Debug


More information about the llvm-dev mailing list