Android [Android] AEConvert.cpp throws compile error for Cortex-A9
#1
Hi All,

I'm trying to compile XBMC-Android for an Aura Slate which has a Cortex-A9 processor. I built the dependencies successfully but compiling XBMC throws this error:
Code:
Utils/AEConvert.cpp: In static member function 'static unsigned int CAEConvert::S16LE_Float(uint8_t*, unsigned int, float*)':
Utils/AEConvert.cpp:179:28: error: inconsistent operand constraints in an 'asm'

I posted in the general discussion thread (oops) and it was suggested I post here with the output of "V=1 make". It is included below. Any advice is greatly appreciated.

The configure string I used:
Code:
./configure --with-toolchain=/Lenny/scripts/android-ndk-r7-crystax-5.beta2/android-9/ --prefix=/Lenny/scripts/apk-xbmc/local --with-sdk=/home/mike/compile/android-sdk-linux/ --with-ndk=/Lenny/scripts/android-ndk-r7-crystax-5.beta2 --with-staging=/Lenny/scripts/apk-xbmc/staging --with-tarballs=/Lenny/scripts/apk-xbmc/tarballs --with-cpu=cortex-a9

Results of "V=1 make":
Code:
make[1]: Entering directory `/Lenny/scripts/xbmc-android/xbmc/cores/AudioEngine'
/usr/bin/ccache /Lenny/scripts/android-ndk-r7-crystax-5.beta2/android-9//bin/arm-linux-androideabi-g++ -MF Utils/AEConvert.d -MD -c -D__STDC_LIMIT_MACROS -DANDROID -Os -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/include -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/include/android-10 -fexceptions -frtti -fPIC -DPIC -D_REENTRANT -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Wno-psabi -g -D_DEBUG -Wall -mno-apcs-stack-check -mfpu=neon -mvectorize-with-neon-quad -DTARGET_POSIX -DTARGET_LINUX -D_LINUX -DTARGET_ANDROID -D_FILE_DEFINED -D__STDC_CONSTANT_MACROS -DBIN_INSTALL_PATH="\"/Lenny/scripts/apk-xbmc/staging/cortex-a9/lib/xbmc\"" -DINSTALL_PATH="\"/Lenny/scripts/apk-xbmc/staging/cortex-a9/share/xbmc\"" -D'GIT_REV="20120714-5a0b2c4"' -DHAVE_CONFIG_H  -I. -I/Lenny/scripts/xbmc-android/xbmc -I/Lenny/scripts/xbmc-android/xbmc/linux -I/Lenny/scripts/xbmc-android/xbmc/utils -I/Lenny/scripts/xbmc-android/xbmc/guilib -I/Lenny/scripts/xbmc-android/xbmc/cores -I/Lenny/scripts/xbmc-android/xbmc/cores/dvdplayer -I/Lenny/scripts/xbmc-android/xbmc/cores/dvdplayer/Codecs/ffmpeg -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/include -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/include/freetype2 -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/include/fribidi -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/include/libpng12 -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/include/mysql -I/Lenny/scripts/apk-xbmc/staging/cortex-a9/lib/libzip/include -I/Lenny/scripts/xbmc-android -I/Lenny/scripts/xbmc-android/lib -I/Lenny/scripts/xbmc-android/xbmc -I/Lenny/scripts/xbmc-android/lib/ffmpeg -I/Lenny/scripts/xbmc-android/xbmc/linux -I/Lenny/scripts/xbmc-android/xbmc/cores/dvdplayer Utils/AEConvert.cpp -o Utils/AEConvert.o \
    && cp Utils/AEConvert.d Utils/AEConvert.P && sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$//' -e '/^$/ d' -e 's/$/ :/' < Utils/AEConvert.d >> Utils/AEConvert.P && rm -f Utils/AEConvert.d || ( rm -f Utils/AEConvert.P Utils/AEConvert.o && exit 1 )
Utils/AEConvert.cpp: In static member function 'static unsigned int CAEConvert::S16LE_Float(uint8_t*, unsigned int, float*)':
Utils/AEConvert.cpp:179:28: error: inconsistent operand constraints in an 'asm'
make[1]: *** [Utils/AEConvert.o] Error 1
make[1]: Leaving directory `/Lenny/scripts/xbmc-android/xbmc/cores/AudioEngine'
make: *** [xbmc/cores/AudioEngine/audioengine.a] Error 2
Reply
#2
best I can think of is --with-cpu=cortex-a9 is wrong. it should be armeabi-v7a as seen from looking in configure.in. I never specify that as it will autodetect it from the toolchain.

oh and drop those trailing '/' in configure. they are not required and leads to seeing " /Lenny/scripts/android-ndk-r7-crystax-5.beta2/android-9//bin/arm-linux-androideabi-g++", see the double //
Reply
#3
(un-necesserily rude post edited)

