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>

File diff suppressed because it is too large Load Diff

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,68 +1,90 @@
test_runner_jar = jar('test_runner', [
# test-runner
'android/test/ActivityInstrumentationTestCase2.java',
'android/test/ActivityInstrumentationTestCase.java',
'android/test/ActivityTestCase.java',
'android/test/ActivityUnitTestCase.java',
'android/test/AndroidTestRunner.java',
'android/test/ApplicationTestCase.java',
'android/test/AssertionFailedError.java',
'android/test/ClassPathPackageInfoSource.java',
'android/test/ComparisonFailure.java',
'android/test/InstrumentationTestRunner.java',
# 'android/test/IsolatedContext.java',
'android/test/LaunchPerformanceBase.java',
# 'android/test/LoaderTestCase.java',
'android/test/MoreAsserts.java',
'android/test/NoExecTestResult.java',
# 'android/test/ProviderTestCase2.java',
# 'android/test/ProviderTestCase.java',
'android/test/RenamingDelegatingContext.java',
# 'android/test/ServiceTestCase.java',
'android/test/SimpleCache.java',
# 'android/test/SingleLaunchActivityTestCase.java',
'android/test/SyncBaseInstrumentation.java',
'android/test/TestCaseUtil.java',
'android/test/TestPrinter.java',
'android/test/TestSuiteProvider.java',
# 'android/test/TouchUtils.java',
'android/test/ViewAsserts.java',
'android/test/suitebuilder/AssignableFrom.java',
'android/test/suitebuilder/SmokeTestSuiteBuilder.java',
'android/test/suitebuilder/TestGrouping.java',
'android/test/suitebuilder/TestMethod.java',
'android/test/suitebuilder/TestPredicates.java',
'android/test/suitebuilder/TestSuiteBuilder.java',
'android/test/suitebuilder/UnitTestSuiteBuilder.java',
# old stuff (needed for older CTS versions)
'android/test/suitebuilder/annotation/HasAnnotation.java',
'android/test/suitebuilder/annotation/HasClassAnnotation.java',
'android/test/suitebuilder/annotation/HasMethodAnnotation.java',
'com/android/internal/util/Predicates.java',
# test-base
'android/test/AndroidTestCase.java',
'android/test/FlakyTest.java',
'android/test/InstrumentationTestCase.java',
'android/test/InstrumentationTestSuite.java',
'android/test/PerformanceTestCase.java',
'android/test/RepetitiveTest.java',
'android/test/UiThreadTest.java',
'android/test/suitebuilder/annotation/LargeTest.java',
'android/test/suitebuilder/annotation/MediumTest.java',
'android/test/suitebuilder/annotation/SmallTest.java',
'android/test/suitebuilder/annotation/Smoke.java',
'android/test/suitebuilder/annotation/Suppress.java',
'com/android/internal/util/Predicate.java',
# 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: [
'-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')
])
srcs = [
# test-runner
'android/test/ActivityInstrumentationTestCase2.java',
'android/test/ActivityInstrumentationTestCase.java',
'android/test/ActivityTestCase.java',
'android/test/ActivityUnitTestCase.java',
'android/test/AndroidTestRunner.java',
'android/test/ApplicationTestCase.java',
'android/test/AssertionFailedError.java',
'android/test/ClassPathPackageInfoSource.java',
'android/test/ComparisonFailure.java',
'android/test/InstrumentationTestRunner.java',
# 'android/test/IsolatedContext.java',
'android/test/LaunchPerformanceBase.java',
# 'android/test/LoaderTestCase.java',
'android/test/MoreAsserts.java',
'android/test/NoExecTestResult.java',
# 'android/test/ProviderTestCase2.java',
# 'android/test/ProviderTestCase.java',
'android/test/RenamingDelegatingContext.java',
# 'android/test/ServiceTestCase.java',
'android/test/SimpleCache.java',
# 'android/test/SingleLaunchActivityTestCase.java',
'android/test/SyncBaseInstrumentation.java',
'android/test/TestCaseUtil.java',
'android/test/TestPrinter.java',
'android/test/TestSuiteProvider.java',
# 'android/test/TouchUtils.java',
'android/test/ViewAsserts.java',
'android/test/suitebuilder/AssignableFrom.java',
'android/test/suitebuilder/SmokeTestSuiteBuilder.java',
'android/test/suitebuilder/TestGrouping.java',
'android/test/suitebuilder/TestMethod.java',
'android/test/suitebuilder/TestPredicates.java',
'android/test/suitebuilder/TestSuiteBuilder.java',
'android/test/suitebuilder/UnitTestSuiteBuilder.java',
# old stuff (needed for older CTS versions)
'android/test/suitebuilder/annotation/HasAnnotation.java',
'android/test/suitebuilder/annotation/HasClassAnnotation.java',
'android/test/suitebuilder/annotation/HasMethodAnnotation.java',
'com/android/internal/util/Predicates.java',
# test-base
'android/test/AndroidTestCase.java',
'android/test/FlakyTest.java',
'android/test/InstrumentationTestCase.java',
'android/test/InstrumentationTestSuite.java',
'android/test/PerformanceTestCase.java',
'android/test/RepetitiveTest.java',
'android/test/UiThreadTest.java',
'android/test/suitebuilder/annotation/LargeTest.java',
'android/test/suitebuilder/annotation/MediumTest.java',
'android/test/suitebuilder/annotation/SmallTest.java',
'android/test/suitebuilder/annotation/Smoke.java',
'android/test/suitebuilder/annotation/Suppress.java',
'com/android/internal/util/Predicate.java',
# this was part of dalvik but got removed at some point
'dalvik/annotation/BrokenTest.java',
'dalvik/annotation/SideEffect.java',
]
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