diff --git a/Android.bp b/Android.bp
index 6c04504..9ad961d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -61,22 +61,6 @@
 }
 
 cc_library_static {
-    name: "libmounts",
-
-    defaults: [
-        "recovery_defaults",
-    ],
-
-    srcs: [
-        "mounts.cpp",
-    ],
-
-    static_libs: [
-        "libbase",
-    ],
-}
-
-cc_library_static {
     name: "libverifier",
 
     defaults: [
diff --git a/Android.mk b/Android.mk
index eef4a02..f2fa6fb 100644
--- a/Android.mk
+++ b/Android.mk
@@ -162,7 +162,6 @@
     libsparse \
     libziparchive \
     libotautil \
-    libmounts \
     libminadbd \
     libasyncio \
     libfusesideload \
diff --git a/otautil/Android.bp b/otautil/Android.bp
index 958f98b..45d119c 100644
--- a/otautil/Android.bp
+++ b/otautil/Android.bp
@@ -21,6 +21,7 @@
         "SysUtil.cpp",
         "DirUtil.cpp",
         "ThermalUtil.cpp",
+        "mounts.cpp",
         "paths.cpp",
         "rangeset.cpp",
     ],
@@ -39,4 +40,12 @@
     export_include_dirs: [
         "include",
     ],
+
+    target: {
+        darwin: {
+            exclude_srcs: [
+                "mounts.cpp",
+            ],
+        },
+    },
 }
diff --git a/mounts.h b/otautil/include/otautil/mounts.h
similarity index 94%
rename from mounts.h
rename to otautil/include/otautil/mounts.h
index 0de1ebd..6786c8d 100644
--- a/mounts.h
+++ b/otautil/include/otautil/mounts.h
@@ -14,8 +14,7 @@
  * limitations under the License.
  */
 
-#ifndef MOUNTS_H_
-#define MOUNTS_H_
+#pragma once
 
 struct MountedVolume;
 
@@ -24,5 +23,3 @@
 MountedVolume* find_mounted_volume_by_mount_point(const char* mount_point);
 
 int unmount_mounted_volume(MountedVolume* volume);
-
-#endif
diff --git a/mounts.cpp b/otautil/mounts.cpp
similarity index 60%
rename from mounts.cpp
rename to otautil/mounts.cpp
index 76fa657..951311b 100644
--- a/mounts.cpp
+++ b/otautil/mounts.cpp
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "mounts.h"
+#include "otautil/mounts.h"
 
 #include <errno.h>
 #include <fcntl.h>
@@ -30,43 +30,43 @@
 #include <android-base/logging.h>
 
 struct MountedVolume {
-    std::string device;
-    std::string mount_point;
-    std::string filesystem;
-    std::string flags;
+  std::string device;
+  std::string mount_point;
+  std::string filesystem;
+  std::string flags;
 };
 
-std::vector<MountedVolume*> g_mounts_state;
+static std::vector<MountedVolume*> g_mounts_state;
 
 bool scan_mounted_volumes() {
-    for (size_t i = 0; i < g_mounts_state.size(); ++i) {
-        delete g_mounts_state[i];
-    }
-    g_mounts_state.clear();
+  for (size_t i = 0; i < g_mounts_state.size(); ++i) {
+    delete g_mounts_state[i];
+  }
+  g_mounts_state.clear();
 
-    // Open and read mount table entries.
-    FILE* fp = setmntent("/proc/mounts", "re");
-    if (fp == NULL) {
-        return false;
-    }
-    mntent* e;
-    while ((e = getmntent(fp)) != NULL) {
-        MountedVolume* v = new MountedVolume;
-        v->device = e->mnt_fsname;
-        v->mount_point = e->mnt_dir;
-        v->filesystem = e->mnt_type;
-        v->flags = e->mnt_opts;
-        g_mounts_state.push_back(v);
-    }
-    endmntent(fp);
-    return true;
+  // Open and read mount table entries.
+  FILE* fp = setmntent("/proc/mounts", "re");
+  if (fp == NULL) {
+    return false;
+  }
+  mntent* e;
+  while ((e = getmntent(fp)) != NULL) {
+    MountedVolume* v = new MountedVolume;
+    v->device = e->mnt_fsname;
+    v->mount_point = e->mnt_dir;
+    v->filesystem = e->mnt_type;
+    v->flags = e->mnt_opts;
+    g_mounts_state.push_back(v);
+  }
+  endmntent(fp);
+  return true;
 }
 
 MountedVolume* find_mounted_volume_by_mount_point(const char* mount_point) {
-    for (size_t i = 0; i < g_mounts_state.size(); ++i) {
-        if (g_mounts_state[i]->mount_point == mount_point) return g_mounts_state[i];
-    }
-    return nullptr;
+  for (size_t i = 0; i < g_mounts_state.size(); ++i) {
+    if (g_mounts_state[i]->mount_point == mount_point) return g_mounts_state[i];
+  }
+  return nullptr;
 }
 
 int unmount_mounted_volume(MountedVolume* volume) {
diff --git a/roots.cpp b/roots.cpp
index 8907bbd..26ebf1f 100644
--- a/roots.cpp
+++ b/roots.cpp
@@ -39,7 +39,7 @@
 #include <ext4_utils/wipe.h>
 #include <fs_mgr.h>
 
-#include "mounts.h"
+#include "otautil/mounts.h"
 
 static struct fstab* fstab = nullptr;
 
diff --git a/tests/Android.mk b/tests/Android.mk
index fd44978..538ae63 100644
--- a/tests/Android.mk
+++ b/tests/Android.mk
@@ -117,7 +117,6 @@
     libbootloader_message \
     libverifier \
     libotautil \
-    libmounts \
     libupdate_verifier \
     libdivsufsort \
     libdivsufsort64 \
diff --git a/updater/Android.mk b/updater/Android.mk
index 6f334ee..4762664 100644
--- a/updater/Android.mk
+++ b/updater/Android.mk
@@ -24,14 +24,13 @@
 
 updater_common_static_libraries := \
     libapplypatch \
-    libbspatch \
-    libedify \
-    libziparchive \
-    libotautil \
     libbootloader_message \
-    libutils \
-    libmounts \
+    libedify \
     libotafault \
+    libotautil \
+    libbspatch \
+    libziparchive \
+    libutils \
     libext4_utils \
     libfec \
     libfec_rs \
@@ -61,7 +60,6 @@
     blockimg.cpp
 
 LOCAL_C_INCLUDES := \
-    $(LOCAL_PATH)/.. \
     $(LOCAL_PATH)/include \
     external/e2fsprogs/misc
 
@@ -87,7 +85,6 @@
     updater.cpp
 
 LOCAL_C_INCLUDES := \
-    $(LOCAL_PATH)/.. \
     $(LOCAL_PATH)/include
 
 LOCAL_CFLAGS := \
diff --git a/updater/install.cpp b/updater/install.cpp
index 6732ab8..5623c33 100644
--- a/updater/install.cpp
+++ b/updater/install.cpp
@@ -57,10 +57,10 @@
 #include <ziparchive/zip_archive.h>
 
 #include "edify/expr.h"
-#include "mounts.h"
 #include "otafault/ota_io.h"
 #include "otautil/DirUtil.h"
 #include "otautil/error_code.h"
+#include "otautil/mounts.h"
 #include "otautil/print_sha1.h"
 #include "updater/updater.h"
 
