From 32aea564d6aa8155c0bb392b38c0c516a0748c06 Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Wed, 4 Apr 2012 21:12:58 +0000 Subject: Added script to compile all the libraries needed (build optimized for netsurf). svn path=/trunk/netsurf/; revision=13787 --- atari/scripts/makelibs.sh | 625 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 625 insertions(+) create mode 100755 atari/scripts/makelibs.sh diff --git a/atari/scripts/makelibs.sh b/atari/scripts/makelibs.sh new file mode 100755 index 000000000..c479b1ea8 --- /dev/null +++ b/atari/scripts/makelibs.sh @@ -0,0 +1,625 @@ +#!/bin/sh + +#todo: cflib, libcurl -> ensure ssl support, force ssl support + +#example usage: +#./makelibs.sh -prefix /usr -dest /media/EXT3_DATA/nslibs/m68000 -cross -nsonly -clean -src ./ +#./makelibs.sh -prefix /usr -dest /media/EXT3_DATA/nslibs/m68020 -cross -arch 68020 -nsonly -clean -src ./ +#./makelibs.sh -prefix /usr -dest /media/EXT3_DATA/nslibs/m68020-60 -cross -arch 68020-60 -nsonly -clean -src ./ +#./makelibs.sh -prefix /usr -dest /media/EXT3_DATA/nslibs/m5475 -cross -arch 5475 -clean + +# option description: +# +#-buildroot - this option tells the script where it is located, only needen when the script isn|t located in cwd. +#-arch - specifiy architecture type (format: 68000, 68020, 5475 etc...) +#-src - tell the tool where the sources for the ns libs are located +#-prefix - what prefix to use ( -prefix local ) +#-dest - where to install result files, this should NOT point to /usr or something like that!!! Its a temporary folder. +#-optflags +#-with-nsfb - compile with libnsfb +#-cross - set up some cross-compiler vars +#-clean - clean source dirs before building +#-nsonly - only build netsurf libs +#-dry - only set environment variables, echo them and then exit the script +#-release - compile from release svn tree + +buildroot=`pwd`"/" +libopensslpkg="openssl-0.9.8r" +libpngpkg="libpng-1.5.10" +libzlibpkg="zlib-1.2.5" +libldgpkg="ldg-dev-2.33" +libiconvpkg="libiconv-1.13.1" +libcurlpkg="curl-7.25.0" +libfreetypepkg="freetype-2.4.9" +libhermespkg="Hermes-1.3.3" +libjpegpkg="jpeg-8b" +libxmlpkg="libxml2-2.7.8" +libparserutils_version=0.1.1 +libwapcaplet_version=0.1.1 +hubbub_version=0.1.2 +libnsgif_version=0.0.3 +libnsbmp_version=0.0.3 +libnsfb_version=0.0.2 +libcss_version=0.1.2 +arch="68000" +archdir="" +debugmode="1" +profileflags="" +optflags="-O2" +withnsfb="1" +prefix="/usr" +userfs=$buildroot"userfs" +patchdir=$buildroot"patches/" +builddir=$buildroot"build/" +rpmdir=$buildroot"packages/" +nssrctree=$buildroot +compiler="gcc" +cross="0" +cleanup="echo no cleaning" +ssltarget="m68k-mint" +dry="0" +nsonly="0" +release="0" + +if [ "$CC" != "" ] +then + compiler=$CC +fi + +while [ "$1" != "" ] # When there are arguments... +do # Process the next one + case $1 # Look at $1 + in + -dummy) + dummy="1" + shift + ;; + + -p) + profileflags="-pg" + shift + ;; + + -buildroot) + shift + buildroot=$1 + userfs=$buildroot"userfs" + patchdir=$buildroot"patches/" + builddir=$buildroot"build/" + rpmdir=$buildroot"packages/" + nssrctree=$buildroot"src/" + shift + ;; + + -arch) + shift + arch=$1 + shift + ;; + + -src) + shift + nssrctree=$1 + shift + ;; + + -prefix) + shift + prefix=$1 + shift + ;; + + -release) + release="1" + shift + ;; + + -dest) + shift + userfs=$1 + shift + ;; + + -optflags) + shift + optflags=$1 + shift + ;; + + -with-nsfb) + withnsfb="1" + shift + ;; + + -cross ) + cross="1" + shift + ;; + + -nsonly ) + nsonly="1" + shift + ;; + + -clean ) + cleanup="make clean && make distclean" + shift + ;; + + -dry ) + dry="1" + shift + ;; + + *) echo "Option [$1] not one of [-buildroot,-arch,-src,-prefix,-dest,-optflags,-with-nsfb]"; + exit;; + esac +done + + +if [ -d "$buildroot" ] +then + echo "Buildroot: $buildroot" +else + echo "Invalid buildroot directory ("$buildroot") !" + echo "This script must know where it is located!" + echo "Either use buildroot option or start from directory where the script is located." + exit 0 +fi + +if [ "$release" = "0" ] +then +libparserutils_version="" +libwapcaplet_version="" +hubbub_version="" +libnsgif_version="" +libnsbmp_version="" +libnsfb_version="" +libcss_version="" +fi + +if [ "$nssrctree" = "./" ] +then + nssrctree=`pwd` +fi + + + +#testarch: +archok=0 +if [ "$arch" = "68000" ] +then + archok=1 +fi +if [ "$arch" = "68020" ] +then + archok=1 +fi +if [ "$arch" = "68020-60" ] +then + archok=1 + openssltarget="m680x0-mint" +fi +if [ "$arch" = "5475" ] +then + archok=1 + openssltarget="cf-mint" +fi + +if [ "$archok" = "0" ] +then + echo "Invalid arch:"$arch" valid: 68000,68020,68020-69,5475" + exit 0 +fi + +if [ "$cross" = "1" ] +then + echo "enabling cross compiler mode" + export CC="m68k-atari-mint-gcc" + export LD="m68k-atari-mint-ld" + export AR="m68k-atari-mint-ar" + export RANLIB="m68k-atari-mint-ranlib" + export CPP="m68k-atari-mint-cpp" + compiler="m68k-atari-mint-gcc" +fi + + +# handle arch specific settings here. + +if [ "$arch" = "68000" ] +then + archlibdir=$userfs$prefix"/lib" + archdir="" +else + archlibdir=$userfs$prefix"/lib/m"$arch + archdir="m"$arch +fi + +if [ "$arch" = "5475" ] +then + machineflag="cpu="$arch +else + machineflag=$arch +fi + + +echo "machine: " $machineflag +incdir="-I$userfs$prefix/include" +CFLAGS_ORG="-m$machineflag $optflags $profileflags $incdir" +LDLAGS_ORG="-m$machineflag $profileflags" +CFLAGS="$CFLAGS_ORG" +LDFLAGS="$LDFLAGS_ORG" +export CFLAGS_ORG +export LDLAGS_ORG +export CFLAGS +export LDFLAGS + +echo "Build root: "$buildroot +echo "Netsurf sources: "$nssrctree +echo "Build directory: "$builddir +echo "Patches: "$patchdir +echo "Libdir: "$archlibdir +echo "Dest: "$userfs +echo "Prefix: "$prefix +echo "Compiler: "$compiler +echo "CFLAGS: "$CFLAGS +echo "PKG_CONFIG_PATH=$archlibdir/pkgconfig" +echo "PKG_CONFIG_LIBDIR=$archlibdir/pkgconfig" +echo "PKG_CONFIG_SYSROOT_DIR=$userfs" +echo "Dry: " $dry + + +#echo "Installing RPMs:" +#rpm -i $rpmdir""$opensslpkg + +#cd $buildroot +#exit 0 + + +# configure flags for curl, this actually saves 30kb in the lib and about 100k in the final executable +#./configure --disable-debug --enable-optimize --disable-ldap --disable-ldaps --disable-rtsp --disable-telnet --disable-tftp --disable-pop3 --disable-imap --disable-smtp --disable-manual -- disable-sspi --target="m"$arch + +# freetype configured for winfnt, truetype, raster (not smooth) +# saves around 160kb in the lib. + +if [ "$dry" = "1" ] +then +echo "export CFLAGS=$CFLAGS" +echo "export PKG_CONFIG_PATH=$archlibdir/pkgconfig" +echo "export PKG_CONFIG_LIBDIR=$archlibdir/pkgconfig" +echo "export PKG_CONFIG_SYSROOT_DIR=$userfs" +exit 0 +fi + +echo "creating staging directory" +mkdir "$userfs" +mkdir "$userfs$prefix" +mkdir "$userfs$prefix/include" +mkdir "$archlibdir" +mkdir "$archlibdir/pkgconfig" + + +export PKG_CONFIG_PATH="$archlibdir/pkgconfig" +export PKG_CONFIG_LIBDIR="$archlibdir/pkgconfig" +export PKG_CONFIG_SYSROOT_DIR="$userfs" + +echo "Building Libraries..." +cd $nssrctree + +#start test +if [ "$nsonly" = "0" ] +then + +echo "compiling Hermes..." +cd $libhermespkg +$cleanup +./configure --disable-x86asm --disable-debug --host="m68k-atari-mint" --prefix="$userfs$prefix" +make install +cd .. + +echo "compiling iconv..." +cd $libiconvpkg +$cleanup +./configure --enable-static \ + --host="m68k-atari-mint"\ + --prefix="$prefix"\ + --exec-prefix="$prefix"\ + --enable-extra-encodings\ + lt_cv_sys_max_cmd_len=65536 +make install DESTDIR=$destdir PREFIX=$prefix +cd .. + + +cd $libzlibpkg +$cleanup +if [ "$cross" = "1" ] +then + ./configure --prefix=$prefix --static +else + ./configure --prefix=$prefix --static +fi +make +# there is an error within make instal, copy headers manually. +install -m644 zlib.h "$userfs$prefix/include/zlib.h" +install -m644 zconf.h "$userfs$prefix/include/zconf.h" +install -m644 zutil.h "$userfs$prefix/include/zutil.h" +make install DESTDIR=$userfs PREFIX="$prefix" +cd .. + +pwd +cd $libfreetypepkg +$cleanup +if [ "$cross" = "1" ] +then +./configure --prefix="$prefix" \ + --host="m68k-atari-mint" \ + CFLAGS="$CFLAGS_ORG" +make +make install DESTDIR=$userfs +else +./configure --prefix="$userfs$prefix" --host="m68k-atari-mint" --target="m$arch" CFLAGS="$CFLAGS_ORG" +make +make install DESTDIR=$userfs +fi + +cd .. + +cd $libxmlpkg +$cleanup +if [ "$cross" = "1" ] +then +./configure --prefix="$prefix" \ + --host="m68k-atari-mint" \ + --without-python \ + --without-threads \ + --enable-ipv6=no \ + --without-debug \ + --without-http \ + --without-ftp \ + --without-legacy \ + --without-docbook \ + --without-catalog \ + --without-regexps \ + --without-schemas \ + --without-schematron \ + --without-sax1 \ + --without-xpath \ + --without-modules \ + --without-c14n \ + --without-pattern \ + --without-push \ + --with-iconv="$archlibdir" \ + --with-zlib="$archlibdir" +make +make install DESTDIR="$userfs" +else +echo "no cross" +fi +cd .. + +cd $libopensslpkg +$cleanup +if [ "$cross" = "1" ] +then +./Configure $openssltarget --prefix="$prefix" --install-prefix="$userfs" +else +./Configure $openssltarget --prefix="$prefix" --install-prefix="$userfs" +fi +make +make rehash +make install +cd .. + +# FIXME: build c-ares here, if you want to + +cd $libcurlpkg +$cleanup +/configure\ + --prefix="$prefix" \ + --libdir=$prefix"/lib/$archdir"\ + --host="m68k-atari-mint"\ + --program-suffix=".ttp"\ + --with-random="/dev/urandom"\ + --enable-static\ + --enable-optimize\ + --enable-warnings\ + --enable-http\ + --enable-gopher\ + --enable-nonblocking\ + --enable-cookies\ + --disable-libtool-lock\ + --disable-verbose\ + --disable-shared\ + --disable-dependency-tracking\ + --disable-manual\ + --disable-curldebug\ + --disable-debug\ + --disable-ipv6\ + --disable-largefile\ + --disable-thread\ + --disable-threaded-resolver\ + --disable-telnet\ + --disable-tftp\ + --disable-dict\ + --disable-pop3\ + --disable-imap\ + --disable-smtp\ + --disable-ldaps\ + --disable-ldap\ + --disable-rtsp\ + --disable-sspi\ + --disable-rtsp\ + --without-polarssl\ + --without-cyassl\ + --without-nss\ + --without-libssh2\ + --without-librtmp\ + --without-libidn\ + --without-gnutls +# --with-ares="/usr/m68k-atari-mint/lib/"$archdir\ +# --enable-ares + +make CFLAGS="$CFLAGS_ORG" +make install DESTDIR="$userfs" +cd .. + +cd $libjpegpkg +./configure --enable-static --prefix="$userfs$prefix" --host="m68k-atari-mint" +make install +cd .. + +cd $libpngpkg +$cleanup +if [ "$cross" = "1" ] +then + ./configure --prefix=$prefix --host=m68k-atari-mint +else + ./configure --prefix=$prefix +fi + +make +make install DESTDIR="$userfs" +cd .. + +# we only need header files of ldg... +#cd $libldgpkg +#cp ./include/ldg.h "$userfs$prefix/include" +#cd .. + +cd windom +cd src +rm ../lib/gcc/libwindom.a +$cleanup +export M68K_ATARI_MINT_CFLAGS="$CFLAGS" +echo $M68K_ATARI_MINT_CFLAGS +echo "dest:" $userfs$prefix +if [ "$cross" = "1" ] +then +make cross +cp ../lib/gcc/libwindom.a "$userfs$prefix/lib" +cp ../include/* "$userfs$prefix/include/" -R +else +make -f gcc.mak +cp ./lib/gcc/libwindom.a "$userfs$prefix/lib" +cp ./include/* "$userfs$prefix/include/" -R +fi +cd ../.. + +fi # END OF TEST + +# set TARGET, so that make clean and build use the same directory. +export TARGET="freemint" + +echo "compiling libparserutils..." +cd libparserutils/$libparserutils_version +export CFLAGS="$CFLAGS_ORG -DWITH_ICONV_FILTER" +$cleanup +if [ "$cross" = "1" ] +then + make TARGET="freemint" + make install DESTDIR="$userfs" PREFIX="$prefix" TARGET="freemint" +else +# make install DESTDIR="$userfs" PREFIX="$prefix" + make install DESTDIR="$archlibdir" PREFIX="$prefix" +fi +cd $nssrctree +export CFLAGS="$CFLAGS_ORG" + + +echo "compiling libwapcaplet..." +cd libwapcaplet/$libwapcaplet_version || exit 1 +$cleanup +if [ "$cross" = "1" ] +then + make install DESTDIR=$userfs PREFIX=$prefix TARGET="freemint" + #make install DESTDIR="$userfs/$archdir" TARGET="freemint" + #PREFIX=$prefix TARGET="freemint" +else + make install DESTDIR=$userfs PREFIX=$prefix + #make install DESTDIR="$archlibdir" PREFIX=$prefix +fi +cd $nssrctree + +cd libcss/$libcss_version +$cleanup +if [ "$cross" = "1" ] +then + make install DESTDIR=$userfs PREFIX=$prefix TARGET="freemint" +# make install DESTDIR="$archlibdir" TARGET="freemint" +#PREFIX=$prefix TARGET="freemint" +else + make install DESTDIR=$userfs PREFIX=$prefix +# make install DESTDIR="$archlibdir" PREFIX=$prefix +fi +cd $nssrctree + +echo "compiling hubbub..." +pwd +cd hubbub/$hubbub_version || exit 1 +$cleanup +if [ "$cross" = "1" ] +then + make install DESTDIR=$userfs PREFIX=$prefix TARGET="freemint" +else + make install DESTDIR=$userfs PREFIX=$prefix +fi +cd $nssrctree + + +echo "compiling libnsgif..." +cd libnsgif/$libnsgif_version || exit 1 +$cleanup +if [ "$cross" = "1" ] +then + make install DESTDIR=$userfs PREFIX=$prefix TARGET="freemint" +else + make install DESTDIR=$userfs PREFIX=$prefix +fi +cd $nssrctree + +echo "compiling libnsbmp..." +cd libnsbmp/$libnsbmp_version || exit 1 +$cleanup +if [ "$cross" = "1" ] +then + make install DESTDIR=$userfs PREFIX=$prefix TARGET="freemint" +else + make install DESTDIR=$userfs PREFIX=$prefix +fi +cd $nssrctree + + +if [ "$withnsfb" = "1" ] +then + echo "compiling libnsfb..." + cd libnsfb/$libnsfb_version || exit 1 + $cleanup + if [ "$cross" = "1" ] + then + make install DESTDIR=$userfs PREFIX=$prefix TARGET="freemint" + else + make install DESTDIR=$userfs PREFIX=$prefix + fi + cd $nssrctree +else + echo "libnsfb skipped" +fi + + +if [ "$arch" = "68000" ] +then + echo "No library relocation needed!" +else + echo "Relocation Libraries to :" + echo $archlibdir + srclibdir=$userfs$prefix"/lib/" + srcpkgdir=$userfs$prefix"/lib/pkgconfig" + mkdir $archlibdir + rm $archlib/*.a + mv $srclibdir*.a $archlibdir/ -v + mv $srcpkgdir $archlibdir -v +fi + +echo "please add symlink to libxml2/libxml within /usr/m68k-atari-mint/include" +echo "please add symlink to freetype2/freetype within /usr/m68k-atari-mint/include" +exit 0 -- cgit v1.2.3