Issue with textures.xbt during compile? [Textures.xbt] Illegal Instruction
#1
Exclamation 
I'm compiling XBMC on Fedora 11 (Shuttle PC with NV FX5200 card), everythings correctly installed and in place for XBMC and it flies through ./bootstrap and ./configure without any problems.

However when I make I get an error at the very end,

make[1]: *** [Textures.xbt] Illegal instruction
make[1]: *** Deleting file 'Textures.xbt'
make[1]: Leaving directory '/trunk/skin/Project Mayhem III/media'
make: *** [skins] Error 2

Then kicks out to the command prompt.

When I make install, it installs XBMC but the skin is obviously not complete so it simply shows a black screen with white text and the large photos for the menu to the right side. There is no interface graphics or even a mouse pointer.

I've looked for this textures.xbt online in the Trunk and it's not there either?

Any advice welcome, thanks!
Reply
#2
Do u have a sse2 cpu? The skin part of make process require sse2 cpu. If not maybe u can try to put another skin like trasparency in the pm3.hd folder and see if all work. (not tested)
Reply
#3
It's a 1.2gig celeron box, which I don't think that's sse2?
Reply
#4
Also my ~/.xbmc/skin/ folder is empty, I've just put the mediastream skin in there and renamed the folder Project Mayhem III but it's had no effect.

When I change to PM3.HD it's the same story.
Reply
#5
Until they fix this (there is already a ticket opened) u must use another pc to build...sry
Reply
#6
Umm, can I build it on Ubuntu and transfer the build over to Fedora 11?

My other XBMC systems run Ubuntu but this shuttle wouldn't get into the install procedure of anything but Fedora.
Reply
#7
The Guv. Wrote:make[1]: *** [Textures.xbt] Illegal instruction
make[1]: *** Deleting file 'Textures.xbt'
make[1]: Leaving directory '/trunk/skin/Project Mayhem III/media'
make: *** [skins] Error 2

The problem here is the SSE2 instruction, which is not available on your CPU. In order to fix this, you need to correct 3 things:

1. Open xbmc/xbmc/lib/libsquish/Makefile and remove the -msse2 as well as the -DSQUISH_USE_SSE=2 macro, it should look like this:

Code:
ARCH=i486-linux

SRCS=alpha.cpp clusterfit.cpp colourblock.cpp colourfit.cpp colourset.cpp maths.cpp rangefit.cpp singlecolourfit.cpp squish.cpp

ifeq ($(findstring powerpc,$(ARCH)),powerpc)
CXXFLAGS+=-I. -DSQUISH_USE_ALTIVEC=1 -maltivec
else
ifeq ($(ARCH),arm)
CXXFLAGS+=-I.
else
CXXFLAGS+=-I.
endif
endif
LIB=libsquish-i486-linux.a

include ../../../Makefile.include
-include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))

2. Same goes for xbmc/xbmc/lib/libsquish/Makefile.in:

Code:
ARCH=@ARCH@

SRCS=alpha.cpp clusterfit.cpp colourblock.cpp colourfit.cpp colourset.cpp maths.cpp rangefit.cpp singlecolourfit.cpp squish.cpp

ifeq ($(findstring powerpc,$(ARCH)),powerpc)
CXXFLAGS+=-I. -DSQUISH_USE_ALTIVEC=1 -maltivec
else
ifeq ($(ARCH),arm)
CXXFLAGS+=-I.
else
CXXFLAGS+=-I.
endif
endif
LIB=libsquish-@[email protected]

include ../../../Makefile.include
-include $(patsubst %.cpp,%.P,$(patsubst %.c,%.P,$(SRCS)))

3. However, if you are using the newer version of lzo2, and you have already downloaded it from a repository, it is most likely to be compiled with SSE2 support. Download the source and recompile it. It is available at: http://www.oberhumer.com/opensource/lzo/....04.tar.gz Therefore to install it use:

Code:
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz
tar -xvf lzo-2.04.tar.gz
cd lzo-2.04
./configure
make
make install

Finally, go to xbmc/xbmc/lib/libsquish/ and recompile it with:

Code:
make clean
make

Now you should be able to finish the "make" command for XBMC.
Reply
#8
Hi,
using XBMC (stable) release 12.2 I have same problem here, but no SSE2 defined in libsquish Makefile.
here gdb output:

Code:
cd addons/skin.confluence/media
gdb $HOME/xbmc-12.2/tools/TexturePacker/TexturePacker
Reading symbols from $HOME/xbmc-12.2/tools/TexturePacker/TexturePacker...done.
(gdb) run -input . -output Textures.xbt
Starting program: $HOME/xbmc-12.2/tools/TexturePacker/TexturePacker -input . -output Textures.xbt
[Thread debugging using libthread_db enabled]

Program received signal SIGILL, Illegal instruction.
FloatTo565 (colour=...) at colourblock.cpp:48
48        int r = FloatToInt( 31.0f*colour.X(), 31 );
Current language:  auto
The current source language is "auto; currently c++".
(gdb) bt
#0  FloatTo565 (colour=...) at colourblock.cpp:48
#1  0x08055b36 in squish::WriteColourBlock3 (start=..., end=..., indices=0xbfffe210 '\003' <repeats 16 times>, block=0x805fdc8) at colourblock.cpp:78
#2  0x08056833 in squish::RangeFit::Compress3 (this=0xbfffe5cc, block=0x805fdc8) at rangefit.cpp:141
#3  0x08055f86 in squish::ColourFit::Compress (this=0xbfffe5cc, block=0x805fdc8) at colourfit.cpp:46
#4  0x080538f5 in squish::CompressMasked (rgba=0xbfffe690 "", mask=65535, block=0x805fdc8, flags=521, metric=0x0) at squish.cpp:80
#5  0x08053d42 in squish::CompressImage (rgba=0x806e388 "", width=128, height=80, pitch=512, blocks=0x805fdc8, flags=521, metric=0x0) at squish.cpp:190
#6  0x08053e2f in squish::CompressImage (rgba=0x806e388 "", width=128, height=80, blocks=0x805fdc8, flags=513, metric=0x0) at squish.cpp:147
#7  0x0804d094 in CompressImage(unsigned char const*, int, int, unsigned char*, unsigned int, double&, double&) ()
#8  0x0804d263 in createXBTFFrame(SDL_Surface*, CXBTFWriter&, double, unsigned int) ()
#9  0x0804ddfb in createBundle(std::string const&, std::string const&, double, unsigned int, bool) ()
#10 0x0804e951 in main ()
(gdb) quit
A debugging session is active.

Using Debian (stable) Squeeze 6.0.7
And official Debian packages:
liblzo2-dev 2.03-2
libsdl-image1.2-dev 1.2.10-2+b2
libsdl1.2-dev 1.2.14-6.1
libstdc++6-4.2-dev 4.2.4-6

Any solution ?
Thanks.
Reply

Logout Mark Read Team Forum Stats Members Help
Issue with textures.xbt during compile? [Textures.xbt] Illegal Instruction0