Still working on getting all the dependencies to cross-compile properly.

This commit is contained in:
Scott Duensing 2019-12-26 20:38:46 -06:00
parent be5e72fc6b
commit 11c80af82f

View file

@ -21,23 +21,56 @@
if [[ -z $1 ]]; then if [[ -z $1 ]]; then
G_PLATFORM=mingw
# G_PLATFORM=linux
G_BITS=64 G_BITS=64
G_THIRDPARTY=$(pwd)/thirdparty G_THIRDPARTY=$(pwd)/thirdparty
G_DEST="$(pwd)/../thirdparty-build/${G_BITS}" G_DEST="$(pwd)/../thirdparty-build/${G_PLATFORM}/${G_BITS}"
else else
G_THIRDPARTY=$1 G_THIRDPARTY=$1
G_DEST=$2/$3
G_BITS=$3 G_BITS=$3
G_PLATFORM=$4
G_DEST=$2/$4/$3
fi fi
G_INSTALLED="${G_DEST}/installed" G_INSTALLED="${G_DEST}/installed"
G_L="-------------------------------------------------------------------------------" G_L="-------------------------------------------------------------------------------"
# Work out compiler settings
case "${G_PLATFORM}" in
linux)
G_OS="linux"
G_CCOMPILER="gcc"
G_CPPCOMPILER="g++"
G_CROSS="x86_64-linux-gnu"
G_LUAPLAT="linux"
G_ARCH="x86_64"
;;
mingw)
G_OS="mingw32"
G_CCOMPILER="x86_64-w64-mingw32-gcc"
G_CPPCOMPILER="x86_64-w64-mingw32-g++"
G_CROSS="x86_64-w64-mingw32"
G_LUAPLAT="generic"
G_ARCH="x86_64"
;;
esac
function autoBuild() { function autoBuild() {
local LOOKFOR=$1 # File in G_DEST/lib to check to see if this library is already installed local LOOKFOR=$1 # File in G_DEST/lib to check to see if this library is already installed
local LOCATION=$2 # Path under G_THIRDPARTY where code exists local LOCATION=$2 # Path under G_THIRDPARTY where code exists
local OPTIONS=$3 # Additional configure options local OPTIONS=$3 # Additional configure options
local TARGET=$4 # Custom 'make' target name
local O_CC=${CC}
local O_CXX=${CXX}
local O_CFLAGS=${CFLAGS}
local O_CXXFLAGS=${CXXFLAGS}
local O_CPPFLAGS=${CPPFLAGS}
local O_LDFLAGS=${LDFLAGS}
local O_LD_LIBRARY_PATH=${LD_LIBRARY_PATH}
local O_PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR}
if [[ ! -e "${G_INSTALLED}/lib/${LOOKFOR}" ]]; then if [[ ! -e "${G_INSTALLED}/lib/${LOOKFOR}" ]]; then
echo ${G_L} echo ${G_L}
@ -53,18 +86,53 @@ function autoBuild() {
popd popd
mkdir -p "${G_DEST}/${LOCATION}" mkdir -p "${G_DEST}/${LOCATION}"
pushd "${G_DEST}/${LOCATION}" pushd "${G_DEST}/${LOCATION}"
PKG_CONFIG_LIBDIR="${G_INSTALLED}/lib/pkgconfig" \
CFLAGS="-I${G_INSTALLED}/include ${MORE_CFLAGS}" \ export CC=${G_CCOMPILER}
CXXFLAGS="-I${G_INSTALLED}/include ${MORE_CFLAGS}" \ export CXX=${G_CPPCOMPILER}
LDFLAGS="-L${G_INSTALLED}/lib ${MORE_LIBS}" \ export CFLAGS="-isystem${G_INSTALLED}/include ${MORE_CFLAGS}"
export CXXFLAGS="-isystem${G_INSTALLED}/include ${MORE_CFLAGS}"
export CPPFLAGS="-isystem${G_INSTALLED}/include ${MORE_CFLAGS}"
export LDFLAGS="-L${G_INSTALLED}/lib ${MORE_LIBS}"
export LD_LIBRARY_PATH=${G_INSTALLED}/lib
export PKG_CONFIG_LIBDIR=${G_INSTALLED}/lib/pkgconfig
if [[ "${LOCATION}" == "ffmpeg" ]]; then
"${G_THIRDPARTY}/${LOCATION}/configure" \ "${G_THIRDPARTY}/${LOCATION}/configure" \
--target-os="${G_OS}" \
--cross-prefix="${G_CROSS}-" \
--arch=${G_ARCH} \
--enable-static \ --enable-static \
--disable-shared \ --disable-shared \
--program-suffix="" \
--prefix="${G_INSTALLED}" ${OPTIONS} --prefix="${G_INSTALLED}" ${OPTIONS}
if [[ ${OPTIONS} != --help* && ${OPTIONS} != *--help ]]; then
make
make install
else else
"${G_THIRDPARTY}/${LOCATION}/configure" \
--target="${G_CROSS}" \
--host="${G_CROSS}" \
--build=x86_64-linux \
--enable-static \
--disable-shared \
--program-suffix="" \
--prefix="${G_INSTALLED}" ${OPTIONS}
fi
if [[ ${OPTIONS} != --help* && ${OPTIONS} != *--help ]]; then
make ${TARGET}
if [[ -z ${TARGET} ]]; then
make install
fi
fi
export CC=${O_CC}
export CXX=${O_CXX}
export CFLAGS=${O_CFLAGS}
export CXXFLAGS=${O_CXXFLAGS}
export CPPFLAGS=${O_CFLAGS}
export LDFLAGS=${O_LDFLAGS}
export LD_LIBRARY_PATH=${O_LD_LIBRARY_PATH}
export PKG_CONFIG_LIBDIR=${O_PKG_CONFIG_LIBDIR}
if [[ ${OPTIONS} == --help* || ${OPTIONS} == *--help ]]; then
popd popd
exit 1 exit 1
fi fi
@ -150,7 +218,7 @@ if [[ ! -e "${G_INSTALLED}/lib/libz.a" ]]; then
echo ${G_L} echo ${G_L}
mkdir -p "${G_DEST}/zlib" mkdir -p "${G_DEST}/zlib"
pushd "${G_DEST}/zlib" pushd "${G_DEST}/zlib"
"${G_THIRDPARTY}/zlib/configure" --static --prefix="${G_INSTALLED}" CC="${G_CCOMPILER}" "${G_THIRDPARTY}/zlib/configure" --static --prefix="${G_INSTALLED}"
make make
make install make install
popd popd
@ -164,7 +232,7 @@ if [[ ! -e "${G_INSTALLED}/lib/libbz2.a" ]]; then
mkdir -p "${G_DEST}/bzip2" mkdir -p "${G_DEST}/bzip2"
pushd "${G_DEST}/bzip2" pushd "${G_DEST}/bzip2"
cp -fr "${G_THIRDPARTY}/bzip2/." . cp -fr "${G_THIRDPARTY}/bzip2/." .
make install PREFIX="${G_INSTALLED}" make install PREFIX="${G_INSTALLED}" CC="${G_CCOMPILER}"
popd popd
fi fi
@ -176,7 +244,7 @@ if [[ ! -e "${G_INSTALLED}/lib/liblua.a" ]]; then
mkdir -p "${G_DEST}/lua" mkdir -p "${G_DEST}/lua"
pushd "${G_DEST}/lua" pushd "${G_DEST}/lua"
cp -fr "${G_THIRDPARTY}/lua/." . cp -fr "${G_THIRDPARTY}/lua/." .
make linux make ${G_LUAPLAT} CC="${G_CCOMPILER}"
make install INSTALL_TOP="${G_INSTALLED}" make install INSTALL_TOP="${G_INSTALLED}"
popd popd
fi fi
@ -189,7 +257,7 @@ if [[ ! -e "${G_INSTALLED}/lib/libjbig.a" ]]; then
mkdir -p "${G_DEST}/SDL2_image/jbig" mkdir -p "${G_DEST}/SDL2_image/jbig"
pushd "${G_DEST}/SDL2_image/jbig" pushd "${G_DEST}/SDL2_image/jbig"
cp -fr "${G_THIRDPARTY}/jbigkit/." . cp -fr "${G_THIRDPARTY}/jbigkit/." .
make lib make lib CC="${G_CCOMPILER}"
cp -f libjbig/*.a "${G_INSTALLED}/lib/." cp -f libjbig/*.a "${G_INSTALLED}/lib/."
cp -f libjbig/*.h "${G_INSTALLED}/include/." cp -f libjbig/*.h "${G_INSTALLED}/include/."
popd popd
@ -205,7 +273,10 @@ autoBuild libtiff.a SDL2_image/external/tiff-4.1.0
autoBuild libwebp.a SDL2_image/external/libwebp-1.0.3 autoBuild libwebp.a SDL2_image/external/libwebp-1.0.3
# === PNG === # === PNG ===
autoBuild libpng.a SDL2_image/external/libpng-1.6.37 #O_PNG_COPTS=${PNG_COPTS}
#export PNG_COPTS="-I${G_INSTALLED}/include"
autoBuild libpng.a SDL2_image/external/libpng-1.6.37 "--with-zlib-prefix=\"${G_INSTALLED}\""
#export PNG_COPTS=${O_PNG_COPTS}
# === JPEG === # === JPEG ===
autoBuild libjpeg.a SDL2_image/external/jpeg-9c autoBuild libjpeg.a SDL2_image/external/jpeg-9c
@ -240,14 +311,19 @@ if [[ ! -e extensions.h ]]; then
fi fi
# === FFMS2 === # === FFMS2 ===
if [[ "${G_PLATFORM}" == "mingw" ]]; then
FFMPEG_LIBS="-L${G_INSTALLED}/lib -l:libavformat.a -l:libavcodec.a -l:libswscale.a -l:libavutil.a -l:libswresample.a -l:libz.a -l:liblzma.a -l:libbz2.a -lm -lbcrypt" \
autoBuild libffms2.a ffms2 "" "src/core/libffms2.la install-libLTLIBRARIES install-includeHEADERS"
else
FFMPEG_LIBS="-L${G_INSTALLED}/lib -l:libavformat.a -l:libavcodec.a -l:libswscale.a -l:libavutil.a -l:libswresample.a -l:libz.a -l:liblzma.a -l:libbz2.a -lpthread -lXv -lX11 -lXext -lm" \ FFMPEG_LIBS="-L${G_INSTALLED}/lib -l:libavformat.a -l:libavcodec.a -l:libswscale.a -l:libavutil.a -l:libswresample.a -l:libz.a -l:liblzma.a -l:libbz2.a -lpthread -lXv -lX11 -lXext -lm" \
autoBuild libffms2.a ffms2 autoBuild libffms2.a ffms2
fi
# === FreeType 2 === # === FreeType 2 ===
autoBuild libfreetype.a freetype2 --without-harfbuzz autoBuild libfreetype.a freetype2 --without-harfbuzz
# === Harfbuzz === # === Harfbuzz ===
autoBuild libharfbuzz.a harfbuzz "--with-glib=no --with-icu=builtin --with-cairo=no --with-fontconfig=no --with-freetype=yes" autoBuild libharfbuzz.a harfbuzz "--with-glib=no --with-icu=builtin --with-cairo=no --with-fontconfig=no --with-freetype=yes -with-icu=no"
# === SDL2 === # === SDL2 ===
autoBuild libSDL2.a SDL2 autoBuild libSDL2.a SDL2