1 # Copyright (c) 2010, 2011, Oracle and/or its affiliates. All rights reserved.
   2 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   3 #
   4 # This code is free software; you can redistribute it and/or modify it
   5 # under the terms of the GNU General Public License version 2 only, as
   6 # published by the Free Software Foundation.  Oracle designates this
   7 # particular file as subject to the "Classpath" exception as provided
   8 # by Oracle in the LICENSE file that accompanied this code.
   9 #
  10 # This code is distributed in the hope that it will be useful, but WITHOUT
  11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13 # version 2 for more details (a copy is included in the LICENSE file that
  14 # accompanied this code).
  15 #
  16 # You should have received a copy of the GNU General Public License version
  17 # 2 along with this work; if not, write to the Free Software Foundation,
  18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  19 #
  20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  21 # or visit www.oracle.com if you need additional information or have any
  22 # questions.
  23 #
  24 
  25 #
  26 # Generic makefile for building subdirectories.
  27 #
  28 # SUBDIRS variables to specify the subdirectories to build recursively.
  29 # Makefile has to include Subdirs.gmk AFTER all SUBDIRS variables are
  30 # defined.
  31 #
  32 # This file does not contain any rule.
  33 #
  34 # WARNING: This file is shared with other workspaces.
  35 #          So when it includes other files, it must use JDK_TOPDIR.
  36 
  37 #
  38 # SUBDIRS          subdirs for the base module always get built
  39 # SUBDIRS_<group>  subdirs for the named group
  40 #
  41 # By default, subdirs specified in the SUBDIRS and all SUBDIRS_* 
  42 # variables will be built.
  43 #
  44 # Variables of the currently supported groups are:
  45 #  SUBDIRS_desktop    
  46 #  SUBDIRS_management
  47 #  SUBDIRS_enterprise
  48 #  SUBDIRS_misc
  49 #  SUBDIRS_tools
  50 # 
  51 # Change to the above list also need to update 
  52 # make/common/shared/Sanity.gmk.  NOTE: this list is subject
  53 # to change.
  54 # 
  55 # Eventually we want to restructure the make directory
  56 # according to these grouping (e.g. make/desktop/...) and
  57 # the SUBDIRS_<group> variables would not be needed.
  58 # 
  59 
  60 # Iterate the subdirectories specified in $1.
  61 # - cd into each subdir and make them
  62 
  63 # Given a SUBDIRS* list (first argument), cd into them and make them
  64 #   SUBDIRS_MAKEFLAGS      Make settings for a subdir make
  65 #   SUBDIRS_MAKEFLAGS-$@   Make settings specific to this target
  66 #
  67 define subdirs-group-loop
  68 $(ECHO) "Begin Processing SUBDIRS: $($1)"
  69 for i in DUMMY $($1) ; do \
  70   if [ "$$i" != "DUMMY" ] ; then \
  71     $(MAKE) -C $$i $@ $(SUBDIRS_MAKEFLAGS) $(SUBDIRS_MAKEFLAGS-$@) \
  72             FULL_VERSION=$(FULL_VERSION) RELEASE=$(RELEASE) || exit 1; \
  73   fi ; \
  74 done
  75 $(ECHO) "Done Processing SUBDIRS: $($1)"
  76 endef
  77 
  78 # Given a OTHERSUBDIRS list, cd into them and make them (extra loop define)
  79 #   OTHERSUBDIRS_MAKEFLAGS      Make settings for a subdir make
  80 define OTHERSUBDIRS-loop
  81 $(ECHO) "Begin Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
  82 for i in DUMMY $(OTHERSUBDIRS) ; do \
  83   if [ "$$i" != "DUMMY" ] ; then \
  84     $(MAKE) -C $$i $@ $(OTHERSUBDIRS_MAKEFLAGS) \
  85             FULL_VERSION=$(FULL_VERSION) RELEASE=$(RELEASE) || exit 1; \
  86   fi ; \
  87 done
  88 $(ECHO) "Done Processing OTHERSUBDIRS: $(OTHERSUBDIRS)"
  89 endef
  90 
  91 #
  92 # Iterate the list specified in SUBDIRS_<group> only if
  93 # SUBDIRS_<group> is set.
  94 #
  95 ifdef SUBDIRS_desktop 
  96   define subdirs-desktop-loop
  97       $(call subdirs-group-loop,SUBDIRS_desktop)
  98   endef
  99 else   
 100   define subdirs-desktop-loop
 101   endef
 102 endif   # SUBDIRS_desktop 
 103 
 104 ifdef SUBDIRS_enterprise 
 105   define subdirs-enterprise-loop
 106       $(call subdirs-group-loop,SUBDIRS_enterprise)
 107   endef
 108 else   
 109 define subdirs-enterprise-loop
 110 endef
 111 endif   # SUBDIRS_enterprise 
 112 
 113 ifdef SUBDIRS_management 
 114   define subdirs-management-loop
 115       $(call subdirs-group-loop,SUBDIRS_management)
 116   endef
 117 else   
 118   define subdirs-management-loop
 119   endef
 120 endif   # SUBDIRS_management 
 121 
 122 ifdef SUBDIRS_misc 
 123   define subdirs-misc-loop
 124       $(call subdirs-group-loop,SUBDIRS_misc)
 125   endef
 126 else   
 127   define subdirs-misc-loop
 128   endef
 129 endif   # SUBDIRS_misc 
 130 
 131 ifdef SUBDIRS_tools 
 132   define subdirs-tools-loop
 133       $(call subdirs-group-loop,SUBDIRS_tools)
 134   endef
 135 else   
 136   define subdirs-tools-loop
 137   endef
 138 endif   # SUBDIRS_tools 
 139 
 140 #
 141 # If BUILD_MODULES is not set or it's set to "all",
 142 # iterate all groups.
 143 SUBDIRS_all = $(SUBDIRS) $(SUBDIRS_desktop) $(SUBDIRS_enterprise) \
 144               $(SUBDIRS_management) $(SUBDIRS_misc) $(SUBDIRS_tools)
 145 
 146 define SUBDIRS-loop
 147   $(call subdirs-group-loop,SUBDIRS_all)
 148 endef