make/common/Rules.gmk

Tue, 28 Dec 2010 15:52:36 -0800

author
ohair
date
Tue, 28 Dec 2010 15:52:36 -0800
changeset 240
f90b3e014e83
parent 194
0f60cf26c5b5
permissions
-rw-r--r--

6962318: Update copyright year
Reviewed-by: xdono

     1 #
     2 # Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved.
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4 #
     5 # This code is free software; you can redistribute it and/or modify it
     6 # under the terms of the GNU General Public License version 2 only, as
     7 # published by the Free Software Foundation.  Oracle designates this
     8 # particular file as subject to the "Classpath" exception as provided
     9 # by Oracle in the LICENSE file that accompanied this code.
    10 #
    11 # This code is distributed in the hope that it will be useful, but WITHOUT
    12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    13 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    14 # version 2 for more details (a copy is included in the LICENSE file that
    15 # accompanied this code).
    16 #
    17 # You should have received a copy of the GNU General Public License version
    18 # 2 along with this work; if not, write to the Free Software Foundation,
    19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    20 #
    21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    22 # or visit www.oracle.com if you need additional information or have any
    23 # questions.
    24 #
    26 #
    27 #
    28 # Rules shared by all Java makefiles.
    29 #
    31 # Make sure the default rule is all
    32 rules_default_rule: all
    34 #
    35 # Directory set up.  (Needed by deploy workspace)
    36 # 
    37 $(CLASSDESTDIR) $(OUTPUTDIR) $(TEMPDIR) $(EXTDIR):
    38 	$(MKDIR) -p $@ 
    40 #
    41 # All source tree areas for java/properties files 
    42 #
    43 ALL_CLASSES_SRC = $(SHARE_SRC)/classes $(PLATFORM_SRC)/classes
    45 #
    46 # If AUTO_FILES_PROPERTIES_DIRS used, automatically find properties files
    47 #
    48 ifdef AUTO_FILES_PROPERTIES_DIRS
    49   AUTO_FILES_PROPERTIES_FILTERS1  = $(SCM_DIRs) 'X-*' '*-X-*' ',*'
    50   AUTO_FILES_PROPERTIES_FILTERS1 += $(AUTO_PROPERTIES_PRUNE)
    51   FILES_properties_find_filters1 = $(AUTO_FILES_PROPERTIES_FILTERS1:%=-name % -prune -o)
    52   FILES_properties_auto1 := \
    53      $(shell \
    54         for dir in $(ALL_CLASSES_SRC) ; do \
    55           if [ -d $$dir ] ; then \
    56             ( $(CD) $$dir; \
    57               for sdir in $(AUTO_FILES_PROPERTIES_DIRS); do \
    58                 if [ -d $$sdir ] ; then \
    59                   $(FIND) $$sdir $(FILES_properties_find_filters1) \
    60                                  -name '*.properties' -print ; \
    61                 fi ; \
    62               done \
    63             ); \
    64           fi; \
    65         done \
    66       )
    67 else
    68   FILES_properties_auto1 =
    69 endif # AUTO_FILES_PROPERTIES_DIRS
    71 # Add any automatically found properties files to the properties file list
    72 FILES_properties += $(FILES_properties_auto1)
    74 #
    75 # Get Resources help
    76 #
    77 include $(TOPDIR)/make/common/internal/Resources.gmk
    79 #
    80 # Compiling .java files.
    81 #
    83 #
    84 # Automatically add to FILES_java if AUTO_FILES_JAVA_DIRS is defined
    85 #
    86 #    There are two basic types of sources, normal source files and the
    87 #    generated ones. The Normal sources will be located in:
    88 #         $(ALL_CLASSES_SRC)
    89 #    The generated sources, which might show up late to dinner, are at:
    90 #         $(GENSRCDIR)
    91 #    and since they could be generated late, we need to be careful that
    92 #    we look for these sources late and not use the ':=' assignment which
    93 #    might miss their generation.
    95 ifdef AUTO_FILES_JAVA_DIRS
    96   # Filter out these files or directories
    97   AUTO_FILES_JAVA_SOURCE_FILTERS1  = $(SCM_DIRs) 'X-*' '*-X-*' '*-template.java' ',*'
    98   AUTO_FILES_JAVA_SOURCE_FILTERS2  = 
    99   AUTO_FILES_JAVA_SOURCE_FILTERS1 += $(AUTO_JAVA_PRUNE)
   100   AUTO_FILES_JAVA_SOURCE_FILTERS2 += $(AUTO_JAVA_PRUNE)
   102   # First list is the normal sources that should always be there,
   103   #   by using the ':=', which means we do this processing once.
   104   FILES_java_find_filters1 = $(AUTO_FILES_JAVA_SOURCE_FILTERS1:%=-name % -prune -o)
   105   FILES_java_auto1 := \
   106      $(shell \
   107         for dir in $(ALL_CLASSES_SRC) ; do \
   108           if [ -d $$dir ] ; then \
   109             ( $(CD) $$dir; \
   110               for sdir in $(AUTO_FILES_JAVA_DIRS); do \
   111                 if [ -d $$sdir ] ; then \
   112                   $(FIND) $$sdir $(FILES_java_find_filters1) \
   113                                  -name '*.java' -print ; \
   114                 fi ; \
   115               done \
   116             ); \
   117           fi; \
   118         done \
   119       )
   120   # Second list is the generated sources that should be rare, but will likely
   121   #   show up late and we need to look for them at the last minute, so we
   122   #   cannot use the ':=' assigment here. But if this gets expanded multiple
   123   #   times, the if tests should make them relatively cheap.
   124   FILES_java_find_filters2 = $(AUTO_FILES_JAVA_SOURCE_FILTERS2:%=-name % -prune -o)
   125   FILES_java_auto2 = \
   126      $(shell \
   127         for dir in $(GENSRCDIR); do \
   128           if [ -d $$dir ] ; then \
   129             ( $(CD) $$dir; \
   130               for sdir in $(AUTO_FILES_JAVA_DIRS); do \
   131                 if [ -d $$sdir ] ; then \
   132                   $(FIND) $$sdir $(FILES_java_find_filters2) \
   133                                  -name '*.java' -print ; \
   134                 fi ; \
   135               done \
   136             ); \
   137           fi; \
   138         done \
   139       )
   140 else
   141   FILES_java_auto1 =
   142   FILES_java_auto2 =
   143 endif
   145 # Add all found java sources to FILES_java macro (if AUTO_FILES_JAVA_DIRS used)
   146 FILES_java += $(FILES_java_auto1) $(FILES_java_auto2)
   148 # File that will hold java source names that need compiling
   149 JAVA_SOURCE_LIST=$(TEMPDIR)/.classes.list
   151 # Add a java source to the list
   152 define add-java-file
   153 $(ECHO) "$?" >> $(JAVA_SOURCE_LIST)
   154 endef
   156 $(CLASSDESTDIR)/%.class: $(GENSRCDIR)/%.java
   157 	@$(add-java-file)
   158 $(CLASSDESTDIR)/%.class: $(PLATFORM_SRC)/classes/%.java
   159 	@$(add-java-file)
   160 $(CLASSDESTDIR)/%.class: $(SHARE_SRC)/classes/%.java
   161 	@$(add-java-file)
   163 # List of class files needed
   164 FILES_class = $(FILES_java:%.java=$(CLASSDESTDIR)/%.class)
   166 # Construct list of java sources we need to compile
   167 source_list_prime:
   168 	@$(MKDIR) -p $(TEMPDIR)
   169 # Note that we slip resources in so that compiled properties files get created:
   170 $(JAVA_SOURCE_LIST) : source_list_prime resources $(FILES_class)
   171 	@$(TOUCH) $@
   173 .delete.classlist:
   174 	@$(RM) $(JAVA_SOURCE_LIST)
   176 # Make sure all newer sources are compiled (in a batch)
   177 classes : $(CLASSES_INIT) .delete.classlist .compile.classlist
   179 # Use this javac option to force it to favor the sourcepath file classes
   180 #   rather than any bootclasspath classes.
   181 JAVAC_PREFER_SOURCE = -Xprefer:source
   183 .compile.classlist : $(JAVA_SOURCE_LIST)
   184 	@$(MKDIR) -p $(CLASSDESTDIR)
   185 	if [ -s $(JAVA_SOURCE_LIST) ] ; then \
   186 	  $(CAT) $(JAVA_SOURCE_LIST); \
   187 	  $(JAVAC_CMD) $(JAVAC_PREFER_SOURCE) -sourcepath "$(SOURCEPATH)" -d $(CLASSDESTDIR) @$(JAVA_SOURCE_LIST); \
   188 	fi
   189 	@$(java-vm-cleanup)
   191 clobber clean::
   192 	$(RM) $(JAVA_SOURCE_LIST)
   194 ifndef DONT_CLOBBER_CLASSES
   195   ifndef PACKAGE
   196     DONT_CLOBBER_CLASSES = true
   197   else
   198     DONT_CLOBBER_CLASSES = false
   199   endif
   200 endif
   202 packages.clean:
   203 ifeq ($(DONT_CLOBBER_CLASSES),false)
   204   ifdef AUTO_FILES_JAVA_DIRS
   205 	$(RM) -r $(patsubst %, $(CLASSDESTDIR)/%, $(AUTO_FILES_JAVA_DIRS))
   206   else
   207 	$(RM) -r $(CLASSDESTDIR)/$(PKGDIR)
   208   endif
   209 endif
   211 classes.clean: packages.clean
   212 	$(RM) $(JAVA_SOURCE_LIST)
   214 clean clobber:: classes.clean .delete.classlist
   216 # 
   217 # Default dependencies
   218 #
   220 all: build
   222 build: classes
   224 default: all
   226 .PHONY: all build clean clobber \
   227         .delete.classlist classes .compile.classlist classes.clean \
   228 	 batch_compile

mercurial