[llvm-commits] [compiler-rt] r80943 - in /compiler-rt/trunk: Makefile make/config.mk make/subdir.mk

Daniel Dunbar daniel at zuster.org
Thu Sep 3 13:49:22 PDT 2009


Author: ddunbar
Date: Thu Sep  3 15:49:22 2009
New Revision: 80943

URL: http://llvm.org/viewvc/llvm-project?rev=80943&view=rev
Log:
Support building for a single target architecture.

Modified:
    compiler-rt/trunk/Makefile
    compiler-rt/trunk/make/config.mk
    compiler-rt/trunk/make/subdir.mk

Modified: compiler-rt/trunk/Makefile
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/Makefile?rev=80943&r1=80942&r2=80943&view=diff

==============================================================================
--- compiler-rt/trunk/Makefile (original)
+++ compiler-rt/trunk/Makefile Thu Sep  3 15:49:22 2009
@@ -44,19 +44,24 @@
 $(call Set,ActiveLibOpt,$(ActiveObjPath)/libcompiler_rt.Optimized.a)
 
 # The sublibraries to use for a generic version.
-$(call Set,GenericInputs,$(foreach arch,$(Archs),$(ActiveObjPath)/$(arch)/libcompiler_rt.Generic.a))
+$(call Set,GenericInputs,$(foreach arch,$(TargetArchs),$(ActiveObjPath)/$(arch)/libcompiler_rt.Generic.a))
 # The sublibraries to use for an optimized version.
-$(call Set,OptimizedInputs,$(foreach arch,$(Archs),$(ActiveObjPath)/$(arch)/libcompiler_rt.Optimized.a))
+$(call Set,OptimizedInputs,$(foreach arch,$(TargetArchs),$(ActiveObjPath)/$(arch)/libcompiler_rt.Optimized.a))
 
-# Provide top-level fat archive targets.
+# Provide top-level fat archive targets. We make sure to not try to lipo if only
+# building one target arch.
 $(ActiveLibGen): $(GenericInputs) $(ActiveObjPath)/.dir
 	$(Summary) "  UNIVERSAL: $(ActiveConfig): $$@"
 	-$(Verb) $(RM) $$@
-	$(Verb) $(Lipo) -create -output $$@ $(GenericInputs)
+	$(if $(TargetArch), \
+	  $(Verb) $(CP) $(GenericInputs) $$@, \
+	  $(Verb) $(Lipo) -create -output $$@ $(GenericInputs))
 $(ActiveLibOpt): $(OptimizedInputs) $(ActiveObjPath)/.dir
 	$(Summary) "  UNIVERSAL: $(ActiveConfig): $$@"
 	-$(Verb) $(RM) $$@
-	$(Verb) $(Lipo) -create -output $$@ $(OptimizedInputs)
+	$(if $(TargetArch), \
+	  $(Verb) $(CP) $(GenericInputs) $$@, \
+	  $(Verb) $(Lipo) -create -output $$@ $(OptimizedInputs))
 .PRECIOUS: $(ActiveObjPath)/.dir
 
 # Add to target lists.

Modified: compiler-rt/trunk/make/config.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/config.mk?rev=80943&r1=80942&r2=80943&view=diff

==============================================================================
--- compiler-rt/trunk/make/config.mk (original)
+++ compiler-rt/trunk/make/config.mk Thu Sep  3 15:49:22 2009
@@ -1,6 +1,8 @@
 ###
 # Configuration variables.
 
+OS := $(shell uname)
+
 # Assume make is always run from top-level of source directory. Note
 # than an Apple style build overrides these variables later in the
 # makefile.
@@ -8,8 +10,20 @@
 ProjObjRoot := $(ProjSrcRoot)
 
 Configs := Debug Release Profile
+
+# The full list of architectures we support.
 Archs := i386 ppc x86_64
 
+# If TargetArch is defined, only build for that architecture (and don't use
+# -arch).
+ifeq ($(OS), Darwin)
+  TargetArch :=
+  TargetArchs := $(Archs)
+else
+  TargetArch := i386
+  TargetArchs := $(TargetArch)
+endif
+
 Common.CFLAGS := -Wall -Werror
 
 # These names must match the configs, see GetArgs function.
@@ -17,10 +31,23 @@
 Release.CFLAGS := -O3 -fomit-frame-pointer
 Profile.CFLAGS := -pg -g
 
+# Function: GetArchArgs arch
+#
+# Return the compiler flags for the given arch.
+ifeq ($(OS), Darwin)
+  GetArchArgs = -arch $(1)
+else
+  # Check that we are only trying to build the target arch.
+  GetArchArgs = $(if $(subst $(TargetArch),,$(1)), \
+	$(error "Invalid configuration, no -arch support: $(1)"), \
+	)
+endif
+
 # Function: GetArgs config arch
 #
 # Return the compiler flags for the given config & arch.
-GetArgs = $(if $($(1).CFLAGS),$(Common.CFLAGS) $($(1).CFLAGS) -arch $(2), \
+GetArgs = $(if $($(1).CFLAGS), \
+	        $(Common.CFLAGS) $($(1).CFLAGS) $(call GetArchArgs,$(2)), \
 		$(error "Invalid configuration: $(1)"))
 
 ###
@@ -37,6 +64,7 @@
 # FIXME: Remove these pipes once ranlib errors are fixed.
 RANLIB.Flags := 2> /dev/null
 LIPO := lipo
+CP := cp
 
 ###
 # Automatic and derived variables.

Modified: compiler-rt/trunk/make/subdir.mk
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/make/subdir.mk?rev=80943&r1=80942&r2=80943&view=diff

==============================================================================
--- compiler-rt/trunk/make/subdir.mk (original)
+++ compiler-rt/trunk/make/subdir.mk Thu Sep  3 15:49:22 2009
@@ -23,6 +23,11 @@
   ArchsToTraverse := $(OnlyArchs)
 endif
 
+# If we are only targetting a single arch, only traverse that.
+ifneq ($(TargetArch),)
+  ArchsToTraverse := $(filter $(TargetArch), $(ArchsToTraverse))
+endif
+
 $(foreach config,$(ConfigsToTraverse), \
   $(foreach arch,$(ArchsToTraverse), \
     $(eval $(call CNA_subdir_template,$(config),$(arch),$(Dir)))))





More information about the llvm-commits mailing list