| # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| EAPI=2 |
| |
| # added eutils to patch |
| inherit toolchain-funcs eutils flag-o-matic |
| |
| DESCRIPTION="O3D Plugin" |
| HOMEPAGE="http://code.google.com/p/o3d/" |
| SRC_URI="http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/${PN}-svn-${PV}.tar.gz" |
| LICENSE="BSD" |
| SLOT="0" |
| KEYWORDS="amd64 arm x86" |
| IUSE="aura opengl opengles" |
| DEPEND="dev-libs/nss |
| media-libs/fontconfig |
| opengl? ( media-libs/glew ) |
| net-misc/curl |
| opengles? ( virtual/opengles ) |
| x11-libs/cairo |
| x11-libs/gtk+" |
| RDEPEND="${DEPEND}" |
| |
| set_build_defines() { |
| # Prevents gclient from updating self. |
| export DEPOT_TOOLS_UPDATE=0 |
| export EGCLIENT="${EGCLIENT:-/home/$(whoami)/depot_tools/gclient}" |
| } |
| |
| src_prepare() { |
| set_build_defines |
| |
| if use x86; then |
| # TODO(piman): switch to GLES backend |
| GYP_DEFINES="target_arch=ia32"; |
| elif use arm; then |
| GYP_DEFINES="target_arch=arm" |
| if use aura; then |
| # Only explicitly set renderer to GLES2 on ARM for non-Aura. |
| # Aura requires PPAPI, which handles setting of renderer-related |
| # items in the gyp files themselves. |
| GYP_DEFINES="$GYP_DEFINES" |
| else |
| GYP_DEFINES="$GYP_DEFINES renderer=gles2" |
| if use opengles; then |
| GYP_DEFINES="$GYP_DEFINES gles2_backend=native_gles2" |
| else |
| GYP_DEFINES="$GYP_DEFINES gles2_backend=desktop_gl" |
| fi |
| fi |
| elif use amd64; then |
| GYP_DEFINES="target_arch=x64" |
| else |
| die "unsupported arch: ${ARCH}" |
| fi |
| if [[ -n "${ROOT}" && "${ROOT}" != "/" ]]; then |
| GYP_DEFINES="$GYP_DEFINES sysroot=$ROOT" |
| fi |
| if use aura; then |
| GYP_DEFINES="$GYP_DEFINES plugin_interface=ppapi p2p_apis=0 os_posix=1" |
| fi |
| export GYP_DEFINES="$GYP_DEFINES chromeos=1 $BUILD_DEFINES" |
| |
| ${EGCLIENT} runhooks || die |
| } |
| |
| src_compile() { |
| use arm && append-flags -Wa,-mimplicit-it=always |
| append-cxxflags $(test-flags-CC -Wno-error=unused-but-set-variable) |
| tc-export AR AS LD NM RANLIB CC CXX STRIP |
| |
| if use aura; then |
| emake BUILDTYPE=Release ppo3dautoplugin || die |
| else |
| emake BUILDTYPE=Release npo3dautoplugin || die |
| fi |
| } |
| |
| src_install() { |
| local destdir=/opt/google/o3d |
| local chromepluginsdir=/opt/google/chrome/plugins |
| local chromepepperdir=/opt/google/chrome/pepper |
| |
| dodir ${destdir} |
| exeinto ${destdir} |
| if use aura; then |
| doexe out/Release/libppo3dautoplugin.so || die |
| dodir ${chromepepperdir} |
| dosym ${destdir}/libppo3dautoplugin.so ${chromepepperdir}/ || die |
| else |
| doexe out/Release/libnpo3dautoplugin.so || die |
| dodir ${chromepluginsdir} |
| dosym ${destdir}/libnpo3dautoplugin.so ${chromepluginsdir}/ || die |
| if use amd64 || use x86; then |
| dodir ${destdir}/lib |
| exeinto ${destdir}/lib |
| doexe out/Release/libCg{,GL}.so || die |
| elif use arm; then |
| # Only O2D currently works on ARM, so we include an envvars |
| # file that forces O2D mode. |
| insinto ${destdir} |
| newins "${FILESDIR}"/envvars.arm envvars || die |
| fi |
| fi |
| |
| } |