src/hotspot/.mx.jvmci/mx_jvmci.py
author aefimov
Mon, 20 May 2019 15:57:16 +0100
changeset 58617 037ca385e957
parent 47785 5692c538ecef
permissions -rw-r--r--
8213429: Windows file handling redux Reviewed-by: alanb, dfuchs, weijun, bpb, rhalade, ahgross
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     1
#
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     2
# ----------------------------------------------------------------------------------------------------
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     3
#
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     4
# Copyright (c) 2007, 2015, Oracle and/or its affiliates. All rights reserved.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     5
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     6
#
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     7
# This code is free software; you can redistribute it and/or modify it
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     8
# under the terms of the GNU General Public License version 2 only, as
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
     9
# published by the Free Software Foundation.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    10
#
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    15
# accompanied this code).
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    16
#
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    20
#
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    23
# questions.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    24
#
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    25
# ----------------------------------------------------------------------------------------------------
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    26
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    27
import os, shutil, zipfile, re, time, sys, datetime, platform
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    28
from os.path import join, exists, dirname, isdir
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    29
from argparse import ArgumentParser, REMAINDER
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    30
import StringIO
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    31
import xml.dom.minidom
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    32
import subprocess
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    33
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    34
import mx
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    35
import mx_gate
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    36
import mx_unittest
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    37
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    38
from mx_gate import Task
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    39
from mx_unittest import unittest
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    40
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    41
_suite = mx.suite('jvmci')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    42
35598
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
    43
JVMCI_VERSION = 9
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
    44
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    45
_JVMCI_JDK_TAG = 'jvmci'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    46
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    47
_minVersion = mx.VersionSpec('1.9')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    48
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    49
# max version (first _unsupported_ version)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    50
_untilVersion = None
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    51
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    52
_jvmciModes = {
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    53
    'hosted' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI'],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    54
    'jit' : ['-XX:+UnlockExperimentalVMOptions', '-XX:+EnableJVMCI', '-XX:+UseJVMCICompiler'],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    55
    'disabled' : []
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    56
}
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    57
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    58
# TODO: can optimized be built without overriding release build?
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    59
_jdkDebugLevels = ['release', 'fastdebug', 'slowdebug']
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    60
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    61
# TODO: add client once/if it can be built on 64-bit platforms
40046
01e973266ee4 8159888: [JVMCI] the client VM build is broken when INCLUDE_JVMCI is defined
dnsimon
parents: 39443
diff changeset
    62
