Questions from an interested developer
#1
Hullo peeps. Smile
I was shown XBMC earlier today, told about the Linux port, and decided it looked like it might be something I'm interested in contributing to. I've checked out the source, and having taken a very brief look over it and attempted (so far without luck) to build it, I have a few questions that might help me decide whether or not this project is really for me.

First of all: I noticed from the forums that it's a "known issue" that it won't compile on AMD64 hardware, which I am using. This is the prominent reason why I haven't got it to compile yet. Rolleyes I saw that a few people were interested, but assume things aren't very far along yet. A lot of the problems seem to be due to casting things from pointers to very specific types: what are some of the reasons for this, and would a preferred solution be casting to different types, or cleaning up code that pretends pointers are integers (obviously a larger task, but I'm fairly certain I've already found one place where the conversion to integer types is largely unnecessary with a little rethinking)? I've been cleaning up casts as they crop up, but suspect that this would take a long time for the whole code base, and have no idea whether the resulting binary would actually run! Eek

Secondly, checked-in pre-built DLLs and SOs. I read that the source for most/all of these was also checked in - fair enough, so they can be rebuilt. What about DLLs? Are these used at all in the Linux version, and if so will there ever be 64-bit replacements? (I have to admit it's not something I've studied, but based on what I do know, the standard response to anyone trying to load a 32-bit DLL from a 64-bit program is "good luck." Wink)

Thirdly, the build system. I see some attempt has been made to move to an autotools-esque system, but this has not been fully realised. For example, despite the configure script detecting "gcc" and "g++" as CC and CXX respectively, some other hard-coded part of the system forced them to "gcc-4.1" and "g++-4.1", which doesn't work on my distro (I hacked around it temporarily, just to get a build started). Are there plans to increase the use of autotools, and/or would patches aimed at this be welcomed? It would be nice if, in future, one could simply configure & build everything in the tree, including the parts currently supplied pre-built (assuming source is available).

On a more general note, since I haven't had a thorough look at the code yet (and at this point wouldn't know here to start), I'd like to ask how much of the back-end code - filesystem support, codecs, etc. - has been hand-rolled, and how much is taken from external libraries, since other than the obvious (SDL, OpenGL), the Linux port seems a bit thin on the ground in terms of external dependencies. Which may be a good thing, depending on the reasoning behind it. Big Grin

I don't actually have an xbox at the moment; my main interest in the project comes from experience with MythTV, which - at least in GUI terms - looks like something written in a weekend when compared to XBMC.
Reply
#2
Hi and welcome.

For a start, there's been some work done on the 64bit issues you identified here:

http://sourceforge.net/tracker/index.php...tid=581840

And yes, there may well be many issues where we're making dodgy assumptions regarding the length of pointers (and stuff like endianess!) simply due to the hardware platform we've come from.

Secondly, yes, we rely on some pre-built .so's under linux (those found in system/ as well as some found in visualisations/ and/or screensavers/) but the source is available to all of these (usually in docs/). The reason for these is somewhat historical - as you know we have been in a Xbox world for quite some time, where the ability to build the dll's hasn't been an issue (constant hardware platform). Some of these may need rebuilding for 64bit systems. We need to come up with a reasonable way to accomplish building these on demand - suggestions are welcome.

Yes, any and all patches will be considered - anything that makes it easier to develop especially Smile

There's not too much that's been handrolled in terms of codecs or filesystem stuff. In general we use the usual suspects (samba, libid3tag, libmad, ffmpeg etc.) for most stuff. Most of the code is (as always) in the glue that sticks it all together.

I suggest you get together with evetsso (the author of the above patch) and work on the 64bit stuff to begin with. Don't be afraid of stepping on toes - we're a pretty resilient bunch Wink

Cheers,
Jonathan
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.


Image
Reply
#3
Wink 
More discussions about building XBMC for 64-bit Linux (for AMD64 and Intel EMT64):
http://forum.xbmc.org/showthread.php?tid=27155
http://forum.xbmc.org/showthread.php?tid=27385

PS! Please checkout our WIKI for more information on XBMC's Linux port project and XBMC development in general:
http://www.xboxmediacenter.com/wiki/inde...rt_project
http://www.xboxmediacenter.com/wiki/inde...ource_code
http://www.xboxmediacenter.com/wiki/inde...ment_Notes

PPS! It is a WIKI (user maintainable documentation) so please feel free to help us update it Wink
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.
Reply
#4
mangobrain Wrote:Thirdly, the build system. I see some attempt has been made to move to an autotools-esque system, but this has not been fully realised. For example, despite the configure script detecting "gcc" and "g++" as CC and CXX respectively, some other hard-coded part of the system forced them to "gcc-4.1" and "g++-4.1", which doesn't work on my distro (I hacked around it temporarily, just to get a build started). Are there plans to increase the use of autotools, and/or would patches aimed at this be welcomed? It would be nice if, in future, one could simply configure & build everything in the tree, including the parts currently supplied pre-built (assuming source is available).

I noticed the same thing with gcc-4.1 and g++-4.1, and have submitted a patch for consideration, along with a few changes/enhancements to the configure.in system to support building on Fedora systems (but not 64 bit, sorry).
Reply
#5
Question 
Just curious, but why would you want to build XBMC for 64-bit? ...I mean XBMC is basicly designed to run as the only application on a dedicated computer/device (like a stand-alone HTPC machine), and preferably boot from a 'Live CD' type distro (but loader from a USB-key or harddrive instead of a CD), so why does it then matter if the Linux operating-system it runs on-top of is 32-bit or 64-bit? ...will it decode video faster in 64-bit mode or something?

Doesn't 64-bit Linux and 64-bit applications also require more RAM (memory)?, and is it not true today that there are less 64-bit applications/libraries out there than 32-bit, and also at the same time more bugs in those 64-bit applications/libraries than the 32-bit versions of those (all simply because 32-bit has been around longer and have a larger userbase, plus there are more developers who own 32-bit i386 based compusters than 64-bit AMD64/EMT64 based computers)?.

mangobrain Wrote:I noticed from the forums that it's a "known issue" that it won't compile on AMD64 hardware
You do know that all AMD64 and EMT64 based processors are backwards compatible to 32-bit, right?
Always read the XBMC online-manual, FAQ and search the forum before posting.
Do not e-mail XBMC-Team members directly asking for support. Read/follow the forum rules.
For troubleshooting and bug reporting please make sure you read this first.
Reply
#6
reason is if you have a 64bit os, you dont have those 32 bit libs around at all.....
Reply
#7
but then if your only dev machine is a x86 64bit why not just have the xbmc source in a 32bit chroot.
Reply
#8
well, still have to dupe those libs inside the chroot.

i fail to see why ppl making the necessary changes to compile 64bit is a bad thing. its not like its gonna hurt 32bit users
Reply

Logout Mark Read Team Forum Stats Members Help
Questions from an interested developer0