[Guide] Building from source Any ROM

Search This thread

Unjustified Dev

Recognized Developer
Oct 21, 2012
7,185
13,082
26
Memphis , TN
I have been asked many times how do i build from source today I will attempt to tell you.

Preparation
First , you must be running at least Ubuntu 12.04 I recommend Ubuntu 12.10 you must use 64 bit.

Follow this guide on initializing a build environment for Ubuntu 12.10 Here

For Ubuntu 12.04 Here

Stop at Building cm-10 if your following guide for Ubuntu 12.04

Please don't continue until you follow the respective guide above


Setting up
Let's first create a directory in which we will build
Code:
mkdir -p ~/bin
mkdir -p ~/android/system

Initialize the repo command
Code:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo

Putting the ~/bin directory in your path of execution
Code:
export PATH=${PATH}:~/bin


Downloading Source

Code:
cd ~/android/system/

Now we need to get the source code heres a few ROMs to try out

Code:
repo init -u git://github.com/PAC-man/android.git -b cm-10.1
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
repo init -u https://github.com/TeamBAKED/platform_manifest.git -b jb-4.2
repo init -u git://github.com/ParanoidAndroid/manifest.git -b jellybean
repo init -u git://github.com/SlimRoms/platform_manifest.git -b jb4.2

You can only choose one



Now we need to obtain device proprietary files they are stored in local_manifest.xml
Code:
gedit ~/android/system/.repo/local_manifest.xml

copy and paste these lines in the file viewer that comes up and hit save
Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <project name="CyanogenMod/android_kernel_samsung_epicmtd" path="kernel/samsung/epicmtd" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_device_samsung_epicmtd" path="device/samsung/epicmtd" remote="github" revision="cm-10.1" />
  <project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
</manifest>

Now lets download the source

Code:
Repo sync -j#
# = number of threads cpu has


Unfinished this is a good start for now:laugh:
 
Last edited:

Unjustified Dev

Recognized Developer
Oct 21, 2012
7,185
13,082
26
Memphis , TN
Part 2 Adding Device Support

Making your device supported Now that you have you have the device tree

I will be demonstrating how to add your device to any ROM.

First step is after you synced to have a visit on their Github.
In this example I will be using Pac-man since I already added our device to their source. Please note that this is just a start and you would have to review another device if the phone is not supported for the Rom you want to build.

https://github.com/PAC-man/android_vendor_pac/commit/4f60080b14c6eb5cf0393645cc89e937610f755d

on here as you can see the files I added and modified to get a build going pay attention to them.



If your device isn't supported like on Paranoid Android review another device as an example.
https://github.com/ParanoidAndroid/android_vendor_pa/commit/6c49f44d75e2ad72a9633d8aa742f7901596c60c

You can see that they added a product file and other things. I will be reviewing a few examples but get a look at the files they modified and try to understand why.



Step 1 the first thing you should look for on a Rom you like is the VendorSetup.sh File like this one usually in vendor/Rom-name



You Would Have to append the epic to the end of the file or the build will not lunch.In this example I used RootBox
Code:
add_lunch_combo rootbox_d2att-userdebug
add_lunch_combo rootbox_d2tmo-userdebug
add_lunch_combo rootbox_d2vzw-userdebug
add_lunch_combo rootbox_grouper-userdebug
add_lunch_combo rootbox_i605-userdebug
add_lunch_combo rootbox_i9100-userdebug
add_lunch_combo rootbox_i9100g-userdebug
add_lunch_combo rootbox_i9300-userdebug
add_lunch_combo rootbox_l900-userdebug
add_lunch_combo rootbox_maguro-userdebug
add_lunch_combo rootbox_mako-userdebug
add_lunch_combo rootbox_n7000-userdebug
add_lunch_combo rootbox_n7100-userdebug
add_lunch_combo rootbox_quincyatt-userdebug
add_lunch_combo rootbox_toro-userdebug
add_lunch_combo rootbox_t0lte-userdebug
[B]add_lunch_combo rootbox_epicmtd-userdebug[/B]


Next step would be adding Your Product specs please Note this is not found in all ROMs but most of them.


