Skip to content

Instantly share code, notes, and snippets.

@invisiblek
Created June 7, 2015 16:28
Show Gist options
  • Save invisiblek/93901f6ac15267a6e125 to your computer and use it in GitHub Desktop.
Save invisiblek/93901f6ac15267a6e125 to your computer and use it in GitHub Desktop.
#!/bin/bash
cmversion=12.1
outdir=/opt/out/${cmversion}
ccachedir=/home/dp/cm/${cmversion}/prebuilts/misc/linux-x86/ccache
jobs=12
while [ $# -gt 0 ]; do
case $1 in
careful) set -e;;
menuconfig) menuconfig="true";;
copyconfig|regen) copyconfig="true";;
nobuild) nobuild="true";;
clean) clean="true";;
*) device=${1};;
esac
shift
done
if [[ -z ${device} ]]; then
echo "You must specify a device!"
exit 1
fi
case $device in
vk810) arch=arm;kernel=lge/vk810; defconfig=cyanogenmod_vk810_defconfig;;
v400) arch=arm;kernel=lge/v4xx; defconfig=cyanogen_e7wifi_defconfig;;
v410) arch=arm;kernel=lge/v4xx; defconfig=cyanogen_e7att_defconfig;;
d850) arch=arm;kernel=lge/g3; defconfig=cyanogenmod_d850_defconfig;;
d851) arch=arm;kernel=lge/g3; defconfig=cyanogenmod_d851_defconfig;;
d852) arch=arm;kernel=lge/g3; defconfig=cyanogenmod_d852_defconfig;;
d855) arch=arm;kernel=lge/g3; defconfig=cyanogenmod_d855_defconfig;;
ls990) arch=arm;kernel=lge/g3; defconfig=cyanogenmod_ls990_defconfig;;
f400) arch=arm;kernel=lge/g3; defconfig=cyanogenmod_f400_defconfig;;
vs985|g3) arch=arm;kernel=lge/g3; defconfig=cyanogenmod_vs985_defconfig;;
g3caf) arch=arm;kernel=lge/g3caf; defconfig=cyanogenmod_vs985_defconfig; device=vs985;;
vs980) arch=arm;kernel=lge/msm8974; defconfig=cyanogenmod_vs980_defconfig;;
n3) arch=arm;kernel=oppo/n3; defconfig=cyanogenmod_n3_defconfig;;
n3bacon) arch=arm;kernel=oneplus/msm8974; defconfig=cyanogenmod_n3_defconfig; device=n3;;
bacon) arch=arm;kernel=oneplus/msm8974; defconfig=cyanogenmod_bacon_defconfig;;
m8) arch=arm;kernel=htc/msm8974; defconfig=cm_m8_defconfig;;
eyeul) arch=arm;kernel=htc/msm8974; defconfig=cm_eyeul_defconfig;;
memul) arch=arm;kernel=htc/msm8974; defconfig=cm_memul_defconfig;;
a5) arch=arm;kernel=htc/msm8974; defconfig=cm_a5_defconfig;;
dlx) arch=arm;kernel=htc/m7; defconfig=cyanogenmod_dlx_defconfig;;
dlx8960) arch=arm;kernel=htc/msm8960; defconfig=dlx_defconfig; device=dlx;;
jactive) arch=arm;kernel=samsung/jf; defconfig=jactive_eur_defconfig;;
jfltevzw|jf) arch=arm;kernel=samsung/jf; defconfig=cyanogen_jf_defconfig;;
d2vzw|d2) arch=arm;kernel=samsung/d2; defconfig=cyanogen_d2_defconfig;;
tenderloin) arch=arm;kernel=hp/tenderloin; defconfig=cyanogenmod_tenderloin_defconfig;;
dory) arch=arm;kernel=lge/dory; defconfig=invisiblek_dory_defconfig; appenddt=true;;
x86) arch=x86;kernel=generic/x86; defconfig=cyanogen_x86_defconfig;;
x86_64) arch=x86;kernel=generic/x86; defconfig=cyanogen_x86_64_defconfig;;
fugu) arch=x86;kernel=asus/fugu; defconfig=fugu_defconfig;;
*) echo "Unsupported device or command!"; exit 1;;
esac
case $arch in
arm) cross_compile=arm-eabi-;;
x86) ;;
*) echo "Unsupported arch!"; exit 1;;
esac
if [ "`which ${cross_compile}gcc`" == "" ]; then
echo "No toolchain in path!"
echo "Make sure an ${cross_compile}gcc is in your path!"
exit 1
fi
${cross_compile}gcc --version | head -1
echo
cd ~/cm/${cmversion}
[ "$clean" == "true" ] && rm -rf ${outdir}/target/product/${device}/obj/KERNEL_OBJ/
mkdir -p ${outdir}/target/product/${device}/obj/KERNEL_OBJ/
make -j${jobs} -C kernel/${kernel}/ O=${outdir}/target/product/${device}/obj/KERNEL_OBJ/ ARCH=${arch} CROSS_COMPILE="$ccachedir/ccache ${cross_compile}" ${defconfig}
[ "$menuconfig" == "true" ] && make -j${jobs} -C kernel/${kernel}/ O=${outdir}/target/product/${device}/obj/KERNEL_OBJ/ ARCH=${arch} CROSS_COMPILE="$ccachedir/ccache ${cross_compile}" menuconfig
if [ "$appenddt" != "true" ]; then
[ "$nobuild" != "true" ] && make -j${jobs} -C kernel/${kernel}/ O=${outdir}/target/product/${device}/obj/KERNEL_OBJ/ ARCH=${arch} CROSS_COMPILE="$ccachedir/ccache ${cross_compile}" zImage
[ "$arch" == "arm" ] && [ "$nobuild" != "true" ] && make -j${jobs} -C kernel/${kernel}/ O=${outdir}/target/product/${device}/obj/KERNEL_OBJ/ ARCH=${arch} CROSS_COMPILE="$ccachedir/ccache ${cross_compile}" dtbs
else
[ "$nobuild" != "true" ] && make -j${jobs} -C kernel/${kernel}/ O=${outdir}/target/product/${device}/obj/KERNEL_OBJ/ ARCH=${arch} CROSS_COMPILE="$ccachedir/ccache ${cross_compile}" zImage-dtb
fi
[ "$copyconfig" == "true" ] && cp ${outdir}/target/product/${device}/obj/KERNEL_OBJ/.config kernel/${kernel}/arch/${arch}/configs/${defconfig}
cd -
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment