sebt3
homebrew player (P. & C.)
Hi boys,
In the last month, I tried to bring a chromium pnd (with ssl and vp8), but now I don't know what the next step to finaly manage my target.
As I hope someone will manage to get it working, I'll leave here all I can remember to help the next guy.
You'll need DJWillis toolchain. I tried with cpasjuste one, without success.
We will start by building the target installation (you can use an other directory if you want) :
Now fix /mnt/utmp/chromium/lib/pkg_config/ns*.pc (give actual paths).
This is the cheat version to get nss and nspr on board. I do have tried to build my own. But that didn't helped much so and nss is a s**t to cross-compile (nspr is very easy in comparaison).
There is some more dependency, but they all are already in the pandora. So you just need to opkg-target install these.
You'll need to setup a "few" environement stuff :
I unset PKG_CONFIG_SYSROOT_DIR because I messed with my *.pc files before even have a look on how djwillis have done his toolkit a few others have followed my path as I posted this somewhere else on these boards. sorry.
If you didn't then don't unset this obviously and a few(2) symlinks will be needed too.
I'm using function to alias the build command as I was tired to look in my history
The current svn is working, but I'll describe how to build a given revision known to work : 50986
Install depot_tools :
Then get this build :
Apply (manually ) this patch : (to work around the fact gg use a deprecated API)
If the gclient scync succeded, then you're ready to build :
About one hour later (if every thing have gone right) the build is done and you can finish the PND :
Create the PXML file and package. you're done.
Here is my version.
As you can see it don't render things well
If some one point me out why, I'll gladly finish this.
This PND don't write on the nand, but I did cheat as the config files finish in /tmp as a socket and a symlink get creating in this directory.
The last thing to do is to patch this (should be easy as it's in "src/app/app_paths.cc" or in "src/chrome/common/chrome_paths_linux.cc")
In the last month, I tried to bring a chromium pnd (with ssl and vp8), but now I don't know what the next step to finaly manage my target.
As I hope someone will manage to get it working, I'll leave here all I can remember to help the next guy.
You'll need DJWillis toolchain. I tried with cpasjuste one, without success.
We will start by building the target installation (you can use an other directory if you want) :
Code:
mkdir /mnt/utmp/chromium
cd /tmp
wget http://www.angstrom-distribution.org/unstable/feed/armv7a/base/nspr-dev_4.7.1-r1.5_armv7a.ipk
wget http://www.angstrom-distribution.org/unstable/feed/armv7a/base/nspr_4.7.1-r1.5_armv7a.ipk
wget http://www.angstrom-distribution.org/unstable/feed/armv7a/base/nss-dev_3.12.6-r2.5_armv7a.ipk
wget http://www.angstrom-distribution.org/unstable/feed/armv7a/base/nss_3.12.6-r2.5_armv7a.ipk
cd /mnt/utmp/chromium
for i in /tmp/ns*_armv7a.ipk;do ar p $i data.tar.gz|tar xzf -;done
mv usr/include usr/lib .
rm -rf usr
This is the cheat version to get nss and nspr on board. I do have tried to build my own. But that didn't helped much so and nss is a s**t to cross-compile (nspr is very easy in comparaison).
There is some more dependency, but they all are already in the pandora. So you just need to opkg-target install these.
You'll need to setup a "few" environement stuff :
Code:
. /usr/local/angstrom/arm/environment-setup
export CXXFLAGS="-I$SDK_PATH/$TARGET_SYS/usr/include" LDFLAGS="-L$SDK_PATH/$TARGET_SYS/usr/lib -Wl,-rpath,$SDK_PATH/$TARGET_SYS/usr/lib"
export PKG_CONFIG_PATH=$SDK_PATH/$TARGET_SYS/usr/lib/pkgconfig
unset PKG_CONFIG_SYSROOT_DIR
export CROSSTOOL="$SDK_PATH/bin/$TARGET_SYS"
export CXX=$CROSSTOOL-g++ CC=$CROSSTOOL-gcc AR=$CROSSTOOL-ar AS=$CROSSTOOL-as RANLIB=$CROSSTOOL-ranlib
export HOST_CC=gcc HOST_CXX=g++
export GYP_DEFINES="build_ffmpegsumo=1 javascript_engine=v8 werror= use_system_sqlite=0 no_strict_aliasing=1 gcc_version=43 target_arch=arm use_system_ssl=0 disable_nacl=1 linux_use_tcmalloc=0 armv7=1 arm_thumb=0 use_system_libxslt=1 use_system_libxml=1"
setprj() {
PRJ=$1
cat <<END
export PRJ=$PRJ;
export LDFLAGS="$LDFLAGS -L/mnt/utmp/$PRJ/lib" CXXFLAGS="$CXXFLAGS -I/mnt/utmp/$PRJ/include" PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/mnt/utmp/$PRJ/lib/pkgconfig"
END
}
build_verbose(){
make V=1 BUILDTYPE=Release chrome
}
build_fast() {
make -j3 BUILDTYPE=Release chrome
}
update_makefiles() {
python build/gyp_chromium --no-circular-check build/all.gyp
}
eval $(setprj chromium)
If you didn't then don't unset this obviously and a few(2) symlinks will be needed too.
I'm using function to alias the build command as I was tired to look in my history
The current svn is working, but I'll describe how to build a given revision known to work : 50986
Install depot_tools :
Code:
mkdir prj_root; cd prj_root
svn co http://src.chromium.org/svn/trunk/tools/depot_tools
export PATH=`pwd`/depot_tools:"$PATH"
Code:
gclient sync -r 50986
cd src/third_party/ffmpeg/
svn up -r 51511
Code:
--- a/libavformat/avio.h 2010-07-02 03:58:03.000000000 -0600
+++ b/libavformat/avio.h 2010-07-08 09:44:45.000000000 -0600
@@ -277,7 +277,7 @@
/**
* @deprecated Use av_register_protocol2() instead.
*/
-attribute_deprecated int av_register_protocol(URLProtocol *protocol);
+/*attribute_deprecated*/ int av_register_protocol(URLProtocol *protocol);
#endif
/**
If the gclient scync succeded, then you're ready to build :
Code:
cd ../.. # to : prj_root/src
update_makefiles&&build_fast||build_verbose
About one hour later (if every thing have gone right) the build is done and you can finish the PND :
Code:
DEST=/mnt/utmp/chromium
for i in chrome chrome.pak chrome-wrapper ffmpegsumo_nolink genmacro genmodule genstring genperf genversion libffmpegsumo.so gfx_unittests lib.target locales obj obj.target product_logo_48.png protoc pyproto re2c resources resources.pak xdg-settings yasm;do
cp -Rapf src/out/Release/$i $DEST
done
find $DEST -name "*.d" -delete
find $DEST -name "*.o" -delete
find $DEST -name "*.a" -delete
find $DEST -name "*.cpp" -delete
find $DEST -name "*.h" -delete
find $DEST -name "*.cc" -delete
#cp $DEST/product_logo_48.png icon.png
Create the PXML file and package. you're done.
Here is my version.
As you can see it don't render things well
If some one point me out why, I'll gladly finish this.
This PND don't write on the nand, but I did cheat as the config files finish in /tmp as a socket and a symlink get creating in this directory.
The last thing to do is to patch this (should be easy as it's in "src/app/app_paths.cc" or in "src/chrome/common/chrome_paths_linux.cc")