Hi. I am creating this guide because i did not find any particular functional guide with details.You must be running a 64 or 32 bit version of Ubuntu. Please note that i wont be going in the details on how to setup a build environment and sync sources as there are many guides for that.Step 1 :Install the required packagesStep 2 :Setup the build environment and sync the sources for the required CWM. CWM source comes bundled with the CyanogenMod source.Code:
CWM 5 - Gingerbread CWM 6 - Jellybean
Step 3 :Now we come to the actuall compiling part. Make sure you have synced the latest source using the "repo sync" command.Change directory to your source.Issue this command :Step 3.5 :Do this step if your device is not officially supported by CM10.Using terminal emulator on your device, issue the commandCode:
dump_image boot /sdcard/boot.img
This will dump the boot image to your sdcard. Transfer it to your home directory.To build Android from source for a new device, you need to set up a board config and its makefiles. This is generally a long and tedious process. Luckily, if you are only building recovery, it is a lot easier. From the root of your Android source directory (assuming you've run envsetup.sh), run the following (substituting names appropriately):Code:
build/tools/device/mkvendor.sh device_manufacturer_name device_name /your/path/to/the/boot.img
For example if you are having the Samsung Galaxy Ace device, the command will go as follows :Code:
build/tools/device/mkvendor.sh Samsung cooper ~/boot.img Please note that Cooper is the device name. Only use "~/boot.img" if you have the boot image in your home directory. Or else please specify the correct path.
You will receive the confirmation "Done!" if everything worked. The mkvendor.sh script will also have created the following directory in your Android source tree:manufacturer_name/device_nameStep 3.5 ends here.Step 4 :Now that you have the device config ready, proceed.Type the following code in your terminal in the source directory.This will setup the build environment for you to work.Now launch the command Code:
lunch full_device_name-eng
This will set the build system up to build for your new device. Open up the directory in a file explorer or IDE. You should have the following files: AndroidBoard.mk, AndroidProducts.mk, BoardConfig.mk, device_.mk, kernel, system.prop, recovery.fstab, and vendorsetup.sh.The two files you are interested in are recovery.fstab and kernel. The kernel in that directory is the stock one that was extracted from the boot.img that was provided earlier. For the most part, recovery.fstab will work on most devices that have mtd, emmc, or otherwise named partitions. But if not, recovery.fstab will need to be tweaked to support mounts and their mount points. For example, if your /sdcard mount is /dev/block/mmcblk1p1, you would need the following lines in your BoardConfig.mk/sdcard vfat /dev/block/mmcblk1p1 Once the recovery.fstab has been properly setup, you can proceed to the next step.Step 5 :Now we build the actual recovery.Code:
make -j4 recoveryimage
This command builds the recovery imageYou can use the commandCode:
make -j4 recoveryzip
to make a fakeflash recovery i.e. a temporary recovery to test out on the actual device.Your recovery can then be found at "your_source_directory/OUT/target/product/device/recovery.img" and the temporary fakeflash zip in the utilities folder at the same location.If everything works out well, you will have a working recovery.Once you have working builds, notify "koush", on Github and he can build official releases and add ROM Manager support!
------------------------------------------------------------------------------------------------------------------------------------------------------------------------Some tips :- If you want to compile CWM 6, sync the jellybean branch using the command :
Code:
repo init -u git://github.com/CyanogenMod/android.git -b jellybean repo sync
- If you want to compile CWM 6 on a 32 bit system, you need to sync THIS source too. Instructions are given in the readme.
- Run "make clobber" between builds if you change the BoardConfig.mk, or the change will not get picked up.
http://forum.xda-developers.com/showthread.php?t=1866545