[GUIDE][Step-by-Step] Build ROM from source

What is your favorite custom ROM?

  • CyanogenMod

    Votes: 507 49.0%
  • AOKP

    Votes: 45 4.4%
  • Paranoid Android

    Votes: 137 13.2%
  • PAC

    Votes: 64 6.2%
  • Omni

    Votes: 49 4.7%
  • Other

    Votes: 232 22.4%

  • Total voters
    1,034
Search This thread

cdub50

Senior Member
Jul 21, 2007
467
204
would the files need to be placed in device/lge/gee-common/wifi? I am just making an educated guess.
 

cdub50

Senior Member
Jul 21, 2007
467
204
CM 10.1 build error

Hey guys,


Export includes file: frameworks/compile/llvm-ndk-cc/Android.mk -- /home/cdub/CM10.1/out/host/linux-x86/obj/EXECUTABLES/llvm-ndk-cc_intermediates/export_includes
host Executable: llvm-ndk-cc (/home/cdub/CM10.1/out/host/linux-x86/obj/EXECUTABLES/llvm-ndk-cc_intermediates/llvm-ndk-cc)
collect2: ld returned 1 exit status
make: *** [/home/cdub/CM10.1/out/host/linux-x86/obj/EXECUTABLES/llvm-ndk-cc_intermediates/llvm-ndk-cc] Error 1

EDIT:

Ok figured out the error above, but I am running into a different issue now below.

make: *** [/home/cdub/CM10.1/out/target/common/obj/JAVA_LIBRARIES/core_intermediates/noproguard.classes-with-local.dex] Killed
make: *** Waiting for unfinished jobs....

Edit: figured out this issue as well. Turns out it was due to not enough memory allocated to my build VM.

Cdub
 
Last edited:

Haze028

Senior Member
Jun 29, 2011
435
615
I've figured out how to sync everything I need. Now I'm getting this error when trying to build:

http://pastebin.com/ET6RgLKk

I'm hoping someone can help.

I've gotten that error before. I got past it by commenting out the two(I believe) references to midq it complains about. This is hack job though, since i haven't a clue what does but will build and operate fine, from my findings, commented out.

go to the transport.c file it talks about to the line it states and comment out the midq line it doesn't like. I can't remember the other file i believe also needs to be commented out, but if you try to build again after commenting transport.c line it will tell ya in the error.

Sorry i don't have a cleaner solution for you but, as i've stated, i'm not a programmer and most of the code goes over my head as well. That should get you building again. Hope it helps.
 
  • Like
Reactions: arcardinal

houstonn

Senior Member
Sep 18, 2012
1,784
9,695
Ontario
I've gotten that error before. I got past it by commenting out the two(I believe) references to midq it complains about. This is hack job though, since i haven't a clue what does but will build and operate fine, from my findings, commented out.

go to the transport.c file it talks about to the line it states and comment out the midq line it doesn't like. I can't remember the other file i believe also needs to be commented out, but if you try to build again after commenting transport.c line it will tell ya in the error.

Sorry i don't have a cleaner solution for you but, as i've stated, i'm not a programmer and most of the code goes over my head as well. That should get you building again. Hope it helps.

If you're compiling with 4.6 it should work fine. But if you use 4.7 then you need to use the wall flag or fix the files so that 4.7 can build

EDIT: by using the wall flag in the Makefile it will elimate those waybe uninitialized errors in all the files that will come up as those errors or like I said you can manually patch each files up :p digging around will get the commits that one needs.. sorry to quote yours Haze I meant to do a double quote but driving and using tapatalk doesn't yield great results lol

Sent from my Optimus G using Tapatalk 2
 
Last edited:

arcardinal

Senior Member
Jul 25, 2010
622
1,667
Twin Cities
I've gotten that error before. I got past it by commenting out the two(I believe) references to midq it complains about. This is hack job though, since i haven't a clue what does but will build and operate fine, from my findings, commented out.

go to the transport.c file it talks about to the line it states and comment out the midq line it doesn't like. I can't remember the other file i believe also needs to be commented out, but if you try to build again after commenting transport.c line it will tell ya in the error.

Sorry i don't have a cleaner solution for you but, as i've stated, i'm not a programmer and most of the code goes over my head as well. That should get you building again. Hope it helps.

If you're compiling with 4.6 it should work fine. But if you use 4.7 then you need to use the wall flag or fix the files so that 4.7 can build

