Permalink
Browse files

[arm] merge arm-camelot into trunk, thanks to mcgeagh for all his har…

…d working getting arm platform rolling

git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@30281 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
  • Loading branch information...
1 parent 7c8f29a commit 07e5742b33364530dcb27835d7d62eeb84b07c95 davilla committed May 18, 2010
Showing with 6,393 additions and 195 deletions.
  1. +27 −12 Makefile.in
  2. +274 −0 README.armel
  3. +57 −1 configure.in
  4. +11 −1 guilib/FrameBufferObject.cpp
  5. +6 −1 guilib/FrameBufferObject.h
  6. +27 −0 guilib/GUIFontTTF.cpp
  7. +1 −4 guilib/GUIFontTTF.h
  8. +37 −1 guilib/GUIFontTTFGL.cpp
  9. +0 −82 guilib/GUIFontTTFGLES.cpp
  10. +93 −0 guilib/GUIShader.cpp
  11. +35 −21 guilib/{GUIFontTTFGLES.h → GUIShader.h}
  12. +205 −6 guilib/GUITextureGLES.cpp
  13. +7 −2 guilib/GUITextureGLES.h
  14. +2 −1 guilib/Makefile.in
  15. +304 −0 guilib/MatrixGLES.cpp
  16. +69 −0 guilib/MatrixGLES.h
  17. +11 −5 guilib/Shader.cpp
  18. +12 −6 guilib/TextureGL.cpp
  19. +33 −0 guilib/system.h
  20. +1 −0 language/English/strings.xml
  21. +28 −0 system/shaders/guishader_frag.glsl
  22. +18 −0 system/shaders/guishader_vert.glsl
  23. +19 −0 system/shaders/yuv2rgb_basic_gles.glsl
  24. +35 −0 system/shaders/yuv2rgb_bob_gles.glsl
  25. +18 −0 system/shaders/yuv2rgb_vertex_gles.glsl
  26. +173 −0 tools/Linux/FEH-ARM.py
  27. +6 −0 tools/TexturePacker/XBMCTex.cpp
  28. +41 −0 tools/arm/arm-scripts/create-pkgsfile.sh
  29. +54 −0 tools/arm/arm-scripts/create-xbmcfile.sh
  30. +18 −0 tools/arm/arm-scripts/gcc4.5-paths.txt
  31. +61 −0 tools/arm/arm-scripts/install-pkgs.sh
  32. +70 −0 tools/arm/arm-scripts/pkg-paths.txt
  33. +1 −1 xbmc/Application.cpp
  34. +14 −0 xbmc/FileSystem/File.cpp
  35. +3 −0 xbmc/FileSystem/File.h
  36. +4 −1 xbmc/GUISettings.cpp
  37. +2 −0 xbmc/Makefile.in
  38. +5 −5 xbmc/MathUtils.h
  39. +4 −2 xbmc/MusicInfoTagLoaderMP3.cpp
  40. +2 −1 xbmc/RenderSystem.h
  41. +543 −0 xbmc/RenderSystemGLES.cpp
  42. +90 −0 xbmc/RenderSystemGLES.h
  43. +71 −1 xbmc/SlideShowPicture.cpp
  44. +7 −4 xbmc/Util.cpp
  45. +2 −1 xbmc/WinSystem.h
  46. +450 −0 xbmc/WinSystemEGL.cpp
  47. +77 −0 xbmc/WinSystemEGL.h
  48. +5 −0 xbmc/WindowingFactory.h
  49. +6 −0 xbmc/addons/AddonManager.cpp
  50. +1 −1 xbmc/cores/DllLoader/DllLoader.h
  51. +1 −1 xbmc/cores/DllLoader/ldt_keeper.c
  52. +1,581 −0 xbmc/cores/VideoRenderers/LinuxRendererGLES.cpp
  53. +241 −0 xbmc/cores/VideoRenderers/LinuxRendererGLES.h
  54. +1 −0 xbmc/cores/VideoRenderers/Makefile.in
  55. +2 −2 xbmc/cores/VideoRenderers/OverlayRenderer.cpp
  56. +124 −2 xbmc/cores/VideoRenderers/OverlayRendererGL.cpp
  57. +3 −1 xbmc/cores/VideoRenderers/OverlayRendererGL.h
  58. +4 −0 xbmc/cores/VideoRenderers/RenderManager.cpp
  59. +4 −0 xbmc/cores/VideoRenderers/RenderManager.h
  60. +6 −1 xbmc/cores/VideoRenderers/VideoShaders/VideoFilterShader.cpp
  61. +1 −1 xbmc/cores/VideoRenderers/VideoShaders/VideoFilterShader.h
  62. +39 −5 xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.cpp
  63. +35 −1 xbmc/cores/VideoRenderers/VideoShaders/YUV2RGBShader.h
  64. +11 −0 xbmc/cores/dvdplayer/Codecs/Makefile.in
  65. +12 −0 xbmc/cores/dvdplayer/DVDCodecs/DVDFactoryCodec.cpp
  66. +1,089 −0 xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecOpenMax.cpp
  67. +114 −0 xbmc/cores/dvdplayer/DVDCodecs/Video/DVDVideoCodecOpenMax.h
  68. +1 −0 xbmc/cores/dvdplayer/DVDCodecs/Video/Makefile.in
  69. +1 −1 xbmc/karaoke/karaokelyricscdg.cpp
  70. +8 −0 xbmc/lib/libPython/XBPython.cpp
  71. +8 −2 xbmc/lib/libPython/XBPythonDllFuncs.S
  72. +5 −1 xbmc/lib/libPython/linux/Makefile.in
  73. +4 −0 xbmc/lib/libsquish/Makefile.in
  74. +1 −1 xbmc/linux/PlatformDefs.h
  75. +39 −1 xbmc/utils/Atomics.cpp
  76. +1 −1 xbmc/utils/Atomics.h
  77. +9 −9 xbmc/utils/LockFree.cpp
  78. +2 −2 xbmc/utils/LockFree.h
  79. +1 −1 xbmc/utils/fastmemcpy.h
  80. +5 −2 xbmc/utils/log.cpp
