#!/bin/bash

# browser-sversbk.SlackBuild
# by Stuart Winter
# Based on Unbranded 'Firefox' build script from Slackware 13.
# 03-April-2009

# Record toolchain & other info for the build log:
slackbuildinfo

# Paths to skeleton port's source & real Slackware source tree:
export CWD=$SLACKSOURCE/$PKGSERIES/$PKGNAM
export PORTCWD=$PWD

# Major version number - needed for /usr/lib/firefox dir:
MAJORVER=$VERSION

# Temporary build locations:
export TMPBUILD=$TMP/build-$PKGNAM
export PKG=$TMP/package-$PKGNAM
mkpkgdirs # Delete & re-create temporary directories then cd into $TMPBUILD

# Determine the CFLAGS for the known architectures:
case $ARCH in
   arm)     export SLKCFLAGS="-O2 -march=armv5t" # FF3.6 no longer supports ARMv4.
            export LIBDIRSUFFIX="" ;;
   *)       export SLKCFLAGS="-O2" ;;
esac

# Extract patches:
# 3.0.8 doesn't need any build patches!
#tar xvvf $PORTCWD/sources/*recipe.tar.bz2
#mkdir -vpm755 $TMPBUILD/patches
#( cd Firefox*/*/
#  mv -fv 03-ldflags.patch $TMPBUILD/patches/
#  mv -fv 04-crmf_link_order.patch $TMPBUILD/patches/
#  mv -fv arm/*patch* $TMPBUILD/patches/ )

# Extract source:
echo "Extracting source"
tar xf $CWD/firefox-$VERSION*source*tar.bz2
cd mozilla* || exit 1 
slackhousekeeping

# Apply ARM patches:
auto_apply_patch $PORTCWD/sources/bz532198_lp488354_ns_invokebyindex_not_thumb2_safe.patch.xz || exit 1

# Fix a long standing bug that's prevented staying current on GTK+.
# Thanks to the BLFS folks.  :-)
cat << EOF >> layout/build/Makefile.in

ifdef MOZ_ENABLE_CANVAS
EXTRA_DSO_LDOPTS += \$(XLDFLAGS) -lX11 -lXrender
endif

EOF

# Configure:
#autoconf2.13 || failconfig
# Turn errors back into warnings:
sed -i 's?-Werror?-Wall?g' configure

export MOZILLA_OFFICIAL="1" &&
export BUILD_OFFICIAL="1" &&
export MOZ_PHOENIX="1" &&
export CFLAGS="$SLKCFLAGS" &&
export CXXFLAGS="$SLKCFLAGS" &&
./configure \
  --enable-official-branding \
  --prefix=/usr \
  --libdir=/usr/lib${LIBDIRSUFFIX} \
  --with-default-mozilla-five-home=/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION \
  --with-system-zlib \
  --enable-application=browser \
  --enable-default-toolkit=cairo-gtk2 \
  --enable-crypto \
  --enable-svg \
  --enable-canvas \
  --enable-xft \
  --enable-xinerama \
  --enable-optimize \
  --enable-reorder \
  --enable-strip \
  --enable-system-cairo \
  --enable-cpp-rtti \
  --enable-single-profile \
  --disable-ldap \
  --disable-accessibility \
  --disable-debug \
  --disable-tests \
  --disable-logging \
  --disable-pedantic \
  --disable-installer \
  --disable-mailnews \
  --disable-composer \
  --disable-profilesharing || exit 1
  # Complains about missing APNG support in Slackware's libpng:
  #--with-system-png \

# Build:
make MOZ_MAKE_FLAGS="$NUMJOBS" || failmake

# Install into package framework:
make install DESTDIR=$PKG || failinstall

# We don't need these (just symlinks anyway):
rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/firefox-devel-$VERSION

# Nor these:
rm -rf $PKG/usr/include

( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION
  #mv defaults/profile/mimeTypes.rdf defaults/profile/mimeTypes.rdf.orig || exit 1
  zcat $CWD/mimeTypes.rdf > defaults/profile/mimeTypes.rdf || exit 1
  zcat $CWD/firefox.moz_plugin_path.diff.gz \
    | sed -e "s#usr/lib#usr/lib${LIBDIRSUFFIX}#g" \
    | patch -p1 --verbose --backup --suffix=.orig || exit 1
  # Clean up if the above patch was successful:
  rm -f firefox.orig
) || exit

mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/mozilla/plugins
mkdir -p $PKG/usr/share/applications
cat $CWD/mozilla-firefox.desktop > $PKG/usr/share/applications/mozilla-firefox.desktop
mkdir -p $PKG/usr/share/pixmaps
cat $CWD/firefox.png > $PKG/usr/share/pixmaps/firefox.png

# These files/directories are usually created if Firefox is run as root,
# which on many systems might (and possibly should) be never.  Therefore, if we
# don't see them we'll put stubs in place to prevent startup errors.
( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION
  if [ -d extensions/talkback\@mozilla.org ]; then
    if [ ! -r extensions/talkback\@mozilla.org/chrome.manifest ]; then
      echo > extensions/talkback\@mozilla.org/chrome.manifest
    fi
  fi
  if [ ! -d updates ]; then
    mkdir -p updates/0
  fi
)

# Need some default icons in the right place:
mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION/chrome/icons/default
install -m 644 other-licenses/branding/firefox/default16.png \
  $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION/icons/
install -m 644 other-licenses/branding/firefox/default16.png \
  $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION/chrome/icons/default/
( cd $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION
  install -m 644 icons/{default,mozicon50}.xpm chrome/icons/default/
)

# Copy over the LICENSE
install -p -c -m 644 LICENSE $PKG/usr/lib${LIBDIRSUFFIX}/firefox-$VERSION/

# If necessary, start the fakeroot server so we can set file/dir ownerships:
start_fakeroot

# Apply generic Slackware packaging policies:
cd $PKG
slackstripall   # strip all .a archives and all ELFs
slackgzpages -i # compress man & info pages and delete usr/info/dir
slackslack      # chown -R root:root, chmod -R og-w, slackchown, slack644docs
slackdesc       # install slack-desc and doinst.sh

# Change the architecture of the package name since Firefox 3.6
# doesn't support armv4:
export SLACKPACKAGE=$PKGNAM-$VERSION-armv5t-$BUILD.tgz

slackmp         # run makepkg -l y -c n

# Perform any final checks on the package:
cd $PKG
slackhlinks     # search for any hard links
