Linux Kodi for Linux 3.1.x porting to ARM Cortex A9 with NEON
#1
Hi guys

I'm new here this forum,
but I followed the progress of the ARM-linux porting work in here thru this forum's various posts, and I got really impressed.

here's the thing I wanna ask,
I'm trying to port XBMC on ARM cortex A9 with NEON processor,
and I'll use Linux-3.1.x series kernel.

I tried to find appropriate XBMC source code from this and that,
but I couldn't,
I found https://launchpad.net/~team-xbmc
and I figured there are various sources based on ubuntu series,

and I found this : https://github.com/xbmc/xbmc
and I clicked "Download ZIP", finally I could get 'xbmc-master.zip' file.

Can I use this one?
I just wanna know where the some precise src code is, which suit on my platform.

can anyone answer this question plz?
Reply
#2
yes, the github is the main repo and where you should source your files. but you should really not download a zip file, use git to clone the repo.
Reply
#3
I really appreciate your quick response @ironic_monkey
and here's what I wonder,
is there any specific repo for ARM cortex A9, and specific linux kernel version?
or everything is merged in that common src repo.

and I tried to cloning that github like below,
I failed. 'connection timed out' occurred, I don't know why. (and for the record, definitely my machine's connected to Internet).

wayne@wayne-laptop:~/Work/Src/kodi$ git clone git://github.com/xbmc/xbmc.git
Initialized empty Git repository in /home/wayne/Work/Src/kodi/xbmc/.git/
github.com[0: 192.30.252.131]: errno=Connection timed out
fatal: unable to connect a socket (Connection timed out)
wayne@wayne-laptop:~/Work/Src/kodi$


is there another way to get the appropriate src?
Reply
#4
And I could download some tar file from "https://launchpad.net/~team-xbmc/+archiv...ds&memo=75"

file name is "xbmc_13.2~git20140817.2155-final.orig.tar.gz" around 64MB size.
is this correct src for my platform?
Reply
#5
(2014-12-05, 02:46)wayne867 Wrote: is there any specific repo for ARM cortex A9, and specific linux kernel version?
or everything is merged in that common src repo.

This makes me wonder if you are up to this;

(2014-12-05, 02:46)wayne867 Wrote: I'm trying to port XBMC on ARM cortex A9 with NEON processor,
and I'll use Linux-3.1.x series kernel.
This task. (You are asking the wrong questions, and to be honest, if you are already stuck at cloning the repo...... )


Official repo atm can be run on;
Raspberry Pi (armv6)
Amlogic Meson1, 3, 6 and 8 (armv7)
Freescale i.MX6 (armv7)

But they all need their own linux kernel and filesystems, tweaks etc,
Reply
#6
(2014-12-05, 10:16)j1nx Wrote:
(2014-12-05, 02:46)wayne867 Wrote: is there any specific repo for ARM cortex A9, and specific linux kernel version?
or everything is merged in that common src repo.

This makes me wonder if you are up to this;

(2014-12-05, 02:46)wayne867 Wrote: I'm trying to port XBMC on ARM cortex A9 with NEON processor,
and I'll use Linux-3.1.x series kernel.
This task. (You are asking the wrong questions, and to be honest, if you are already stuck at cloning the repo...... )


Official repo atm can be run on;
Raspberry Pi (armv6)
Amlogic Meson1, 3, 6 and 8 (armv7)
Freescale i.MX6 (armv7)

But they all need their own linux kernel and filesystems, tweaks etc,

Thanks for the reply.
so you're saying, it only depends on cpu architecture, not on kernel version. right?

my one is based on armv7 as well, so I can use the "xbmc_13.2~git20140817.2155-final.orig.tar.gz" src pkg, right?

Thanks in advance.
Reply
#7
no, thats not what he said.
Reply
#8
(2014-12-05, 10:30)wayne867 Wrote: Thanks for the reply.
so you're saying, it only depends on cpu architecture, not on kernel version. right?

my one is based on armv7 as well, so I can use the "xbmc_13.2~git20140817.2155-final.orig.tar.gz" src pkg, right?

Thanks in advance.

No, that is not what I am saying.

Start by building your linux kernel to run on your box, supporting all your hardware.
Then use a minimalistic file system like buildroot or similar to have a CLI type of base system
Then work on getting a hardware accelerated FrameBuffer
Then work on creating the proper hardware accelerated video decoding libraries
Then fork the XBMC code and prepare it to work with those video decoding libraries
Then build XBMC to run on uour hardware accelerated framebuffer, utilizing the hardware accelrated video decoding
Then create a Pull Request to have that code flown back into the main branch.

