compile java files with ant for incremental builds

Meson doesn't support incremental builds for java, so delegate the java
compilation to Ant if available.
This commit is contained in:
Julian Winkler
2024-12-12 16:27:55 +01:00
parent a1c29c012e
commit 413d3ee69f
4 changed files with 750 additions and 669 deletions

19
src/api-impl/build.xml Normal file
View File

@@ -0,0 +1,19 @@
<project name="api-impl" default="dist">
<!-- the Ant build is intended to be started from Meson. The properties will be set using commandline parameters -->
<target name="compile">
<mkdir dir="${build}"/>
<javac srcdir="${srcdir}" includes="${includes}" destdir="${build}" includeantruntime="false" debug="true">
<compilerarg line="${javaargs}"/>
</javac>
</target>
<target name="dist" depends="compile">
<jar jarfile="${jarfile}" basedir="${build}"/>
</target>
<target name="clean">
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>

View File

@@ -1,4 +1,4 @@
hax_jar = jar('hax', [
srcs = [
'android/Manifest.java',
'android/R.java',
'android/accounts/Account.java',
@@ -591,11 +591,32 @@ hax_jar = jar('hax', [
'javax/microedition/khronos/opengles/GL11Ext.java',
'javax/microedition/khronos/opengles/GL11ExtensionPack.java',
'org/apache/harmony/xnet/provider/jsse/SSLParametersImpl.java',
],
java_args: [
]
java_args = [
'-bootclasspath', bootclasspath,
'-source', '1.8', '-target', '1.8',
'-encoding', 'UTF-8',
'-Xlint:-deprecation', # we implement deprecated APIs
'-h', join_paths(dir_base, 'src/api-impl-jni/generated_headers')
])
]
ant = find_program('ant', required: false)
if ant.found()
hax_jar = custom_target('hax',
output: 'hax.jar',
command: [ant,
'-buildfile', files('build.xml'),
'-Dbasedir=' + builddir_base,
'-Dsrcdir=' + meson.current_source_dir(),
'-Dincludes=' + ','.join(srcs),
'-Djarfile=@OUTPUT@',
'-Dbuild=@PRIVATE_DIR@',
'-Djavaargs=' + ' '.join(java_args),
],
depend_files: srcs + ['build.xml'],
)
else
hax_jar = jar('hax', srcs,
java_args: java_args)
endif

19
src/test-runner/build.xml Normal file
View File

@@ -0,0 +1,19 @@
<project name="test-runner" default="dist">
<!-- the Ant build is intended to be started from Meson. The properties will be set using commandline parameters -->
<target name="compile">
<mkdir dir="${build}"/>
<javac srcdir="${srcdir}" includes="${includes}" destdir="${build}" includeantruntime="false" debug="true">
<compilerarg line="${javaargs}"/>
</javac>
</target>
<target name="dist" depends="compile">
<jar jarfile="${jarfile}" basedir="${build}"/>
</target>
<target name="clean">
<delete dir="${build}"/>
<delete dir="${dist}"/>
</target>
</project>

View File

@@ -1,4 +1,4 @@
test_runner_jar = jar('test_runner', [
srcs = [
# test-runner
'android/test/ActivityInstrumentationTestCase2.java',
'android/test/ActivityInstrumentationTestCase.java',
@@ -56,13 +56,35 @@ test_runner_jar = jar('test_runner', [
# this was part of dalvik but got removed at some point
'dalvik/annotation/BrokenTest.java',
'dalvik/annotation/SideEffect.java',
],
build_by_default: false,
link_with: [hax_jar],
java_args: [
]
java_args = [
'-bootclasspath', bootclasspath,
'-source', '1.8', '-target', '1.8',
'-encoding', 'UTF-8',
'-Xlint:-deprecation', # we implement deprecated APIs
'-h', join_paths(dir_base, 'src/api-impl-jni/generated_headers')
])
]
ant = find_program('ant', required: false)
if ant.found()
test_runner_jar = custom_target('test_runner',
output: 'test_runner.jar',
command: [ant,
'-buildfile', files('build.xml'),
'-Dbasedir=' + builddir_base,
'-Dsrcdir=' + meson.current_source_dir(),
'-Dincludes=' + ','.join(srcs),
'-Djarfile=@OUTPUT@',
'-Dbuild=@PRIVATE_DIR@',
'-Djavaargs=' + ' '.join(java_args + ['-classpath', hax_jar.full_path()]),
],
depend_files: srcs + ['build.xml', hax_jar.full_path()],
)
else
test_runner_jar = jar('test_runner', srcs,
build_by_default: false,
link_with: [hax_jar],
java_args: java_args,)
endif