[llvm-commits] [compiler-rt] r163412 - in /compiler-rt/trunk: Makefile make/lib_info.mk make/options.mk

Daniel Dunbar daniel at zuster.org
Fri Sep 7 12:57:24 PDT 2012


Author: ddunbar
Date: Fri Sep  7 14:57:23 2012
New Revision: 163412

URL: http://llvm.org/viewvc/llvm-project?rev=163412&view=rev
Log:
build: Add support for building dylibs.

Modified:
    compiler-rt/trunk/Makefile
    compiler-rt/trunk/make/lib_info.mk
    compiler-rt/trunk/make/options.mk

Modified: compiler-rt/trunk/Makefile
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/Makefile?rev=163412&r1=163411&r2=163412&view=diff
==============================================================================
--- compiler-rt/trunk/Makefile (original)
+++ compiler-rt/trunk/Makefile Fri Sep  7 14:57:23 2012
@@ -117,7 +117,7 @@
 $(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name))
 
 # Top-Level Platform Target
-$(Tmp.Name):: $(Tmp.Configs:%=$(Tmp.ObjPath)/%/libcompiler_rt.a)
+$(Tmp.Name):: $(Tmp.Configs:%=$(Tmp.Name)-%)
 .PHONY: $(Tmp.Name)
 
 clean::
@@ -131,6 +131,13 @@
 define PerPlatformConfig_template
 $(call Set,Tmp.Config,$(1))
 $(call Set,Tmp.ObjPath,$(ProjObjRoot)/$(Tmp.Name)/$(Tmp.Config))
