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

Daniel Dunbar daniel at zuster.org
Sun Jan 17 22:48:40 PST 2010


Author: ddunbar
Date: Mon Jan 18 00:48:40 2010
New Revision: 93715

URL: http://llvm.org/viewvc/llvm-project?rev=93715&view=rev
Log:
Change subdir traversal to primarily cache information about what is available in subdirectories.
 - Rest of makefiles will move to using the information after it has been computed, instead of during subdir traversal.

Also, add 'make info-functions' target, which prints information on all the functions available in compiler-rt.

Also, add 'make help-devel' for listing help on targets intended for compiler-rt developers or direct users.

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

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

==============================================================================
--- compiler-rt/trunk/Makefile (original)
+++ compiler-rt/trunk/Makefile Mon Jan 18 00:48:40 2010
@@ -37,7 +37,12 @@
 	@echo "  all:   build all configurations"
 	@echo
 
-help-hidden: help
+help-devel: help
+	@echo "Development targets:"
+	@echo "  info-functions: list available compiler-rt functions"
+	@echo
+
+help-hidden: help-devel
 	@echo "Debugging variables:"
 	@echo "  DEBUGMAKE=1: enable some Makefile logging [default=]"
 	@echo "           =2: enable more Makefile logging"
@@ -46,6 +51,14 @@
 	@echo "  make-print-FOO: print information on the variable 'FOO'"
 	@echo
 
+info-functions:
+	@echo "compiler-rt Available Functions"
+	@echo
+	@echo "All Functions: $(AvailableFunctions)"
+	@$(foreach fn,$(AvailableFunctions),\
+	  printf "  %-20s - available in (%s)\n" $(fn)\
+	    "$(foreach key,$(AvailableIn.$(fn)),$($(key).Dir))";)
+
 # Provide default clean target which is extended by other templates.
 .PHONY: clean
 clean::
@@ -230,3 +243,18 @@
   $(info MAKE: Done processing Makefile)
   $(info  )
 endif
+
+###
+# Function Information
+#
+# FIXME: Factor out.
+
+AvailableObjects := $(sort $(foreach key,$(SubDirKeys),\
+	$($(key).ObjNames)))
+AvailableFunctions := $(AvailableObjects:%.o=%)
+
+# Compute lists of where each function is available.
+$(foreach key,$(SubDirKeys),\
+  $(foreach fn,$(subst .o,,$($(key).ObjNames)),\
+    $(call Append,AvailableIn.$(fn),$(key))))
+

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

==============================================================================
--- compiler-rt/trunk/make/subdir.mk (original)
+++ compiler-rt/trunk/make/subdir.mk Mon Jan 18 00:48:40 2010
@@ -54,6 +54,11 @@
   $$(info MAKE: $(Dir): Processing subdirectory)
 endif
 
+# Construct the variable key for this directory.
+$(call Set,DirKey,SubDir.$(subst .,,$(subst /,__,$(1))))
+$(call Append,SubDirKeys,$(DirKey))
+$(call Set,$(DirKey).Dir,$(Dir))
+
 # Reset subdirectory specific variables to sentinel value.
 $$(foreach var,$$(RequiredSubdirVariables) $$(OptionalSubdirVariables),\
   $$(call Set,$$(var),UNDEFINED))
@@ -63,7 +68,7 @@
 
 ifeq ($(DEBUGMAKE),2)
 $$(foreach var,$(RequiredSubdirVariables) $(OptionalSubdirVariables),\
-  $$(if $$(call strneq UNDEFINED,$$($$(var))), \
+  $$(if $$(call strneq,UNDEFINED,$$($$(var))), \
 	$$(info MAKE: $(Dir): $$(var) is defined), \
 	$$(info MAKE: $(Dir): $$(var) is undefined)))
 endif
@@ -71,16 +76,20 @@
 # Check for undefined required variables, and unset sentinel value from optional
 # variables.
 $$(foreach var,$(RequiredSubdirVariables),\
-  $$(if $$(call strneq UNDEFINED,$$($$(var))), \
+  $$(if $$(call strneq,UNDEFINED,$$($$(var))),, \
 	$$(error $(Dir): variable '$$(var)' was not undefined)))
 $$(foreach var,$(OptionalSubdirVariables),\
-  $$(if $$(call strneq UNDEFINED,$$($$(var))),, \
+  $$(if $$(call strneq,UNDEFINED,$$($$(var))),, \
 	$$(call Set,$$(var),)))
 
+# Collect all subdirectory variables for subsequent use.
+$$(foreach var,$(RequiredSubdirVariables) $(OptionalSubdirVariables),\
+  $$(call Set,$(DirKey).$$(var),$$($$(var))))
+
 # Recurse.
 include make/subdir.mk
 
-# Restore directory variable.
+# Restore directory variable, for cleanliness.
 $$(call Set,Dir,$(1))
 
 ifneq ($(DEBUGMAKE),)





More information about the llvm-commits mailing list