Merge "Build boot control HAL with Android.bp"
diff --git a/Android.bp b/Android.bp
index 22c90bd..97126f5 100644
--- a/Android.bp
+++ b/Android.bp
@@ -16,6 +16,11 @@
     name: "recovery_defaults",
 
     cflags: [
+        "-D_FILE_OFFSET_BITS=64",
+
+        // Must be the same as RECOVERY_API_VERSION.
+        "-DRECOVERY_API_VERSION=3",
+
         "-Wall",
         "-Werror",
     ],
@@ -24,6 +29,7 @@
 // Generic device that uses ScreenRecoveryUI.
 cc_library_static {
     name: "librecovery_ui_default",
+    recovery_available: true,
 
     defaults: [
         "recovery_defaults",
@@ -37,6 +43,7 @@
 // The default wear device that uses WearRecoveryUI.
 cc_library_static {
     name: "librecovery_ui_wear",
+    recovery_available: true,
 
     defaults: [
         "recovery_defaults",
@@ -50,6 +57,7 @@
 // The default VR device that uses VrRecoveryUI.
 cc_library_static {
     name: "librecovery_ui_vr",
+    recovery_available: true,
 
     defaults: [
         "recovery_defaults",
@@ -62,6 +70,7 @@
 
 cc_library_static {
     name: "libverifier",
+    recovery_available: true,
 
     defaults: [
         "recovery_defaults",
@@ -72,10 +81,13 @@
         "verifier.cpp",
     ],
 
-    static_libs: [
+    shared_libs: [
         "libbase",
         "libcrypto",
         "libcrypto_utils",
+    ],
+
+    static_libs: [
         "libotautil",
     ],
 }
diff --git a/Android.mk b/Android.mk
index 02a5d38..4470416 100644
--- a/Android.mk
+++ b/Android.mk
@@ -125,31 +125,32 @@
     libbatterymonitor
 
 librecovery_static_libraries := \
-    libbootloader_message \
     libfusesideload \
     libminadbd \
     libminui \
     libverifier \
     libotautil \
     $(health_hal_static_libraries) \
-    libasyncio \
-    libcrypto_utils \
-    libcrypto \
-    libext4_utils \
-    libfs_mgr \
-    libpng \
-    libsparse \
     libvintf_recovery \
     libvintf \
-    libhidl-gen-utils \
-    libtinyxml2 \
-    libziparchive \
+
+librecovery_shared_libraries := \
+    libasyncio \
     libbase \
-    libutils \
+    libbootloader_message \
+    libcrypto \
+    libcrypto_utils \
     libcutils \
+    libext4_utils \
+    libfs_mgr \
+    libhidl-gen-utils \
     liblog \
+    libpng \
     libselinux \
+    libtinyxml2 \
+    libutils \
     libz \
+    libziparchive \
 
 # librecovery (static library)
 # ===============================
@@ -173,6 +174,9 @@
 LOCAL_STATIC_LIBRARIES := \
     $(librecovery_static_libraries)
 
+LOCAL_SHARED_LIBRARIES := \
+    $(librecovery_shared_libraries)
+
 include $(BUILD_STATIC_LIBRARY)
 
 # recovery (static executable)
@@ -200,6 +204,7 @@
 
 LOCAL_SHARED_LIBRARIES := \
     librecovery_ui \
+    $(librecovery_shared_libraries)
 
 LOCAL_HAL_STATIC_LIBRARIES := libhealthd
 
@@ -219,7 +224,8 @@
 # e2fsck is needed for adb remount -R.
 ifeq ($(BOARD_EXT4_SHARE_DUP_BLOCKS),true)
 ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
-LOCAL_REQUIRED_MODULES += e2fsck_static
+LOCAL_REQUIRED_MODULES += \
+    e2fsck_static
 endif
 endif
 
@@ -235,14 +241,26 @@
 # TODO(b/110380063): Explicitly install the following shared libraries to recovery, until `recovery`
 # module is built with Soong (with `recovery: true` flag).
 LOCAL_REQUIRED_MODULES += \
+    libasyncio.recovery \
     libbase.recovery \
+    libbootloader_message.recovery \
+    libcrypto.recovery \
+    libcrypto_utils.recovery \
+    libcutils.recovery \
+    libext4_utils.recovery \
+    libfs_mgr.recovery \
+    libhidl-gen-utils.recovery \
     liblog.recovery \
     libpng.recovery \
+    libselinux.recovery \
+    libsparse.recovery \
+    libtinyxml2.recovery \
+    libutils.recovery \
     libz.recovery \
+    libziparchive.recovery \
 
 include $(BUILD_EXECUTABLE)
 
 include \
     $(LOCAL_PATH)/tests/Android.mk \
     $(LOCAL_PATH)/updater/Android.mk \
-    $(LOCAL_PATH)/updater_sample/Android.mk \
diff --git a/fuse_sideload/Android.bp b/fuse_sideload/Android.bp
index 76bc16d..b7f9c03 100644
--- a/fuse_sideload/Android.bp
+++ b/fuse_sideload/Android.bp
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-cc_library_static {
+cc_library {
     name: "libfusesideload",
 
     cflags: [
diff --git a/minui/Android.bp b/minui/Android.bp
index 31022e1..fff3a8e 100644
--- a/minui/Android.bp
+++ b/minui/Android.bp
@@ -14,6 +14,7 @@
 
 cc_library {
     name: "libminui",
+    recovery_available: true,
 
     defaults: [
         "recovery_defaults",
diff --git a/otautil/Android.bp b/otautil/Android.bp
index b058f7b..56c7c9e 100644
--- a/otautil/Android.bp
+++ b/otautil/Android.bp
@@ -16,6 +16,11 @@
     name: "libotautil",
 
     host_supported: true,
+    recovery_available: true,
+
+    defaults: [
+        "recovery_defaults",
+    ],
 
     // Minimal set of files to support host build.
     srcs: [
@@ -23,16 +28,10 @@
         "rangeset.cpp",
     ],
 
-    static_libs: [
+    shared_libs: [
         "libbase",
     ],
 
-    cflags: [
-        "-D_FILE_OFFSET_BITS=64",
-        "-Werror",
-        "-Wall",
-    ],
-
     export_include_dirs: [
         "include",
     ],
@@ -46,9 +45,9 @@
                 "thermalutil.cpp",
             ],
 
-            static_libs: [
-                "libselinux",
+            shared_libs: [
                 "libcutils",
+                "libselinux",
             ],
         },
     },
diff --git a/updater_sample/Android.bp b/updater_sample/Android.bp
new file mode 100644
index 0000000..0d209bb
--- /dev/null
+++ b/updater_sample/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_app {
+    name: "SystemUpdaterSample",
+    sdk_version: "system_current",
+    privileged: true,
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: [
+        "guava",
+    ],
+
+    optimize: {
+        // TODO(b/112462307): proguard_flags_files is not picked up by Soong.
+        // proguard_flags_files: [
+        //     "proguard.flags",
+        // ],
+        enabled: false,
+    },
+
+    resource_dirs: ["res"],
+}
diff --git a/updater_sample/Android.mk b/updater_sample/Android.mk
deleted file mode 100644
index cff5b0c..0000000
--- a/updater_sample/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := SystemUpdaterSample
-LOCAL_SDK_VERSION := system_current
-LOCAL_PRIVILEGED_MODULE := true
-
-LOCAL_PROGUARD_FLAG_FILES := proguard.flags
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES += guava
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-include $(BUILD_PACKAGE)
-
-# Use the following include to make our test apk.
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/updater_sample/README.md b/updater_sample/README.md
index 306e71e..69e8e24 100644
--- a/updater_sample/README.md
+++ b/updater_sample/README.md
@@ -227,7 +227,7 @@
 
 1. Build `mmma bootable/recovery/updater_sample/`
 2. Install app
-   `adb install $OUT/system/app/SystemUpdaterSample/SystemUpdaterSample.apk`
+   `adb install $OUT/system/priv-app/SystemUpdaterSample/SystemUpdaterSample.apk`
 3. Install tests
    `adb install $OUT/testcases/SystemUpdaterSampleTests/SystemUpdaterSampleTests.apk`
 4. Run tests
diff --git a/updater_sample/tests/Android.bp b/updater_sample/tests/Android.bp
new file mode 100644
index 0000000..c2783ef
--- /dev/null
+++ b/updater_sample/tests/Android.bp
@@ -0,0 +1,40 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+android_test {
+    name: "SystemUpdaterSampleTests",
+    sdk_version: "system_current",
+
+    libs: [
+        "android.test.base.stubs",
+        "android.test.runner.stubs",
+        "SystemUpdaterSample",
+    ],
+
+    static_libs: [
+        "android-support-test",
+        "mockito-target-minus-junit4",
+        "guava",
+    ],
+
+    instrumentation_for: "com.example.android.systemupdatersample",
+
+    optimize: {
+        enabled: false,
+    },
+
+    resource_dirs: ["res"],
+
+    srcs: ["src/**/*.java"],
+}
diff --git a/updater_sample/tests/Android.mk b/updater_sample/tests/Android.mk
deleted file mode 100644
index 4157604..0000000
--- a/updater_sample/tests/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-#
-# Copyright (C) 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_PACKAGE_NAME := SystemUpdaterSampleTests
-LOCAL_SDK_VERSION := system_current
-LOCAL_MODULE_TAGS := tests
-LOCAL_JAVA_LIBRARIES := \
-    android.test.base.stubs \
-    android.test.runner.stubs
-LOCAL_STATIC_JAVA_LIBRARIES := android-support-test \
-    mockito-target-minus-junit4 \
-    guava
-LOCAL_INSTRUMENTATION_FOR := SystemUpdaterSample
-LOCAL_PROGUARD_ENABLED := disabled
-
-LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-include $(BUILD_PACKAGE)