aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRisan <risan@google.com>2017-12-13 15:27:58 +0900
committerRisan <risan@google.com>2018-01-19 16:07:24 +0900
commitd3b0199c8314c0eb7df422731833077efce9521d (patch)
tree976b7e8dcefe409e49855e1d7d02932c55502e02
parentedc20e2864aa41fe5b0a039e9f67443a83ce89b9 (diff)
downloadlibmojo-d3b0199c8314c0eb7df422731833077efce9521d.tar.gz
Convert libmojo Java from Android.mk to use Android.bp
Bug: 27569341 Test: mmma -j32 external/libmojo Change-Id: I71a9cf98c210ddcc2cce53945ff0ebd2a608aaf6
-rw-r--r--Android.bp92
-rwxr-xr-xsoong/mojom_source_generator.sh26
2 files changed, 113 insertions, 5 deletions
diff --git a/Android.bp b/Android.bp
index 0b715dc..c7b5282 100644
--- a/Android.bp
+++ b/Android.bp
@@ -62,7 +62,6 @@ cc_prebuilt_binary {
host_supported: true,
}
-// TODO(risan): Generate java out.
genrule {
name: "libmojo_mojom_headers",
cmd: "$(location mojom_source_generator_sh)" +
@@ -395,3 +394,94 @@ cc_library_shared {
export_include_dirs: ["."],
}
+
+genrule {
+ name: "libmojo_mojom_java_srcs",
+ cmd: "$(location mojom_source_generator_sh)" +
+ " --mojom_bindings_generator=$(location mojom_bindings_generator)" +
+ " --package=external/libmojo" +
+ " --output_dir=$(genDir)" +
+ " --bytecode_path=$(genDir)" +
+ " --typemap=$(location gen/mojo/common/common_custom_types__type_mappings)" +
+ " --generators=java" +
+ " --use_new_wrapper_types" +
+ " $(in)",
+
+ tools: [
+ "mojom_bindings_generator",
+ "mojom_source_generator_sh",
+ ],
+
+ tool_files: [
+ // This file was copied from out/Release in a Chrome checkout.
+ // TODO(lhchavez): Generate this file instead of hardcoding it.
+ "gen/mojo/common/common_custom_types__type_mappings",
+ ],
+
+ srcs: [":libmojo_mojom_files"],
+
+ out: [
+ "src/org/chromium/gfx/mojom/InsetsF.java",
+ "src/org/chromium/gfx/mojom/Insets.java",
+ "src/org/chromium/gfx/mojom/PointF.java",
+ "src/org/chromium/gfx/mojom/Point.java",
+ "src/org/chromium/gfx/mojom/RangeF.java",
+ "src/org/chromium/gfx/mojom/Range.java",
+ "src/org/chromium/gfx/mojom/RectF.java",
+ "src/org/chromium/gfx/mojom/Rect.java",
+ "src/org/chromium/gfx/mojom/SizeF.java",
+ "src/org/chromium/gfx/mojom/Size.java",
+ "src/org/chromium/gfx/mojom/Vector2dF.java",
+ "src/org/chromium/gfx/mojom/Vector2d.java",
+ "src/org/chromium/IPC/mojom/ChannelBootstrap_Internal.java",
+ "src/org/chromium/IPC/mojom/ChannelBootstrap.java",
+ "src/org/chromium/IPC/mojom/Channel_Internal.java",
+ "src/org/chromium/IPC/mojom/Channel.java",
+ "src/org/chromium/IPC/mojom/GenericInterface_Internal.java",
+ "src/org/chromium/IPC/mojom/GenericInterface.java",
+ "src/org/chromium/IPC/mojom/IpcConstants.java",
+ "src/org/chromium/IPC/mojom/SerializedHandle.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/FlushForTesting.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/InterfaceControlMessagesConstants.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/QueryVersion.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/QueryVersionResult.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/RequireVersion.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/RunInput.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/RunMessageParams.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/RunOrClosePipeInput.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/RunOrClosePipeMessageParams.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/RunOutput.java",
+ "src/org/chromium/mojo/bindings/interfacecontrol/RunResponseMessageParams.java",
+ "src/org/chromium/mojo/bindings/pipecontrol/DisconnectReason.java",
+ "src/org/chromium/mojo/bindings/pipecontrol/PeerAssociatedEndpointClosedEvent.java",
+ "src/org/chromium/mojo/bindings/pipecontrol/PipeControlMessagesConstants.java",
+ "src/org/chromium/mojo/bindings/pipecontrol/RunOrClosePipeInput.java",
+ "src/org/chromium/mojo/bindings/pipecontrol/RunOrClosePipeMessageParams.java",
+ "src/org/chromium/mojo/common/mojom/File.java",
+ "src/org/chromium/mojo/common/mojom/String16.java",
+ "src/org/chromium/mojo/common/mojom/TextDirection.java",
+ "src/org/chromium/mojo/common/mojom/TimeDelta.java",
+ "src/org/chromium/mojo/common/mojom/Time.java",
+ "src/org/chromium/mojo/common/mojom/TimeTicks.java",
+ "src/org/chromium/mojo/common/mojom/UnguessableToken.java",
+ "src/org/chromium/mojo/common/mojom/Version.java",
+ ],
+}
+
+// TODO(risan): Rename this after Android.mk is removed.
+java_library {
+ name: "android.mojo_bp",
+
+ srcs: [
+ ":libmojo_mojom_java_srcs",
+ "base/android/java/src/org/chromium/base/BuildInfo.java",
+ "base/android/java/src/org/chromium/base/ContextUtils.java",
+ "base/android/java/src/org/chromium/base/Log.java",
+ "base/android/java/src/org/chromium/base/PackageUtils.java",
+ "base/android/java/src/org/chromium/base/VisibleForTesting.java",
+ "mojo/android/system/src/**/*.java",
+ "mojo/public/java/system/src/**/*.java",
+ "mojo/public/java/bindings/src/**/*.java",
+ "base/android/java/src/org/chromium/base/annotations/**/*.java",
+ ],
+}
diff --git a/soong/mojom_source_generator.sh b/soong/mojom_source_generator.sh
index 24a34ee..66b684c 100755
--- a/soong/mojom_source_generator.sh
+++ b/soong/mojom_source_generator.sh
@@ -27,6 +27,7 @@ files=()
mojom_bindings_generator=""
package=""
output_dir=""
+generators=""
# Given a path to directory or file, return the absolute path.
get_abs_path() {
@@ -65,6 +66,9 @@ for arg in "$@"; do
bytecode_path="${arg#'--bytecode_path='}"
bytecode_path="$(get_abs_path ${bytecode_path})"
;;
+ --generators=*)
+ generators="${arg#'--generators='}"
+ ;;
--*)
args=("${args[@]}" "${arg}")
;;
@@ -78,9 +82,23 @@ cd "${package}"
"${mojom_bindings_generator}" precompile -o "${output_dir}"
for file in "${files[@]}"; do
+ # Java source generations depends on zipfile that assumes the output directory
+ # already exists. So, we need to create the directory beforehand.
+ rel_path="${file#`pwd`/}"
+ rel_dir="${rel_path%/*}"
+
+ mkdir -p "${output_dir}/${rel_dir}"
+
"${mojom_bindings_generator}" generate -o "${output_dir}" "${args[@]}" \
- --typemap="${typemap}" --bytecode_path="${bytecode_path}" "${file}"
- "${mojom_bindings_generator}" generate -o "${output_dir}" \
- --generate_non_variant_code "${args[@]}" --typemap="${typemap}" \
- --bytecode_path="${bytecode_path}" "${file}"
+ --typemap="${typemap}" --bytecode_path="${bytecode_path}" \
+ --generators=${generators} "${file}"
+ if [[ "${generators}" =~ .*c++.* ]] ; then
+ "${mojom_bindings_generator}" generate -o "${output_dir}" \
+ --generate_non_variant_code "${args[@]}" --typemap="${typemap}" \
+ --bytecode_path="${bytecode_path}" --generators=${generators} \
+ "${file}"
+ fi
+ if [[ "${generators}" =~ .*java.* ]] ; then
+ unzip -qo -d "${output_dir}"/src "${output_dir}/${rel_path}".srcjar
+ fi
done