diff --git a/tools/dexpreopt/Config.mk b/tools/dexpreopt/Config.mk
new file mode 100644
index 0000000..be9876f
--- /dev/null
+++ b/tools/dexpreopt/Config.mk
@@ -0,0 +1,138 @@
+#
+# Copyright (C) 2008 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.
+#
+
+#
+# Included by config/Makefile.
+# Defines the pieces necessary for the dexpreopt process.
+#
+# inputs: INSTALLED_RAMDISK_TARGET, BUILT_SYSTEMIMAGE_UNOPT
+# outputs: BUILT_SYSTEMIMAGE, SYSTEMIMAGE_SOURCE_DIR
+#
+LOCAL_PATH := $(my-dir)
+
+# TODO: see if we can make the .odex files not be product-specific.
+# They can't be completely common, though, because their format
+# depends on the architecture of the target system; ARM and x86
+# would have different versions.
+intermediates := \
+	$(call intermediates-dir-for,PACKAGING,dexpreopt)
+dexpreopt_initrc := $(LOCAL_PATH)/etc/init.rc
+dexpreopt_system_dir := $(intermediates)/system
+built_afar := $(call intermediates-dir-for,EXECUTABLES,afar)/afar
+built_dowrapper := \
+	$(call intermediates-dir-for,EXECUTABLES,dexopt-wrapper)/dexopt-wrapper
+
+BUILT_DEXPREOPT_RAMDISK := $(intermediates)/ramdisk.img
+$(BUILT_DEXPREOPT_RAMDISK): intermediates := $(intermediates)
+$(BUILT_DEXPREOPT_RAMDISK): dexpreopt_root_out := $(intermediates)/root
+$(BUILT_DEXPREOPT_RAMDISK): dexpreopt_initrc := $(dexpreopt_initrc)
+$(BUILT_DEXPREOPT_RAMDISK): built_afar := $(built_afar)
+$(BUILT_DEXPREOPT_RAMDISK): built_dowrapper := $(built_dowrapper)
+$(BUILT_DEXPREOPT_RAMDISK): \
+	$(INSTALLED_RAMDISK_TARGET) \
+	$(dexpreopt_initrc) \
+	$(built_afar) \
+	$(built_dowrapper) \
+	| $(MKBOOTFS) $(ACP)
+$(BUILT_DEXPREOPT_RAMDISK):
+	@echo "Dexpreopt ramdisk: $@"
+	$(hide) rm -f $@
+	$(hide) rm -rf $(dexpreopt_root_out)
+	$(hide) mkdir -p $(dexpreopt_root_out)
+	$(hide) $(ACP) -rd $(TARGET_ROOT_OUT) $(intermediates)
+	$(hide) $(ACP) -f $(dexpreopt_initrc) $(dexpreopt_root_out)/
+	$(hide) $(ACP) $(built_afar) $(dexpreopt_root_out)/sbin/
+	$(hide) $(ACP) $(built_dowrapper) $(dexpreopt_root_out)/sbin/
+	$(MKBOOTFS) $(dexpreopt_root_out) | gzip > $@
+
+sign_dexpreopt := true
+ifdef sign_dexpreopt
+  # Such a huge hack.  We need to re-sign the .apks with the
+  # same certs that they were originally signed with.
+  dexpreopt_package_certs_file := $(intermediates)/package-certs
+  $(shell mkdir -p $(intermediates))
+  $(shell rm -f $(dexpreopt_package_certs_file))
+  $(foreach p,$(PACKAGES),\
+    $(shell echo "$(p) $(PACKAGES.$(p).CERTIFICATE) $(PACKAGES.$(p).PRIVATE_KEY)" >> $(dexpreopt_package_certs_file)))
+endif
+
+# Build an optimized image from the unoptimized image
+BUILT_DEXPREOPT_SYSTEMIMAGE := $(intermediates)/system.img
+$(BUILT_DEXPREOPT_SYSTEMIMAGE): $(BUILT_SYSTEMIMAGE_UNOPT)
+$(BUILT_DEXPREOPT_SYSTEMIMAGE): $(BUILT_DEXPREOPT_RAMDISK)
+$(BUILT_DEXPREOPT_SYSTEMIMAGE): | $(DEXPREOPT) $(ACP) $(ZIPALIGN)
+$(BUILT_DEXPREOPT_SYSTEMIMAGE): SYSTEM_DIR := $(dexpreopt_system_dir)
+$(BUILT_DEXPREOPT_SYSTEMIMAGE): DEXPREOPT_TMP := $(intermediates)/emutmp
+ifdef sign_dexpreopt
+$(BUILT_DEXPREOPT_SYSTEMIMAGE): | $(SIGNAPK_JAR)
+endif
+$(BUILT_DEXPREOPT_SYSTEMIMAGE):
+	@rm -f $@
+	@echo "dexpreopt: copy system to $(SYSTEM_DIR)"
+	@rm -rf $(SYSTEM_DIR)
+	@mkdir -p $(dir $(SYSTEM_DIR))
+	$(hide) $(ACP) -rd $(TARGET_OUT) $(SYSTEM_DIR)
+	@echo "dexpreopt: optimize dex files"
+	@rm -rf $(DEXPREOPT_TMP)
+	@mkdir -p $(DEXPREOPT_TMP)
+	$(hide) \
+	    PATH=$(HOST_OUT_EXECUTABLES):$$PATH \
+	    $(DEXPREOPT) \
+		    --kernel prebuilt/android-arm/kernel-qemu \
+		    --ramdisk $(BUILT_DEXPREOPT_RAMDISK) \
+		    --image $(BUILT_SYSTEMIMAGE_UNOPT) \
+		    --system $(PRODUCT_OUT) \
+		    --tmpdir $(DEXPREOPT_TMP) \
+		    --outsystemdir $(SYSTEM_DIR)
+ifdef sign_dexpreopt
+	@echo "dexpreopt: re-sign apk files"
+	$(hide) \
+	    export PATH=$(HOST_OUT_EXECUTABLES):$$PATH; \
+	    for apk in $(SYSTEM_DIR)/app/*.apk; do \
+		packageName=`basename $$apk`; \
+		packageName=`echo $$packageName | sed -e 's/.apk$$//'`; \
+		cert=`grep "^$$packageName " $(dexpreopt_package_certs_file) | \
+		      awk '{print $$2}'`; \
+		pkey=`grep "^$$packageName " $(dexpreopt_package_certs_file) | \
+		      awk '{print $$3}'`; \
+		if [ "$$cert" -a "$$pkey" ]; then \
+		    echo "dexpreopt: re-sign app/"$$packageName".apk"; \
+		    tmpApk=$$apk~; \
+		    rm -f $$tmpApk; \
+		    java -jar $(SIGNAPK_JAR) $$cert $$pkey $$apk $$tmpApk || \
+			  exit 11; \
+		    mv -f $$tmpApk $$apk; \
+		else \
+		    echo "dexpreopt: no keys for app/"$$packageName".apk"; \
+		    rm $(SYSTEM_DIR)/app/$$packageName.* && \
+			cp $(TARGET_OUT)/app/$$packageName.apk \
+			   $(SYSTEM_DIR)/app || exit 12; \
+		fi; \
+		tmpApk=$$apk~; \
+		rm -f $$tmpApk; \
+		$(ZIPALIGN) -f 4 $$apk $$tmpApk || exit 13; \
+		mv -f $$tmpApk $$apk; \
+	    done
+endif
+	@echo "Dexpreopt system image: $@"
+	$(hide) $(MKYAFFS2) -f $(SYSTEM_DIR) $@
+
+.PHONY: dexpreoptimage
+dexpreoptimage: $(BUILT_DEXPREOPT_SYSTEMIMAGE)
+
+# Tell our caller to use the optimized systemimage
+BUILT_SYSTEMIMAGE := $(BUILT_DEXPREOPT_SYSTEMIMAGE)
+SYSTEMIMAGE_SOURCE_DIR := $(dexpreopt_system_dir)
