[Samsung Epic 4G Touch] SweetwaterBurns:
See second post for changes.

My phone has a nicely corrupted bit of memory right where my data partition is supposed to be so I can't really test any changes on kernels at the moment. Once my replacement gets here, I have quite a few changes to test and then push. Hopefully others are haveing some good luck with there own kernels.

This first post is going to look a little rough until I take the time to pretty it up, but I figured I would get at least this up and let it evolve from there. I know I gloss over some stuff(what the hell is a defconfig, you ask?) but I will flesh this out over the next few days (Years, really. Damn contracts)

Project Goals:

Provide a standard base and scripts for building kernels for the E4GT.

Attempt to provide reasonable documentation of the build/debug/pray-for-success process so that those that wish to learn, can.

What is included in the current base:

Completely Stock EL29 Kernel

initramfs for Samsung based ROMs with ClockworkMod and root

Codesourcery 2009q3-68 toolchain

Base for creating a ClockworkMod flashable kernel

Build script to tie it all together

Getting started:

Install Ubuntu or Linux distro of your choice. This guide is written for Ubuntu as that seems to be the most common choice for Android Development.

Install required packages

Install Oracle Java JDK, setup the Android SDK, and install other required packages from terminal.

For 32-bit installs:

sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev

and 64-bit:

sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev ia32-libs lib32z1-dev lib32ncurses5-dev gcc-multilib g++-multilib

Download base

In terminal emulator, go to the directory you'd like to download to and type:

git clone git://github.com/SweetwaterBurns/xda-base.git

Pick a branch. Currently available are powersave, performance and master(all identical until things start moving forward a bit, I intend to keep master updated with the latest stock kernal) and select it with

git checkout powersaveorwhateverbranchnameyouactuallywantipromisetonotactuallymakeabranchthatisquitethisridiculousmaybe

Profit!

In a terminal emulator, change to the xda-base directory and type

./build.sh

and wait... congratulations you've just compiled your own kernel.

But wait there's more The build script will let you build with more then just the included source and toolchains. The basic format is ./build.sh kernel initramfs defconfig toolchain. All you have to do is copy the files into the appropriate directories and you're good to go.

So, if for example you wanted to build an EK02 kernel using Team Rogue's initramfs, the Linaro 11.12 toolchain and your perfect_defconfig, you would copy the source to xda-base/kernels/EK02, place the initramfs in xda-base/initramfs/rogue, and the toolchain to xda-base/toolchain/linaro. Place perfect_defconfig into EK02/arch/arm/configs/ and type the following command from the xda-base directory:

./build.sh EK02 rogue perfect linaro

The flashable zip is saved in xda-base using the defconfig, date and time in order to keep your files somewhat organized. I'm going to add kernel version to that in my next update, as well.

The base is essentially a snapshot of where we are at this stage of development and hopefully the community can help us improve it. Everything seems to be working, but if you come across any bugs/fixes, please share.

If you'd like you propose any changes, submit a request via git and I'll add them to the repo if it makes sense.

I'm typing a lot of this up from memory so please forgive any mistakes or omissions. If you find any let me know and I will update ASAP. If it seems confusing, let me know where clarification is needed. My goal is to figure this stuff out and help others while doing it. Any criticism will be taken constructively and I hope this helps spawn few more talented devs for the E4GT.