+$(call Set,Tmp.SHARED_LIBRARY,$(strip \
+  $(call GetCNAVar,SHARED_LIBRARY,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+
+# Compute the library suffix.
+$(if $(call streq,1,$(Tmp.SHARED_LIBRARY)),
+  $(call Set,Tmp.LibrarySuffix,dylib),
+  $(call Set,Tmp.LibrarySuffix,a))
 
 # Compute the archs to build, depending on whether this is a universal build or
 # not.
@@ -142,8 +149,8 @@
        $(call VarOrDefault,$(Tmp.Key).Arch.$(Tmp.Config),$($(Tmp.Key).Arch))))
 
 # Copy or lipo to create the per-config library.
-$(call Set,Tmp.Inputs,$(Tmp.ArchsToBuild:%=$(Tmp.ObjPath)/%/libcompiler_rt.a))
-$(Tmp.ObjPath)/libcompiler_rt.a: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir
+$(call Set,Tmp.Inputs,$(Tmp.ArchsToBuild:%=$(Tmp.ObjPath)/%/libcompiler_rt.$(Tmp.LibrarySuffix)))
+$(Tmp.ObjPath)/libcompiler_rt.$(Tmp.LibrarySuffix): $(Tmp.Inputs) $(Tmp.ObjPath)/.dir
 	$(Summary) "  FINAL-ARCHIVE: $(Tmp.Name)/$(Tmp.Config): $$@"
 	-$(Verb) $(RM) $$@
 	$(if $(call streq,1,$(words $(Tmp.ArchsToBuild))), \
@@ -152,7 +159,7 @@
 .PRECIOUS: $(Tmp.ObjPath)/.dir
 
 # Per-Config Targets
-$(Tmp.Name)-$(Tmp.Config):: $(Tmp.ObjPath)/libcompiler_rt.a
+$(Tmp.Name)-$(Tmp.Config):: $(Tmp.ObjPath)/libcompiler_rt.$(Tmp.LibrarySuffix)
 .PHONY: $(Tmp.Name)-$(Tmp.Config)
 
 # Per-Config-Arch Libraries
@@ -172,10 +179,21 @@
   $(call GetCNAVar,AR,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
 $(call Set,Tmp.ARFLAGS,$(strip \
   $(call GetCNAVar,ARFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+$(call Set,Tmp.CC,$(strip \
+  $(call GetCNAVar,CC,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+$(call Set,Tmp.LDFLAGS,$(strip \
+  $(call GetCNAVar,LDFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
 $(call Set,Tmp.RANLIB,$(strip \
   $(call GetCNAVar,RANLIB,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
 $(call Set,Tmp.RANLIBFLAGS,$(strip \
   $(call GetCNAVar,RANLIBFLAGS,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+$(call Set,Tmp.SHARED_LIBRARY,$(strip \
+  $(call GetCNAVar,SHARED_LIBRARY,$(Tmp.Key),$(Tmp.Config),$(Tmp.Arch))))
+
+# Compute the library suffix.
+$(if $(call streq,1,$(Tmp.SHARED_LIBRARY)),
+  $(call Set,Tmp.LibrarySuffix,dylib),
+  $(call Set,Tmp.LibrarySuffix,a))
 
 # Compute the object inputs for this library.
 $(call Set,Tmp.Inputs,\
@@ -188,10 +206,14 @@
 	-$(Verb) $(RM) $$@
 	$(Verb) $(Tmp.AR) $(Tmp.ARFLAGS) $$@ $(Tmp.Inputs)
 	$(Verb) $(Tmp.RANLIB) $(Tmp.RANLIBFLAGS) $$@
+$(Tmp.ObjPath)/libcompiler_rt.dylib: $(Tmp.Inputs) $(Tmp.ObjPath)/.dir
+	$(Summary) "  DYLIB:   $(Tmp.Name)/$(Tmp.Config)/$(Tmp.Arch): $$@"
+	$(Verb) $(Tmp.CC) -arch $(Tmp.Arch) -dynamiclib -o $$@ \
+	  $(Tmp.Inputs) $(Tmp.LDFLAGS)
 .PRECIOUS: $(Tmp.ObjPath)/.dir
 
 # Per-Config-Arch Targets
-$(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch):: $(Tmp.ObjPath)/libcompiler_rt.a
+$(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch):: $(Tmp.ObjPath)/libcompiler_rt.$(Tmp.LibrarySuffix)
 .PHONY: $(Tmp.Name)-$(Tmp.Config)-$(Tmp.Arch)
 
 # Per-Config-Arch-SubDir Objects

Modified: compiler-rt/trunk/make/lib_info.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/lib_info.mk?rev=163412&r1=163411&r2=163412&view=diff
==============================================================================
--- compiler-rt/trunk/make/lib_info.mk (original)
+++ compiler-rt/trunk/make/lib_info.mk Fri Sep  7 14:57:23 2012
@@ -53,8 +53,7 @@
 
 # The names of all the available options.
 AvailableOptions := AR ARFLAGS \
-                    CC CFLAGS FUNCTIONS OPTIMIZED \
+                    CC CFLAGS LDFLAGS FUNCTIONS OPTIMIZED \
                     RANLIB RANLIBFLAGS \
-                    VISIBILITY_HIDDEN \
-                    KERNEL_USE \
-                    STRIP LIPO
+                    VISIBILITY_HIDDEN KERNEL_USE \
+		    SHARED_LIBRARY STRIP LIPO

Modified: compiler-rt/trunk/make/options.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/options.mk?rev=163412&r1=163411&r2=163412&view=diff
==============================================================================
--- compiler-rt/trunk/make/options.mk (original)
+++ compiler-rt/trunk/make/options.mk Fri Sep  7 14:57:23 2012
@@ -23,11 +23,20 @@
 # default.
 VISIBILITY_HIDDEN := 0
 
+# Whether the library is being built for kernel use.
+KERNEL_USE := 0
+
+# Whether the library should be built as a shared object.
+SHARED_LIBRARY := 0
+
 # Miscellaneous tools.
 
 AR := ar
 # FIXME: Remove these pipes once ranlib errors are fixed.
 ARFLAGS := cru 2> /dev/null
+
+LDFLAGS :=
+
 RANLIB := ranlib
 # FIXME: Remove these pipes once ranlib errors are fixed.
 RANLIBFLAGS := 2> /dev/null





More information about the llvm-commits mailing list