EDIT: by using the wall flag in the Makefile it will elimate those waybe uninitialized errors in all the files that will come up as those errors or like I said you can manually patch each files up :p digging around will get the commits that one needs.. sorry to quote yours Haze I meant to do a double quote but driving and using tapatalk doesn't yield great results lol

Sent from my Optimus G using Tapatalk 2

Thanks for the replies. When I downloaded the Liquid Smooth source it includes both 4.6 and 4.7, but defaults to building with 4.7. I'll try to edit the necessary files.
 

tuxattack80

Senior Member
Nov 29, 2012
1,204
701
Covington Kentucky
temple run crash

I just built beanstalk ROM using team lgog source for att geeb along with the newest prima driver and the only bug that I've encountered (other than usb tethering) is temple run crashing. I know there is a commit that fixes the issue but I'm unable to find it. If anyone can point me in the right direction it would be appreciated.
 

houstonn

Senior Member
Sep 18, 2012
1,784
9,695
Ontario
I just built beanstalk ROM using team lgog source for att geeb along with the newest prima driver and the only bug that I've encountered (other than usb tethering) is temple run crashing. I know there is a commit that fixes the issue but I'm unable to find it. If anyone can point me in the right direction it would be appreciated.

if you have this commit in your frameworks/base http://code.google.com/p/android/issues/detail?id=55873 you want to revert it.
 
  • Like
Reactions: tuxattack80

tuxattack80

Senior Member
Nov 29, 2012
1,204
701
Covington Kentucky
thanks for the share :good:

quick question? should I revert const from all entries?

believe I have it figured out, had to compare some other frameworks/base/native/android files from different roms on git. Building now so I guess we shall see the outcome. Thanks again houst0nn for the point in the right direction. Definitely new at all of this but having a great time learning it, now if only I could get beyond loops that write out "Hello World" then I may get somewhere lol.
 
Last edited:

arcardinal

Senior Member
Jul 25, 2010
622
1,667
Twin Cities
I have successfully built Liquid Smooth using Houst0nn's Rootbox kernel. When I flash the zip in the output folder I do not have any service (there are no APN's and I cannot save one) and no wifi. I am wondering what files I am missing?

Edit: I was able to compile with Smoocha and have WiFi and cell service working now. The only thing not working is the soft key backlights. The WiFi modules and lights module do not seem to be generated when the kernel is compiled. I'm hoping somebody can tell me what I'm doing wrong.
 
Last edited:

cdub50

Senior Member
Jul 21, 2007
467
204
I am running into the error below when trying to build BeanStalk rom. Does anyone have any ideas on how to fix. I posted this in the ATT LG Optimus G forum as well, but havent gotten any feedback.

Proguard: /root/android/beanstalk/out/target/common/obj/APPS/Calendar_intermediates/proguard.classes.jar
ProGuard, version 4.4
Reading program jar [/root/android/beanstalk/out/target/common/obj/APPS/Calendar_intermediates/classes.jar]
Reading library jar [/root/android/beanstalk/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar]
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.CountryDetector
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.CountryDetector
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.Country
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced method 'java.lang.String formatNumberToE164(java.lang.String,java.lang.String)' in class android.telephony.PhoneNumberUtils
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.Country
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.CountryDetector
Note: android.support.v4.text.ICUCompatIcs: can't find dynamically referenced class libcore.icu.ICU
Note: com.android.timezonepicker.TimeZoneInfo accesses a declared field 'mTransitions' dynamically
Maybe this is program field 'com.android.timezonepicker.TimeZoneInfo { int[] mTransitions; }'
Note: android.support.v4.text.ICUCompatIcs accesses a method 'getScript(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String getScript(java.lang.String); }'
Note: android.support.v4.text.ICUCompatIcs accesses a method 'addLikelySubtags(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Note: there were 1 unresolved dynamic references to classes or interfaces.
You should check if you need to specify additional program jars.
Note: there were 3 accesses to class members by means of introspection.
You should consider explicitly keeping the mentioned class members
(using '-keep' or '-keepclassmembers').
Warning: there were 5 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars'),
or perhaps the '-dontskipnonpubliclibraryclasses' option.
Warning: there were 1 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile them and try again.
Alternatively, you may have to specify the options
'-dontskipnonpubliclibraryclasses' and/or
'-dontskipnonpubliclibraryclassmembers'.
Error: Please correct the above warnings first.
make: *** [/root/android/beanstalk/out/target/common/obj/APPS/Calendar_intermediates/proguard.classes.jar] Error 1
 

