make/idea/template/build.xml
author duke
Wed, 05 Jul 2017 22:07:34 +0200
changeset 40519 e17429a7e843
parent 37976 9cc5debe0f47
child 47217 72e3ae9a25eb
permissions -rw-r--r--
Merge

<!-- importing.xml -->
<project name="jdk" basedir="..">

    <script language="javascript" classpath=".idea/classes">
        var JdkLogger = Java.type("idea.JdkIdeaAntLogger");
        new JdkLogger(project)
    </script>

     <!-- java.marker is set to a marker file to check for within a Java install dir.
         The best file to check for across Solaris/Linux/Windows/MacOS is one of the
         executables; regrettably, that is OS-specific. -->
    <condition property="java.marker" value="bin/java">
        <os family="unix"/>
    </condition>
    <condition property="java.marker" value="bin/java.exe">
        <os family="windows"/>
    </condition>

    <target name="-check-jtreg.home" depends="-def-check">
        <check name="jtreg" property="jtreg.home" marker="lib/jtreg.jar"/>
    </target>

    <property name="test.dir" value="${basedir}/jdk/test"/>

    <macrodef name="call-make">
            <attribute name="dir"/>
            <attribute name="args"/>
            <sequential>
                <exec executable="make" dir="@{dir}" failonerror="true">
                    <arg line="@{args}"/>
                    <env key="CLASSPATH" value = ""/>
                </exec>
            </sequential>
        </macrodef>

    <target name="post-make" depends="build-module"/>

    <!--
        **** Global JDK Build Targets
    -->

    <target name="clean" depends="-do-configure">
        <echo message="base = ${basedir}"/>
        <call-make dir = "${build.target.dir}" args = "clean"/>
    </target>

    <target name="-do-configure">
        <echo message="base = ${basedir}"/>
        <fail message="Not part of a full JDK forest">
            <condition>
                <not>
                    <available file="${basedir}/configure" />
                </not>
            </condition>
        </fail>
        <exec executable="sh" dir="${basedir}" failonerror="true">
            <arg line="configure --with-boot-jdk=${boot.java.home}"/>
        </exec>
    </target>

    <target name="images">
        <call-make dir = "${build.target.dir}" args = "images"/>
    </target>

    <target name="jimages">
        <call-make dir = "${build.target.dir}" args = "jimages"/>
    </target>

    <target name="check-env">
        <exec executable="env" dir="${basedir}"/>
    </target>

    <target name="build-module">
        <call-make dir = "${build.target.dir}" args = "${module.name}"/>
    </target>

    <target name="-check-boot.java.home" depends="-def-check">
        <check name="bootstrap java" property="boot.java.home" marker="${java.marker}"/>
    </target>

    <target name="-def-check">
        <macrodef name="check">
            <attribute name="name"/>
            <attribute name="property"/>
            <attribute name="marker" default=""/>
            <sequential>
                <fail message="Cannot locate @{name}: please set @{property} to its location">
                    <condition>
                        <not>
                            <isset property="@{property}"/>
                        </not>
                    </condition>
                </fail>
                <fail message="@{name} is not installed in ${@{property}}">
                    <condition>
                        <and>
                            <not>
                                <equals arg1="@{marker}" arg2=""/>
                            </not>
                            <not>
                                <available file="${@{property}}/@{marker}"/>
                            </not>
                        </and>
                    </condition>
                </fail>
            </sequential>
        </macrodef>
    </target>

    <macrodef name="exec-target">
        <attribute name="antfile" default="${ant.file}" />
        <attribute name="target" />
        <sequential>
            <java classname="org.apache.tools.ant.Main" fork="true" spawn="true">
                <arg value="-f"/>
                <arg value="@{antfile}"/>
                <arg value="-Dbuild.target.dir=${build.target.dir}"/>
                <arg value="-Djtreg.home=${jtreg.home}"/>
                <arg value="-Djtreg.tests=${jtreg.tests}"/>
                <arg value="-Djtreg.jpda.jvmargs=${jtreg.jpda.jvmargs}"/>
                <arg value="@{target}"/>
                <classpath>
                    <pathelement path="${java.class.path}"/>
                </classpath>
            </java>
        </sequential>
    </macrodef>

    <target name="jtreg" depends="images,-def-jtreg">
        <jtreg-tool name="all" tests="${jtreg.tests}"/>
    </target>

    <target name="-def-jtreg" unless="jtreg.defined" depends="-check-jtreg.home">
        <taskdef name="jtreg" classname="com.sun.javatest.regtest.Main$$Ant">
            <classpath>
                <pathelement location="${jtreg.home}/lib/jtreg.jar"/>
                <pathelement location="${jtreg.home}/lib/javatest.jar"/>
            </classpath>
        </taskdef>
        <macrodef name="jtreg-tool">
            <attribute name="name"/>
            <attribute name="tests"/>
            <attribute name="jdk" default="${build.target.dir}/images/jdk"/>
            <attribute name="agentvm" default="true"/>
            <attribute name="verbose" default="${default.jtreg.verbose}"/>
            <attribute name="options" default="${other.jtreg.options}"/>
            <attribute name="keywords" default="-keywords:!ignore"/>
            <attribute name="jpda.jvmargs" default=""/>
            <attribute name="extra.jvmargs" default=""/>
            <attribute name="build.modules" default="${build.modules}"/>
            <sequential>
                <property name="coverage.options" value=""/>              <!-- default -->
                <property name="coverage.classpath" value=""/>            <!-- default -->
                <property name="default.jtreg.verbose" value="summary"/>  <!-- default -->
                <property name="other.jtreg.options" value=""/>           <!-- default -->
                <property name="jtreg.classfiles.to.modules" value="@{agentvm}"/>
                <jtreg
                    dir="${test.dir}"
                    workDir="${build.target.dir}/idea/@{name}/work"
                    reportDir="${build.target.dir}/idea/@{name}/report"
                    jdk="@{jdk}"
                    agentvm="@{agentvm}" verbose="@{verbose}"
                    failonerror="false" resultproperty="jtreg.@{name}.result">
                    <arg value="-debug:@{jpda.jvmargs}"/>
                    <arg line="@{keywords}"/>
                    <arg line="@{options}"/>
                    <arg line="@{tests}"/>
                </jtreg>
            </sequential>
        </macrodef>
        <property name="jtreg.defined" value="true"/>
    </target>
</project>