[HTC Desire S] BillGoss:
With there being a bit of an hiatus on CM9 development (waiting for HTC kernel source, working on JB), I thought I'd learn more about building ROMs.

I'm running Ubuntu 10.04 (and 12.04) under VMware Player on Windows 7 Home.

I downloaded the JB AOSP repository and built it successfully for the emulator.

Next, I wanted to build a working ROM, so I chose to do CM9 (ICS).

I've followed [TUTORIAL]Setting up and compiling CM9 from source

and some info regarding building JB:

Here's what I did:

repo init -u git://github.com/CyanogenMod/android.git -b ics

Added a "remote" to get the proprietary files for HTC devices by creating WorkingDir/.repo/local_manifest.xml

Note: An alternative to using nexx/proprietary_vendor_htc is to run ./extract-files.sh from WorkingDir/device/htc/saga with your PC connected to your phone (it used adb to pull down the proprietary files)

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="https://github.com/" name="nexx" revision="ics" />
<project name="nexx/proprietary_vendor_htc" path="vendor/htc" remote="nexx" revision="ics" />
<!-- the following lines were added automatically by "brunch saga" command -->
<project name="CyanogenMod/android_device_htc_saga" path="device/htc/saga" remote="github" revision="ics" />
<project name="CyanogenMod/android_device_htc_msm7x30-common" path="device/htc/msm7x30-common" remote="github" revision="ics" />
<project name="CyanogenMod/htc-kernel-msm7x30" path="kernel/htc/msm7x30" remote="github" revision="android-msm-2.6.35-ics" />
</manifest>

repo sync

Note: the next bit adds the ROM Manager and Term packages which are required by CM

cd vendor/cm

./get-prebuilts

cd ../..

. build/envsetup.sh

brunch saga (I also tried breakfast saga; lunch;mka)

The build failed with these errors:

target SharedLib: audio.primary.msm7x30 (out/target/product/saga/obj/SHARED_LIBRARIES/audio.primary.msm7x30_intermediates/LINKED/audio.primary.msm7x30.so)

prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/saga/obj/SHARED_LIBRARIES/audio.primary.msm7x30_intermediates/AudioHardware.o: in function android_audio_legacy::AudioHardware::setMicMute_nosync(bool):hardware/qcom/media/audio/msm7x30/AudioHardware.cpp:932: error: undefined reference to 'msm_device_mute'

prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/saga/obj/SHARED_LIBRARIES/audio.primary.msm7x30_intermediates/AudioHardware.o: in function android_audio_legacy::AudioHardware::AudioHardware():hardware/qcom/media/audio/msm7x30/AudioHardware.cpp:566: error: undefined reference to 'msm_reset_all_device'

prebuilt/linux-x86/toolchain/arm-linux-androideabi-4.4.x/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: out/target/product/saga/obj/SHARED_LIBRARIES/audio.primary.msm7x30_intermediates/AudioHardware.o: in function android_audio_legacy::updateDeviceInfo(int, int, unsigned int, unsigned int):hardware/qcom/media/audio/msm7x30/AudioHardware.cpp:449: error: undefined reference to 'msm_device_mute'

collect2: ld returned 1 exit status

Note this error occurs both in Ubuntu 10.04 and 12.04

What am I missing and what do I need to do to get the error fixed?

Thanks

Edit:

Solution

The version of Ubuntu has nothing to do with the problem.

The errors point to some missing functions called by hardware/qcom/media/audio/msm7x30/AudioHardware.cpp

The modules in nexx/proprietary_vendor_htc are missing the required functions so copy them from a working CM9 ROM.