chillybean

Senior Member
I am running into the error below when trying to build BeanStalk rom. Does anyone have any ideas on how to fix. I posted this in the ATT LG Optimus G forum as well, but havent gotten any feedback.

Proguard: /root/android/beanstalk/out/target/common/obj/APPS/Calendar_intermediates/proguard.classes.jar
ProGuard, version 4.4
Reading program jar [/root/android/beanstalk/out/target/common/obj/APPS/Calendar_intermediates/classes.jar]
Reading library jar [/root/android/beanstalk/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates/classes.jar]
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.CountryDetector
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.CountryDetector
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.Country
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced method 'java.lang.String formatNumberToE164(java.lang.String,java.lang.String)' in class android.telephony.PhoneNumberUtils
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.Country
Warning: com.android.ex.chips.RecipientAlternatesAdapter: can't find referenced class android.location.CountryDetector
Note: android.support.v4.text.ICUCompatIcs: can't find dynamically referenced class libcore.icu.ICU
Note: com.android.timezonepicker.TimeZoneInfo accesses a declared field 'mTransitions' dynamically
Maybe this is program field 'com.android.timezonepicker.TimeZoneInfo { int[] mTransitions; }'
Note: android.support.v4.text.ICUCompatIcs accesses a method 'getScript(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String getScript(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String getScript(java.lang.String); }'
Note: android.support.v4.text.ICUCompatIcs accesses a method 'addLikelySubtags(java.lang.String)' dynamically
Maybe this is program method 'android.support.v4.text.ICUCompat { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImpl { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplBase { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompat$ICUCompatImplIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Maybe this is program method 'android.support.v4.text.ICUCompatIcs { java.lang.String addLikelySubtags(java.lang.String); }'
Note: there were 1 unresolved dynamic references to classes or interfaces.
You should check if you need to specify additional program jars.
Note: there were 3 accesses to class members by means of introspection.
You should consider explicitly keeping the mentioned class members
(using '-keep' or '-keepclassmembers').
Warning: there were 5 unresolved references to classes or interfaces.
You may need to specify additional library jars (using '-libraryjars'),
or perhaps the '-dontskipnonpubliclibraryclasses' option.
Warning: there were 1 unresolved references to program class members.
Your input classes appear to be inconsistent.
You may need to recompile them and try again.
Alternatively, you may have to specify the options
'-dontskipnonpubliclibraryclasses' and/or
'-dontskipnonpubliclibraryclassmembers'.
Error: Please correct the above warnings first.
make: *** [/root/android/beanstalk/out/target/common/obj/APPS/Calendar_intermediates/proguard.classes.jar] Error 1
cherry pick these

http://review.cyanogenmod.org/49690 and http://review.cyanogenmod.org/49691
 
  • Like
Reactions: cdub50

cdub50

Senior Member
Jul 21, 2007
467
204
I was able to build after changing the make files Thanks chillybean. I have the text output of the build link below. The problem is the rom doesn't boot I get past the google logo, but then screen just flickers. I was trying to use linaro 4.8.2 gcc to build with and dvhexer's sources for device, vendor, and kernel.

[Got it figured out]
 
Last edited:

core720

Senior Member
Feb 6, 2012
2,343
2,502
I try to delete and start over

Enviado desde mi LG-E975 usando Tapatalk 4
 

