From 11c80af82ff435cc56bdb604c3163d1d24b807e6 Mon Sep 17 00:00:00 2001 From: Scott Duensing Date: Thu, 26 Dec 2019 20:38:46 -0600 Subject: [PATCH] Still working on getting all the dependencies to cross-compile properly. --- singe/preBuild.sh | 110 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 93 insertions(+), 17 deletions(-) diff --git a/singe/preBuild.sh b/singe/preBuild.sh index 3e58215fa..5e9f89e7e 100755 --- a/singe/preBuild.sh +++ b/singe/preBuild.sh @@ -21,23 +21,56 @@ if [[ -z $1 ]]; then + G_PLATFORM=mingw +# G_PLATFORM=linux G_BITS=64 G_THIRDPARTY=$(pwd)/thirdparty - G_DEST="$(pwd)/../thirdparty-build/${G_BITS}" + G_DEST="$(pwd)/../thirdparty-build/${G_PLATFORM}/${G_BITS}" else G_THIRDPARTY=$1 - G_DEST=$2/$3 G_BITS=$3 + G_PLATFORM=$4 + G_DEST=$2/$4/$3 fi G_INSTALLED="${G_DEST}/installed" 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() { 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 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 echo ${G_L} @@ -53,18 +86,53 @@ function autoBuild() { popd mkdir -p "${G_DEST}/${LOCATION}" pushd "${G_DEST}/${LOCATION}" - PKG_CONFIG_LIBDIR="${G_INSTALLED}/lib/pkgconfig" \ - CFLAGS="-I${G_INSTALLED}/include ${MORE_CFLAGS}" \ - CXXFLAGS="-I${G_INSTALLED}/include ${MORE_CFLAGS}" \ - LDFLAGS="-L${G_INSTALLED}/lib ${MORE_LIBS}" \ + + export CC=${G_CCOMPILER} + export CXX=${G_CPPCOMPILER} + 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" \ + --target-os="${G_OS}" \ + --cross-prefix="${G_CROSS}-" \ + --arch=${G_ARCH} \ --enable-static \ --disable-shared \ + --program-suffix="" \ --prefix="${G_INSTALLED}" ${OPTIONS} - if [[ ${OPTIONS} != --help* && ${OPTIONS} != *--help ]]; then - make - make install 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 exit 1 fi @@ -150,7 +218,7 @@ if [[ ! -e "${G_INSTALLED}/lib/libz.a" ]]; then echo ${G_L} mkdir -p "${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 install popd @@ -164,7 +232,7 @@ if [[ ! -e "${G_INSTALLED}/lib/libbz2.a" ]]; then mkdir -p "${G_DEST}/bzip2" pushd "${G_DEST}/bzip2" cp -fr "${G_THIRDPARTY}/bzip2/." . - make install PREFIX="${G_INSTALLED}" + make install PREFIX="${G_INSTALLED}" CC="${G_CCOMPILER}" popd fi @@ -176,7 +244,7 @@ if [[ ! -e "${G_INSTALLED}/lib/liblua.a" ]]; then mkdir -p "${G_DEST}/lua" pushd "${G_DEST}/lua" cp -fr "${G_THIRDPARTY}/lua/." . - make linux + make ${G_LUAPLAT} CC="${G_CCOMPILER}" make install INSTALL_TOP="${G_INSTALLED}" popd fi @@ -189,7 +257,7 @@ if [[ ! -e "${G_INSTALLED}/lib/libjbig.a" ]]; then mkdir -p "${G_DEST}/SDL2_image/jbig" pushd "${G_DEST}/SDL2_image/jbig" cp -fr "${G_THIRDPARTY}/jbigkit/." . - make lib + make lib CC="${G_CCOMPILER}" cp -f libjbig/*.a "${G_INSTALLED}/lib/." cp -f libjbig/*.h "${G_INSTALLED}/include/." 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 # === 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 === autoBuild libjpeg.a SDL2_image/external/jpeg-9c @@ -240,14 +311,19 @@ if [[ ! -e extensions.h ]]; then fi # === FFMS2 === -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 +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" \ + autoBuild libffms2.a ffms2 +fi # === FreeType 2 === autoBuild libfreetype.a freetype2 --without-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 === autoBuild libSDL2.a SDL2