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)