Mission accomplished!
Reply
#9
Thank you for your comment
and to be honest, I don't follow what you talking. sorry I'm not familiar with this.

What I asked is,
1. is there any specific src pkg for specific platform?
2. if so, I wanted to know how I can get the src pkg without github way.
3. if not, can I use this "xbmc_13.2~git20140817.2155-final.orig.tar.gz" pkg for my implementation?

(2014-12-05, 10:35)j1nx Wrote: Then fork the XBMC code and prepare it to work with those video decoding libraries
Then build XBMC to run on uour hardware accelerated framebuffer, utilizing the hardware accelrated video decoding
Then create a Pull Request to have that code flown back into the main branch.

and you described total 7 steps what I have to do. I really appreciate this.
rest of them are already done by someone, and I want to focus on above XBMC things.
I want to cross-compile XBMC on my embedded box.

and I don't understand what last sentence saying.
could you be more specific for the last sentence?
Reply
#10
the clone issue is possibly a firewall. try using the https url instead.

see https://guides.github.com/ in particular https://guides.github.com/activities/con...en-source/
Reply
#11
(2014-12-05, 10:54)wayne867 Wrote: Thank you for your comment
and to be honest, I don't follow what you talking. sorry I'm not familiar with this.

What I asked is,
1. is there any specific src pkg for specific platform?
2. if so, I wanted to know how I can get the src pkg without github way.
3. if not, can I use this "xbmc_13.2~git20140817.2155-final.orig.tar.gz" pkg for my implementation?

1) No, all -in- one
2) My advise is to learn GIT
3) see 2

(2014-12-05, 10:54)wayne867 Wrote:
(2014-12-05, 10:35)j1nx Wrote: Then fork the XBMC code and prepare it to work with those video decoding libraries
Then build XBMC to run on uour hardware accelerated framebuffer, utilizing the hardware accelrated video decoding
Then create a Pull Request to have that code flown back into the main branch.

and you described total 7 steps what I have to do. I really appreciate this.
rest of them are already done by someone, and I want to focus on above XBMC things.
I want to cross-compile XBMC on my embedded box.

and I don't understand what last sentence saying.
could you be more specific for the last sentence?

The reason why I say; Learn GIT.

You pull in a lot of code from XBMC, make some adjustments to run it on your hardware. It is only fair to make sure you give back that code to the original developers, so other can also enjoy your work as well. If you are only going to use it yourself it is ofcourse not required, but as soon as you are going to release a binary of your work, you are required to release the source code anyway. It is a lot easier to do it right from the start by forking the XBMC code and work on a GIT server.
Reply
#12
Ok I really appreciate all you comments.
I'll try to find out why my linux machine doesn't work well with Github.

Thanks.

and I'll keep going on with that src pkgs as well.
Reply
#13
Don't use 13.2 source use current master source. 13.2 is outdated by 1 year (even if it is the latest stable release).

If you can't get git to work because of firewall or what not (though https should work as pointed out by ironic_monkey) - this is the source you want to use:

https://github.com/xbmc/xbmc/archive/master.zip
AppleTV4/iPhone/iPod/iPad: HowTo find debug logs and everything else which the devs like so much: click here
HowTo setup NFS for Kodi: NFS (wiki)
HowTo configure avahi (zeroconf): Avahi_Zeroconf (wiki)
READ THE IOS FAQ!: iOS FAQ (wiki)
Reply
#14
(2014-12-05, 13:00)Memphiz Wrote: Don't use 13.2 source use current master source. 13.2 is outdated by 1 year (even if it is the latest stable release).

If you can't get git to work because of firewall or what not (though https should work as pointed out by ironic_monkey) - this is the source you want to use:

https://github.com/xbmc/xbmc/archive/master.zip

I really appreciate your kind comment, this is exactly what I wanted.

Thanks.
Reply
#15
Hi

I tried to setup with updated src pkgs which is Memphis recommended.
I followed below guide which is in 'docs/README.linux'

Quote:./bootstrap
./configure <options>
make

bootstrap worked well.
and I faced some errors like below when I run ./configure with some options.

Quote:wayne@wayne-laptop:~/Work/Src/kodi/xbmc-master$
wayne@wayne-laptop:~/Work/Src/kodi/xbmc-master$
wayne@wayne-laptop:~/Work/Src/kodi/xbmc-master$
wayne@wayne-laptop:~/Work/Src/kodi/xbmc-master$ ./configure --host=arm-linux --build=arm-none-linux-gnu CC=/home/wayne/Work/Src/Toolchain/tools/arm/arm-

