<?xml version="1.0" encoding="UTF-8"?>
<project name="java-mirror-gen" default="build" basedir=".">
<dirname property="j2cj.basedir" file="${ant.file.java-mirror-gen}" />
<import file="${j2cj.basedir}/env.xml" optional="true" />
<property environment="env"/>
<property name="java-mirror-gen.jdk" value="${env.JAVA_HOME}"/>
<property name="java-mirror-gen.jar" location="java-mirror-gen.jar"/>
<property name="javax.jar" location="build/javax.jar"/>
<property name="javac.opts" value ="-XDignore.symbol.file=true -Xlint:all -Werror -g:source,lines,vars"/>
<property name="javac.release" value = "17"/>
<property name="javac.encoding" value = "UTF-8"/>
<property name="javac.build.opts" value ="-XDignore.symbol.file=true -Xlint:all -Werror"/>
<property name="javac.build.release" value = "17"/>
<property name="javac.resource.compiler.properties" value="com/sun/tools/javac/resources/compiler.properties" />
<property name="javac.debug" value="false"/>
<property name="javac.profile" value="false"/>
<condition property="remote.debug.jvm.args" value="-agentlib:jdwp=transport=dt_socket,server=n,address=localhost:5005,suspend=y" else="-Dno.meaning.arg">
<istrue value="${javac.debug}"/>
</condition>
<condition property="profile.jvm.args" value="-XX:StartFlightRecording=filename=j2cj.jfr" else="-Dno.meaning.arg">
<istrue value="${javac.profile}"/>
</condition>
<property name="build.dir" location="build"/>
<property name="src.dir" location="src"/>
<property name="vendor.jdk.compiler.src.dir" location="third_party/jdk/src/jdk.compiler/share/classes"/>
<property name="vendor.java.compiler.src.dir" location="third_party/jdk/src/java.compiler/share/classes"/>
<property name="make.dir" location="third_party/jdk/make"/>
<property name="make.tools.dir" location="${make.dir}/langtools/tools"/>
<property name="build.modules" location="${build.dir}/modules"/>
<property name="build.classes" location="${build.dir}/classes"/>
<property name="build.gensrc" location="${build.dir}/gensrc"/>
<property name="build.tools" location="${build.dir}/toolclasses"/>
<target name="build" depends="make-jar"/>
<target name="clean" description="Delete all generated files">
<delete dir="${build.dir}"/>
<delete file="${java-mirror-gen.jar}"/>
</target>
<target name="-prepare-build">
<mkdir dir="${build.modules}"/>
<mkdir dir="${build.tools}"/>
<mkdir dir="${build.gensrc}"/>
</target>
<target name="generate-sources" depends="-prepare-build,-def-pparse,-def-pcompile">
<pparse destdir="${vendor.jdk.compiler.src.dir}" includes="${javac.resource.compiler.properties}">
<src path="${vendor.jdk.compiler.src.dir}"/>
</pparse>
<pcompile destdir="${build.gensrc}" includes="**/*.properties">
<src path="${vendor.jdk.compiler.src.dir}"/>
</pcompile>
</target>
<target name="build-all-classes" depends="generate-sources">
<javac executable="${java-mirror-gen.jdk}/bin/javac" failonerror="true" fork="true"
destdir="${build.modules}"
encoding="${javac.encoding}"
includeantruntime="false" release="${javac.release}">
<compilerarg line="${javac.opts}" />
<src path="${src.dir}" />
<src path="${vendor.jdk.compiler.src.dir}"/>
<src path="${vendor.java.compiler.src.dir}"/>
<src path="${build.gensrc}" />
</javac>
</target>
<target name="make-jar" depends="build-all-classes">
<jar jarfile="${java-mirror-gen.jar}">
<fileset dir="${build.modules}" />
<manifest>
<attribute name="Main-Class"
value="cangjie.interop.main.Main"/>
</manifest>
</jar>
</target>
<property name="tests.src" location="./tests/testData"/>
<property name="tests.bin" location="./tests/generated"/>
<property name="cj.mirror.gen" value="cj_mirror_gen"/>
<property name="cj.mirror.src" location="./tests/testData/${cj.mirror.gen}"/>
<fileset id="fileset" dir="${tests.src}">
<include name="**/*.java"/>
<exclude name="${cj.mirror.gen}*/*.java"/>
</fileset>
<pathconvert refid="fileset" property="tests.files" pathsep=" "/>
<presetdef name="j2cj.javac">
<java fork="yes" jar="${java-mirror-gen.jar}" jvm="${java-mirror-gen.jdk}/bin/java">
<jvmarg value="-ea"/>
<jvmarg value="-XX:MaxJavaStackTraceDepth=0"/>
<jvmarg value="-XX:FlightRecorderOptions=stackdepth=256"/>
<jvmarg value="${profile.jvm.args}"/>
<jvmarg value="${remote.debug.jvm.args}"/>
<jvmarg value="-Dfile.encoding=${javac.encoding}" />
<jvmarg value="-Dpackage.mode=true"/>
<jvmarg value="-Dgenerate.definition=true"/>
<arg value="-d" />
<arg value="${tests.bin}" />
<arg value="-sourcepath" />
<arg value="${tests.files}" />
<arg value="-target" />
<arg value="21" />
</java>
</presetdef>
<target name="test-bind-gen" depends="build" description="Run tests for binding generation">
<delete>
<fileset dir="${tests.bin}">
<include name="**/*"/>
</fileset>
</delete>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_simple" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_str_param" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_hashmap_param" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_bridge" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_bridge_public" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_protected" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_constructor" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_enum_open" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_parameters" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_omit_modifier" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_keyword_mangle" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_nested_mangle" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_array_list" />
<mkdir dir="${tests.bin}/${cj.mirror.gen}_static_method"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_static_covariant"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_fields"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_default_method"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_package_private"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_pp_interface"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_pp_keep_api"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_pp_abstract"/>
<mkdir dir="${tests.bin}/${cj.mirror.gen}_pp_default_methods"/>
<javac srcdir="${cj.mirror.src}_simple" destdir="${tests.bin}/${cj.mirror.gen}_simple" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_simple -cp ${tests.bin}/${cj.mirror.gen}_simple M"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_str_param" destdir="${tests.bin}/${cj.mirror.gen}_str_param" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_str_param -cp ${tests.bin}/${cj.mirror.gen}_str_param M"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_hashmap_param" destdir="${tests.bin}/${cj.mirror.gen}_hashmap_param" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_hashmap_param -cp ${tests.bin}/${cj.mirror.gen}_hashmap_param mirrors.M"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_bridge" destdir="${tests.bin}/${cj.mirror.gen}_bridge" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_bridge -cp ${tests.bin}/${cj.mirror.gen}_bridge TestClass05"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_bridge_public" destdir="${tests.bin}/${cj.mirror.gen}_bridge_public" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_bridge_public -cp ${tests.bin}/${cj.mirror.gen}_bridge_public TestClass05"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_protected" destdir="${tests.bin}/${cj.mirror.gen}_protected" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_protected -cp ${tests.bin}/${cj.mirror.gen}_protected Init03"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_constructor" destdir="${tests.bin}/${cj.mirror.gen}_constructor" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_constructor -cp ${tests.bin}/${cj.mirror.gen}_constructor com.xxx.CalledA"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_enum_open" destdir="${tests.bin}/${cj.mirror.gen}_enum_open" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_enum_open -cp ${tests.bin}/${cj.mirror.gen}_enum_open TestEnum01 ee TestEnum03 TestEnum03$EE TestEnum03$TestEnum"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_parameters" destdir="${tests.bin}/${cj.mirror.gen}_parameters" includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_parameters -cp ${tests.bin}/${cj.mirror.gen}_parameters TestClass01"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_omit_modifier" destdir="${tests.bin}/${cj.mirror.gen}_omit_modifier" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_omit_modifier -cp ${tests.bin}/${cj.mirror.gen}_omit_modifier com.JavaClass "/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_keyword_mangle" destdir="${tests.bin}/${cj.mirror.gen}_keyword_mangle" includeantruntime="false"/>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_keyword_mangle -cp ${tests.bin}/${cj.mirror.gen}_keyword_mangle Unit"/>
<j2cj.javac>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_nested_mangle" destdir="${tests.bin}/${cj.mirror.gen}_nested_mangle" includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_nested_mangle -cp ${tests.bin}/${cj.mirror.gen}_nested_mangle the$root.the$child.Test$Type$Inner$$$$Type"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.annotation=true"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_array_list" destdir="${tests.bin}/${cj.mirror.gen}_array_list" includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_array_list -cp ${tests.bin}/${cj.mirror.gen}_array_list java.util.Spliterators$AbstractIntSpliterator"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_static_method" destdir="${tests.bin}/${cj.mirror.gen}_static_method"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_static_method -cp ${tests.bin}/${cj.mirror.gen}_static_method JavaClass"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_static_covariant" destdir="${tests.bin}/${cj.mirror.gen}_static_covariant"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_static_covariant -cp ${tests.bin}/${cj.mirror.gen}_static_covariant JavaClass"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_fields" destdir="${tests.bin}/${cj.mirror.gen}_fields"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_fields -cp ${tests.bin}/${cj.mirror.gen}_fields A"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_default_method" destdir="${tests.bin}/${cj.mirror.gen}_default_method"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_default_method -cp ${tests.bin}/${cj.mirror.gen}_default_method I2"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_package_private" destdir="${tests.bin}/${cj.mirror.gen}_package_private"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_package_private -cp ${tests.bin}/${cj.mirror.gen}_package_private/package1:${tests.bin}/${cj.mirror.gen}_package_private C"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_pp_interface" destdir="${tests.bin}/${cj.mirror.gen}_pp_interface"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_pp_interface -cp ${tests.bin}/${cj.mirror.gen}_pp_interface I2"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_pp_keep_api" destdir="${tests.bin}/${cj.mirror.gen}_pp_keep_api"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_pp_keep_api -cp ${tests.bin}/${cj.mirror.gen}_pp_keep_api Main"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_pp_abstract" destdir="${tests.bin}/${cj.mirror.gen}_pp_abstract"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_pp_abstract -cp ${tests.bin}/${cj.mirror.gen}_pp_abstract package1.JavaClass"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
<javac srcdir="${cj.mirror.src}_pp_default_methods" destdir="${tests.bin}/${cj.mirror.gen}_pp_default_methods"
includeantruntime="false">
<compilerarg value="-parameters"/>
</javac>
<echo file="javac.args"
message="-d ${tests.bin}/${cj.mirror.gen}_pp_default_methods -cp ${tests.bin}/${cj.mirror.gen}_pp_default_methods B2"/>
<j2cj.javac>
<jvmarg value="-Dgenerate.definition=false"/>
<arg line="@javac.args"/>
</j2cj.javac>
</target>
<target name="test" depends="test-bind-gen" description="Run tests">
</target>
<target name="-def-pparse">
<copy todir="${build.tools}/propertiesparser" >
<fileset dir="${make.tools.dir}/propertiesparser" includes="**/resources/**"/>
</copy>
<javac fork="true"
release="${javac.build.release}"
srcdir="${make.tools.dir}"
includes="propertiesparser/* anttasks/PropertiesParser* anttasks/PathFileSet*"
destdir="${build.tools}"
classpath="${ant.core.lib}"
encoding="${javac.encoding}"
includeantruntime="false">
<compilerarg line="${javac.build.opts} -XDstringConcat=inline"/>
</javac>
<taskdef name="pparse"
classname="anttasks.PropertiesParserTask"
classpath="${build.tools}"/>
</target>
<target name="-def-pcompile">
<javac fork="true"
release="${javac.build.release}"
srcdir="${make.tools.dir}"
includes="compileproperties/* anttasks/CompileProperties* anttasks/PathFileSet*"
destdir="${build.dir}/toolclasses/"
classpath="${ant.core.lib}"
encoding="${javac.encoding}"
includeantruntime="false">
<compilerarg line="${javac.build.opts} -XDstringConcat=inline"/>
</javac>
<taskdef name="pcompile"
classname="anttasks.CompilePropertiesTask"
classpath="${build.tools}"/>
</target>
</project>