--- /dev/null
+++ b/libs/utils/Makefile
@@ -0,0 +1,60 @@
+#!/bin/make
+
+CXX = g++
+
+SOURCES:= \
+	BasicHashtable.cpp \
+	BlobCache.cpp \
+	BufferedTextOutput.cpp \
+	Debug.cpp \
+	FileMap.cpp \
+	Flattenable.cpp \
+	LinearTransform.cpp \
+	Looper.cpp \
+	PropertyMap.cpp \
+	RefBase.cpp \
+	SharedBuffer.cpp \
+	Static.cpp \
+	StopWatch.cpp \
+	String8.cpp \
+	String16.cpp \
+	StringArray.cpp \
+	SystemClock.cpp \
+	TextOutput.cpp \
+	Threads.cpp \
+	Timers.cpp \
+	Tokenizer.cpp \
+	Unicode.cpp \
+	VectorImpl.cpp \
+	WorkQueue.cpp \
+	ZipFileCRO.cpp \
+	ZipFileRO.cpp \
+	ZipUtils.cpp \
+	misc.cpp
+
+OBJECTS = $(SOURCES:.cpp=.o)
+
+# Debian has gettid, but this build doesn't find it
+#         -DHAVE_GETTID \
+
+ALL_CXXFLAGS = -O2 -fPIC -I../../include -I/usr/include/android \
+	-include /usr/include/android/arch/linux-x86/AndroidConfig.h
+ALL_LDFLAGS = -fPIC -shared -rdynamic -Wl,-rpath=/usr/lib/android
+ALL_LIBS = -lrt -ldl -lz -lpthread -L/usr/lib/android -lcutils -llog
+
+CXXFLAGS := $(ALL_CXXFLAGS) $(CXXFLAGS)
+LDFLAGS := $(ALL_LDFLAGS) $(LDFLAGS)
+LIBS := $(ALL_LIBS) $(LIBS)
+
+LIBNAME = libutils
+SONAME = $(LIBNAME).so.0
+SOFILENAME = $(SONAME).21.0
+
+all: $(OBJECTS)
+	$(CXX) $(LDFLAGS) -Wl,-soname,$(SONAME) -o $(SOFILENAME) $(OBJECTS) $(LIBS)
+	ar rs $(LIBNAME).a $(OBJECTS)
+
+clean:
+	rm -f $(OBJECTS)
+	rm -f $(LIBNAME).so* $(LIBNAME).a
+
