Thu, 23 Oct 2008 10:13:01 -0700
Added tag jdk7-b38 for changeset d9bc824aa078
duke@435 | 1 | #! /bin/sh |
duke@435 | 2 | # |
xdono@631 | 3 | # Copyright 1999-2008 Sun Microsystems, Inc. All Rights Reserved. |
duke@435 | 4 | # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
duke@435 | 5 | # |
duke@435 | 6 | # This code is free software; you can redistribute it and/or modify it |
duke@435 | 7 | # under the terms of the GNU General Public License version 2 only, as |
duke@435 | 8 | # published by the Free Software Foundation. |
duke@435 | 9 | # |
duke@435 | 10 | # This code is distributed in the hope that it will be useful, but WITHOUT |
duke@435 | 11 | # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
duke@435 | 12 | # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
duke@435 | 13 | # version 2 for more details (a copy is included in the LICENSE file that |
duke@435 | 14 | # accompanied this code). |
duke@435 | 15 | # |
duke@435 | 16 | # You should have received a copy of the GNU General Public License version |
duke@435 | 17 | # 2 along with this work; if not, write to the Free Software Foundation, |
duke@435 | 18 | # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
duke@435 | 19 | # |
duke@435 | 20 | # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, |
duke@435 | 21 | # CA 95054 USA or visit www.sun.com if you need additional information or |
duke@435 | 22 | # have any questions. |
duke@435 | 23 | # |
duke@435 | 24 | # |
duke@435 | 25 | |
duke@435 | 26 | # This script is used only from top.make. |
duke@435 | 27 | # The macro $(MFLAGS-adjusted) calls this script to |
duke@435 | 28 | # adjust the "-j" arguments to take into account |
duke@435 | 29 | # the HOTSPOT_BUILD_JOBS variable. The default |
duke@435 | 30 | # handling of the "-j" argument by gnumake does |
duke@435 | 31 | # not meet our needs, so we must adjust it ourselves. |
duke@435 | 32 | |
duke@435 | 33 | # This argument adjustment applies to two recursive |
duke@435 | 34 | # calls to "$(MAKE) $(MFLAGS-adjusted)" in top.make. |
duke@435 | 35 | # One invokes adlc.make, and the other invokes vm.make. |
duke@435 | 36 | # The adjustment propagates the desired concurrency |
duke@435 | 37 | # level down to the sub-make (of the adlc or vm). |
duke@435 | 38 | # The default behavior of gnumake is to run all |
duke@435 | 39 | # sub-makes without concurrency ("-j1"). |
duke@435 | 40 | |
duke@435 | 41 | # Also, we use a make variable rather than an explicit |
duke@435 | 42 | # "-j<N>" argument to control this setting, so that |
duke@435 | 43 | # the concurrency setting (which must be tuned separately |
duke@435 | 44 | # for each MP system) can be set via an environment variable. |
duke@435 | 45 | # The recommended setting is 1.5x to 2x the number of available |
duke@435 | 46 | # CPUs on the MP system, which is large enough to keep the CPUs |
duke@435 | 47 | # busy (even though some jobs may be I/O bound) but not too large, |
duke@435 | 48 | # we may presume, to overflow the system's swap space. |
duke@435 | 49 | |
duke@435 | 50 | set -eu |
duke@435 | 51 | |
duke@435 | 52 | default_build_jobs=4 |
duke@435 | 53 | |
duke@435 | 54 | case $# in |
duke@435 | 55 | [12]) true;; |
duke@435 | 56 | *) >&2 echo "Usage: $0 ${MFLAGS} ${HOTSPOT_BUILD_JOBS}"; exit 2;; |
duke@435 | 57 | esac |
duke@435 | 58 | |
duke@435 | 59 | MFLAGS=$1 |
duke@435 | 60 | HOTSPOT_BUILD_JOBS=${2-} |
duke@435 | 61 | |
duke@435 | 62 | # Normalize any -jN argument to the form " -j${HBJ}" |
duke@435 | 63 | MFLAGS=` |
duke@435 | 64 | echo "$MFLAGS" \ |
duke@435 | 65 | | sed ' |
duke@435 | 66 | s/^-/ -/ |
duke@435 | 67 | s/ -\([^ ][^ ]*\)j/ -\1 -j/ |
duke@435 | 68 | s/ -j[0-9][0-9]*/ -j/ |
duke@435 | 69 | s/ -j\([^ ]\)/ -j -\1/ |
duke@435 | 70 | s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/ |
duke@435 | 71 | ' ` |
duke@435 | 72 | |
duke@435 | 73 | case ${HOTSPOT_BUILD_JOBS} in \ |
duke@435 | 74 | |
duke@435 | 75 | '') case ${MFLAGS} in |
duke@435 | 76 | *\ -j*) |
duke@435 | 77 | >&2 echo "# Note: -jN is ineffective for setting parallelism in this makefile." |
duke@435 | 78 | >&2 echo "# please set HOTSPOT_BUILD_JOBS=${default_build_jobs} in the command line or environment." |
duke@435 | 79 | esac;; |
duke@435 | 80 | |
duke@435 | 81 | ?*) case ${MFLAGS} in |
duke@435 | 82 | *\ -j*) true;; |
duke@435 | 83 | *) MFLAGS="-j${HOTSPOT_BUILD_JOBS} ${MFLAGS}";; |
duke@435 | 84 | esac;; |
duke@435 | 85 | esac |
duke@435 | 86 | |
duke@435 | 87 | echo "${MFLAGS}" |