[Galaxy S 4 Mini Android Development] sysKin:
Hi all o/

To celebrate two weeks of my successful CM12 building and hacking, I'm starting this thread. Its purpose is to discuss general CM12 building steps for beginners like myself, bugs and fixes, applying [MENTION=5161352]JustArchi[/MENTION]'s optimisation flags, solving the resulting build failures.... and all the other CM12/S4Mini-related questions that don't belong to F4k's [ROM] thread but end up there (I was guilty of that).

First of all, my thanks go to:

[MENTION=3044346]arco68[/MENTION] for making it possible to build ROMs for our S4mini

CyanogenMod team for the ROM itself

[MENTION=3261191]F4k[/MENTION] for his kernel and all the other excellent contributions to this forum

[MENTION=5161352]JustArchi[/MENTION] for finding what he found

In this first post I will outline the steps needed to build a vanilla unofficial CM12 for serranoltexx. serranoltexx is the only device I have so this is what I'll introduce. I suspect building serrano3gxx is just as simple (just replace the device name in all the relevant steps). I don't know what to do to build for i9192, if you do please contribute :)

Building your own CM12 ROM

Main article: http://wiki.cyanogenmod.org/w/Build_for_serranoltexx

The article above tells you how to build CM11, but CM12 builds just as well with minor modifications I'll outline here. To follow those steps you need a Linux installation. I will write how you can make an example Lubuntu-based virtual machine on your Windows box in a post below.

Modifications to the build steps:

"Install the SDK" -- you can skip that, because in the end we will not use any SDK tools.

"Install the Build Packages" - replace jdk6 with jdk7 everywhere, as Java 7 is needed to build Lollipop.

"Create the directories" - I will assume you've followed those steps and everything is under ~/android/system/

"Initialize the CyanogenMod source repository" replace "cm-11.0" with "cm-12.0" of course :)

"Extract proprietary blobs" we will do this completely differently. If you try to use extract-files.sh, the script will fail, and when I finally fixed the script my camera didn't work...

So, do this instead (credit to [MENTION=3261191]F4k[/MENTION] and [MENTION=2991623]kyrillos13[/MENTION] for answering my question on page 90 of F4k's ROM thread)

* Go to https://github.com/TheMuppets/proprietary_vendor_samsung

* Switch branch to cm-12.0

* Use the "Download ZIP" button to get the copy of the entire thing. The zip is big (500 MB? ish) and 95% of it useless for us, so if you're trying to save some bandwidth you can try to do this trick to get only the "serrano-common" folder. If you do, make a post here with exact steps for others :)

* Copy the "serrano-common" folder to ~/android/system/vendor/samsung/ (to clarify, final directory structure should include ~/android/system/vendor/samsung/serrano-common/proprietary/app/ folder among others)

"Turn on caching to speed up build" - sounds like a good idea but we're going to be playing with compiler options, which diminishes its usefulness. It also uses a lot of disk space. Only follow it if you want your daily increments to build fast, and you don't expect to be doing global changes such as optimisation flag changes often. I didn't do this step.

This concludes my first post in this thread. I personally have never had problems with building after this part (except when I had not enough space or memory) and the resulting vanilla builds always worked for me fine. Feel encouraged!

Next post: some tricks and useful commands