_jdkJvmVariants = ['server', 'client']
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    63
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    64
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    65
Translation table from mx_jvmci:8 --vmbuild values to mx_jvmci:9 --jdk-debug-level values.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    66
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    67
_legacyVmbuilds = {
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    68
    'product' : 'release',
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    69
    'debug' : 'slowdebug'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    70
}
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    71
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    72
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    73
Translates a mx_jvmci:8 --vmbuild value to a mx_jvmci:9 --jdk-debug-level value.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    74
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    75
def _translateLegacyDebugLevel(debugLevel):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    76
    return _legacyVmbuilds.get(debugLevel, debugLevel)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    77
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    78
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    79
Translation table from mx_jvmci:8 --vm values to mx_jvmci:9 (--jdk-jvm-variant, --jvmci-mode) tuples.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    80
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    81
_legacyVms = {
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    82
    'jvmci' : ('server', 'jit')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    83
}
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    84
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    85
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    86
A VM configuration composed of a JDK debug level, JVM variant and a JVMCI mode.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    87
This is also a context manager that can be used with the 'with' statement to set/change
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    88
a VM configuration within a dynamic scope. For example:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    89
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    90
    with ConfiguredJDK(debugLevel='fastdebug'):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    91
        dacapo(['pmd'])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    92
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    93
class VM:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    94
    def __init__(self, jvmVariant=None, debugLevel=None, jvmciMode=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    95
        self.update(jvmVariant, debugLevel, jvmciMode)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    96
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    97
    def update(self, jvmVariant=None, debugLevel=None, jvmciMode=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    98
        if jvmVariant in _legacyVms:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
    99
            # Backwards compatibility for mx_jvmci:8 API
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   100
            jvmVariant, newJvmciMode = _legacyVms[jvmVariant]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   101
            if jvmciMode is not None and jvmciMode != newJvmciMode:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   102
                mx.abort('JVM variant "' + jvmVariant + '" implies JVMCI mode "' + newJvmciMode +
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   103
                         '" which conflicts with explicitly specified JVMCI mode of "' + jvmciMode + '"')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   104
            jvmciMode = newJvmciMode
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   105
        debugLevel = _translateLegacyDebugLevel(debugLevel)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   106
        assert jvmVariant is None or jvmVariant in _jdkJvmVariants, jvmVariant
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   107
        assert debugLevel is None or debugLevel in _jdkDebugLevels, debugLevel
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   108
        assert jvmciMode is None or jvmciMode in _jvmciModes, jvmciMode
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   109
        self.jvmVariant = jvmVariant or _vm.jvmVariant
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   110
        self.debugLevel = debugLevel or _vm.debugLevel
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   111
        self.jvmciMode = jvmciMode or _vm.jvmciMode
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   112
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   113
    def __enter__(self):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   114
        global _vm
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   115
        self.previousVm = _vm
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   116
        _vm = self
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   117
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   118
    def __exit__(self, exc_type, exc_value, traceback):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   119
        global _vm
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   120
        _vm = self.previousVm
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   121
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   122
_vm = VM(jvmVariant=_jdkJvmVariants[0], debugLevel=_jdkDebugLevels[0], jvmciMode='hosted')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   123
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   124
def get_vm():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   125
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   126
    Gets the configured VM.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   127
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   128
    return _vm
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   129
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   130
def relativeVmLibDirInJdk():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   131
    mxos = mx.get_os()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   132
    if mxos == 'darwin':
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   133
        return join('lib')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   134
    if mxos == 'windows' or mxos == 'cygwin':
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   135
        return join('bin')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   136
    return join('lib', mx.get_arch())
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   137
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   138
def isJVMCIEnabled(vm):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   139
    assert vm in _jdkJvmVariants
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   140
    return True
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   141
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   142
def _makehelp():
47785
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   143
    return subprocess.check_output([mx.gmake_cmd(), 'help'], cwd=_get_jdk_dir())
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   144
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   145
def _runmake(args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   146
    """run the JDK make process
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   147
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   148
To build hotspot and import it into the JDK: "mx make hotspot import-hotspot"
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   149
{0}"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   150
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   151
    jdkBuildDir = _get_jdk_build_dir()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   152
    if not exists(jdkBuildDir):
47785
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   153
        # JDK10 must be bootstrapped with a JDK9
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   154
        compliance = mx.JavaCompliance('9')
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   155
        jdk9 = mx.get_jdk(compliance.exactMatch, versionDescription=compliance.value)
43939
39f5b59549de 8173912: [JVMCI] fix memory overhead of JVMCI
dnsimon
parents: 40046
diff changeset
   156
        cmd = ['sh', 'configure', '--with-debug-level=' + _vm.debugLevel, '--with-native-debug-symbols=external', '--disable-precompiled-headers', '--with-jvm-features=graal',
47785
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   157
               '--with-jvm-variants=' + _vm.jvmVariant, '--disable-warnings-as-errors', '--with-boot-jdk=' + jdk9.home, '--with-jvm-features=graal']
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   158
        mx.run(cmd, cwd=_get_jdk_dir())
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   159
    cmd = [mx.gmake_cmd(), 'CONF=' + _vm.debugLevel]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   160
    if mx.get_opts().verbose:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   161
        cmd.append('LOG=debug')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   162
    cmd.extend(args)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   163
    if mx.get_opts().use_jdk_image and 'images' not in args:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   164
        cmd.append('images')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   165
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   166
    if not mx.get_opts().verbose:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   167
        mx.log('--------------- make execution ----------------------')
47785
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   168
        mx.log('Working directory: ' + _get_jdk_dir())
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   169
        mx.log('Command line: ' + ' '.join(cmd))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   170
        mx.log('-----------------------------------------------------')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   171
47785
5692c538ecef 8190415: [JVMCI] JVMCIRuntime::adjust_comp_level must not swallow ThreadDeath
dnsimon
parents: 47618
diff changeset
   172
    mx.run(cmd, cwd=_get_jdk_dir())
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   173
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   174
def _runmultimake(args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   175
    """run the JDK make process for one or more configurations"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   176
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   177
    jvmVariantsDefault = ','.join(_jdkJvmVariants)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   178
    debugLevelsDefault = ','.join(_jdkDebugLevels)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   179
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   180
    parser = ArgumentParser(prog='mx multimake')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   181
    parser.add_argument('--jdk-jvm-variants', '--vms', help='a comma separated list of VMs to build (default: ' + jvmVariantsDefault + ')', metavar='<args>', default=jvmVariantsDefault)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   182
    parser.add_argument('--jdk-debug-levels', '--builds', help='a comma separated list of JDK debug levels (default: ' + debugLevelsDefault + ')', metavar='<args>', default=debugLevelsDefault)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   183
    parser.add_argument('-n', '--no-check', action='store_true', help='omit running "java -version" after each build')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   184
    select = parser.add_mutually_exclusive_group()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   185
    select.add_argument('-c', '--console', action='store_true', help='send build output to console instead of log files')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   186
    select.add_argument('-d', '--output-dir', help='directory for log files instead of current working directory', default=os.getcwd(), metavar='<dir>')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   187
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   188
    args = parser.parse_args(args)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   189
    jvmVariants = args.jdk_jvm_variants.split(',')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   190
    debugLevels = [_translateLegacyDebugLevel(dl) for dl in args.jdk_debug_levels.split(',')]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   191
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   192
    allStart = time.time()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   193
    for jvmVariant in jvmVariants:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   194
        for debugLevel in debugLevels:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   195
            if not args.console:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   196
                logFile = join(mx.ensure_dir_exists(args.output_dir), jvmVariant + '-' + debugLevel + '.log')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   197
                log = open(logFile, 'wb')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   198
                start = time.time()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   199
                mx.log('BEGIN: ' + jvmVariant + '-' + debugLevel + '\t(see: ' + logFile + ')')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   200
                verbose = ['-v'] if mx.get_opts().verbose else []
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   201
                # Run as subprocess so that output can be directed to a file
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   202
                cmd = [sys.executable, '-u', mx.__file__] + verbose + ['--jdk-jvm-variant=' + jvmVariant, '--jdk-debug-level=' + debugLevel, 'make']
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   203
                mx.logv("executing command: " + str(cmd))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   204
                subprocess.check_call(cmd, cwd=_suite.dir, stdout=log, stderr=subprocess.STDOUT)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   205
                duration = datetime.timedelta(seconds=time.time() - start)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   206
                mx.log('END:   ' + jvmVariant + '-' + debugLevel + '\t[' + str(duration) + ']')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   207
            else:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   208
                with VM(jvmVariant=jvmVariant, debugLevel=debugLevel):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   209
                    _runmake([])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   210
            if not args.no_check:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   211
                with VM(jvmciMode='jit'):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   212
                    run_vm(['-XX:-BootstrapJVMCI', '-version'])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   213
    allDuration = datetime.timedelta(seconds=time.time() - allStart)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   214
    mx.log('TOTAL TIME:   ' + '[' + str(allDuration) + ']')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   215
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   216
class HotSpotProject(mx.NativeProject):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   217
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   218
    Defines a NativeProject representing the HotSpot binaries built via make.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   219
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   220
    def __init__(self, suite, name, deps, workingSets, **args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   221
        assert name == 'hotspot'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   222
        mx.NativeProject.__init__(self, suite, name, "", [], deps, workingSets, None, None, join(suite.mxDir, name))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   223
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   224
    def eclipse_config_up_to_date(self, configZip):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   225
        # Assume that any change to this module might imply changes to the generated IDE files
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   226
        if configZip.isOlderThan(__file__):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   227
            return False
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   228
        for _, source in self._get_eclipse_settings_sources().iteritems():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   229
            if configZip.isOlderThan(source):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   230
                return False
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   231
        return True
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   232
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   233
    def _get_eclipse_settings_sources(self):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   234
        """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   235
        Gets a dictionary from the name of an Eclipse settings file to
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   236
        the file providing its generated content.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   237
        """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   238
        if not hasattr(self, '_eclipse_settings'):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   239
            esdict = {}
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   240
            templateSettingsDir = join(self.dir, 'templates', 'eclipse', 'settings')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   241
            if exists(templateSettingsDir):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   242
                for name in os.listdir(templateSettingsDir):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   243
                    source = join(templateSettingsDir, name)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   244
                    esdict[name] = source
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   245
            self._eclipse_settings = esdict
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   246
        return self._eclipse_settings
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   247
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   248
    def _eclipseinit(self, files=None, libFiles=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   249
        """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   250
        Generates an Eclipse project for each HotSpot build configuration.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   251
        """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   252
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   253
        roots = [
47618
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   254
            'cpu',
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   255
            'os',
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   256
            'os_cpu',
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   257
            'share'
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   258
        ]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   259
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   260
        for jvmVariant in _jdkJvmVariants:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   261
            for debugLevel in _jdkDebugLevels:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   262
                name = jvmVariant + '-' + debugLevel
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   263
                eclProjectDir = join(self.dir, 'eclipse', name)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   264
                mx.ensure_dir_exists(eclProjectDir)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   265
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   266
                out = mx.XMLDoc()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   267
                out.open('projectDescription')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   268
                out.element('name', data='hotspot:' + name)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   269
                out.element('comment', data='')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   270
                out.element('projects', data='')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   271
                out.open('buildSpec')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   272
                out.open('buildCommand')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   273
                out.element('name', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   274
                out.element('triggers', data='full,incremental')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   275
                out.element('arguments', data='')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   276
                out.close('buildCommand')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   277
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   278
                out.close('buildSpec')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   279
                out.open('natures')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   280
                out.element('nature', data='org.eclipse.cdt.core.cnature')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   281
                out.element('nature', data='org.eclipse.cdt.core.ccnature')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   282
                out.element('nature', data='org.eclipse.cdt.managedbuilder.core.managedBuildNature')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   283
                out.element('nature', data='org.eclipse.cdt.managedbuilder.core.ScannerConfigNature')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   284
                out.close('natures')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   285
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   286
                if roots:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   287
                    out.open('linkedResources')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   288
                    for r in roots:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   289
                        f = join(_suite.dir, r)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   290
                        out.open('link')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   291
                        out.element('name', data=r)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   292
                        out.element('type', data='2' if isdir(f) else '1')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   293
                        out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(f, eclProjectDir))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   294
                        out.close('link')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   295
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   296
                    out.open('link')
45238
ddc52d9c74e4 8180453: [JVMCI] mx eclipseinit doesn't pick up generated sources
twisti
parents: 43939
diff changeset
   297
                    out.element('name', data='gensrc')
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   298
                    out.element('type', data='2')
45238
ddc52d9c74e4 8180453: [JVMCI] mx eclipseinit doesn't pick up generated sources
twisti
parents: 43939
diff changeset
   299
                    generated = join(_get_hotspot_build_dir(jvmVariant, debugLevel), 'gensrc')
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   300
                    out.element('locationURI', data=mx.get_eclipse_project_rel_locationURI(generated, eclProjectDir))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   301
                    out.close('link')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   302
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   303
                    out.close('linkedResources')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   304
                out.close('projectDescription')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   305
                projectFile = join(eclProjectDir, '.project')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   306
                mx.update_file(projectFile, out.xml(indent='\t', newl='\n'))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   307
                if files:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   308
                    files.append(projectFile)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   309
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   310
                cprojectTemplate = join(self.dir, 'templates', 'eclipse', 'cproject')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   311
                cprojectFile = join(eclProjectDir, '.cproject')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   312
                with open(cprojectTemplate) as f:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   313
                    content = f.read()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   314
                mx.update_file(cprojectFile, content)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   315
                if files:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   316
                    files.append(cprojectFile)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   317
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   318
                settingsDir = join(eclProjectDir, ".settings")
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   319
                mx.ensure_dir_exists(settingsDir)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   320
                for name, source in self._get_eclipse_settings_sources().iteritems():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   321
                    out = StringIO.StringIO()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   322
                    print >> out, '# GENERATED -- DO NOT EDIT'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   323
                    print >> out, '# Source:', source
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   324
                    with open(source) as f:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   325
                        print >> out, f.read()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   326
                    content = out.getvalue()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   327
                    mx.update_file(join(settingsDir, name), content)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   328
                    if files:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   329
                        files.append(join(settingsDir, name))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   330
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   331
    def getBuildTask(self, args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   332
        return JDKBuildTask(self, args, _vm.debugLevel, _vm.jvmVariant)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   333
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   334
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   335
class JDKBuildTask(mx.NativeBuildTask):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   336
    def __init__(self, project, args, debugLevel, jvmVariant):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   337
        mx.NativeBuildTask.__init__(self, args, project)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   338
        self.jvmVariant = jvmVariant
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   339
        self.debugLevel = debugLevel
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   340
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   341
    def __str__(self):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   342
        return 'Building JDK[{}, {}]'.format(self.debugLevel, self.jvmVariant)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   343
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   344
    def build(self):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   345
        if mx.get_opts().use_jdk_image:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   346
            _runmake(['images'])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   347
        else:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   348
            _runmake([])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   349
        self._newestOutput = None
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   350
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   351
    def clean(self, forBuild=False):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   352
        if forBuild:  # Let make handle incremental builds
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   353
            return
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   354
        if exists(_get_jdk_build_dir(self.debugLevel)):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   355
            _runmake(['clean'])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   356
        self._newestOutput = None
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   357
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   358
# Backwards compatibility for mx_jvmci:8 API
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   359
def buildvms(args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   360
    _runmultimake(args)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   361
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   362
def run_vm(args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, debugLevel=None, vmbuild=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   363
    """run a Java program by executing the java executable in a JVMCI JDK"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   364
    jdkTag = mx.get_jdk_option().tag
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   365
    if jdkTag and jdkTag != _JVMCI_JDK_TAG:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   366
        mx.abort('The "--jdk" option must have the tag "' + _JVMCI_JDK_TAG + '" when running a command requiring a JVMCI VM')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   367
    jdk = get_jvmci_jdk(debugLevel=debugLevel or _translateLegacyDebugLevel(vmbuild))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   368
    return jdk.run_java(args, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd, timeout=timeout)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   369
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   370
def _unittest_vm_launcher(vmArgs, mainClass, mainClassArgs):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   371
    run_vm(vmArgs + [mainClass] + mainClassArgs)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   372
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   373
mx_unittest.set_vm_launcher('JVMCI VM launcher', _unittest_vm_launcher)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   374
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   375
def _jvmci_gate_runner(args, tasks):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   376
    # Build release server VM now so we can run the unit tests
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   377
    with Task('BuildHotSpotJVMCIHosted: release', tasks) as t:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   378
        if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'release'])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   379
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   380
    # Run unit tests in hosted mode
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   381
    with VM(jvmVariant='server', debugLevel='release', jvmciMode='hosted'):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   382
        with Task('JVMCI UnitTests: hosted-release', tasks) as t:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   383
            if t: unittest(['--suite', 'jvmci', '--enable-timing', '--verbose', '--fail-fast'])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   384
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   385
    # Build the other VM flavors
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   386
    with Task('BuildHotSpotJVMCIOthers: fastdebug', tasks) as t:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   387
        if t: _runmultimake(['--jdk-jvm-variants', 'server', '--jdk-debug-levels', 'fastdebug'])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   388
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   389
    with Task('CleanAndBuildIdealGraphVisualizer', tasks, disableJacoco=True) as t:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   390
        if t and platform.processor() != 'sparc':
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   391
            buildxml = mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml'))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   392
            mx.run(['ant', '-f', buildxml, '-q', 'clean', 'build'], env=_igvBuildEnv())
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   393
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   394
mx_gate.add_gate_runner(_suite, _jvmci_gate_runner)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   395
mx_gate.add_gate_argument('-g', '--only-build-jvmci', action='store_false', dest='buildNonJVMCI', help='only build the JVMCI VM')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   396
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   397
def _igvJdk():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   398
    v8u20 = mx.VersionSpec("1.8.0_20")
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   399
    v8u40 = mx.VersionSpec("1.8.0_40")
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   400
    v8 = mx.VersionSpec("1.8")
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   401
    def _igvJdkVersionCheck(version):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   402
        return version >= v8 and (version < v8u20 or version >= v8u40)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   403
    return mx.get_jdk(_igvJdkVersionCheck, versionDescription='>= 1.8 and < 1.8.0u20 or >= 1.8.0u40', purpose="building & running IGV").home
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   404
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   405
def _igvBuildEnv():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   406
        # When the http_proxy environment variable is set, convert it to the proxy settings that ant needs
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   407
    env = dict(os.environ)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   408
    proxy = os.environ.get('http_proxy')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   409
    if not (proxy is None) and len(proxy) > 0:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   410
        if '://' in proxy:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   411
            # Remove the http:// prefix (or any other protocol prefix)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   412
            proxy = proxy.split('://', 1)[1]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   413
        # Separate proxy server name and port number
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   414
        proxyName, proxyPort = proxy.split(':', 1)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   415
        proxyEnv = '-DproxyHost="' + proxyName + '" -DproxyPort=' + proxyPort
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   416
        env['ANT_OPTS'] = proxyEnv
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   417
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   418
    env['JAVA_HOME'] = _igvJdk()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   419
    return env
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   420
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   421
def igv(args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   422
    """run the Ideal Graph Visualizer"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   423
    logFile = '.ideal_graph_visualizer.log'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   424
    with open(join(_suite.dir, logFile), 'w') as fp:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   425
        mx.logv('[Ideal Graph Visualizer log is in ' + fp.name + ']')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   426
        nbplatform = join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'nbplatform')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   427
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   428
        # Remove NetBeans platform if it is earlier than the current supported version
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   429
        if exists(nbplatform):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   430
            updateTrackingFile = join(nbplatform, 'platform', 'update_tracking', 'org-netbeans-core.xml')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   431
            if not exists(updateTrackingFile):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   432
                mx.log('Could not find \'' + updateTrackingFile + '\', removing NetBeans platform')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   433
                shutil.rmtree(nbplatform)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   434
            else:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   435
                dom = xml.dom.minidom.parse(updateTrackingFile)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   436
                currentVersion = mx.VersionSpec(dom.getElementsByTagName('module_version')[0].getAttribute('specification_version'))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   437
                supportedVersion = mx.VersionSpec('3.43.1')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   438
                if currentVersion < supportedVersion:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   439
                    mx.log('Replacing NetBeans platform version ' + str(currentVersion) + ' with version ' + str(supportedVersion))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   440
                    shutil.rmtree(nbplatform)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   441
                elif supportedVersion < currentVersion:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   442
                    mx.log('Supported NetBeans version in igv command should be updated to ' + str(currentVersion))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   443
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   444
        if not exists(nbplatform):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   445
            mx.logv('[This execution may take a while as the NetBeans platform needs to be downloaded]')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   446
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   447
        env = _igvBuildEnv()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   448
        # make the jar for Batik 1.7 available.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   449
        env['IGV_BATIK_JAR'] = mx.library('BATIK').get_path(True)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   450
        if mx.run(['ant', '-f', mx._cygpathU2W(join(_suite.dir, 'src', 'share', 'tools', 'IdealGraphVisualizer', 'build.xml')), '-l', mx._cygpathU2W(fp.name), 'run'], env=env, nonZeroIsFatal=False):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   451
            mx.abort("IGV ant build & launch failed. Check '" + logFile + "'. You can also try to delete 'src/share/tools/IdealGraphVisualizer/nbplatform'.")
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   452
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   453
def c1visualizer(args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   454
    """run the Cl Compiler Visualizer"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   455
    libpath = join(_suite.dir, 'lib')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   456
    if mx.get_os() == 'windows':
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   457
        executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer.exe')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   458
    else:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   459
        executable = join(libpath, 'c1visualizer', 'bin', 'c1visualizer')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   460
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   461
    # Check whether the current C1Visualizer installation is the up-to-date
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   462
    if exists(executable) and not exists(mx.library('C1VISUALIZER_DIST').get_path(resolve=False)):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   463
        mx.log('Updating C1Visualizer')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   464
        shutil.rmtree(join(libpath, 'c1visualizer'))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   465
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   466
    archive = mx.library('C1VISUALIZER_DIST').get_path(resolve=True)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   467
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   468
    if not exists(executable):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   469
        zf = zipfile.ZipFile(archive, 'r')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   470
        zf.extractall(libpath)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   471
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   472
    if not exists(executable):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   473
        mx.abort('C1Visualizer binary does not exist: ' + executable)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   474
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   475
    if mx.get_os() != 'windows':
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   476
        # Make sure that execution is allowed. The zip file does not always specfiy that correctly
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   477
        os.chmod(executable, 0777)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   478
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   479
    mx.run([executable])
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   480
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   481
def hsdis(args, copyToDir=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   482
    """download the hsdis library
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   483
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   484
    This is needed to support HotSpot's assembly dumping features.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   485
    By default it downloads the Intel syntax version, use the 'att' argument to install AT&T syntax."""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   486
    flavor = 'intel'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   487
    if 'att' in args:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   488
        flavor = 'att'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   489
    if mx.get_arch() == "sparcv9":
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   490
        flavor = "sparcv9"
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   491
    lib = mx.add_lib_suffix('hsdis-' + mx.get_arch())
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   492
    path = join(_suite.dir, 'lib', lib)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   493
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   494
    sha1s = {
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   495
        'att/hsdis-amd64.dll' : 'bcbd535a9568b5075ab41e96205e26a2bac64f72',
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   496
        'att/hsdis-amd64.so' : '58919ba085d4ef7a513f25bae75e7e54ee73c049',
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   497
        'intel/hsdis-amd64.dll' : '6a388372cdd5fe905c1a26ced614334e405d1f30',
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   498
        'intel/hsdis-amd64.so' : '844ed9ffed64fe9599638f29a8450c50140e3192',
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   499
        'intel/hsdis-amd64.dylib' : 'fdb13ef0d7d23d93dacaae9c98837bea0d4fc5a2',
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   500
        'sparcv9/hsdis-sparcv9.so': '970640a9af0bd63641f9063c11275b371a59ee60',
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   501
    }
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   502
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   503
    flavoredLib = flavor + "/" + lib
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   504
    if flavoredLib not in sha1s:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   505
        mx.logv("hsdis not supported on this plattform or architecture")
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   506
        return
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   507
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   508
    if not exists(path):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   509
        sha1 = sha1s[flavoredLib]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   510
        sha1path = path + '.sha1'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   511
        mx.download_file_with_sha1('hsdis', path, ['https://lafo.ssw.uni-linz.ac.at/pub/hsdis/' + flavoredLib], sha1, sha1path, True, True, sources=False)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   512
    if copyToDir is not None and exists(copyToDir):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   513
        shutil.copy(path, copyToDir)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   514
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   515
def hcfdis(args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   516
    """disassemble HexCodeFiles embedded in text files
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   517
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   518
    Run a tool over the input files to convert all embedded HexCodeFiles
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   519
    to a disassembled format."""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   520
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   521
    parser = ArgumentParser(prog='mx hcfdis')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   522
    parser.add_argument('-m', '--map', help='address to symbol map applied to disassembler output')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   523
    parser.add_argument('files', nargs=REMAINDER, metavar='files...')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   524
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   525
    args = parser.parse_args(args)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   526
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   527
    path = mx.library('HCFDIS').get_path(resolve=True)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   528
    mx.run_java(['-cp', path, 'com.oracle.max.hcfdis.HexCodeFileDis'] + args.files)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   529
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   530
    if args.map is not None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   531
        addressRE = re.compile(r'0[xX]([A-Fa-f0-9]+)')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   532
        with open(args.map) as fp:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   533
            lines = fp.read().splitlines()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   534
        symbols = dict()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   535
        for l in lines:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   536
            addressAndSymbol = l.split(' ', 1)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   537
            if len(addressAndSymbol) == 2:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   538
                address, symbol = addressAndSymbol
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   539
                if address.startswith('0x'):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   540
                    address = long(address, 16)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   541
                    symbols[address] = symbol
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   542
        for f in args.files:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   543
            with open(f) as fp:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   544
                lines = fp.read().splitlines()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   545
            updated = False
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   546
            for i in range(0, len(lines)):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   547
                l = lines[i]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   548
                for m in addressRE.finditer(l):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   549
                    sval = m.group(0)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   550
                    val = long(sval, 16)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   551
                    sym = symbols.get(val)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   552
                    if sym:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   553
                        l = l.replace(sval, sym)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   554
                        updated = True
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   555
                        lines[i] = l
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   556
            if updated:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   557
                mx.log('updating ' + f)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   558
                with open('new_' + f, "w") as fp:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   559
                    for l in lines:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   560
                        print >> fp, l
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   561
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   562
def jol(args):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   563
    """Java Object Layout"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   564
    joljar = mx.library('JOL_INTERNALS').get_path(resolve=True)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   565
    candidates = mx.findclass(args, logToConsole=False, matcher=lambda s, classname: s == classname or classname.endswith('.' + s) or classname.endswith('$' + s))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   566
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   567
    if len(candidates) > 0:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   568
        candidates = mx.select_items(sorted(candidates))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   569
    else:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   570
        # mx.findclass can be mistaken, don't give up yet
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   571
        candidates = args
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   572
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   573
    run_vm(['-javaagent:' + joljar, '-cp', os.pathsep.join([mx.classpath(), joljar]), "org.openjdk.jol.MainObjectInternals"] + candidates)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   574
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   575
def _get_openjdk_os():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   576
    # See: common/autoconf/platform.m4
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   577
    os = mx.get_os()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   578
    if 'darwin' in os:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   579
        os = 'macosx'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   580
    elif 'linux' in os:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   581
        os = 'linux'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   582
    elif 'solaris' in os:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   583
        os = 'solaris'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   584
    elif 'cygwin' in os or 'mingw' in os:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   585
        os = 'windows'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   586
    return os
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   587
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   588
def _get_openjdk_cpu():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   589
    cpu = mx.get_arch()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   590
    if cpu == 'amd64':
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   591
        cpu = 'x86_64'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   592
    elif cpu == 'sparcv9':
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   593
        cpu = 'sparcv9'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   594
    return cpu
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   595
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   596
def _get_openjdk_os_cpu():
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   597
    return _get_openjdk_os() + '-' + _get_openjdk_cpu()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   598
47618
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   599
def _get_jdk_dir():
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   600
    suiteParentDir = dirname(_suite.dir)
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   601
    # suitParentDir is now something like: /some_prefix/jdk10-hs/open/src
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   602
    pathComponents = suiteParentDir.split(os.sep)
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   603
    for i in range(0, len(pathComponents)):
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   604
        if pathComponents[i] in ["open", "src"]:
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   605
            del pathComponents[i:]
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   606
            break
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   607
    return os.path.join(os.sep, *pathComponents)
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   608
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   609
def _get_jdk_build_dir(debugLevel=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   610
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   611
    Gets the directory into which the JDK is built. This directory contains
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   612
    the exploded JDK under jdk/ and the JDK image under images/jdk/.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   613
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   614
    if debugLevel is None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   615
        debugLevel = _vm.debugLevel
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   616
    name = '{}-{}-{}-{}'.format(_get_openjdk_os_cpu(), 'normal', _vm.jvmVariant, debugLevel)
47618
57cdc5222925 8189183: [AOT] Fix eclipse project generation after repo consolidation
iveresov
parents: 47216
diff changeset
   617
    return join(_get_jdk_dir(), 'build', name)
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   618
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   619
_jvmci_bootclasspath_prepends = []
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   620
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   621
def _get_hotspot_build_dir(jvmVariant=None, debugLevel=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   622
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   623
    Gets the directory in which a particular HotSpot configuration is built
45238
ddc52d9c74e4 8180453: [JVMCI] mx eclipseinit doesn't pick up generated sources
twisti
parents: 43939
diff changeset
   624
    (e.g., <JDK_REPO_ROOT>/build/macosx-x86_64-normal-server-release/hotspot/variant-<variant>)
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   625
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   626
    if jvmVariant is None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   627
        jvmVariant = _vm.jvmVariant
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   628
45238
ddc52d9c74e4 8180453: [JVMCI] mx eclipseinit doesn't pick up generated sources
twisti
parents: 43939
diff changeset
   629
    name = 'variant-{}'.format(jvmVariant)
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   630
    return join(_get_jdk_build_dir(debugLevel=debugLevel), 'hotspot', name)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   631
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   632
class JVMCI9JDKConfig(mx.JDKConfig):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   633
    def __init__(self, debugLevel):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   634
        self.debugLevel = debugLevel
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   635
        jdkBuildDir = _get_jdk_build_dir(debugLevel)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   636
        jdkDir = join(jdkBuildDir, 'images', 'jdk') if mx.get_opts().use_jdk_image else join(jdkBuildDir, 'jdk')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   637
        mx.JDKConfig.__init__(self, jdkDir, tag=_JVMCI_JDK_TAG)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   638
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   639
    def parseVmArgs(self, args, addDefaultArgs=True):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   640
        args = mx.expand_project_in_args(args, insitu=False)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   641
        jacocoArgs = mx_gate.get_jacoco_agent_args()
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   642
        if jacocoArgs:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   643
            args = jacocoArgs + args
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   644
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   645
        args = ['-Xbootclasspath/p:' + dep.classpath_repr() for dep in _jvmci_bootclasspath_prepends] + args
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   646
35598
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   647
        # Remove JVMCI jars from class path. They are only necessary when
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   648
        # compiling with a javac from JDK8 or earlier.
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   649
        cpIndex, cp = mx.find_classpath_arg(args)
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   650
        if cp:
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   651
            excluded = frozenset([dist.path for dist in _suite.dists])
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   652
            cp = os.pathsep.join([e for e in cp.split(os.pathsep) if e not in excluded])
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   653
            args[cpIndex] = cp
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   654
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   655
        if '-version' in args:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   656
            ignoredArgs = args[args.index('-version') + 1:]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   657
            if  len(ignoredArgs) > 0:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   658
                mx.log("Warning: The following options will be ignored by the vm because they come after the '-version' argument: " + ' '.join(ignoredArgs))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   659
        return self.processArgs(args, addDefaultArgs=addDefaultArgs)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   660
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   661
    # Overrides JDKConfig
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   662
    def run_java(self, args, vm=None, nonZeroIsFatal=True, out=None, err=None, cwd=None, timeout=None, env=None, addDefaultArgs=True):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   663
        if vm is None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   664
            vm = 'server'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   665
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   666
        args = self.parseVmArgs(args, addDefaultArgs=addDefaultArgs)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   667
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   668
        jvmciModeArgs = _jvmciModes[_vm.jvmciMode]
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   669
        cmd = [self.java] + ['-' + vm] + jvmciModeArgs + args
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   670
        return mx.run(cmd, nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   671
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   672
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   673
The dict of JVMCI JDKs indexed by debug-level names.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   674
"""
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   675
_jvmci_jdks = {}
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   676
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   677
def get_jvmci_jdk(debugLevel=None):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   678
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   679
    Gets the JVMCI JDK corresponding to 'debugLevel'.
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   680
    """
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   681
    if not debugLevel:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   682
        debugLevel = _vm.debugLevel
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   683
    jdk = _jvmci_jdks.get(debugLevel)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   684
    if jdk is None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   685
        try:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   686
            jdk = JVMCI9JDKConfig(debugLevel)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   687
        except mx.JDKConfigException as e:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   688
            jdkBuildDir = _get_jdk_build_dir(debugLevel)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   689
            msg = 'Error with the JDK built into {}:\n{}\nTry (re)building it with: mx --jdk-debug-level={} make'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   690
            if mx.get_opts().use_jdk_image:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   691
                msg += ' images'
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   692
            mx.abort(msg.format(jdkBuildDir, e.message, debugLevel))
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   693
        _jvmci_jdks[debugLevel] = jdk
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   694
    return jdk
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   695
35598
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   696
class JVMCI9JDKFactory(mx.JDKFactory):
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   697
    def getJDKConfig(self):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   698
        jdk = get_jvmci_jdk(_vm.debugLevel)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   699
        return jdk
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   700
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   701
    def description(self):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   702
        return "JVMCI JDK"
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   703
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   704
mx.update_commands(_suite, {
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   705
    'make': [_runmake, '[args...]', _makehelp],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   706
    'multimake': [_runmultimake, '[options]'],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   707
    'c1visualizer' : [c1visualizer, ''],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   708
    'hsdis': [hsdis, '[att]'],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   709
    'hcfdis': [hcfdis, ''],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   710
    'igv' : [igv, ''],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   711
    'jol' : [jol, ''],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   712
    'vm': [run_vm, '[-options] class [args...]'],
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   713
})
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   714
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   715
mx.add_argument('-M', '--jvmci-mode', action='store', choices=sorted(_jvmciModes.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmciMode + ')')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   716
mx.add_argument('--jdk-jvm-variant', '--vm', action='store', choices=_jdkJvmVariants + sorted(_legacyVms.viewkeys()), help='the JVM variant type to build/run (default: ' + _vm.jvmVariant + ')')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   717
mx.add_argument('--jdk-debug-level', '--vmbuild', action='store', choices=_jdkDebugLevels + sorted(_legacyVmbuilds.viewkeys()), help='the JDK debug level to build/run (default: ' + _vm.debugLevel + ')')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   718
mx.add_argument('-I', '--use-jdk-image', action='store_true', help='build/run JDK image instead of exploded JDK')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   719
35598
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   720
mx.addJDKFactory(_JVMCI_JDK_TAG, mx.JavaCompliance('9'), JVMCI9JDKFactory())
8d7bc466f490 8147470: update JVMCI mx extensions
dnsimon
parents: 35564
diff changeset
   721
34505
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   722
def mx_post_parse_cmd_line(opts):
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   723
    mx.set_java_command_default_jdk_tag(_JVMCI_JDK_TAG)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   724
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   725
    jdkTag = mx.get_jdk_option().tag
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   726
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   727
    jvmVariant = None
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   728
    debugLevel = None
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   729
    jvmciMode = None
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   730
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   731
    if opts.jdk_jvm_variant is not None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   732
        jvmVariant = opts.jdk_jvm_variant
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   733
        if jdkTag and jdkTag != _JVMCI_JDK_TAG:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   734
            mx.warn('Ignoring "--jdk-jvm-variant" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   735
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   736
    if opts.jdk_debug_level is not None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   737
        debugLevel = _translateLegacyDebugLevel(opts.jdk_debug_level)
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   738
        if jdkTag and jdkTag != _JVMCI_JDK_TAG:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   739
            mx.warn('Ignoring "--jdk-debug-level" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   740
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   741
    if opts.jvmci_mode is not None:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   742
        jvmciMode = opts.jvmci_mode
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   743
        if jdkTag and jdkTag != _JVMCI_JDK_TAG:
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   744
            mx.warn('Ignoring "--jvmci-mode" option as "--jdk" tag is not "' + _JVMCI_JDK_TAG + '"')
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   745
90f4fd15d739 8139921: add mx configuration files to support HotSpot IDE configuration generation
twisti
parents:
diff changeset
   746
    _vm.update(jvmVariant, debugLevel, jvmciMode)