|
Packit Service |
bf98b9 |
#!/bin/bash
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# This script will download and setup a cross compilation environment
|
|
Packit Service |
bf98b9 |
# for targetting Win32 from Linux. It can also be used to build on
|
|
Packit Service |
bf98b9 |
# Windows under the MSYS/MinGW environment. It will use the GTK
|
|
Packit Service |
bf98b9 |
# binaries from Tor Lillqvist.
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
TOR_URL="http://ftp.gnome.org/pub/gnome/binaries/win32";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
TOR_BINARIES=( \
|
|
Packit Service |
bf98b9 |
gtk+/2.16/gtk+{-dev,}_2.16.6-2_win32.zip );
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
TOR_DEP_URL="http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
ZLIB_VERSION=1.2.4-2
|
|
Packit Service |
bf98b9 |
FFI_VERSION=3.0.6
|
|
Packit Service |
bf98b9 |
GLIB_VERSION=2.34.3
|
|
Packit Service |
bf98b9 |
GLIB_MINOR_VERSION="${GLIB_VERSION%.*}"
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
TOR_DEPS=( \
|
|
Packit Service |
bf98b9 |
cairo{-dev,}_1.10.0-2_win32.zip \
|
|
Packit Service |
bf98b9 |
gettext-runtime-{dev-,}0.17-1.zip \
|
|
Packit Service |
bf98b9 |
fontconfig{-dev,}_2.8.0-2_win32.zip \
|
|
Packit Service |
bf98b9 |
freetype{-dev,}_2.3.12-1_win32.zip \
|
|
Packit Service |
bf98b9 |
expat_2.0.1-1_win32.zip \
|
|
Packit Service |
bf98b9 |
libpng{-dev,}_1.4.0-1_win32.zip \
|
|
Packit Service |
bf98b9 |
zlib{-dev,}_${ZLIB_VERSION}_win32.zip \
|
|
Packit Service |
bf98b9 |
libffi{-dev,}_${FFI_VERSION}-1_win32.zip \
|
|
Packit Service |
bf98b9 |
gettext-runtime{-dev,}_0.18.1.1-2_win32.zip );
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
GNOME_SOURCES_URL="http://ftp.gnome.org/pub/GNOME/sources/"
|
|
Packit Service |
bf98b9 |
SOURCES_DEPS=(\
|
|
Packit Service |
bf98b9 |
glib/${GLIB_MINOR_VERSION}/glib-${GLIB_VERSION}.tar.xz \
|
|
Packit Service |
bf98b9 |
cogl/1.14/cogl-1.14.0.tar.xz \
|
|
Packit Service |
bf98b9 |
json-glib/0.16/json-glib-0.16.0.tar.xz \
|
|
Packit Service |
bf98b9 |
atk/2.8/atk-2.8.0.tar.xz \
|
|
Packit Service |
bf98b9 |
pango/1.34/pango-1.34.1.tar.xz );
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
GL_HEADER_URLS=( \
|
|
Packit Service |
bf98b9 |
http://cgit.freedesktop.org/mesa/mesa/plain/include/GL/gl.h \
|
|
Packit Service |
bf98b9 |
http://www.opengl.org/registry/api/glext.h );
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
GL_HEADERS=( gl.h glext.h );
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
CONFIG_GUESS_URL="http://git.savannah.gnu.org/gitweb/?p=automake.git;a=blob_plain;f=lib/config.guess"
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function download_file ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local url="$1"; shift;
|
|
Packit Service |
bf98b9 |
local filename="$1"; shift;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if test -f "$DOWNLOAD_DIR/$filename"; then
|
|
Packit Service |
bf98b9 |
echo "Skipping download of $filename because the file already exists";
|
|
Packit Service |
bf98b9 |
return 0;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
case "$DOWNLOAD_PROG" in
|
|
Packit Service |
bf98b9 |
curl)
|
|
Packit Service |
bf98b9 |
curl -o "$DOWNLOAD_DIR/$filename" "$url";
|
|
Packit Service |
bf98b9 |
;;
|
|
Packit Service |
bf98b9 |
*)
|
|
Packit Service |
bf98b9 |
$DOWNLOAD_PROG -O "$DOWNLOAD_DIR/$filename" "$url";
|
|
Packit Service |
bf98b9 |
;;
|
|
Packit Service |
bf98b9 |
esac;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ $? -ne 0 ]; then
|
|
Packit Service |
bf98b9 |
echo "Downloading ${url} failed.";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function guess_dir ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local var="$1"; shift;
|
|
Packit Service |
bf98b9 |
local suffix="$1"; shift;
|
|
Packit Service |
bf98b9 |
local msg="$1"; shift;
|
|
Packit Service |
bf98b9 |
local prompt="$1"; shift;
|
|
Packit Service |
bf98b9 |
local dir="${!var}";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ -z "$dir" ]; then
|
|
Packit Service |
bf98b9 |
echo "Please enter ${msg}.";
|
|
Packit Service |
bf98b9 |
dir="$PWD/$suffix";
|
|
Packit Service |
bf98b9 |
read -r -p "$prompt [$dir] ";
|
|
Packit Service |
bf98b9 |
if [ -n "$REPLY" ]; then
|
|
Packit Service |
bf98b9 |
dir="$REPLY";
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
eval $var="\"$dir\"";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ ! -d "$dir" ]; then
|
|
Packit Service |
bf98b9 |
if ! mkdir -p "$dir"; then
|
|
Packit Service |
bf98b9 |
echo "Error making directory $dir";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function y_or_n ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local prompt="$1"; shift;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
while true; do
|
|
Packit Service |
bf98b9 |
read -p "${prompt} [y/n] " -n 1;
|
|
Packit Service |
bf98b9 |
echo;
|
|
Packit Service |
bf98b9 |
case "$REPLY" in
|
|
Packit Service |
bf98b9 |
y) return 0 ;;
|
|
Packit Service |
bf98b9 |
n) return 1 ;;
|
|
Packit Service |
bf98b9 |
*) echo "Please press y or n" ;;
|
|
Packit Service |
bf98b9 |
esac;
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function do_unzip ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
do_unzip_d "$ROOT_DIR" "$@";
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function do_unzip_d ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local exdir="$1"; shift;
|
|
Packit Service |
bf98b9 |
local zipfile="$1"; shift;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
unzip -o -q -d "$exdir" "$zipfile" "$@";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ "$?" -ne 0 ]; then
|
|
Packit Service |
bf98b9 |
echo "Failed to extract $zipfile";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function do_untar_source ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
do_untar_source_d "$BUILD_DIR" "$@";
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function do_untar_source_d ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local exdir="$1"; shift;
|
|
Packit Service |
bf98b9 |
local tarfile="$1"; shift;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
tar -C "$exdir" -axvf "$tarfile" "$@";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ "$?" -ne 0 ]; then
|
|
Packit Service |
bf98b9 |
echo "Failed to extract $tarfile";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function add_env ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
echo "export $1=\"$2\"" >> $env_file;
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function find_compiler ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local gccbin fullpath;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ -z "$MINGW_TOOL_PREFIX" ]; then
|
|
Packit Service |
bf98b9 |
for gccbin in i{3,4,5,6}86{-pc,}-mingw32{,msvc}-gcc; do
|
|
Packit Service |
bf98b9 |
fullpath="`which $gccbin 2>/dev/null`";
|
|
Packit Service |
bf98b9 |
if [ "$?" -eq 0 ]; then
|
|
Packit Service |
bf98b9 |
MINGW_TOOL_PREFIX="${fullpath%%gcc}";
|
|
Packit Service |
bf98b9 |
break;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
if [ -z "$MINGW_TOOL_PREFIX" ]; then
|
|
Packit Service |
bf98b9 |
echo;
|
|
Packit Service |
bf98b9 |
echo "No suitable cross compiler was found.";
|
|
Packit Service |
bf98b9 |
echo;
|
|
Packit Service |
bf98b9 |
echo "If you already have a compiler installed,";
|
|
Packit Service |
bf98b9 |
echo "please set the MINGW_TOOL_PREFIX variable";
|
|
Packit Service |
bf98b9 |
echo "to point to its location without the";
|
|
Packit Service |
bf98b9 |
echo "gcc suffix (eg: \"/usr/bin/i386-mingw32-\").";
|
|
Packit Service |
bf98b9 |
echo;
|
|
Packit Service |
bf98b9 |
echo "If you are using Ubuntu, you can install a";
|
|
Packit Service |
bf98b9 |
echo "compiler by typing:";
|
|
Packit Service |
bf98b9 |
echo;
|
|
Packit Service |
bf98b9 |
echo " sudo apt-get install mingw32";
|
|
Packit Service |
bf98b9 |
echo;
|
|
Packit Service |
bf98b9 |
echo "Otherwise you can try following the instructions here:";
|
|
Packit Service |
bf98b9 |
echo;
|
|
Packit Service |
bf98b9 |
echo " http://www.libsdl.org/extras/win32/cross/README.txt";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
TARGET="${MINGW_TOOL_PREFIX##*/}";
|
|
Packit Service |
bf98b9 |
TARGET="${TARGET%%-}";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
echo "Using compiler ${MINGW_TOOL_PREFIX}gcc and target $TARGET";
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function generate_pc_file ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local pcfile="$1"; shift;
|
|
Packit Service |
bf98b9 |
local libs="$1"; shift;
|
|
Packit Service |
bf98b9 |
local version="$1"; shift;
|
|
Packit Service |
bf98b9 |
local include="$1"; shift;
|
|
Packit Service |
bf98b9 |
local bn=`basename "$pcfile"`;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if test -z "$include"; then
|
|
Packit Service |
bf98b9 |
include="\${prefix}/include";
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if ! test -f "$pcfile"; then
|
|
Packit Service |
bf98b9 |
cat > "$pcfile" <
|
|
Packit Service |
bf98b9 |
prefix=$ROOT_DIR
|
|
Packit Service |
bf98b9 |
exec_prefix=\${prefix}
|
|
Packit Service |
bf98b9 |
libdir=\${prefix}/lib
|
|
Packit Service |
bf98b9 |
sharedlibdir=\${libdir}
|
|
Packit Service |
bf98b9 |
includedir=$include
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
Name: $bn
|
|
Packit Service |
bf98b9 |
Description: $bn
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
Requires:
|
|
Packit Service |
bf98b9 |
Libs: -L\${libdir} $libs
|
|
Packit Service |
bf98b9 |
Cflags: -I\${includedir}
|
|
Packit Service |
bf98b9 |
Version: $version
|
|
Packit Service |
bf98b9 |
EOF
|
|
Packit Service |
bf98b9 |
fi
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
function do_cross_compile ()
|
|
Packit Service |
bf98b9 |
{
|
|
Packit Service |
bf98b9 |
local dep="$1"; shift;
|
|
Packit Service |
bf98b9 |
local builddir="$BUILD_DIR/$dep";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
cd "$builddir"
|
|
Packit Service |
bf98b9 |
./configure --prefix="$ROOT_DIR" \
|
|
Packit Service |
bf98b9 |
--host="$TARGET" \
|
|
Packit Service |
bf98b9 |
--target="$TARGET" \
|
|
Packit Service |
bf98b9 |
--build="$build_config" \
|
|
Packit Service |
bf98b9 |
CFLAGS="-mms-bitfields -I${ROOT_DIR}/include" \
|
|
Packit Service |
bf98b9 |
LDFLAGS="-L${ROOT_DIR}/lib" \
|
|
Packit Service |
bf98b9 |
PKG_CONFIG="$RUN_PKG_CONFIG" \
|
|
Packit Service |
bf98b9 |
"$@";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ "$?" -ne 0 ]; then
|
|
Packit Service |
bf98b9 |
echo "Failed to configure $dep";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
make all install
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ "$?" -ne 0 ]; then
|
|
Packit Service |
bf98b9 |
echo "Failed to build $dep";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
}
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# If a download directory hasn't been specified then try to guess one
|
|
Packit Service |
bf98b9 |
# but ask for confirmation first
|
|
Packit Service |
bf98b9 |
guess_dir DOWNLOAD_DIR "downloads" \
|
|
Packit Service |
bf98b9 |
"the directory to download to" "Download directory";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# Try to guess a download program if none has been specified
|
|
Packit Service |
bf98b9 |
if [ -z "$DOWNLOAD_PROG" ]; then
|
|
Packit Service |
bf98b9 |
# If no download program has been specified then check if wget or
|
|
Packit Service |
bf98b9 |
# curl exists
|
|
Packit Service |
bf98b9 |
#wget first, because my curl can't download libsdl...
|
|
Packit Service |
bf98b9 |
for x in wget curl; do
|
|
Packit Service |
bf98b9 |
if [ "`type -t $x`" != "" ]; then
|
|
Packit Service |
bf98b9 |
DOWNLOAD_PROG="$x";
|
|
Packit Service |
bf98b9 |
break;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if [ -z "$DOWNLOAD_PROG" ]; then
|
|
Packit Service |
bf98b9 |
echo "No DOWNLOAD_PROG was set and neither wget nor curl is ";
|
|
Packit Service |
bf98b9 |
echo "available.";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# If a download directory hasn't been specified then try to guess one
|
|
Packit Service |
bf98b9 |
# but ask for confirmation first
|
|
Packit Service |
bf98b9 |
guess_dir ROOT_DIR "clutter-cross" \
|
|
Packit Service |
bf98b9 |
"the root prefix for the build environment" "Root dir";
|
|
Packit Service |
bf98b9 |
SLASH_SCRIPT='s/\//\\\//g';
|
|
Packit Service |
bf98b9 |
quoted_root_dir=`echo "$ROOT_DIR" | sed "$SLASH_SCRIPT" `;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# If a build directory hasn't been specified then try to guess one
|
|
Packit Service |
bf98b9 |
# but ask for confirmation first
|
|
Packit Service |
bf98b9 |
guess_dir BUILD_DIR "build" \
|
|
Packit Service |
bf98b9 |
"the directory to build source dependencies in" "Build directory";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
# Download files
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for bin in "${TOR_BINARIES[@]}"; do
|
|
Packit Service |
bf98b9 |
bn="${bin##*/}";
|
|
Packit Service |
bf98b9 |
download_file "$TOR_URL/$bin" "$bn"
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for dep in "${TOR_DEPS[@]}"; do
|
|
Packit Service |
bf98b9 |
download_file "$TOR_DEP_URL/$dep" "$dep";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for dep in "${OTHER_DEPS[@]}"; do
|
|
Packit Service |
bf98b9 |
bn="${dep##*/}";
|
|
Packit Service |
bf98b9 |
download_file "$dep" "$bn";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for dep in "${GL_HEADER_URLS[@]}"; do
|
|
Packit Service |
bf98b9 |
bn="${dep##*/}";
|
|
Packit Service |
bf98b9 |
download_file "$dep" "$bn";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for dep in "${SOURCES_DEPS[@]}"; do
|
|
Packit Service |
bf98b9 |
src="${dep##*/}";
|
|
Packit Service |
bf98b9 |
download_file "$GNOME_SOURCES_URL/$dep" "$src";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
download_file "$CONFIG_GUESS_URL" "config.guess";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
# Extract files
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for bin in "${TOR_BINARIES[@]}"; do
|
|
Packit Service |
bf98b9 |
echo "Extracting $bin...";
|
|
Packit Service |
bf98b9 |
bn="${bin##*/}";
|
|
Packit Service |
bf98b9 |
do_unzip "$DOWNLOAD_DIR/$bn";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for dep in "${TOR_DEPS[@]}"; do
|
|
Packit Service |
bf98b9 |
echo "Extracting $dep...";
|
|
Packit Service |
bf98b9 |
do_unzip "$DOWNLOAD_DIR/$dep";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for src in "${SOURCES_DEPS[@]}"; do
|
|
Packit Service |
bf98b9 |
echo "Extracting $src...";
|
|
Packit Service |
bf98b9 |
src="${src##*/}";
|
|
Packit Service |
bf98b9 |
do_untar_source "$DOWNLOAD_DIR/$src";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
echo "Fixing pkgconfig files...";
|
|
Packit Service |
bf98b9 |
for x in "$ROOT_DIR/lib/pkgconfig/"*.pc; do
|
|
Packit Service |
bf98b9 |
sed "s/^prefix=.*\$/prefix=${quoted_root_dir}/" \
|
|
Packit Service |
bf98b9 |
< "$x" > "$x.tmp";
|
|
Packit Service |
bf98b9 |
mv "$x.tmp" "$x";
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# The Pango FT pc file hardcodes the include path for freetype, so it
|
|
Packit Service |
bf98b9 |
# needs to be fixed separately
|
|
Packit Service |
bf98b9 |
sed -e 's/^Cflags:.*$/Cflags: -I${includedir}\/pango-1.0 -I${includedir}\/freetype2/' \
|
|
Packit Service |
bf98b9 |
-e 's/^\(Libs:.*\)$/\1 -lfreetype -lfontconfig/' \
|
|
Packit Service |
bf98b9 |
< "$ROOT_DIR/lib/pkgconfig/pangoft2.pc" \
|
|
Packit Service |
bf98b9 |
> "$ROOT_DIR/lib/pkgconfig/pangoft2.pc.tmp";
|
|
Packit Service |
bf98b9 |
mv "$ROOT_DIR/lib/pkgconfig/pangoft2.pc"{.tmp,};
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
echo "Copying GL headers...";
|
|
Packit Service |
bf98b9 |
if ! ( test -d "$ROOT_DIR/include/GL" || \
|
|
Packit Service |
bf98b9 |
mkdir "$ROOT_DIR/include/GL" ); then
|
|
Packit Service |
bf98b9 |
echo "Failed to create GL header directory";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
for header in "${GL_HEADERS[@]}"; do
|
|
Packit Service |
bf98b9 |
if ! cp "$DOWNLOAD_DIR/$header" "$ROOT_DIR/include/GL/"; then
|
|
Packit Service |
bf98b9 |
echo "Failed to copy $header";
|
|
Packit Service |
bf98b9 |
exit 1;
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# We need pkg-config files for zlib and ffi to build glib. The
|
|
Packit Service |
bf98b9 |
# prepackaged binaries from tml doesn't seem to include them so we'll
|
|
Packit Service |
bf98b9 |
# just generate it manually.
|
|
Packit Service |
bf98b9 |
generate_pc_file "$ROOT_DIR/lib/pkgconfig/zlib.pc" "-lz" "$ZLIB_VERSION"
|
|
Packit Service |
bf98b9 |
generate_pc_file "$ROOT_DIR/lib/pkgconfig/libffi.pc" "-lffi" "$FFI_VERSION" \
|
|
Packit Service |
bf98b9 |
"${ROOT_DIR}/lib/libffi-${FFI_VERSION}/include"
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
RUN_PKG_CONFIG="$BUILD_DIR/run-pkg-config.sh";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
echo "Generating $BUILD_DIR/run-pkg-config.sh";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
cat > "$RUN_PKG_CONFIG" <
|
|
Packit Service |
bf98b9 |
# This is a wrapper script for pkg-config that overrides the
|
|
Packit Service |
bf98b9 |
# PKG_CONFIG_LIBDIR variable so that it won't pick up the local system
|
|
Packit Service |
bf98b9 |
# .pc files.
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
# The MinGW compiler on Fedora tries to do a similar thing except that
|
|
Packit Service |
bf98b9 |
# it also unsets PKG_CONFIG_PATH. This breaks any attempts to add a
|
|
Packit Service |
bf98b9 |
# local search path so we need to avoid using that script.
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
export PKG_CONFIG_LIBDIR="$ROOT_DIR/lib/pkgconfig"
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
exec pkg-config "\$@"
|
|
Packit Service |
bf98b9 |
EOF
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
chmod a+x "$RUN_PKG_CONFIG";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
# Build environment
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
find_compiler;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
build_config=`bash $DOWNLOAD_DIR/config.guess`;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
# Build source dependencies
|
|
Packit Service |
bf98b9 |
##
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
for dep in "${SOURCES_DEPS[@]}"; do
|
|
Packit Service |
bf98b9 |
echo "Building $dep...";
|
|
Packit Service |
bf98b9 |
src="${dep##*/}";
|
|
Packit Service |
bf98b9 |
src="${src%%.tar.*}";
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
if echo "$src" | grep -q '^glib'; then
|
|
Packit Service |
bf98b9 |
do_cross_compile "$src" --disable-modular-tests
|
|
Packit Service |
bf98b9 |
else
|
|
Packit Service |
bf98b9 |
do_cross_compile "$src"
|
|
Packit Service |
bf98b9 |
fi;
|
|
Packit Service |
bf98b9 |
done;
|
|
Packit Service |
bf98b9 |
|
|
Packit Service |
bf98b9 |
echo
|
|
Packit Service |
bf98b9 |
echo "Done!"
|
|
Packit Service |
bf98b9 |
echo
|
|
Packit Service |
bf98b9 |
echo "You should now have everything you need to cross compile Clutter"
|
|
Packit Service |
bf98b9 |
echo
|
|
Packit Service |
bf98b9 |
echo "To get started, you should be able to configure and build from"
|
|
Packit Service |
bf98b9 |
echo "the top of your clutter source directory as follows:"
|
|
Packit Service |
bf98b9 |
echo
|
|
Packit Service |
bf98b9 |
echo "./configure --host=\"$TARGET\" --target=\"$TARGET\" --build=\"$build_config\" --with-flavour=win32 CFLAGS=\"-mms-bitfields -I$ROOT_DIR/include\" PKG_CONFIG=\"$RUN_PKG_CONFIG\""
|
|
Packit Service |
bf98b9 |
echo "make"
|
|
Packit Service |
bf98b9 |
echo
|
|
Packit Service |
bf98b9 |
echo "Note: the explicit --build option is often necessary to ensure autoconf"
|
|
Packit Service |
bf98b9 |
echo "realizes you are cross-compiling."
|