Top Liked Posts

  • There are no posts matching your filters.
  • 111
    I put this tutorial together in an attempt to create the most complete and easy to follow guide for building a ROM from source. Including steps for adding apps to your build, changing toolchains and more... The entire guide uses a single Linux terminal window from start to finish in an attempt to keep everything as user friendly as possible. Please feel free to PM me suggestions on where changes need be made.

    If you find this guide helpful please press the Thanks button on my posts and rate the thread a 5.​

    Prerequisites
    1. This guide is for Ubuntu 12+ based machine, I run Linux Mint 15. Follow links at end of OP for alternate directions
    Windows Users: Setup Ubuntu in Virtualbox Instructions

    2. You need to know the location for your device, vendor, and kernel repos. This can be found fairly easily in the forum for your phone. Also take note of your phones codename.
    For example the Optimus G is the gee and its repos can be found here https://github.com/TeamPlaceholder

    Note*All terminal commands will be in Code boxes*

    Part 1 - Setting Up The Build Environment

    Install Java JDK
    Code:
    sudo add-apt-repository ppa:webupd8team/java
    Code:
    sudo apt-get update
    Code:
    sudo apt-get install oracle-java6-installer

    Installing required packages
    Code:
    sudo apt-get install git gnupg flex bison gperf build-essential \
      zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
      libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
      libgl1-mesa-dev g++-multilib mingw32 tofrodos \
      python-markdown libxml2-utils xsltproc zlib1g-dev:i386
    Code:
    sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

    Set-up ccache This Is Optional
    Code:
    nano ~/.bashrc
    Add these two lines
    export USE_CCACHE=1
    export CCACHE_DIR=<path-to-your-cache-directory>
    Save and exit by pressing ctrl+x, selecting Y then enter.

    Install ADB & Fastboot This is optional, as you may already have them working. If not, they're a good thing to have.
    Code:
    sudo add-apt-repository ppa:nilarimogard/webupd8
    Code:
    sudo apt-get update
    Code:
    sudo apt-get install android-tools-adb android-tools-fastboot

    Setup Repo
    Code:
    mkdir ~/bin
    Code:
    PATH=~/bin:$PATH
    Code:
    curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
    Code:
    chmod a+x ~/bin/repo

    Create working directory
    Code:
    mkdir [I][B]working-dir[/B][/I]
    (Replace working-dir with whatever you'd like to call it, ie. aokp)
    Code:
    cd working-dir

    Part 2 - Get Source
    ROM Source
    Choose which custom rom you are going to build and initialize the repo for it
    Code:
    repo init -u [I][B]chosen-manifest[/B][/I]
    (Replace chosen-manifest appropriately from the list below)
    AOKP: https://github.com/AOKP/platform_manifest.git -b Branch
    Cyanogenmod: https://github.com/CyanogenMod/android.git -b Branch
    CarbonDev: https://github.com/CarbonDev/android.git -b Branch
    Liquid Smooth: https://github.com/LiquidSmooth/android.git -b Branch
    Replace Branch with appropriate branch from github repo ie cm-10.2 or jb3
    If unsure which branch click the link above to locate appropriate branch

    Device Source
    Go HERE and follow instructions on obtaining your device specific repos.

    Sync the repo
    Code:
    repo sync
    This will take a while as it downloads all the required source
    Part 3 - Preparing Source
    Before you're ready to build your source needs to be configured to include your device. This preparation varies slightly for different custom Roms.
    Go HERE and follow instructions for your ROM choice

    Part 4 - Edit Source​
    This Is Optional​
    This is where you can make edits to the source before building to suit your needs.
    Go HERE and follow the instructions to tweak source

    Part 5 - Building ROM
    Code:
    . build/envsetup.sh
    Code:
    lunch
    Locate your device on the list and enter appropriate number
    Code:
    make -j[B][I]# [/I][/B]otapackage
    Replace # with the number of cores in your system (Is the number of jobs that will be done at once, more cores means more jobs)
    Build Errors

    This can be hard, especially if you're new to programming languages and building. Meet Google :p your new best friend.
    Here is a basic overview to get you started, and if no more at least googling in the right direction.

    Finished
    When it's done you're rom will be in working-dir/out/target/product/codename/

    Enjoy.

    I used these sites while making this guide
    http://source.android.com/source/initializing.html
    http://www.webupd8.org/2012/11/oracle-sun-java-6-installer-available.html
    http://www.webupd8.org/2012/08/install-adb-and-fastboot-android-tools.html
    57
    Device Source
    As stated in the prerequisites you will need a device specific Device repo, Vendor repo, and Kernel repo. You can find links to them in the threads for your devices. Also take note of your device codename ie Nexus 4 is mako, Optimus G is gee.

    There are two options for adding in device specific source, local manifest and git clone.
    Note: The local path for your phone's repos should be device/manufacturer/codename, vendor/manufacturer/codename, kernel/manufacturer/codename regardless of method chosen.

    Git Clone
    Git clone is a one time download of a specific repo to the directory indicated and is not affected when a repo sync is run. This is probably the better choice if you make edits to the device source as they won't be over written or cause conflicts when syncing.
    This method is used AFTER the inital rom source sync. Preform a repo sync before cloning repos
    Code:
    git clone [B][COLOR=DarkOrange]repo[/COLOR][/B] -b [B][COLOR=Red]branch[/COLOR][/B] [B][COLOR=Lime]destination-path[/COLOR][/B]
    here is and example for the vendor repo for the E973 from TeamPlaceHolder

    Local Manifest
    Local manifest syncs the device repos each time a repo sync is run. This is probably the better choice if you don't make edits and rely on the repo's maintainer for changes. Be wary making edits locally to the repos you list as a repo sync may overwrite your changes.
    This method is used BEFORE the initial rom sync. This gets your device source during the first repo sync
    Code:
    mkdir .repo/local_manifests
    Code:
    touch .repo/local_manifests/local_manifest.xml
    Code:
    nano .repo/local_manifests/local_manifest.xml

    Add these lines:
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
    <remote name="name-for-remote" fetch="remote-url" />
    <project path="destination-folder-path" name="repo-location" remote="name-for-remote" revision="branch" />
    </manifest>
    name-for-remote - Any name you want to give to identify the url where your repos are stored
    remote-url - The url for the remote location your repos are stored
    destination-folder-path - Where do you want this repo stored locally
    repo-location - Where on the remote url is your repo stored
    branch - The branch of the remote repo you are using
    **You will need a project line for each repo you wish to add to the source. **

    Here is an example for E973 using TeamPlaceHolder repos, adding all device/vendor/kernel repos.
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>

    <remote name="gh"
    fetch="git://github.com/" />

    <project path="kernel/lge/gee" name="TeamPlaceholder/android_kernel_lge_gee" remote="gh" revision="cm-10.2-update" />
    <project path="device/lge/geeb" name="TeamPlaceholder/android_device_lge_geeb" remote="gh" revision="cm-10.2" />
    <project path="device/lge/gee-common" name="TeamPlaceholder/android_device_lge_gee-common" remote="gh" revision="cm-10.2" />
    <project path="vendor/lge/gee" name="TeamPlaceholder/proprietary_vendor_lge_gee" remote="gh" revision="cm-10.2" />

    </manifest>
    30
    Preparing Source

    Preparing Source
    ROM specific setup instructions prior to building. All source should be downloaded already.
    All ROM setup is fairly similar,
    1. You must add your device to the ROM's vendor repo(vendor/cm or vendor/aokp) This process is slightly different per rom. Look at how other devices are added in the vendor repo and emulate those.
    2. A ROM specific makefile, again look at how other devices are added.
    3. If building AOSP based ROMs, a pre-built kernel is generally required. Look here for instructions on how to compile a kernel separately.

    Here are examples of how to set up AOKP or Carbon to build. Device used in example is Optimus G.
    Manufacturer and codename MUST be updated to reflect your device.
    AOKP
    Code:
    nano vendor/aokp/vendorsetup.sh
    Add this line
    add_lunch_combo aokp_geeb-userdebug
    Save and exit by pressing ctrl+x, selecting Y then enter.
    Code:
    touch vendor/aokp/products/geeb.mk
    Code:
    nano vendor/aokp/products/geeb.mk
    Add these lines
    If building for CDMA network change gsm.mk to cdma.mk
    # Inherit AOSP device configuration for geeb
    $(call inherit-product, device/lge/geeb/full_geeb.mk)

    # Inherit AOKP common bits
    $(call inherit-product, vendor/aokp/configs/common.mk)

    # Inherit GSM common stuff
    $(call inherit-product, vendor/aokp/configs/gsm.mk)

    # Setup device specific product configuration
    PRODUCT_NAME := aokp_geeb
    PRODUCT_BRAND := google
    PRODUCT_DEVICE := geeb
    PRODUCT_MODEL := Optimus G
    PRODUCT_MANUFACTURER := LGE
    Save and exit by pressing ctrl+x, selecting Y then enter.
    Code:
    nano vendor/aokp/products/AndroidProducts.mk
    Add this line
    $(LOCAL_DIR)/geeb.mk \
    Save and exit by pressing ctrl+x, selecting Y then enter.
    CarbonDev
    Code:
    nano vendor/carbon/vendorsetup.sh
    Add this line
    add_lunch_combo carbon_geeb-userdebug


    Once your device has been added you're ready to build! Go back to the OP and complete the guide from where you left off.
    5
    good stuff haze :)
    2
    What bout building ROMs based on LG source? I'd rather see more LG based ROMs because the camera quality is higher, and a lot of AOSP/AOKP ROMs feel more or less the same.

    Seriously ? Find me LG source to build a rom and I'll make you one.

    @moderator.
    Btw, This post and the previous should be removed, that thread locked to prevent post like these and pinned. thanks.