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