hotspot/make/solaris/makefiles/adjust-mflags.sh
changeset 338 5cf9f61d76f4
parent 1 489c9b5090e2
child 670 ddf3e9583f2f
equal deleted inserted replaced
337:7e7f474103fe 338:5cf9f61d76f4
       
     1 #! /bin/sh
       
     2 #
       
     3 # Copyright 1999 Sun Microsystems, Inc.  All Rights Reserved.
       
     4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     5 #
       
     6 # This code is free software; you can redistribute it and/or modify it
       
     7 # under the terms of the GNU General Public License version 2 only, as
       
     8 # published by the Free Software Foundation.
       
     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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
       
    21 # CA 95054 USA or visit www.sun.com if you need additional information or
       
    22 # have any questions.
       
    23 #  
       
    24 #
       
    25 
       
    26 # This script is used only from top.make.
       
    27 # The macro $(MFLAGS-adjusted) calls this script to
       
    28 # adjust the "-j" arguments to take into account
       
    29 # the HOTSPOT_BUILD_JOBS variable.  The default
       
    30 # handling of the "-j" argument by gnumake does
       
    31 # not meet our needs, so we must adjust it ourselves.
       
    32 
       
    33 # This argument adjustment applies to two recursive
       
    34 # calls to "$(MAKE) $(MFLAGS-adjusted)" in top.make.
       
    35 # One invokes adlc.make, and the other invokes vm.make.
       
    36 # The adjustment propagates the desired concurrency
       
    37 # level down to the sub-make (of the adlc or vm).
       
    38 # The default behavior of gnumake is to run all
       
    39 # sub-makes without concurrency ("-j1").
       
    40 
       
    41 # Also, we use a make variable rather than an explicit
       
    42 # "-j<N>" argument to control this setting, so that
       
    43 # the concurrency setting (which must be tuned separately
       
    44 # for each MP system) can be set via an environment variable.
       
    45 # The recommended setting is 1.5x to 2x the number of available
       
    46 # CPUs on the MP system, which is large enough to keep the CPUs
       
    47 # busy (even though some jobs may be I/O bound) but not too large,
       
    48 # we may presume, to overflow the system's swap space.
       
    49 
       
    50 set -eu
       
    51 
       
    52 default_build_jobs=4
       
    53 
       
    54 case $# in
       
    55 [12])	true;;
       
    56 *)	>&2 echo "Usage: $0 ${MFLAGS} ${HOTSPOT_BUILD_JOBS}"; exit 2;;
       
    57 esac
       
    58 
       
    59 MFLAGS=$1
       
    60 HOTSPOT_BUILD_JOBS=${2-}
       
    61 
       
    62 # Normalize any -jN argument to the form " -j${HBJ}"
       
    63 MFLAGS=`
       
    64 	echo "$MFLAGS" \
       
    65 	| sed '
       
    66 		s/^-/ -/
       
    67 		s/ -\([^ 	][^ 	]*\)j/ -\1 -j/
       
    68 		s/ -j[0-9][0-9]*/ -j/
       
    69 		s/ -j\([^ 	]\)/ -j -\1/
       
    70 		s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/
       
    71 	' `
       
    72 
       
    73 case ${HOTSPOT_BUILD_JOBS} in \
       
    74 
       
    75 '') case ${MFLAGS} in
       
    76     *\ -j*)
       
    77 	>&2 echo "# Note: -jN is ineffective for setting parallelism in this makefile." 
       
    78 	>&2 echo "# please set HOTSPOT_BUILD_JOBS=${default_build_jobs} in the command line or environment."
       
    79     esac;;
       
    80 
       
    81 ?*) case ${MFLAGS} in
       
    82      *\ -j*) true;;
       
    83      *)      MFLAGS="-j${HOTSPOT_BUILD_JOBS} ${MFLAGS}";;
       
    84     esac;;
       
    85 esac
       
    86 
       
    87 echo "${MFLAGS}"