diff options
Diffstat (limited to 'Android.bp')
-rw-r--r-- | Android.bp | 432 |
1 files changed, 427 insertions, 5 deletions
diff --git a/Android.bp b/Android.bp index be9d763924..320f40263f 100644 --- a/Android.bp +++ b/Android.bp @@ -18,11 +18,10 @@ // Using Chrome header files directly could cause -Wunused-parameter errors, // and this is workaround. Please find the document in include_generator.py // for details. -gensrcs { - name: "libchrome-include", - cmd: "$(location libchrome_tools/include_generator.py) $(in) $(out)", - tool_files: ["libchrome_tools/include_generator.py"], - export_include_dirs: ["."], +// Note: gensrcs does not support exclude_srcs, so filegroup rule is +// introduced. +filegroup { + name: "libchrome-include-sources", srcs: [ "base/**/*.h", "build/**/*.h", @@ -32,6 +31,17 @@ gensrcs { "third_party/**/*.h", "ui/**/*.h", ], + exclude_srcs: [ + "base/android/**/*", + ], +} + +gensrcs { + name: "libchrome-include", + cmd: "$(location libchrome_tools/include_generator.py) $(in) $(out)", + tool_files: ["libchrome_tools/include_generator.py"], + export_include_dirs: ["."], + srcs: [":libchrome-include-sources"], output_extension: "h", } @@ -622,3 +632,415 @@ cc_test { }, }, } + +filegroup { + name: "libmojo_mojom_files", + srcs: [ + "ipc/ipc.mojom", + "mojo/common/file.mojom", + "mojo/common/file_path.mojom", + "mojo/common/string16.mojom", + "mojo/common/text_direction.mojom", + "mojo/common/time.mojom", + "mojo/common/unguessable_token.mojom", + "mojo/common/values.mojom", + "mojo/common/version.mojom", + "mojo/public/interfaces/bindings/interface_control_messages.mojom", + "mojo/public/interfaces/bindings/pipe_control_messages.mojom", + "ui/gfx/geometry/mojo/geometry.mojom", + "ui/gfx/range/mojo/range.mojom", + ], +} + +filegroup { + name: "libmojo_mojo_sources", + srcs: [ + "mojo/**/*.cc", + ], + exclude_srcs: [ + // Unused in Chrome. Looks like mistakenly checked in. + // TODO(hidehiko): Remove this after the file is removed in Chrome + // repository. http://crrev.com/c/644531 + "mojo/public/cpp/system/message.cc", + + // No WTF support. + "mojo/public/cpp/bindings/lib/string_traits_wtf.cc", + + // Exclude windows/mac/ios files. + "**/*_win.cc", + "mojo/edk/system/mach_port_relay.cc", + + // Exclude js binding related files. + "mojo/edk/js/**/*", + "mojo/public/js/**/*", + + // Exclude tests. + // Note that mojo/edk/embedder/test_embedder.cc needs to be included + // for Mojo support. cf) b/62071944. + "**/*_unittest.cc", + "**/*_unittests.cc", + "**/*_perftest.cc", + "mojo/android/javatests/**/*", + "mojo/edk/system/core_test_base.cc", + "mojo/edk/system/test_utils.cc", + "mojo/edk/test/**/*", + "mojo/public/c/system/tests/**/*", + "mojo/public/cpp/bindings/tests/**/*", + "mojo/public/cpp/system/tests/**/*", + "mojo/public/cpp/test_support/**/*", + "mojo/public/tests/**/*", + ], +} + +// Python in Chrome repository requires still Python 2. +python_defaults { + name: "libmojo_scripts", + version: { + py2: { + enabled: true, + }, + py3: { + enabled: false, + }, + }, +} + +python_binary_host { + name: "jni_generator", + main: "base/android/jni_generator/jni_generator.py", + srcs: [ + "base/android/jni_generator/jni_generator.py", + "build/**/*.py", + "third_party/catapult/devil/devil/**/*.py", + ], + defaults: ["libmojo_scripts"], +} + +python_binary_host { + name: "mojom_bindings_generator", + main: "mojo/public/tools/bindings/mojom_bindings_generator.py", + srcs: [ + "mojo/public/tools/bindings/**/*.py", + "build/**/*.py", + "third_party/catapult/devil/**/*.py", + "third_party/jinja2/**/*.py", + "third_party/markupsafe/**/*.py", + "third_party/ply/**/*.py", + ], + data: [ + "mojo/public/tools/bindings/generators/cpp_templates/*.tmpl", + "mojo/public/tools/bindings/generators/java_templates/*.tmpl", + "mojo/public/tools/bindings/generators/js_templates/*.tmpl", + ], + defaults: ["libmojo_scripts"], +} + +cc_prebuilt_binary { + name: "mojom_source_generator_sh", + srcs: ["libchrome_tools/mojom_source_generator.sh"], + host_supported: true, +} + +genrule { + name: "libmojo_mojom_headers", + cmd: "$(location mojom_source_generator_sh)" + + " --mojom_bindings_generator=$(location mojom_bindings_generator)" + + " --package=external/libchrome" + + " --output_dir=$(genDir)" + + " --bytecode_path=$(genDir)" + + " --typemap=$(location gen/mojo/common/common_custom_types__type_mappings)" + + " --generators=c++" + + " --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: [ + "ipc/ipc.mojom.h", + "ipc/ipc.mojom-shared.h", + "ipc/ipc.mojom-shared-internal.h", + "mojo/common/file.mojom.h", + "mojo/common/file.mojom-shared.h", + "mojo/common/file.mojom-shared-internal.h", + "mojo/common/file_path.mojom.h", + "mojo/common/file_path.mojom-shared.h", + "mojo/common/file_path.mojom-shared-internal.h", + "mojo/common/string16.mojom.h", + "mojo/common/string16.mojom-shared.h", + "mojo/common/string16.mojom-shared-internal.h", + "mojo/common/text_direction.mojom.h", + "mojo/common/text_direction.mojom-shared.h", + "mojo/common/text_direction.mojom-shared-internal.h", + "mojo/common/time.mojom.h", + "mojo/common/time.mojom-shared.h", + "mojo/common/time.mojom-shared-internal.h", + "mojo/common/unguessable_token.mojom.h", + "mojo/common/unguessable_token.mojom-shared.h", + "mojo/common/unguessable_token.mojom-shared-internal.h", + "mojo/common/values.mojom.h", + "mojo/common/values.mojom-shared.h", + "mojo/common/values.mojom-shared-internal.h", + "mojo/common/version.mojom.h", + "mojo/common/version.mojom-shared.h", + "mojo/common/version.mojom-shared-internal.h", + "mojo/public/interfaces/bindings/interface_control_messages.mojom.h", + "mojo/public/interfaces/bindings/interface_control_messages.mojom-shared.h", + "mojo/public/interfaces/bindings/interface_control_messages.mojom-shared-internal.h", + "mojo/public/interfaces/bindings/pipe_control_messages.mojom.h", + "mojo/public/interfaces/bindings/pipe_control_messages.mojom-shared.h", + "mojo/public/interfaces/bindings/pipe_control_messages.mojom-shared-internal.h", + "ui/gfx/geometry/mojo/geometry.mojom.h", + "ui/gfx/geometry/mojo/geometry.mojom-shared.h", + "ui/gfx/geometry/mojo/geometry.mojom-shared-internal.h", + "ui/gfx/range/mojo/range.mojom.h", + "ui/gfx/range/mojo/range.mojom-shared.h", + "ui/gfx/range/mojo/range.mojom-shared-internal.h", + ], +} + +genrule { + name: "libmojo_mojom_srcs", + cmd: "$(location mojom_source_generator_sh)" + + " --mojom_bindings_generator=$(location mojom_bindings_generator)" + + " --package=external/libchrome" + + " --output_dir=$(genDir)" + + " --bytecode_path=$(genDir)" + + " --typemap=$(location gen/mojo/common/common_custom_types__type_mappings)" + + " --generators=c++" + + " --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", + "libchrome_tools/mojom_source_generator.sh", + ], + + srcs: [":libmojo_mojom_files"], + + out: [ + "ipc/ipc.mojom.cc", + "ipc/ipc.mojom-shared.cc", + "mojo/common/file.mojom.cc", + "mojo/common/file.mojom-shared.cc", + "mojo/common/string16.mojom.cc", + "mojo/common/string16.mojom-shared.cc", + "mojo/common/text_direction.mojom.cc", + "mojo/common/text_direction.mojom-shared.cc", + "mojo/common/time.mojom.cc", + "mojo/common/time.mojom-shared.cc", + "mojo/common/unguessable_token.mojom.cc", + "mojo/common/unguessable_token.mojom-shared.cc", + "mojo/common/version.mojom.cc", + "mojo/common/version.mojom-shared.cc", + "mojo/public/interfaces/bindings/interface_control_messages.mojom.cc", + "mojo/public/interfaces/bindings/interface_control_messages.mojom-shared.cc", + "mojo/public/interfaces/bindings/pipe_control_messages.mojom.cc", + "mojo/public/interfaces/bindings/pipe_control_messages.mojom-shared.cc", + "ui/gfx/geometry/mojo/geometry.mojom.cc", + "ui/gfx/geometry/mojo/geometry.mojom-shared.cc", + "ui/gfx/range/mojo/range.mojom.cc", + "ui/gfx/range/mojo/range.mojom-shared.cc", + ], +} + +// TODO(hidehiko): Remove JNI for ContextUtils, after cleaning up the +// depended code. +genrule { + name: "libmojo_jni_headers", + cmd: "$(location libchrome_tools/jni_generator_helper.sh)" + + " --jni_generator=$(location jni_generator)" + + " --output_dir=$(genDir)/jni" + + " --includes=base/android/jni_generator/jni_generator_helper.h" + + " --ptr_type=long" + + " --native_exports_optional" + + " $(in)", + + tools: [ + "jni_generator", + ], + + tool_files: [ + "libchrome_tools/jni_generator_helper.sh", + ], + + srcs: [ + "base/android/java/src/org/chromium/base/BuildInfo.java", + "base/android/java/src/org/chromium/base/ContextUtils.java", + "mojo/android/system/src/org/chromium/mojo/system/impl/BaseRunLoop.java", + "mojo/android/system/src/org/chromium/mojo/system/impl/CoreImpl.java", + "mojo/android/system/src/org/chromium/mojo/system/impl/WatcherImpl.java", + ], + + out: [ + "jni/BuildInfo_jni.h", + "jni/ContextUtils_jni.h", + "jni/BaseRunLoop_jni.h", + "jni/CoreImpl_jni.h", + "jni/WatcherImpl_jni.h", + ], +} + +cc_library_shared { + name: "libmojo", + + generated_headers: [ + "libmojo_jni_headers", + "libmojo_mojom_headers", + ], + + generated_sources: [ + "libmojo_mojom_srcs", + ], + + export_generated_headers: [ + "libmojo_jni_headers", + "libmojo_mojom_headers", + ], + + srcs: [ + "base/android/build_info.cc", + "base/android/context_utils.cc", + "base/android/jni_android.cc", + "base/android/jni_string.cc", + "base/android/scoped_java_ref.cc", + "ipc/ipc_message.cc", + "ipc/ipc_message_attachment.cc", + "ipc/ipc_message_attachment_set.cc", + "ipc/ipc_message_utils.cc", + "ipc/ipc_mojo_handle_attachment.cc", + "ipc/ipc_mojo_message_helper.cc", + "ipc/ipc_mojo_param_traits.cc", + "ipc/ipc_platform_file_attachment_posix.cc", + ":libmojo_mojo_sources", + ], + + cflags: [ + "-Wall", + "-Werror", + "-Wno-unused-parameter", + "-Wno-missing-field-initializers", + "-DMOJO_EDK_LEGACY_PROTOCOL", + ], + + // We also pass NO_ASHMEM to make base::SharedMemory avoid using it and prefer + // the POSIX versions. + cppflags: [ + "-Wno-sign-promo", + "-Wno-non-virtual-dtor", + "-Wno-ignored-qualifiers", + "-Wno-extra", + "-DNO_ASHMEM", + ], + + shared_libs: [ + "libevent", + "liblog", + "libchrome", + "libchrome-crypto", + ], + + export_include_dirs: ["."], +} + +genrule { + name: "libmojo_mojom_java_srcs", + cmd: "$(location mojom_source_generator_sh)" + + " --mojom_bindings_generator=$(location mojom_bindings_generator)" + + " --package=external/libchrome" + + " --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", + ], +} + +java_library { + name: "android.mojo", + + srcs: [ + ":libmojo_mojom_java_srcs", + "base/android/java/src/**/*.java", + "mojo/android/system/src/**/*.java", + "mojo/public/java/system/src/**/*.java", + "mojo/public/java/bindings/src/**/*.java", + ], +} |