I know that there are actually LOTS of "How to port ROMS" in this forum now.. but I would like to share a certain source I found that is actually fool proof
Here it goes!
find a ROM that is designed for the same CPU type and the same phone manufacturer. Any stock Gingerbread, ICS, or CyanogenMod 7/9 ROM should work, but you’ll have to make sure your phone can handle the ROM – no ICS for an HTC Hero, for example. Also, your Port ROM's original Phone should have the same RESOLUTION with that of your phone's.
You will need:
**a compression program (WinZip or 7zip and etc)
**the ROM you want to port to your phone (let’s call it the "Port ROM")
**a ROM designed for your phone (let’s call it"Base ROM")
This guide may mention some files or directories that aren’t present in your particular ROM; don’t worry, just carry on.
On your PC, extract the .ZIP files containing the two ROMs, and navigate to /system/app in your extracted Port ROM and copy stk.apk, vpnservices.apk, camera.apk, and bluetooth.apk into a temporary directory somewhere else on your PC.
Now, delete the following folders from your Port ROM and replace them with the ones from your Base ROM: /data, /system/app, /system/framework, /system/fonts and /system/media.
From your Base ROM, copy /system/lib/libandroid_runtime.so to the system/lib/ directory of your Port ROM, overwriting the file.
Next up, move the .APKs you copied earlier back into the /system/app directory of your Port ROM.
Open up /system/lib in your Port ROM and copy all the files and folders. Paste them into the Base’s /system/lib directory, replacing all. Then go back to the Port ROM and delete the /system/lib folder, and replace it with the /system/lib folder from the Base ROM.
Next, navigate to the /system/etc/init.d folder in the Port ROM and do the same copy-from-Port, paste-to-Base, delete-from-Port, copy-from-Base, paste-to-Port shuffle as before.
Navigate to /system/etc/permissions and do that same copy-paste dance one more time.
open system/build.prop from both the port and the base ROM in Notepad++. Update the Base build.prop to match the values for “ro.build.description=” and “ro.build.fingerprint=” from your Port. Now save the Base build.prop, exit Notepad++, and copy the Base build.prop into the Port ROM, overwriting the Port build.prop.
In Notepad++, open \META-INF\com\google\android\updater-script from both your base and port ROMs. Edit the Port’s script to be like the Base’s updater-script: specifically, change, edit, or add the sections for permissions, ui_prints, asserts, run_programs, and installing the kernel. Don’t change any of the symlinks. In the Port script, make sure that the ‘format’ values are appropriate for your device (compare them to the Base script).
Finally, make sure that your kernel is specifically for your device.
Now, if you desire, you can update any apps you require, or add any tools like BusyBox or SuperSU.
And that’s it! Your base ROM is now ready to be zipped and installed on your device via Clockwork Mod!
Today marks the final chapter in the Android 4.4 KitKat update saga for the Moto X, a … more
XDA Developers was founded by developers, for developers. It is now a valuable resource for people who want to make the most of their mobile devices, from customizing the look and feel to adding new functionality. Are you a developer?