Leave the --with-cpu out.

For 99% of builds, you just need to specify the bare minimum, it will figure out the rest. The optional stuff is for the buildbot, or for testing exotic configs.
Reply
#4
Also, it looks like you used --enable-tegra, which will do quite the opposite of what you want for Android. Tegra2 is not on the radar at the moment, all signs point to it being unsupported in the final stable release.
Reply
#5
Thanks. You were right, removing the --with-cpu flag allowed me to compile successfully.

(2012-07-15, 05:04)theuni Wrote: Also, it looks like you used --enable-tegra, which will do quite the opposite of what you want for Android. Tegra2 is not on the radar at the moment, all signs point to it being unsupported in the final stable release.

I didn't enable this flag in my configure line. What did you see that makes you think it's an issue?

The apk was named differently and in a different place than I expected from what the README.android says. In the packaging/images folder there is only the xbmcapp-debug-skeleton.apk. But in the root folder there is a xbmcapp-armeabi-v7a-debug.apk that I was able to load on the device.

XBMC-Android launches but I cannot click on anything. The RSS ticker works, and I can affect the skin (scroll menu back and forth and words are highlighted when I click on the menu tabs) but no menu windows will open. Here's what I get from logcat when tapping VIDEOS:
Code:
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch down (387.298492, 358.182709, 0)
V/XBMC    (  474): XBMC_Touch(4, 0, 387, 358)
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (387.298492, 358.182709)
V/XBMC    (  474):  => touch of size 0.000000 has not moved far enough => abort touch move
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (387.298492, 358.182709)
V/XBMC    (  474):  => touch of size 0.000000 has not moved far enough => abort touch move
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (387.298492, 358.182709)
V/XBMC    (  474):  => touch of size 0.000000 has not moved far enough => abort touch move
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (387.298492, 358.182709)
V/XBMC    (  474):  => touch of size 0.000000 has not moved far enough => abort touch move
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (387.298492, 358.182709)
V/XBMC    (  474):  => touch of size 0.000000 has not moved far enough => abort touch move
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (387.298492, 358.182709)
V/XBMC    (  474):  => touch of size 0.000000 has not moved far enough => abort touch move
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (387.298492, 358.182709)
V/XBMC    (  474):  => touch of size 0.000000 has not moved far enough => abort touch move
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch move (385.344391, 359.062042)
V/XBMC    (  474):  => a pan gesture starts
V/XBMC    (  474): XBMC_TouchGesture(222, 387.298492, 358.182709, 0.000000, 0.000000)
V/XBMC    (  474):  => a pan gesture
V/XBMC    (  474): XBMC_TouchGesture(225, 385.344391, 359.062042, -1.954102, 0.879333)
V/XBMC    (  474): virtual bool CXBMCApp::onTouchEvent(AInputEvent*): 2
V/XBMC    (  474):  => touch up (385.344391, 359.062042, 0)
V/XBMC    (  474):  => a pan gesture ending
V/XBMC    (  474): XBMC_TouchGesture(226, -12.855931, 5.785089, 385.344391, 359.062042)
V/XBMC    (  474): XBMC_Touch(4, 0, 65535, 65535)

I'm going to see if I can figure out how to enable http remote control and test it that way. Should I be posting bugs somewhere as I come across this sort of thing?
Reply
#6
post patches.
Reply
#7
(2012-07-15, 18:38)barney_1 Wrote: I'm going to see if I can figure out how to enable http remote control and test it that way. Should I be posting bugs somewhere as I come across this sort of thing?

Edit /sdcard/Android/Data/org.xmbc/xbmc/files/.xbmc/userdata/guisettings.xml and change in the input node the key remoteaskeyboard from false to true. After that you can use the remote control app.
Reply
#8
The keymapping is not finished yet. We did not release an apk because we only want developers building right now. As spiff said, please post patches.
Reply
#9
Sorry if this is a stupid question, but will the new Rockchip SOC be supported? I'm more talking about the RK3066 (Cortex A9, MALI-400).
Please read the online manual (wiki) & FAQ (wiki) before posting.

Skins: Estuary | Xperience1080
Opinion: Never purchase HTC products
Reply
#10
(2012-07-17, 10:04)Piers Wrote: Sorry if this is a stupid question, but will the new Rockchip SOC be supported? I'm more talking about the RK3066 (Cortex A9, MALI-400).

Off topic for this thread "RE: [Android] AEConvert.cpp throws compile error for Cortex-A9"
Reply

Logout Mark Read Team Forum Stats Members Help
[Android] AEConvert.cpp throws compile error for Cortex-A90