View
@@ -65,7 +65,7 @@ DVDPCODECS_DIRS= \
xbmc/cores/dvdplayer/Codecs/libdvd \
xbmc/cores/dvdplayer/Codecs/libbdnav
ifneq (@USE_EXTERNAL_LIBASS@,1)
- DVDPCODECS_DIRS+=lib/libass/xbmc
+DVDPCODECS_DIRS+=lib/libass/xbmc
endif
PAPCODECS_DIRS= \
@@ -162,7 +162,9 @@ configure: configure.in
# skin textures
skins: tools/TexturePacker/TexturePacker force
+ifneq (arm, $(ARCH))
$(MAKE) -C $(CONFLUENCE_MEDIA)
+endif
$(MAKE) -C $(PM3HD_MEDIA)
guilib/guilib.a: force
@@ -305,6 +307,7 @@ exports:
dllloader: exports
$(MAKE) xbmc/cores/DllLoader/dllloader.a
visualizations: exports
+ifneq (arm, $(ARCH))
$(MAKE) -C xbmc/visualizations/OpenGLSpectrum
$(MAKE) -C xbmc/visualizations/WaveForm
$(MAKE) -C xbmc/visualizations/XBMCProjectM
@@ -316,8 +319,11 @@ ifeq ($(or $(findstring powerpc-linux,$(ARCH)),$(findstring powerpc64-linux,$(AR
$(MAKE) -C xbmc/visualizations/Goom
endif
endif
+endif
screensavers: exports
+ifneq (arm, $(ARCH))
$(MAKE) -C xbmc/screensavers/rsxs-0.9/xbmc
+endif
libpython: dllloader
$(MAKE) -C xbmc/lib/libPython
$(MAKE) -C xbmc/lib/libPython/xbmcmodule
@@ -354,11 +360,11 @@ endif
$(MAKE) -C xbmc/cores/paplayer/SIDCodec
ifeq (@USE_ASAP_CODEC@,1)
ifneq ($(findstring osx,$(ARCH)), osx)
- $(MAKE) -C xbmc/cores/paplayer/asap asap-xbmc
+ $(MAKE) -C xbmc/cores/paplayer/asap asap-xbmc
endif
endif
$(MAKE) -C xbmc/cores/paplayer/YMCodec/StSoundLibrary
-ifeq ($(or $(findstring powerpc,$(ARCH)),$(findstring x86_64-linux,$(ARCH))),)
+ifeq ($(or $(findstring powerpc,$(ARCH)),$(findstring x86_64-linux,$(ARCH)),(arm, $(ARCH))),)
$(MAKE) -C xbmc/cores/paplayer/SPCCodec/SNES/SNESAPU
endif
imagelib: dllloader
@@ -418,7 +424,6 @@ OBJSXBMC= \
xbmc/FileSystem/MusicDatabaseDirectory/musicdatabasedirectory.a \
xbmc/FileSystem/VideoDatabaseDirectory/videodatabasedirectory.a \
xbmc/karaoke/karaoke.a \
- xbmc/lib/libhts/libhts.a \
xbmc/lib/libPython/xbmcmodule/xbmcmodule.a \
xbmc/lib/libRTMP/librtmp.a \
xbmc/lib/libscrobbler/scrobbler.a \
@@ -432,6 +437,7 @@ OBJSXBMC= \
xbmc/lib/sqLite/sqllite.a \
xbmc/lib/libsquish/libsquish-@ARCH@.a \
xbmc/lib/libapetag/.libs/libapetag.a \
+ lib/xbmc-dll-symbols/dll-symbols.a \
xbmc/settings/settings.a
ifeq (@HAVE_XBMC_NONFREE@,1)
@@ -440,13 +446,11 @@ OBJSXBMC+= \
xbmc/lib/UnrarXLib/UnrarXLib.a
endif
-DYNOBJSXBMC= \
- xbmc/lib/cmyth/libcmyth/libcmyth.a \
- xbmc/lib/cmyth/librefmem/librefmem.a \
- xbmc/linux/linux.a \
- xbmc/utils/utils.a \
- xbmc/cores/DllLoader/exports/util/exports_utils.a \
- xbmc/cores/DllLoader/exports/exports.a
+ifneq (arm, $(ARCH))
+# Can't include libhts for arm due to GPLv3
+OBJSXBMC+= \
+ xbmc/lib/libhts/libhts.a
+endif
# platform dependend objects
ifeq ($(findstring osx,$(ARCH)), osx)
@@ -460,7 +464,18 @@ OBJSXBMC += \
xbmc/posix/posix.a
endif
-OBJSXBMC += lib/xbmc-dll-symbols/dll-symbols.a
+DYNOBJSXBMC= \
+ xbmc/lib/cmyth/libcmyth/libcmyth.a \
+ xbmc/lib/cmyth/librefmem/librefmem.a \
+ xbmc/linux/linux.a \
+ xbmc/utils/utils.a \
+ xbmc/cores/DllLoader/exports/util/exports_utils.a \
+ xbmc/cores/DllLoader/exports/exports.a
+
+ifeq (arm, $(ARCH))
+# Force external python2.5 for now!
+LIBS +=-lpython2.5
+#endif
xbmc.bin: $(OBJSXBMC) $(DYNOBJSXBMC)
ifeq ($(findstring osx,$(ARCH)), osx)
View
@@ -0,0 +1,274 @@
+TOC
+1. Introduction
+2. Using Scratchbox
+ 2.1 Automatic Installation
+ 2.2 Manual Installation
+ 2.3 Installation Continued for both Automatic and Manual Methods
+ 2.4 Setup Scratchbox
+3. Getting the source code
+4. Installing the required ARMEL packages
+5. Obtaining the SGX files
+6. How to compile
+ 6.1 Configure & Make
+ 6.2 Install
+7. How to run
+ 7.1 Obtaining the Packages
+ 7.2 Installing the Files
+ 7.3 Running XBMC
+8. Troubleshooting
+
+
+-----------------------------------------------------------------------------
+1. Introduction
+-----------------------------------------------------------------------------
+
+This is a port of XBMC for use on ARM Architecture.
+As this is not an official version of XBMC, in-depth testing on various setups has not been done. USE WITH CAUTION!
+For the purpose of this port, the following Hardware and Software was used.
+Software: Scratchbox (cross-compiler) on a Linux (Ubuntu) machine.
+Hardware: BeagleBoard (ARM Cortex-A8 with IMG POWERVR SGX).
+The source code is based on XBMC for Linux - version 9.11 (Camelot).
+
+All lines that are prefixed with the '$' character are commands that need to be typed into a standard linux terminal
+All lines that are prefixed with the '>' character are commands that need to be typed into scratchbox
+All lines that are prefixed with the '#' character are commands that need to be typed into a terminal on the beagleboard
+
+
+-----------------------------------------------------------------------------
+2. Using Scratchbox
+-----------------------------------------------------------------------------
+
+First, you need scratch box, along with some other packages.
+The easiest way is to do the following automatic installation.
+If you dont succeed, or want to do it manually, follow the next step instead.
+
+ -----------------------------------------------------------------------------
+ 2.1 Automatic Installation:
+ -----------------------------------------------------------------------------
+
+ $ sudo gedit /etc/apt/sources.list
+
+ Add this to the end of the file, then save and exit gedit:
+ deb http://scratchbox.org/debian stable main
+ deb http://scratchbox.org/debian legacy main
+
+ Now enter the following command:
+ $ sudo apt-get install scratchbox-core scratchbox-libs scratchbox-devkit-cputransp scratchbox-devkit-git scratchbox-devkit-mtd scratchbox-devkit-perl scratchbox-devkit-doctools scratchbox-toolchain-arm-linux-cs2007q3-51sb3 scratchbox-toolchain-host-gcc scratchbox-devkit-debian
+
+ -----------------------------------------------------------------------------
+ 2.2 Manual Installation:
+ -----------------------------------------------------------------------------
+
+ Go to the following website:
+ http://www.scratchbox.org/download/files/sbox-releases/stable/tarball/
+ and download the following files (Unless specified, choose latest version):
+ - core
+ - libs
+ - cputransp
+ - doctools
+ - git
+ - mtd
+ - perl
+ - toolchain (cs2007q3-51sb3)
+ - host-gcc
+ - debian
+
+ To install
+ $ cd /
+ $ sudo tar xvf /<location of files>/scratchbox-core.tar.gz
+
+ Repeat for all the downloaded files.
+
+ -----------------------------------------------------------------------------
+ 2.3 Installation Continued for both Automatic and Manual Methods:
+ -----------------------------------------------------------------------------
+
+ Now, a few changes needs to me made in order for it to work correctly:
+ $ sudo gedit /etc/sysctl.conf
+
+ Change/Add these variables:
+ vm.mmap_min_addr = 4096
+ vm.vdso_enabled = 0
+ Save and Close.
+
+ Add yourself to scratchbox:
+ $ sb-adduser <username>
+
+ Make sure it worked by doing the following command, and see if sbox is listed.
+ $ groups
+
+ If it isnt listed, restart and try again. If it still isnt listed, then do the following:
+ $ usermod -a -G sbox <username>
+
+ It should now list (possibly after another logout)
+ Now you have access to scratchbox.
+
+ -----------------------------------------------------------------------------
+ 2.4 Setup Scratchbox:
+ -----------------------------------------------------------------------------
+
+ Before setting up your target, you need a rootstrap. Obtain the latest rootstrap from:
+ http://linux.onarm.com/download/images/generic-X/
+ You want to download the file 'beagleboard-<date>-rootstrap.tar.gz'.
+
+ Do this every time you want to access scratchbox:
+ $ /scratchbox/login
+
+ Time to setup your target:
+ > sb-menu
+
+ A GUI will appear for the setup procedure.
+ - Choose Setup
+ - Create a NEW target, give it any name
+ - Select the compiler you downloaded (arm-linux-cs2007q3-51sb3)
+ - Select all development kits listed by highlighting each one and pressing enter, then Done and enter
+ - Select CPU transparency (qemu-arm-cvs-m)
+ - Yes to rootstrap. Locate the previously downloaded rootstrap to install.
+ - Yes to install files
+ - Only select DEVKIT and ETC. Remove all other files in list, then continue
+ - And finally Yes to selecting target.
+
+ Now scratchbox is setup
+
+
+-----------------------------------------------------------------------------
+3. Getting the source code
+-----------------------------------------------------------------------------
+
+ $ sudo apt-get install subversion
+ $ cd /scratchbox/users/<username>/home/<username>/
+ $ svn checkout https://xbmc.svn.sourceforge.net/svnroot/xbmc/branches/xbmc_on_arm
+
+
+-----------------------------------------------------------------------------
+4. Installing the required ARMEL packages
+-----------------------------------------------------------------------------
+
+There is a simple shell script that downloads a list of packages that are required and installs them into scratchbox.
+
+ > cd tools/arm/arm-scripts/
+ > ./install-pkgs.sh
+
+Please check the output files for any possible errors that may have occured.
+
+Note. You will need the headers and shared object files for EGL and GLESv2 to continue.
+
+
+-----------------------------------------------------------------------------
+5. Obtaining the SGX files
+-----------------------------------------------------------------------------
+
+In order to continue, you will need the SGX SDK from TI's website.
+Once you have installed said SDK on a standard Linux machine, copy the neccessary .h and .so files to the appropriate directories in scratchbox:
+e.g /scratchbox/users/<username>/targets/<target_name>/usr/include/EGL/egl.h
+These files will also need to be transferred over to the board eventually.
+NOTE: XBMC has only been tested with the following versions of the OMAP35x Graphics SDK:
+3.00.00.05, 3.00.00.06, 3.00.00.08, 3.00.00.09
+
+
+-----------------------------------------------------------------------------
+6. How to compile
+-----------------------------------------------------------------------------
+
+To create the XBMC executable manually perform these following steps:
+
+ -----------------------------------------------------------------------------
+ 6.1 Configure & Make:
+ -----------------------------------------------------------------------------
+
+ $ ./bootstrap
+ > ./configure --enable-gles
+
+ This will configure XBMC inside scratchbox ready for compilation on ARM.
+ Because the default is to build for OpenGL, we require the --enable-gles flag to be set for OpenGL ES 2.0.
+ (Note: No OpenGL ES 1.x available)
+ Now, build with the following:
+
+ > make
+
+ -----------------------------------------------------------------------------
+ 6.2 Install:
+ -----------------------------------------------------------------------------
+
+ There is no need to do 'make install' as we dont want it installed into scratchbox.
+ There is also the slight problem of the fact that scratchbox's 'find' command is outdated and wont execute xbmc's 'make install' correctly.
+ Instead, use the provided shell script:
+ > cd /tools/arm/arm-scripts/
+ > ./create-xbmcfile.sh
+
+ This will create a tar file tools/arm/arm-scripts/xbmc.tar.bz2 containing the xbmc files, ready for you to transfer to the board.
+
+
+-----------------------------------------------------------------------------
+7. How to run
+-----------------------------------------------------------------------------
+
+It is assumed you have a beagleboard with all the neccessary hardware installed.
+(e.g keyboard, mouse, and ethernet adapter)
+It is also assumed that you have it setup with either Angstrom or Ubuntu.
+
+ -----------------------------------------------------------------------------
+ 7.1 Obtaining the Packages:
+ -----------------------------------------------------------------------------
+
+ For Ubuntu: See README.linux for list of packages to install.
+ The known packages not to work are: libfaac-dev (use libfaad-dev instead)
+ If planning on not extracting the pkgs file, a few additional packages are required to be installed.
+ These are python and liblzo2
+
+ For Angstrom:
+ # opkg update
+ # opkg install subversion make g++ gcc gawk pmount libtool automake gperf unzip bison libsdl-1.2-dev libsdl-image-1.2-dev libsdl-gfx-dev libsdl-mixer-1.2-dev libfribidi-dev liblzo-dev libfreetype-dev libsqlite3-dev libasound2 python-sqlite3 libcurl4 xineramaproto-dev libxinerama-dev libxrandr-dev libxrender-dev libmad-dev libogg-dev libvorbis-dev libmysqlclient-dev libpcre-dev libdbus-glib-1-dev hal-dev libjasper-dev libfontconfig-dev boost-dev libfaac-dev libxt-dev libxmu-dev libpng-dev libjpeg-dev libsamplerate0-dev
+
+ Unfortunately this will only install the packages that are available through opkg. There will be further packages that need to be installed.
+ Either use the method mentioned below, or selectively find and install packages, mentioned at the bottom of this README.
+
+ Alternatively, do the following:
+ First make sure you have done section 4. then do the following:
+ > cd xbmc_on_arm/arm-scripts/
+ > ./create-pkgsfile.sh
+
+ This will create a tar file xbmc_on_arm/arm-scripts/pkgs.tar.bz2 containing the packages, ready for you to transfer to the board.
+
+ -----------------------------------------------------------------------------
+ 7.2 Installing the Files:
+ -----------------------------------------------------------------------------
+
+ Transfer the file(s), armel-pkgs.tar.bz2 (if using alternative method mentioned above) and xbmc.tar.bz2 to the beagleboard.
+ Do the following to extract them:
+ # tar xjf armel-pkgs.tar.bz2 -C /
+ # tar xjf xbmc.tar.bz2 -C /usr/
+
+ After this initial setup, during development, you should only need to replace /usr/share/xbmc/xbmc.bin with the newly created binary.
+
+ -----------------------------------------------------------------------------
+ 7.3 Running XBMC:
+ -----------------------------------------------------------------------------
+
+ Now, run XBMC by executing the binary:
+ # /usr/share/xbmc/xbmc.bin
+
+ Run the binary and not the script as the script will fail.
+
+
+-----------------------------------------------------------------------------
+8. Troubleshooting
+-----------------------------------------------------------------------------
+
+If it fails to run correctly, there are a few things to try out.
+First, is there any helpful output on the terminal?
+Check the log file, usually located ~/.xbmc/temp/xbmc.log
+It may have failed because of a missing package.
+If so, you will need to download the appropriate armel package from packages.debian.org,
+Extract the files with the command: dpkg-deb -x packagename.deb /path/to/extract/to
+Then tarball the extracted files: tar cjf pkg.tar.bz2 /path/to/extracted/files
+Then transfer them to the board, and extract: tar xjf pkg.tar.bz2
+This is because the .deb files cannot be extracted in Angstrom.
+
+If this is not the case, try various different parameters for xbmc.bin such as:
+xbmc.bin --standalone
+xbmc.bin -p
+xbmc.bin -fs
+Or build with debug for a more in-depth xbmc.log file by ommitting the line --disable-debug on configure.
+
+Feel free to contact me on mcgeagh@xbmc.org
Oops, something went wrong.

0 comments on commit 07e5742

Please sign in to comment.