look for vendor/RomName/Products and find AndroidProducts.mk append the epic to the end. In the first example it does not change format. In second one it will. I will include both formats.

1st one usually not used as you can see I added the epic to AndroidProducts so that it can find my build product spec.

Code:
PRODUCT_MAKEFILES := $(LOCAL_DIR)/d2att.mk \
$(LOCAL_DIR)/d2tmo.mk \
$(LOCAL_DIR)/d2vzw.mk \
[B]$(LOCAL_DIR)/epicmtd.mk \[/B]
$(LOCAL_DIR)/fascinatemtd.mk
$(LOCAL_DIR)/grouper.mk \
$(LOCAL_DIR)/i605.mk \
$(LOCAL_DIR)/i9100.mk \
$(LOCAL_DIR)/i9100g.mk \
$(LOCAL_DIR)/i9300.mk \
$(LOCAL_DIR)/l900.mk \
$(LOCAL_DIR)/maguro.mk \
$(LOCAL_DIR)/mako.mk \
$(LOCAL_DIR)/n7000.mk \
$(LOCAL_DIR)/n7100.mk \
$(LOCAL_DIR)/quincyatt.mk \
$(LOCAL_DIR)/toro.mk \
$(LOCAL_DIR)/t0lte.mk

2nd one more commonly used pa= paranoid android that part will change in this format depending on the ROM

