diff --git a/Makefile.android b/Makefile.android
index f4caf40..350b72f 100644
--- a/Makefile.android
+++ b/Makefile.android
@@ -334,6 +334,12 @@
   endif
 endif
 
+# Build libext4_utils and related modules/
+include $(LOCAL_PATH)/distrib/zlib-1.2.8/sources.make
+include $(LOCAL_PATH)/distrib/libsparse/sources.mk
+include $(LOCAL_PATH)/distrib/libselinux/sources.mk
+include $(LOCAL_PATH)/distrib/ext4_utils/sources.mk
+
 include $(LOCAL_PATH)/Makefile.common
 
 ifeq ($(HOST_OS),windows)
@@ -392,11 +398,6 @@
 
 include $(LOCAL_PATH)/Makefile.tests
 
-# Build libsparse and related executables.
-include $(LOCAL_PATH)/distrib/libsparse/sources.mk
-include $(LOCAL_PATH)/distrib/libselinux/sources.mk
-include $(LOCAL_PATH)/distrib/ext4_utils/sources.mk
-
 ##############################################################################
 ##############################################################################
 ###
diff --git a/Makefile.common b/Makefile.common
index 5844245..3dec971 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -88,8 +88,6 @@
 ###########################################################
 # Zlib sources
 #
-ZLIB_DIR := distrib/zlib-1.2.8
-include $(LOCAL_PATH)/$(ZLIB_DIR)/sources.make
 EMULATOR_COMMON_CFLAGS += -I$(ZLIB_INCLUDES)
 
 ###########################################################
@@ -153,6 +151,7 @@
 
 common_LOCAL_CFLAGS += $(EMULATOR_COMMON_CFLAGS)
 
+common_LOCAL_CFLAGS += -I$(LIBEXT4_UTILS_INCLUDES)
 
 ## one for 32-bit
 $(call start-emulator-library, emulator-common)
diff --git a/Makefile.target b/Makefile.target
index 229190c..ae5e1cd 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -364,6 +364,9 @@
     emulator-libjpeg \
     emulator-libelff \
     emulator-common \
+    emulator-libext4_utils \
+    emulator-libsparse \
+    emulator-libselinux \
     emulator-zlib \
     $(SDL_STATIC_LIBRARIES)
 
@@ -401,6 +404,9 @@
     emulator64-libjpeg \
     emulator64-libelff \
     emulator64-common \
+    emulator64-libext4_utils \
+    emulator64-libsparse \
+    emulator64-libselinux \
     emulator64-zlib \
     $(SDL_STATIC_LIBRARIES_64)
 
diff --git a/Makefile.tests b/Makefile.tests
index 5ff4c56..04373e6 100644
--- a/Makefile.tests
+++ b/Makefile.tests
@@ -36,7 +36,13 @@
 LOCAL_LDLIBS += $(EMULATOR_GTEST_LDLIBS)
 LOCAL_SRC_FILES := $(EMULATOR_UNITTESTS_SOURCES)
 LOCAL_CFLAGS += -O0
-LOCAL_STATIC_LIBRARIES += emulator-common emulator-libgtest
+LOCAL_STATIC_LIBRARIES += \
+    emulator-common \
+    emulator-libext4_utils \
+    emulator-libsparse \
+    emulator-libselinux \
+    emulator-zlib \
+    emulator-libgtest
 $(call end-emulator-program)
 
 
@@ -45,5 +51,11 @@
 LOCAL_LDLIBS += $(EMULATOR_GTEST_LDLIBS)
 LOCAL_SRC_FILES := $(EMULATOR_UNITTESTS_SOURCES)
 LOCAL_CFLAGS += -O0
-LOCAL_STATIC_LIBRARIES += emulator64-common emulator64-libgtest
+LOCAL_STATIC_LIBRARIES += \
+    emulator64-common \
+    emulator64-libext4_utils \
+    emulator64-libsparse \
+    emulator64-libselinux \
+    emulator64-zlib \
+    emulator64-libgtest
 $(call end-emulator-program)
diff --git a/android/filesystems/ext4_utils.cpp b/android/filesystems/ext4_utils.cpp
index 5d60c57..2c10646 100644
--- a/android/filesystems/ext4_utils.cpp
+++ b/android/filesystems/ext4_utils.cpp
@@ -14,6 +14,8 @@
 #include "android/base/Log.h"
 #include "android/base/files/ScopedStdioFile.h"
 
+#include "make_ext4fs.h"
+
 #include <stdint.h>
 #include <string.h>
 
@@ -65,3 +67,12 @@
     EXT4_LOG << "Not an Ext4 partition image: " << path;
     return false;
 }
+
+int android_createEmptyExt4Image(const char *filePath,
+                                 uint64_t size,
+                                 const char *mountpoint) {
+    int ret = ::make_ext4fs(filePath, size, mountpoint, NULL);
+    if (ret < 0)
+        EXT4_ERROR << "Failed to create ext4 image at: " << filePath;
+    return ret;
+}
diff --git a/android/filesystems/ext4_utils.h b/android/filesystems/ext4_utils.h
index e8dad10..e6db2f3 100644
--- a/android/filesystems/ext4_utils.h
+++ b/android/filesystems/ext4_utils.h
@@ -15,9 +15,18 @@
 #include "android/utils/compiler.h"
 
 #include <stdbool.h>
+#include <inttypes.h>
 
 ANDROID_BEGIN_HEADER
 
+// Create a new empty EXT4 partition image file at |filePath|
+// of |size| bytes. |mountPoint| is the name of the corresponding
+// mount point, e.g. 'cache' for the cache partition.
+// Returns 0 on success, or -errno on failure.
+int android_createEmptyExt4Image(const char *filePath,
+                                 uint64_t size,
+                                 const char *mountpoint);
+
 // Returns true iff the file at |filePath| is an actual EXT4 partition image.
 bool android_pathIsExt4PartitionImage(const char* filePath);
 
diff --git a/android/filesystems/ext4_utils_unittest.cpp b/android/filesystems/ext4_utils_unittest.cpp
index 94c6e57..646c93d 100644
--- a/android/filesystems/ext4_utils_unittest.cpp
+++ b/android/filesystems/ext4_utils_unittest.cpp
@@ -191,6 +191,13 @@
         return mTempFilePath.c_str();
     }
 
+    // Create the path of a temporary file, but do not create or
+    // populate it. The file is removed in the destructor.
+    const char* createTempPath() {
+        mTempFilePath = createTempFilePath();
+        return mTempFilePath.c_str();
+    }
+
     std::string mTempFilePath;
     char mImage[kExt4SystemImageSize * 2U];
 };
@@ -222,3 +229,11 @@
     const char* path = createTempFile(sizeof mImage);
     EXPECT_FALSE(android_pathIsExt4PartitionImage(path));
 }
+
+TEST_F(Ext4UtilsTest, android_createEmptyExt4Partition) {
+    const char* tempPath = createTempPath();
+    uint64_t kSize = 32 * 1024 * 1024;
+    int ret = android_createEmptyExt4Image(tempPath, kSize, "cache");
+    EXPECT_EQ(0, ret);
+    EXPECT_TRUE(android_pathIsExt4PartitionImage(tempPath));
+}