2012.09/bin/arm-none-linux-gnueabi-gcc ARCH=arm --enable-gles --enable-debug --enable-dependency-tracking --enable-neon
configure: WARNING: unrecognized options: --enable-neon
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
/bin/sh: /home/wayne/Work/Src/kodi/xbmc-master/build-aux/missing: No such file or directory
configure: WARNING: `missing' script is too old or missing
checking for arm-linux-strip... no
checking for strip... strip
configure: WARNING: using cross tools not prefixed with host triplet
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking build system type... arm-none-linux-gnu
checking host system type... arm-unknown-linux-gnu
checking for git... yes
checking for arm-linux-gcc... /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... yes
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc accepts -g... yes
checking for /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc... none
checking how to run the C preprocessor... /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc -E
checking for gcc... gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... (cached) none needed
checking dependency style of gcc... none
checking how to run the C preprocessor... gcc -E
checking for arm-linux-g++... no
checking for arm-linux-c++... no
checking for arm-linux-gpp... no
checking for arm-linux-aCC... no
checking for arm-linux-CC... no
checking for arm-linux-cxx... no
checking for arm-linux-cc++... no
checking for arm-linux-cl.exe... no
checking for arm-linux-FCC... no
checking for arm-linux-KCC... no
checking for arm-linux-RCC... no
checking for arm-linux-xlC_r... no
checking for arm-linux-xlC... no
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking dependency style of g++... none
checking how to run the C++ preprocessor... g++ -E
checking for g++... g++
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... yes
checking dependency style of g++... none
checking how to run the C++ preprocessor... g++ -E
checking for a sed that does not truncate output... /bin/sed
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for fgrep... /bin/grep -F
checking for ld used by /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc... /home/wayne/Work/Src/Toolchain/tools/arm/arm-

2012.09/arm-none-linux-gnueabi/bin/ld
checking if the linker (/home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/arm-none-linux-gnueabi/bin/ld) is GNU ld... yes
checking for BSD- or MS-compatible name lister (nm)... no
checking for arm-linux-dumpbin... no
checking for arm-linux-link... no
checking for dumpbin... no
checking for link... link -dump -symbols
checking the name lister (link -dump -symbols) interface... BSD nm
checking whether ln -s works... yes
checking the maximum length of command line arguments... 1572864
checking whether the shell understands some XSI constructs... yes
checking whether the shell understands "+="... yes
checking for /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/arm-none-linux-gnueabi/bin/ld option to reload object files... -r
checking for arm-linux-objdump... no
checking for objdump... objdump
checking how to recognize dependent libraries... pass_all
checking for arm-linux-ar... no
checking for ar... ar
checking for arm-linux-strip... strip
checking for arm-linux-ranlib... no
checking for ranlib... ranlib
checking command to parse link -dump -symbols output from /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc object... failed
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for dlfcn.h... yes
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking dependency style of g++... (cached) none
checking how to run the C++ preprocessor... g++ -E
checking for objdir... .libs
checking if /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc supports -fno-rtti -fno-exceptions... no
checking for /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc option to produce PIC... -fPIC -DPIC
checking if /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc PIC flag -fPIC -DPIC works... yes
checking if /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc static flag -static works... yes
checking if /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc supports -c -o file.o... yes
checking if /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc supports -c -o file.o... (cached) yes
checking whether the /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc linker (/home/wayne/Work/Src/Toolchain/tools/arm/arm-

2012.09/arm-none-linux-gnueabi/bin/ld) supports shared libraries... yes
checking whether -lc should be explicitly linked in... no
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
checking for ld used by g++... /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/arm-none-linux-gnueabi/bin/ld
checking if the linker (/home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/arm-none-linux-gnueabi/bin/ld) is GNU ld... yes
checking whether the g++ linker (/home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/arm-none-linux-gnueabi/bin/ld) supports shared libraries... yes
checking for g++ option to produce PIC... -fPIC -DPIC
checking if g++ PIC flag -fPIC -DPIC works... yes
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking if g++ supports -c -o file.o... (cached) yes
checking whether the g++ linker (/home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/arm-none-linux-gnueabi/bin/ld) supports shared libraries... yes
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
checking for gawk... (cached) gawk
checking whether ln -s works... yes
checking whether make sets $(MAKE)... (cached) yes
checking for arm-linux-pkg-config... no
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for working alloca.h... yes
checking for alloca... yes
checking for uid_t in sys/types.h... yes
checking for unistd.h... (cached) yes
checking for working chown... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking whether closedir returns void... yes
checking for error_at_line... yes
checking for _LARGEFILE_SOURCE value needed for large files... no
checking whether /home/wayne/Work/Src/Toolchain/tools/arm/arm-2012.09/bin/arm-none-linux-gnueabi-gcc needs -traditional... no
checking whether lstat correctly handles trailing slash... no
checking whether lstat accepts an empty string... yes
checking whether lstat correctly handles trailing slash... (cached) no
checking for working memcmp... no
checking whether time.h and sys/time.h may both be included... yes
checking for sys/time.h... yes
checking for unistd.h... (cached) yes
checking for stdlib.h... (cached) yes
checking for sys/param.h... yes
checking for utime.h... yes
checking for alarm... yes
checking for working mktime... no
checking for getpagesize... yes
checking for working mmap... no
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking types of arguments for select... int,fd_set *,struct timeval *
checking return type of signal handlers... void
checking whether stat accepts an empty string... yes
checking for working strcoll... no
checking for strftime... yes
checking for working strtod... no
checking for pow... no
checking for pow in -lm... yes
checking whether utime accepts a null argument... guessing yes
checking for vprintf... yes
checking for _doprnt... no
checking for atexit... yes
checking for dup2... yes
checking for fdatasync... yes
checking for floor... no
checking for fs_stat_dev... no
checking for ftime... yes
checking for ftruncate... yes
checking for getcwd... yes
checking for gethostbyaddr... yes
checking for gethostbyname... yes
checking for gethostname... yes
checking for getpagesize... (cached) yes
checking for getpass... yes
checking for gettimeofday... yes
checking for inet_ntoa... yes
checking for lchown... yes
checking for localeconv... yes
checking for memchr... yes
checking for memmove... yes
checking for memset... yes
checking for mkdir... yes
checking for modf... yes
checking for munmap... yes
checking for pow... (cached) no
checking for rmdir... yes
checking for select... yes
checking for setenv... yes
checking for setlocale... yes
checking for socket... yes
checking for sqrt... no
checking for strcasecmp... yes
checking for strchr... yes
checking for strcspn... yes
checking for strdup... yes
checking for strerror... yes
checking for strncasecmp... yes
checking for strpbrk... yes
checking for strrchr... yes
checking for strspn... yes
checking for strstr... yes
checking for strtol... yes
checking for strtoul... yes
checking for sysinfo... yes
checking for tzset... yes
checking for utime... yes
checking for posix_fadvise... yes
checking for localtime_r... yes
checking size of int... 4
checking size of size_t... 4
checking for __sync_add_and_fetch(temp, 1)... yes
checking for __sync_sub_and_fetch(temp, 1)... yes
checking for __sync_val_compare_and_swap(temp, 1, 1)... yes
checking for std::u16string... no
checking for std::u32string... no
checking for char16_t... no
checking for char32_t... no
checking size of wchar_t... 0
checking sys/inotify.h usability... yes
checking sys/inotify.h presence... yes
checking for sys/inotify.h... yes
checking boost/shared_ptr.hpp usability... no
checking boost/shared_ptr.hpp presence... yes
configure: WARNING: boost/shared_ptr.hpp: present but cannot be compiled
configure: WARNING: boost/shared_ptr.hpp: check for missing prerequisite headers?
configure: WARNING: boost/shared_ptr.hpp: see the Autoconf documentation
configure: WARNING: boost/shared_ptr.hpp: section "Present But Cannot Be Compiled"
configure: WARNING: boost/shared_ptr.hpp: proceeding with the compiler's result
configure: WARNING: ## ------------------------------------ ##
configure: WARNING: ## Report this to http://issues.kodi.tv ##
configure: WARNING: ## ------------------------------------ ##
checking for boost/shared_ptr.hpp... no
configure: error: Could not find a required library. Please see the README for your platform.
wayne@wayne-laptop:~/Work/Src/kodi/xbmc-master$

I am running this on my Ubuntu 10.04 machine, and I want to cross-compile it for my target board.
I think I already installed every necessary libraries which is guided in 'docs/README.linux' file.
so.. I have no idea why this err occurs.

could you plz give any comment for this err?
Reply

Logout Mark Read Team Forum Stats Members Help
Kodi for Linux 3.1.x porting to ARM Cortex A9 with NEON0