Code:
ifeq (pa_grouper,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_grouper.mk
endif
ifeq (pa_i9100,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_i9100.mk
endif
ifeq (pa_i9300,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_i9300.mk
endif
ifeq (pa_i9305,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_i9305.mk
endif
ifeq (pa_maguro,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_maguro.mk
endif
ifeq (pa_mako,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_mako.mk
endif
ifeq (pa_manta,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_manta.mk
endif
ifeq (pa_n7100,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_n7100.mk
endif
ifeq (pa_tf700t,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_tf700t.mk
endif
ifeq (pa_tilapia,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_tilapia.mk
endif
ifeq (pa_toro,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_toro.mk
endif
ifeq (pa_toroplus,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_toroplus.mk
endif
ifeq (pa_bravo,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_bravo.mk
endif
ifeq (pa_crespo,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_crespo.mk
endif
ifeq (pa_endeavoru,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_endeavoru.mk
endif
[B]ifeq (pa_epicmtd,$(TARGET_PRODUCT))
    PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_epicmtd.mk
endif[/B]

Next step will be creating a product spec refer to other files for guidance please note the files you tell it to use must exist

The build Fingerprint should always be the same as the one from device/sasmung/epicmtd/cm.mk. Please note this is only for RootBox.

This file is called on by AndroidProducts.mk.

For example this file would be named epicmtd.mk or it could be named pa_epicmtd.mk depending on the Rom.

Code:
# Inherit AOSP device configuration for epicmtd.
$(call inherit-product, device/samsung/epicmtd/full_epicmtd.mk)

# Inherit CDMA common stuff.
$(call inherit-product, vendor/rootbox/configs/cdma.mk)

# Inherit RootBox goods.
$(call inherit-product, vendor/rootbox/configs/common.mk)

# Epic 4G Overlays
PRODUCT_PACKAGE_OVERLAYS += vendor/rootbox/overlay/epicmtd

# PA OVERLAY_TARGET
OVERLAY_TARGET := pa_hdpi

# Setup device specific product configuration.
PRODUCT_NAME := rootbox_epicmtd
PRODUCT_BRAND := samsung
PRODUCT_DEVICE := epicmtd
PRODUCT_MODEL := SPH-D700
PRODUCT_MANUFACTURER := samsung

#Set build fingerprint / ID / Product Name ect.
PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=SPH-D700 TARGET_DEVICE=SPH-D700 BUILD_FINGERPRINT=sprint/SPH-D700/SPH-D700:2.3.5/GINGERBREAD/EI22:user/release-keys PRIVATE_BUILD_DESC="SPH-D700-user 2.3.5 GINGERBREAD EI22 release-keys"

# Copy bootanimation.zip
PRODUCT_COPY_FILES += \
    vendor/rootbox/prebuilt/hdpi/bootanimation.zip:system/media/bootanimation.zip



I will Finish This Up Later and Polish it Up
 
Last edited:

Unjustified Dev

Recognized Developer
Oct 21, 2012
7,185
13,082
26
Memphis , TN
am i still to run extract-files.sh or directly to bruch?

What are you building and
Yes run ./extract-files.sh but brunch only works with cyanogenmod which is the easiest to build.
CD to working directory example
Code:
cd android/system
. build/envsetup.sh 
 cd device/samsung/epicmtd
Make sure the epic is connected to USB and adb is working
Code:
chmod +x extract-files.sh
./extract-files.sh[CODE] 

Sent from my SCH-I500 using xda app-developers app
 
Last edited:
What are you building and
Yes run ./extract-files.sh but brunch only works with cyanogenmod which is the easiest to build.
CD to working directory example
Code:
cd android/system
. build/envsetup.sh 
 cd device/samsung/epicmtd
Make sure the epic is connected to USB and adb is working
Code:
chmod +x extract-files.sh
./extract-files.sh

Sent from my SCH-I500 using xda app-developers app

want to build jellybeer
and i cant get my adb working on 12.04 LTS
HTML:
dropple@ubuntu:~/jellybeer/device/samsung/epicmtd$ ./extract-files.sh
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/lib/hw': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/lib/egl': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/media': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/etc/wifi': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/firmware': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/vendor/firmware': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/vendor/bin': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/bin': Permission denied
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 141: ./extract-files.sh: adb: not found
./extract-files.sh: 142: ./extract-files.sh: adb: not found
./extract-files.sh: 143: ./extract-files.sh: adb: not found
./extract-files.sh: 144: ./extract-files.sh: adb: not found
dropple@ubuntu:~/jellybeer/device/samsung/epicmtd$
 

xboxfanj

Recognized Developer
Apr 24, 2011
7,313
7,797
St. Louis
want to build jellybeer
and i cant get my adb working on 12.04 LTS
HTML:
dropple@ubuntu:~/jellybeer/device/samsung/epicmtd$ ./extract-files.sh
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/lib/hw': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/lib/egl': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/media': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/etc/wifi': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/firmware': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/vendor/firmware': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/vendor/bin': Permission denied
rm: cannot remove `../../../vendor/samsung/epicmtd/proprietary/bin': Permission denied
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 137: ./extract-files.sh: adb: not found
./extract-files.sh: 141: ./extract-files.sh: adb: not found
./extract-files.sh: 142: ./extract-files.sh: adb: not found
./extract-files.sh: 143: ./extract-files.sh: adb: not found
./extract-files.sh: 144: ./extract-files.sh: adb: not found
dropple@ubuntu:~/jellybeer/device/samsung/epicmtd$

You need to apt-get install android-tools-adb but instead of using extract files, just sync the vendor repo at the muppets github in your local manifest.

Sent from my LG-LS970 using xda app-developers app
 
  • Like
Reactions: Dropple
You need to apt-get install android-tools-adb but instead of using extract files, just sync the vendor repo at the muppets github in your local manifest.

Sent from my LG-LS970 using xda app-developers app

HTML:
E: Unable to locate package android-tools-adb

there is

HTML:
<project path="vendor/samsung" name="TheMuppets/proprietary_vendor_samsung"/>

in manifest.xml, so i didnt add that to local_manifest.xml
 

Unjustified Dev

Recognized Developer
Oct 21, 2012
7,185
13,082
26
Memphis , TN
HTML:
E: Unable to locate package android-tools-adb

there is

HTML:
<project path="vendor/samsung" name="TheMuppets/proprietary_vendor_samsung"/>

in manifest.xml, so i didnt add that to local_manifest.xml

Then you don't need it if vendor/Samsung/epicmtd exist I forgot to add it. I extracted proprietary files a long time ago and have no need for it. I will fix local_manifest.XML later

Sent from my SCH-I500 using xda app-developers app
 

cornaljoe

Senior Member
Thanks for making a thread Unjustified. All synced and ran into some issues when trying to build. Here is the error in terminal:

Code:
...
     23. baked_epicmtd-userdebug
     24. baked_fascinatemtd-userdebug
     25. baked_galaxysmtd-userdebug
...

Which would you like? [full-eng] 23
build/core/product_config.mk:193: *** _nic.PRODUCTS.[[device/samsung/i9100/full_i9100.mk]]: "device/samsung/galaxys2-common/common.mk" does not exist.  Stop.

** Don't have a product spec for: 'baked_epicmtd'
** Do you have the right repo manifest?

I made the changes you posted and have my local_manifest.xml set like so:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <project name="CyanogenMod/android_device_samsung_epicmtd" path="device/samsung/epicmtd" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_kernel_samsung_epicmtd" path="kernel/samsung/epicmtd" remote="github" revision="cm-10.1" />
  <project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-10.1" />
</manifest>

Do I have to make changes to the manifest.xml as well?
 

Unjustified Dev

Recognized Developer
Oct 21, 2012
7,185
13,082
26
Memphis , TN
Thanks for making a thread Unjustified. All synced and ran into some issues when trying to build. Here is the error in terminal:

Code:
...
     23. baked_epicmtd-userdebug
     24. baked_fascinatemtd-userdebug
     25. baked_galaxysmtd-userdebug
...

Which would you like? [full-eng] 23
build/core/product_config.mk:193: *** _nic.PRODUCTS.[[device/samsung/i9100/full_i9100.mk]]: "device/samsung/galaxys2-common/common.mk" does not exist.  Stop.

** Don't have a product spec for: 'baked_epicmtd'
** Do you have the right repo manifest?

I made the changes you posted and have my local_manifest.xml set like so:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <project name="CyanogenMod/android_device_samsung_epicmtd" path="device/samsung/epicmtd" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_kernel_samsung_epicmtd" path="kernel/samsung/epicmtd" remote="github" revision="cm-10.1" />
  <project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_packages_apps_SamsungServiceMode" path="packages/apps/SamsungServiceMode" remote="github" revision="cm-10.1" />
  <project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-10.1" />
</manifest>

Do I have to make changes to the manifest.xml as well?

hmm error in my commits sorry
delete vendor/samsung/epicmtd
and replace it with this again

https://github.com/C457/vendor_baked

or got to vendor/baked and open vendorsetup.sh and modify this as the commit did

https://github.com/C457/vendor_baked/commit/1492dfb0a958fdd20fd317397098b81b36f04c46
 
  • Like
Reactions: cornaljoe
adb is working now
when make it, i got this trouble:(
HTML:
root@ubuntu:~/jellybeer# make -j4
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.2
TARGET_PRODUCT=cm_epicmtd
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.5.0-23-generic-x86_64-with-Ubuntu-12.04-precise
HOST_BUILD_TYPE=release
BUILD_ID=JDQ39
OUT_DIR=/home/dropple/jellybeer/out
============================================
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': No such file or directory
find: `src': No such file or directory
vendor/nvidia/grouper/keymaster/Android.mk:16: Extraneous text after `ifeq' directive
vendor/nvidia/tilapia/keymaster/Android.mk:16: Extraneous text after `ifeq' directive
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/mkshrc'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/mkshrc'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/egl.cfg'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/egl.cfg'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/Makefile:44: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/libGLES_android.so'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/libGLES_android.so'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/hw/sensors.s5pc110.so'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/hw/sensors.s5pc110.so'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/bin/rild'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/bin/rild'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/libril.so'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/libril.so'
PRODUCT_COPY_FILES device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml ignored.
PRODUCT_COPY_FILES development/tools/emulator/system/camera/media_profiles.xml:system/etc/media_profiles.xml ignored.
PRODUCT_COPY_FILES development/tools/emulator/system/camera/media_codecs.xml:system/etc/media_codecs.xml ignored.
PRODUCT_COPY_FILES hardware/libhardware_legacy/audio/audio_policy.conf:system/etc/audio_policy.conf ignored.
No private recovery resources for TARGET_DEVICE epicmtd
host Java: jsr305lib (/home/dropple/jellybeer/out/host/common/obj/JAVA_LIBRARIES/jsr305lib_intermediates/classes)
Import includes file: /home/dropple/jellybeer/out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/import_includes
host C: libhost <= build/libs/host/CopyFile.c
host C++: libhost <= build/libs/host/pseudolocalize.cpp
Notice file: external/guava/NOTICE -- /home/dropple/jellybeer/out/host/linux-x86/obj/NOTICE_FILES/src//framework/guavalib.jar.txt
/bin/bash: prebuilts/misc/linux-x86/ccache/ccache: No such file or directory
make: *** [/home/dropple/jellybeer/out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/pseudolocalize.o] Error 127
make: *** Waiting for unfinished jobs....
/bin/bash: prebuilts/misc/linux-x86/ccache/ccache: No such file or directory
make: *** [/home/dropple/jellybeer/out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/CopyFile.o] Error 127
root@ubuntu:~/jellybeer#
 

Unjustified Dev

Recognized Developer
Oct 21, 2012
7,185
13,082
26
Memphis , TN
adb is working now
when make it, i got this trouble:(
HTML:
root@ubuntu:~/jellybeer# make -j4
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.2.2
TARGET_PRODUCT=cm_epicmtd
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
HOST_ARCH=x86
HOST_OS=linux
HOST_OS_EXTRA=Linux-3.5.0-23-generic-x86_64-with-Ubuntu-12.04-precise
HOST_BUILD_TYPE=release
BUILD_ID=JDQ39
OUT_DIR=/home/dropple/jellybeer/out
============================================
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': No such file or directory
find: `src': No such file or directory
vendor/nvidia/grouper/keymaster/Android.mk:16: Extraneous text after `ifeq' directive
vendor/nvidia/tilapia/keymaster/Android.mk:16: Extraneous text after `ifeq' directive
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/mkshrc'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/mkshrc'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/egl.cfg'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/egl.cfg'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/Makefile:44: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/etc/permissions/android.software.live_wallpaper.xml'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/libGLES_android.so'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/egl/libGLES_android.so'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/hw/sensors.s5pc110.so'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/hw/sensors.s5pc110.so'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/bin/rild'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/bin/rild'
build/core/Makefile:44: warning: overriding commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/libril.so'
build/core/base_rules.mk:502: warning: ignoring old commands for target `/home/dropple/jellybeer/out/target/product/epicmtd/system/lib/libril.so'
PRODUCT_COPY_FILES device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml ignored.
PRODUCT_COPY_FILES development/tools/emulator/system/camera/media_profiles.xml:system/etc/media_profiles.xml ignored.
PRODUCT_COPY_FILES development/tools/emulator/system/camera/media_codecs.xml:system/etc/media_codecs.xml ignored.
PRODUCT_COPY_FILES hardware/libhardware_legacy/audio/audio_policy.conf:system/etc/audio_policy.conf ignored.
No private recovery resources for TARGET_DEVICE epicmtd
host Java: jsr305lib (/home/dropple/jellybeer/out/host/common/obj/JAVA_LIBRARIES/jsr305lib_intermediates/classes)
Import includes file: /home/dropple/jellybeer/out/host/linux-x86/obj/EXECUTABLES/acp_intermediates/import_includes
host C: libhost <= build/libs/host/CopyFile.c
host C++: libhost <= build/libs/host/pseudolocalize.cpp
Notice file: external/guava/NOTICE -- /home/dropple/jellybeer/out/host/linux-x86/obj/NOTICE_FILES/src//framework/guavalib.jar.txt
/bin/bash: prebuilts/misc/linux-x86/ccache/ccache: No such file or directory
make: *** [/home/dropple/jellybeer/out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/pseudolocalize.o] Error 127
make: *** Waiting for unfinished jobs....
/bin/bash: prebuilts/misc/linux-x86/ccache/ccache: No such file or directory
make: *** [/home/dropple/jellybeer/out/host/linux-x86/obj/STATIC_LIBRARIES/libhost_intermediates/CopyFile.o] Error 127
root@ubuntu:~/jellybeer#

https://github.com/BeerGang/android

Code:
cd vendor/cm 
./get-prebuilts

Code:
./jb-build.sh epicmtd true -j4

if it doesnt work find the build-script ./jb-build.sh should be in root of source at the bottom if not just leave off -j4 if it does have it follow below

Code:
sudo gedit ./jb-build.sh

in viewer look for threads change it to 4 from 16 and hit save

Code:
./jb-build.sh epicmtd true
 
Last edited:
  • Like
Reactions: Dropple
https://github.com/BeerGang/android

Code:
cd vendor/cm 
./get-prebuilts

Code:
./jb-build.sh epicmtd true -j4

if it doesnt work find the build-script ./jb-build.sh should be in root of source at the bottom if not just leave off -j4 if it does have it follow below

Code:
sudo gedit ./jb-build.sh

in viewer look for threads change it to 4 from 16 and hit save

Code:
./jb-build.sh epicmtd true

thanks for that
but still get
HTML:
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-client/src': No such file or directory
find: `../../vendor/unbundled_google/libs/gcm/gcm-server/src': No such file or directory
 

Top Liked Posts

  • There are no posts matching your filters.
  • 15
    I have been asked many times how do i build from source today I will attempt to tell you.

    Preparation
    First , you must be running at least Ubuntu 12.04 I recommend Ubuntu 12.10 you must use 64 bit.

    Follow this guide on initializing a build environment for Ubuntu 12.10 Here

    For Ubuntu 12.04 Here

    Stop at Building cm-10 if your following guide for Ubuntu 12.04

    Please don't continue until you follow the respective guide above


    Setting up
    Let's first create a directory in which we will build
    Code:
    mkdir -p ~/bin
    mkdir -p ~/android/system

    Initialize the repo command
    Code:
    curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
    chmod a+x ~/bin/repo

    Putting the ~/bin directory in your path of execution
    Code:
    export PATH=${PATH}:~/bin


    Downloading Source

    Code:
    cd ~/android/system/

    Now we need to get the source code heres a few ROMs to try out

    Code:
    repo init -u git://github.com/PAC-man/android.git -b cm-10.1
    repo init -u git://github.com/CyanogenMod/android.git -b cm-10.1
    repo init -u https://github.com/TeamBAKED/platform_manifest.git -b jb-4.2
    repo init -u git://github.com/ParanoidAndroid/manifest.git -b jellybean
    repo init -u git://github.com/SlimRoms/platform_manifest.git -b jb4.2

    You can only choose one



    Now we need to obtain device proprietary files they are stored in local_manifest.xml
    Code:
    gedit ~/android/system/.repo/local_manifest.xml

    copy and paste these lines in the file viewer that comes up and hit save
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <manifest>
      <project name="CyanogenMod/android_kernel_samsung_epicmtd" path="kernel/samsung/epicmtd" remote="github" revision="cm-10.1" />
      <project name="CyanogenMod/android_hardware_samsung" path="hardware/samsung" remote="github" revision="cm-10.1" />
      <project name="CyanogenMod/android_device_samsung_epicmtd" path="device/samsung/epicmtd" remote="github" revision="cm-10.1" />
      <project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github" revision="cm-10.1" />
    </manifest>

    Now lets download the source

    Code:
    Repo sync -j#
    # = number of threads cpu has


    Unfinished this is a good start for now:laugh:
    5
    Thanks Unjustified you have guided me well finally got it to boot:D:

    Screenshot_2013-03-25-03-20-21.jpg

    Everything looks good so far. I had to replace the bootanimation.zip with the one from CM as it kept freezing. Go ahead and submit the commits.

    Edit: Also deleting the samsung vendor from manifest allowed the local manifest to grab themuppets one successfully. I thought the local manifest would take priority but go figure.
    5
    Your missing some code lol . @bbelos how did you fix the sdcard issue in 4.4 with fuse on devices with only external sdcards? I get the id error.

    Uhm, yeah. That's been a real PITA.

    In the latest build I posted, I actually just hardcoded the id. Somewhere around this line in MediaProvider you can add something like this:

    Code:
    if (volumeID == -1) {
      volumeID = 11184810;
    }
    That number is for a UUID of AAAA-AAAA. The main drawback of that method, is if you insert a different sdcard, it won't know.

    I don't fully understand it yet, but it seems the problem is that MediaProvider is trying to look up the id for /storage/sdcard0 and it doesn't have the permissions to read it. Another method that I've been toying with is forcing MediaProvider to lookup the id for /mnt/media_rw/sdcard0 and relaxing the permissions for /mnt/media_rw. You can try this by adding replacing the path after this line:
    Code:
                } else if (EXTERNAL_VOLUME.equals(volume)) {
                    if (Environment.isExternalStorageRemovable()) {
                        String path = mExternalStoragePaths[0];
                        [B]path = path.replace("/storage","/mnt/media_rw");  // <- ADD THIS[/B]
                        int volumeID = FileUtils.getFatVolumeId(path);
                        //if (LOCAL_LOGV) Log.v(TAG, path + " volume ID: " + volumeID);
                        Log.e(TAG, path + " volume ID: " + volumeID);
    And then add "mkdir /mnt/media_rw 0777 media_rw media_rw" to your init.victory.rc (or whatever device you're building for). I would add it before your "mkdir /mnt/media_rw/sdcard0 0700 media_rw media_rw" line. That has allowed me to read the actual volume id. I don't know if that's anywhere near a "proper" fix, but it's something.
    4
    Part 2 Adding Device Support

    Making your device supported Now that you have you have the device tree

    I will be demonstrating how to add your device to any ROM.

    First step is after you synced to have a visit on their Github.
    In this example I will be using Pac-man since I already added our device to their source. Please note that this is just a start and you would have to review another device if the phone is not supported for the Rom you want to build.

    https://github.com/PAC-man/android_vendor_pac/commit/4f60080b14c6eb5cf0393645cc89e937610f755d

    on here as you can see the files I added and modified to get a build going pay attention to them.



    If your device isn't supported like on Paranoid Android review another device as an example.
    https://github.com/ParanoidAndroid/android_vendor_pa/commit/6c49f44d75e2ad72a9633d8aa742f7901596c60c

    You can see that they added a product file and other things. I will be reviewing a few examples but get a look at the files they modified and try to understand why.



    Step 1 the first thing you should look for on a Rom you like is the VendorSetup.sh File like this one usually in vendor/Rom-name



    You Would Have to append the epic to the end of the file or the build will not lunch.In this example I used RootBox
    Code:
    add_lunch_combo rootbox_d2att-userdebug
    add_lunch_combo rootbox_d2tmo-userdebug
    add_lunch_combo rootbox_d2vzw-userdebug
    add_lunch_combo rootbox_grouper-userdebug
    add_lunch_combo rootbox_i605-userdebug
    add_lunch_combo rootbox_i9100-userdebug
    add_lunch_combo rootbox_i9100g-userdebug
    add_lunch_combo rootbox_i9300-userdebug
    add_lunch_combo rootbox_l900-userdebug
    add_lunch_combo rootbox_maguro-userdebug
    add_lunch_combo rootbox_mako-userdebug
    add_lunch_combo rootbox_n7000-userdebug
    add_lunch_combo rootbox_n7100-userdebug
    add_lunch_combo rootbox_quincyatt-userdebug
    add_lunch_combo rootbox_toro-userdebug
    add_lunch_combo rootbox_t0lte-userdebug
    [B]add_lunch_combo rootbox_epicmtd-userdebug[/B]


    Next step would be adding Your Product specs please Note this is not found in all ROMs but most of them.


    look for vendor/RomName/Products and find AndroidProducts.mk append the epic to the end. In the first example it does not change format. In second one it will. I will include both formats.

    1st one usually not used as you can see I added the epic to AndroidProducts so that it can find my build product spec.

    Code:
    PRODUCT_MAKEFILES := $(LOCAL_DIR)/d2att.mk \
    $(LOCAL_DIR)/d2tmo.mk \
    $(LOCAL_DIR)/d2vzw.mk \
    [B]$(LOCAL_DIR)/epicmtd.mk \[/B]
    $(LOCAL_DIR)/fascinatemtd.mk
    $(LOCAL_DIR)/grouper.mk \
    $(LOCAL_DIR)/i605.mk \
    $(LOCAL_DIR)/i9100.mk \
    $(LOCAL_DIR)/i9100g.mk \
    $(LOCAL_DIR)/i9300.mk \
    $(LOCAL_DIR)/l900.mk \
    $(LOCAL_DIR)/maguro.mk \
    $(LOCAL_DIR)/mako.mk \
    $(LOCAL_DIR)/n7000.mk \
    $(LOCAL_DIR)/n7100.mk \
    $(LOCAL_DIR)/quincyatt.mk \
    $(LOCAL_DIR)/toro.mk \
    $(LOCAL_DIR)/t0lte.mk

    2nd one more commonly used pa= paranoid android that part will change in this format depending on the ROM

    Code:
    ifeq (pa_grouper,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_grouper.mk
    endif
    ifeq (pa_i9100,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_i9100.mk
    endif
    ifeq (pa_i9300,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_i9300.mk
    endif
    ifeq (pa_i9305,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_i9305.mk
    endif
    ifeq (pa_maguro,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_maguro.mk
    endif
    ifeq (pa_mako,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_mako.mk
    endif
    ifeq (pa_manta,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_manta.mk
    endif
    ifeq (pa_n7100,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_n7100.mk
    endif
    ifeq (pa_tf700t,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_tf700t.mk
    endif
    ifeq (pa_tilapia,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_tilapia.mk
    endif
    ifeq (pa_toro,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_toro.mk
    endif
    ifeq (pa_toroplus,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_toroplus.mk
    endif
    ifeq (pa_bravo,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_bravo.mk
    endif
    ifeq (pa_crespo,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_crespo.mk
    endif
    ifeq (pa_endeavoru,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_endeavoru.mk
    endif
    [B]ifeq (pa_epicmtd,$(TARGET_PRODUCT))
        PRODUCT_MAKEFILES += $(LOCAL_DIR)/pa_epicmtd.mk
    endif[/B]

    Next step will be creating a product spec refer to other files for guidance please note the files you tell it to use must exist

    The build Fingerprint should always be the same as the one from device/sasmung/epicmtd/cm.mk. Please note this is only for RootBox.

    This file is called on by AndroidProducts.mk.

    For example this file would be named epicmtd.mk or it could be named pa_epicmtd.mk depending on the Rom.

    Code:
    # Inherit AOSP device configuration for epicmtd.
    $(call inherit-product, device/samsung/epicmtd/full_epicmtd.mk)
    
    # Inherit CDMA common stuff.
    $(call inherit-product, vendor/rootbox/configs/cdma.mk)
    
    # Inherit RootBox goods.
    $(call inherit-product, vendor/rootbox/configs/common.mk)
    
    # Epic 4G Overlays
    PRODUCT_PACKAGE_OVERLAYS += vendor/rootbox/overlay/epicmtd
    
    # PA OVERLAY_TARGET
    OVERLAY_TARGET := pa_hdpi
    
    # Setup device specific product configuration.
    PRODUCT_NAME := rootbox_epicmtd
    PRODUCT_BRAND := samsung
    PRODUCT_DEVICE := epicmtd
    PRODUCT_MODEL := SPH-D700
    PRODUCT_MANUFACTURER := samsung
    
    #Set build fingerprint / ID / Product Name ect.
    PRODUCT_BUILD_PROP_OVERRIDES += PRODUCT_NAME=SPH-D700 TARGET_DEVICE=SPH-D700 BUILD_FINGERPRINT=sprint/SPH-D700/SPH-D700:2.3.5/GINGERBREAD/EI22:user/release-keys PRIVATE_BUILD_DESC="SPH-D700-user 2.3.5 GINGERBREAD EI22 release-keys"
    
    # Copy bootanimation.zip
    PRODUCT_COPY_FILES += \
        vendor/rootbox/prebuilt/hdpi/bootanimation.zip:system/media/bootanimation.zip



    I will Finish This Up Later and Polish it Up
    4
    I just spoke with nycbjr1 and termleech of TeamBaked and got the clear to post an unofficial ROM here. I'm currently contacting didhiy for permission to use his nitest kernel in my release as it supports BB's bootanimation, OC, etc. Stay tuned!