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