make/common/Rules.gmk

changeset 118
2aa5665d86a5
parent 117
31ce3cac3cc1
child 158
91006f157c46
     1.1 --- a/make/common/Rules.gmk	Fri Sep 18 16:26:51 2009 -0700
     1.2 +++ b/make/common/Rules.gmk	Fri Sep 18 17:10:28 2009 -0700
     1.3 @@ -28,9 +28,6 @@
     1.4  # Rules shared by all Java makefiles.
     1.5  #
     1.6  
     1.7 -# Used with wildcard to look into a java package for files (assumes max 5 deep)
     1.8 -_WC_DIRS  = * */* */*/* */*/*/* */*/*/*/*
     1.9 -
    1.10  # Make sure the default rule is all
    1.11  rules_default_rule: all
    1.12  
    1.13 @@ -49,16 +46,24 @@
    1.14  # If AUTO_FILES_PROPERTIES_DIRS used, automatically find properties files
    1.15  #
    1.16  ifdef AUTO_FILES_PROPERTIES_DIRS
    1.17 -  # Wildcard all possible properties files
    1.18 -  _WC_PROP_FILES = $(patsubst %, %/*.properties, $(_WC_DIRS))
    1.19 -  # Wildcard package directories for this Makefile
    1.20 -  _AUTO_WC_PROP_FILES = $(foreach dir, $(AUTO_FILES_PROPERTIES_DIRS), \
    1.21 -          $(patsubst %, $(dir)/%, $(_WC_PROP_FILES)) )
    1.22 -  # Wildcard all source directories
    1.23 -  _AUTO_WC_ALL_PROP_FILES1 = $(foreach dir, $(ALL_CLASSES_SRC), \
    1.24 -          $(patsubst %, $(dir)/%,  $(_AUTO_WC_PROP_FILES)) )
    1.25 -  # Find all files meeting this pattern
    1.26 -  FILES_properties_auto1 := $(wildcard $(_AUTO_WC_ALL_PROP_FILES1))
    1.27 +  AUTO_FILES_PROPERTIES_FILTERS1  = $(SCM_DIRs) 'X-*' '*-X-*' ',*'
    1.28 +  AUTO_FILES_PROPERTIES_FILTERS1 += $(AUTO_PROPERTIES_PRUNE)
    1.29 +  FILES_properties_find_filters1 = $(AUTO_FILES_PROPERTIES_FILTERS1:%=-name % -prune -o)
    1.30 +  FILES_properties_auto1 := \
    1.31 +     $(shell \
    1.32 +        for dir in $(ALL_CLASSES_SRC) ; do \
    1.33 +          if [ -d $$dir ] ; then \
    1.34 +            ( $(CD) $$dir; \
    1.35 +              for sdir in $(AUTO_FILES_PROPERTIES_DIRS); do \
    1.36 +                if [ -d $$sdir ] ; then \
    1.37 +                  $(FIND) $$sdir $(FILES_properties_find_filters1) \
    1.38 +                                 -name '*.properties' -print ; \
    1.39 +                fi ; \
    1.40 +              done \
    1.41 +            ); \
    1.42 +          fi; \
    1.43 +        done \
    1.44 +      )
    1.45  else
    1.46    FILES_properties_auto1 =
    1.47  endif # AUTO_FILES_PROPERTIES_DIRS
    1.48 @@ -88,25 +93,50 @@
    1.49  #    might miss their generation.
    1.50  
    1.51  ifdef AUTO_FILES_JAVA_DIRS
    1.52 -  # Wildcard all possible java files
    1.53 -  _WC_JAVA_FILES = $(patsubst %, %/*.java, $(_WC_DIRS))
    1.54 -  # Wildcard package directories for this Makefile
    1.55 -  _AUTO_WC_JAVA_FILES = $(foreach dir, $(AUTO_FILES_JAVA_DIRS), \
    1.56 -          $(patsubst %, $(dir)/%, $(_WC_JAVA_FILES)) )
    1.57 -  # Wildcard all source directories
    1.58 -  _AUTO_WC_ALL_JAVA_FILES1 = $(foreach dir, $(ALL_CLASSES_SRC), \
    1.59 -          $(patsubst %, $(dir)/%,  $(_AUTO_WC_JAVA_FILES)) )
    1.60 -  # Find all files meeting this pattern
    1.61 -  FILES_java_auto1 := $(wildcard $(_AUTO_WC_ALL_JAVA_FILES1))
    1.62 +  # Filter out these files or directories
    1.63 +  AUTO_FILES_JAVA_SOURCE_FILTERS1  = $(SCM_DIRs) 'X-*' '*-X-*' '*-template.java' ',*'
    1.64 +  AUTO_FILES_JAVA_SOURCE_FILTERS2  = 
    1.65 +  AUTO_FILES_JAVA_SOURCE_FILTERS1 += $(AUTO_JAVA_PRUNE)
    1.66 +  AUTO_FILES_JAVA_SOURCE_FILTERS2 += $(AUTO_JAVA_PRUNE)
    1.67  
    1.68 +  # First list is the normal sources that should always be there,
    1.69 +  #   by using the ':=', which means we do this processing once.
    1.70 +  FILES_java_find_filters1 = $(AUTO_FILES_JAVA_SOURCE_FILTERS1:%=-name % -prune -o)
    1.71 +  FILES_java_auto1 := \
    1.72 +     $(shell \
    1.73 +        for dir in $(ALL_CLASSES_SRC) ; do \
    1.74 +          if [ -d $$dir ] ; then \
    1.75 +            ( $(CD) $$dir; \
    1.76 +              for sdir in $(AUTO_FILES_JAVA_DIRS); do \
    1.77 +                if [ -d $$sdir ] ; then \
    1.78 +                  $(FIND) $$sdir $(FILES_java_find_filters1) \
    1.79 +                                 -name '*.java' -print ; \
    1.80 +                fi ; \
    1.81 +              done \
    1.82 +            ); \
    1.83 +          fi; \
    1.84 +        done \
    1.85 +      )
    1.86    # Second list is the generated sources that should be rare, but will likely
    1.87    #   show up late and we need to look for them at the last minute, so we
    1.88    #   cannot use the ':=' assigment here. But if this gets expanded multiple
    1.89    #   times, the if tests should make them relatively cheap.
    1.90 -  # Wildcard the generated source directories
    1.91 -  _AUTO_WC_ALL_JAVA_FILES2 = $(patsubst %, $(GENSRCDIR)/%, $(_AUTO_WC_JAVA_FILES))
    1.92 -  # Find all files meeting this pattern
    1.93 -  FILES_java_auto2 = $(wildcard $(_AUTO_WC_ALL_JAVA_FILES2))
    1.94 +  FILES_java_find_filters2 = $(AUTO_FILES_JAVA_SOURCE_FILTERS2:%=-name % -prune -o)
    1.95 +  FILES_java_auto2 = \
    1.96 +     $(shell \
    1.97 +        for dir in $(GENSRCDIR); do \
    1.98 +          if [ -d $$dir ] ; then \
    1.99 +            ( $(CD) $$dir; \
   1.100 +              for sdir in $(AUTO_FILES_JAVA_DIRS); do \
   1.101 +                if [ -d $$sdir ] ; then \
   1.102 +                  $(FIND) $$sdir $(FILES_java_find_filters2) \
   1.103 +                                 -name '*.java' -print ; \
   1.104 +                fi ; \
   1.105 +              done \
   1.106 +            ); \
   1.107 +          fi; \
   1.108 +        done \
   1.109 +      )
   1.110  else
   1.111    FILES_java_auto1 =
   1.112    FILES_java_auto2 =
   1.113 @@ -156,7 +186,7 @@
   1.114  .compile.classlist : $(JAVA_SOURCE_LIST)
   1.115  	@$(MKDIR) -p $(CLASSDESTDIR)
   1.116  	if [ -s $(JAVA_SOURCE_LIST) ] ; then \
   1.117 -          $(CAT) $(JAVA_SOURCE_LIST); \
   1.118 +	  $(CAT) $(JAVA_SOURCE_LIST); \
   1.119  	  $(JAVAC_CMD) $(JAVAC_PREFER_SOURCE) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
   1.120  	fi
   1.121  	@$(java-vm-cleanup)

mercurial