611 lines
19 KiB
Bash
Executable file
611 lines
19 KiB
Bash
Executable file
#!/bin/bash -xe
|
|
|
|
#
|
|
# Singe 2
|
|
# Copyright (C) 2006-2020 Scott Duensing <scott@kangaroopunch.com>
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
#
|
|
|
|
|
|
if [[ -z $1 ]]; then
|
|
G_PLATFORM=mac
|
|
# G_PLATFORM=mingw
|
|
# G_PLATFORM=linux
|
|
# G_PLATFORM=pi
|
|
G_BITS=64
|
|
G_THIRDPARTY=$(pwd)/thirdparty
|
|
G_DEST="$(pwd)/../thirdparty-build/${G_PLATFORM}/${G_BITS}"
|
|
G_TYPE=static
|
|
G_PROJECT=$(pwd)
|
|
else
|
|
G_THIRDPARTY=$1
|
|
G_BITS=$3
|
|
G_PLATFORM=$4
|
|
G_DEST=$2/$4/$3
|
|
G_TYPE=$5
|
|
G_PROJECT=$6
|
|
fi
|
|
|
|
G_INSTALLED="${G_DEST}/installed"
|
|
G_L="-------------------------------------------------------------------------------"
|
|
|
|
# Work out compiler settings
|
|
case "${G_PLATFORM}" in
|
|
|
|
pi)
|
|
G_CROSS_HOME="/opt/cross/pi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin"
|
|
G_OS="linux"
|
|
G_CROSS="arm-linux-gnueabihf"
|
|
G_CCOMPILER="${G_CROSS_HOME}/${G_CROSS}-gcc"
|
|
G_CPPCOMPILER="${G_CROSS_HOME}/${G_CROSS}-g++"
|
|
G_RANLIB="${G_CROSS_HOME}/${G_CROSS}-ranlib"
|
|
G_LUAPLAT="posix"
|
|
G_ARCH="armv6"
|
|
G_SYSROOT="/opt/cross/pi/buster"
|
|
;;
|
|
|
|
linux)
|
|
G_OS="linux"
|
|
G_CROSS="x86_64-linux-gnu"
|
|
G_CCOMPILER="gcc"
|
|
G_CPPCOMPILER="g++"
|
|
G_RANLIB="ranlib"
|
|
G_LUAPLAT="linux"
|
|
G_ARCH="x86_64"
|
|
;;
|
|
|
|
mingw)
|
|
G_OS="mingw32"
|
|
G_CROSS="x86_64-w64-mingw32"
|
|
G_CCOMPILER="${G_CROSS}-gcc"
|
|
G_CPPCOMPILER="${G_CROSS}-g++"
|
|
G_RANLIB="${G_CROSS}-ranlib"
|
|
G_LUAPLAT="generic"
|
|
G_ARCH="x86_64"
|
|
;;
|
|
|
|
mac)
|
|
G_OS="darwin"
|
|
G_CROSS="x86_64-apple-darwin15"
|
|
G_CCOMPILER="o64-clang"
|
|
G_CPPCOMPILER="o64-clang++"
|
|
G_RANLIB="${G_CROSS}-ranlib"
|
|
G_LUAPLAT="generic"
|
|
G_ARCH="x86_64"
|
|
O_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET}
|
|
export MACOSX_DEPLOYMENT_TARGET=10.8
|
|
;;
|
|
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}
|
|
local O_RANLIB=${RANLIB}
|
|
|
|
if [[ ! -e "${G_INSTALLED}/lib/${LOOKFOR}" ]]; then
|
|
echo ${G_L}
|
|
echo "Building ${LOOKFOR} from ${LOCATION}"
|
|
echo ${G_L}
|
|
pushd "${G_THIRDPARTY}/${LOCATION}"
|
|
if [[ -e autogen.sh ]]; then
|
|
./autogen.sh || true
|
|
else
|
|
autoreconf --force --install || true
|
|
fi
|
|
if [[ -e configure.ac ]]; then
|
|
automake --add-missing || true
|
|
fi
|
|
make distclean || true
|
|
make clean || true
|
|
popd
|
|
mkdir -p "${G_DEST}/${LOCATION}"
|
|
pushd "${G_DEST}/${LOCATION}"
|
|
|
|
if [[ ! -z ${G_SYSROOT} ]]; then
|
|
MORE_CFLAGS="--sysroot=${G_SYSROOT} ${MORE_CFLAGS}"
|
|
MORE_LIBS="--sysroot=${G_SYSROOT} ${MORE_LIBS}"
|
|
fi
|
|
|
|
export CC=${G_CCOMPILER}
|
|
export CXX=${G_CPPCOMPILER}
|
|
export CFLAGS="${MORE_CFLAGS} -isystem${G_INSTALLED}/include"
|
|
export CXXFLAGS="${MORE_CFLAGS} ${MORE_CXXFLAGS} -isystem${G_INSTALLED}/include"
|
|
export CPPFLAGS="${MORE_CFLAGS} -isystem${G_INSTALLED}/include"
|
|
export LDFLAGS="${MORE_LIBS} -L${G_INSTALLED}/lib"
|
|
export LD_LIBRARY_PATH="${G_INSTALLED}/lib"
|
|
export PKG_CONFIG_LIBDIR="${G_INSTALLED}/lib/pkgconfig"
|
|
export RANLIB="${G_RANLIB}"
|
|
|
|
if [[ "${LOCATION}" == "ffmpeg" ]]; then
|
|
PKG_CONFIG="/usr/bin/pkg-config" \
|
|
"${G_THIRDPARTY}/${LOCATION}/configure" \
|
|
--cc="${G_CCOMPILER}" \
|
|
--cxx="${G_CPPCOMPILER}" \
|
|
--ranlib="${G_RANLIB}" \
|
|
--target-os="${G_OS}" \
|
|
--cross-prefix="${G_CROSS}-" \
|
|
--arch=${G_ARCH} \
|
|
--enable-static \
|
|
--disable-shared \
|
|
--progs-suffix="" \
|
|
--prefix="${G_INSTALLED}" ${OPTIONS}
|
|
else
|
|
PKG_CONFIG="/usr/bin/pkg-config" \
|
|
"${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
|
|
|
|
MORE_CFLAGS=""
|
|
MORE_CXXFLAGS=""
|
|
MORE_LIBS=""
|
|
|
|
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}
|
|
export RANLIB=${O_RANLIB}
|
|
|
|
if [[ ${OPTIONS} == --help* || ${OPTIONS} == *--help ]]; then
|
|
popd
|
|
exit 1
|
|
fi
|
|
popd
|
|
fi
|
|
}
|
|
|
|
|
|
function createEmbeddedBinary() {
|
|
local BINFILE=$1
|
|
local SOURCEFILE=$2
|
|
local BLOCKER=$3
|
|
|
|
if [[ ! -e "${SOURCEFILE}" ]]; then
|
|
outputLicense > ${SOURCEFILE}
|
|
outputHeader ${BLOCKER} >> ${SOURCEFILE}
|
|
printf "\n#ifdef EMBED_HERE\n\n" >> ${SOURCEFILE}
|
|
xxd -i ${BINFILE} >> ${SOURCEFILE}
|
|
printf "\n#else // EMBED_HERE\n\n" >> ${SOURCEFILE}
|
|
printf "extern unsigned char ${BINFILE/\./_}[];\n" >> ${SOURCEFILE}
|
|
printf "extern unsigned int ${BINFILE/\./_}_len;\n" >> ${SOURCEFILE}
|
|
printf "\n#endif // EMBED_HERE\n\n" >> ${SOURCEFILE}
|
|
outputFooter ${BLOCKER} >> ${SOURCEFILE}
|
|
fi
|
|
}
|
|
|
|
|
|
function createEmbeddedImage() {
|
|
local BASENAME=$1
|
|
|
|
if [[ ! -e ${BASENAME}.h ]]; then
|
|
xcf2png ${BASENAME}.xcf -o ${BASENAME}.png
|
|
createEmbeddedBinary ${BASENAME}.png ${BASENAME}.h ${BASENAME^^}_H
|
|
rm ${BASENAME}.png
|
|
fi
|
|
}
|
|
|
|
|
|
function createExtensionHeader() {
|
|
local FFMPEG=$1
|
|
local a=
|
|
local c=0
|
|
|
|
outputLicense
|
|
outputHeader FFMPEG_EXTENSIONS_H
|
|
printf "static char *ffmpegExtensions[] = {\n"
|
|
printf "\t"
|
|
getExtensions "${FFMPEG}" | sort | uniq -u | while read a; do
|
|
printf "\"${a}\", "
|
|
c=$((c+1))
|
|
if [[ ${c} -ge 10 ]]; then
|
|
printf "\n\t"
|
|
c=0
|
|
fi
|
|
done
|
|
printf "0\n};"
|
|
outputFooter FFMPEG_EXTENSIONS_H
|
|
}
|
|
|
|
|
|
function getExtensions() {
|
|
local FFMPEG=$1
|
|
local a=
|
|
local b=
|
|
local c=
|
|
local d=
|
|
local e=
|
|
local f=
|
|
local g=
|
|
|
|
"${FFMPEG}" -demuxers 2> /dev/null | while read a b c; do
|
|
if [[ "${a}x" == "Dx" ]]; then
|
|
"${FFMPEG}" -h demuxer=${b} 2> /dev/null | grep "Common extensions" | while read d e f; do
|
|
g=${f/./}
|
|
echo -e "${g//,/\\n}"
|
|
done
|
|
fi
|
|
done
|
|
}
|
|
|
|
|
|
function outputFooter() {
|
|
local BLOCKER=$1
|
|
|
|
printf "\n#pragma GCC diagnostic pop\n\n\n#endif // ${BLOCKER}\n"
|
|
}
|
|
|
|
|
|
function outputHeader() {
|
|
local BLOCKER=$1
|
|
|
|
printf "\n\n#ifndef ${BLOCKER}\n#define ${BLOCKER}\n\n\n"
|
|
printf "// ===== THIS FILE IS AUTOMATICALLY GENERATED - DO NOT EDIT =====\n\n\n"
|
|
printf "#pragma GCC diagnostic push\n#pragma GCC diagnostic ignored \"-Wunused-variable\"\n"
|
|
}
|
|
|
|
|
|
function outputLicense() {
|
|
cat <<-LICENSE
|
|
/*
|
|
*
|
|
* Singe 2
|
|
* Copyright (C) 2006-2020 Scott Duensing <scott@kangaroopunch.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
*
|
|
*/
|
|
LICENSE
|
|
}
|
|
|
|
# === zlib ===
|
|
if [[ ! -e "${G_INSTALLED}/lib/libz.a" ]]; then
|
|
echo ${G_L}
|
|
echo "Building libz.a from zlib"
|
|
echo ${G_L}
|
|
mkdir -p "${G_DEST}/zlib"
|
|
pushd "${G_DEST}/zlib"
|
|
RANLIB="${G_RANLIB}" CC="${G_CCOMPILER}" "${G_THIRDPARTY}/zlib/configure" --static --prefix="${G_INSTALLED}"
|
|
make
|
|
make install
|
|
popd
|
|
fi
|
|
|
|
# === BZip2 ===
|
|
if [[ ! -e "${G_INSTALLED}/lib/libbz2.a" ]]; then
|
|
echo ${G_L}
|
|
echo "Building libbz2.a from bzip2"
|
|
echo ${G_L}
|
|
mkdir -p "${G_DEST}/bzip2"
|
|
pushd "${G_DEST}/bzip2"
|
|
cp -fr "${G_THIRDPARTY}/bzip2/." .
|
|
make install PREFIX="${G_INSTALLED}" CC="${G_CCOMPILER}" RANLIB="${G_RANLIB}"
|
|
popd
|
|
fi
|
|
|
|
# === Lua ===
|
|
if [[ ! -e "${G_INSTALLED}/lib/liblua.a" ]]; then
|
|
echo ${G_L}
|
|
echo "Building liblua.a from lua"
|
|
echo ${G_L}
|
|
mkdir -p "${G_DEST}/lua"
|
|
pushd "${G_DEST}/lua"
|
|
cp -fr "${G_THIRDPARTY}/lua/." .
|
|
make ${G_LUAPLAT} CC="${G_CCOMPILER}" RANLIB="${G_RANLIB}"
|
|
make install INSTALL_TOP="${G_INSTALLED}"
|
|
popd
|
|
fi
|
|
|
|
# === JBIG ===
|
|
if [[ ! -e "${G_INSTALLED}/lib/libjbig.a" ]]; then
|
|
echo ${G_L}
|
|
echo "Building libjbig.a from jbig"
|
|
echo ${G_L}
|
|
mkdir -p "${G_DEST}/SDL2_image/jbig"
|
|
pushd "${G_DEST}/SDL2_image/jbig"
|
|
cp -fr "${G_THIRDPARTY}/jbigkit/." .
|
|
make lib CC="${G_CCOMPILER}" RANLIB="${G_RANLIB}"
|
|
cp -f libjbig/*.a "${G_INSTALLED}/lib/."
|
|
cp -f libjbig/*.h "${G_INSTALLED}/include/."
|
|
popd
|
|
fi
|
|
|
|
# === XZ Utils ===
|
|
autoBuild liblzma.a xz
|
|
|
|
# === TIFF ===
|
|
autoBuild libtiff.a SDL2_image/external/tiff-4.1.0
|
|
|
|
# === WebP ===
|
|
autoBuild libwebp.a SDL2_image/external/libwebp-1.0.3
|
|
|
|
# === PNG ===
|
|
autoBuild libpng.a SDL2_image/external/libpng-1.6.37 "--with-zlib-prefix=\"${G_INSTALLED}\""
|
|
|
|
# === JPEG ===
|
|
autoBuild libjpeg.a SDL2_image/external/jpeg-9c
|
|
|
|
# === OGG ===
|
|
autoBuild libogg.a SDL2_mixer/external/libogg-1.3.2
|
|
|
|
# === FLAC ===
|
|
autoBuild libFLAC.a SDL2_mixer/external/flac-1.3.3
|
|
|
|
# === Vorbis ===
|
|
autoBuild libvorbis.a SDL2_mixer/external/libvorbis-1.3.6
|
|
|
|
# === ModPlug ===
|
|
autoBuild libmodplug.a SDL2_mixer/external/libmodplug-0.8.9.0 "ac_cv_c_bigendian=no"
|
|
|
|
# === MPG123 ===
|
|
autoBuild libmpg123.a SDL2_mixer/external/mpg123-1.25.13
|
|
|
|
# === Opus ===
|
|
autoBuild libopus.a SDL2_mixer/external/opus-1.3.1
|
|
|
|
# === OpusFile ===
|
|
DEPS_CFLAGS="-I${G_INSTALLED}/include -I${G_INSTALLED}/include/opus" \
|
|
DEPS_LIBS="-L${G_INSTALLED}/lib -logg -lopus" \
|
|
autoBuild libopusfile.a SDL2_mixer/external/opusfile-0.11 --disable-http
|
|
|
|
# === FFMPEG ===
|
|
if [[ "${G_PLATFORM}" == "pi" ]]; then
|
|
MORE_CFLAGS="-I${G_SYSROOT}/opt/vc/include/IL -I${G_SYSROOT}/opt/vc/include -I${G_SYSROOT}/usr/include -I${G_SYSROOT}/opt/vc/include/interface/vcos/pthreads" # -I${G_SYSROOT}/opt/vc/include/interface/vmcs_host/linux"
|
|
MORE_LIBS="-Wl,-rpath-link,${G_SYSROOT}/opt/vc/lib -L${G_SYSROOT}/opt/vc/lib -lpthread -lm -ldl -lrt"
|
|
autoBuild libavcodec.a ffmpeg "--disable-debug --disable-muxers --enable-mmal --enable-omx-rpi --enable-omx --disable-encoders --disable-filters --disable-network --disable-devices --enable-gpl"
|
|
else
|
|
autoBuild libavcodec.a ffmpeg "--disable-debug --disable-muxers --disable-hwaccels --disable-encoders --disable-filters --disable-network --disable-devices --enable-gpl"
|
|
fi
|
|
if [[ ! -e extensions.h ]]; then
|
|
createExtensionHeader "${G_DEST}/installed/bin/ffmpeg" > extensions.h
|
|
fi
|
|
|
|
# === 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
|
|
if [[ "${G_PLATFORM}" == "mac" ]]; then
|
|
MORE_CXXFLAGS="-std=c++11 -stdlib=libc++" \
|
|
FFMPEG_LIBS="-L${G_INSTALLED}/lib -lavformat -lavcodec -lswscale -lavutil -lswresample -lz -llzma -lbz2 -lpthread -liconv -lm -framework VideoToolbox -framework AudioToolbox -framework CoreFoundation -framework CoreMedia -framework CoreVideo -framework CoreServices" \
|
|
autoBuild libffms2.a ffms2
|
|
else
|
|
if [[ "${G_PLATFORM}" == "pi" ]]; then
|
|
MORE_CFLAGS="-I${G_SYSROOT}/opt/vc/include/IL -I${G_SYSROOT}/opt/vc/include -I${G_SYSROOT}/usr/include -I${G_SYSROOT}/opt/vc/include/interface/vcos/pthreads" # -I${G_SYSROOT}/opt/vc/include/interface/vmcs_host/linux"
|
|
MORE_LIBS="-Wl,-rpath-link,${G_SYSROOT}/opt/vc/lib -L${G_SYSROOT}/usr/lib/arm-linux-gnueabihf/vdpau -L${G_SYSROOT}/opt/vc/lib -lpthread -lm -ldl -lrt -llzma -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host -lz -lvdpau"
|
|
fi
|
|
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
|
|
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 -with-icu=no"
|
|
|
|
# === SDL2 ===
|
|
if [[ "${G_PLATFORM}" == "pi" ]]; then
|
|
MORE_CFLAGS="-I${G_SYSROOT}/opt/vc/include -I${G_SYSROOT}/usr/include -I${G_SYSROOT}/opt/vc/include/interface/vcos/pthreads -I${G_SYSROOT}/opt/vc/include/interface/vmcs_host/linux"
|
|
MORE_LIBS="-Wl,-rpath-link,${G_SYSROOT}/opt/vc/lib -L${G_SYSROOT}/opt/vc/lib -lbcm_host -lpthread -lm -ldl -lrt"
|
|
PKG_CONFIG_PATH="${G_SYSROOT}/usr/lib/arm-linux-gnueabihf/pkgconfig" \
|
|
PKG_CONFIG_SYSROOT_DIR="${G_SYSROOT}" \
|
|
autoBuild libSDL2.a SDL2 "--enable-video-kmsdrm --disable-video-x11 --disable-video-rpi --disable-video-opengl --disable-video-wayland"
|
|
else
|
|
autoBuild libSDL2.a SDL2
|
|
fi
|
|
|
|
# === SDL2_image === *** Not finding libtiff ***
|
|
if [[ "${G_PLATFORM}" == "pi" ]]; then
|
|
MORE_CFLAGS="-I${G_SYSROOT}/opt/vc/include -I${G_SYSROOT}/usr/include -I${G_SYSROOT}/opt/vc/include/interface/vcos/pthreads -I${G_SYSROOT}/opt/vc/include/interface/vmcs_host/linux"
|
|
MORE_LIBS="-Wl,-rpath-link,${G_SYSROOT}/opt/vc/lib -L${G_SYSROOT}/opt/vc/lib -lbcm_host"
|
|
fi
|
|
if [[ "${G_PLATFORM}" == "mac" ]]; then
|
|
MAC_SDL_LIBS="-lm -liconv -Wl,-framework,CoreAudio -Wl,-framework,AudioUnit -Wl,-framework,AudioToolbox -Wl,-framework,ForceFeedback -lobjc -Wl,-framework,CoreVideo -Wl,-framework,Cocoa -Wl,-framework,Carbon -Wl,-framework,IOKit -Wl,-weak_framework,QuartzCore -Wl,-weak_framework,Metal"
|
|
MORE_LIBS=${MAC_SDL_LIBS}
|
|
fi
|
|
autoBuild libSDL2_image.a SDL2_image "--disable-jpg-shared --disable-png-shared --disable-tif-shared --disable-webp-shared"
|
|
|
|
# === SDL2_mixer ===
|
|
if [[ "${G_PLATFORM}" == "pi" ]]; then
|
|
MORE_CFLAGS="-I${G_SYSROOT}/opt/vc/include -I${G_SYSROOT}/usr/include -I${G_SYSROOT}/opt/vc/include/interface/vcos/pthreads -I${G_SYSROOT}/opt/vc/include/interface/vmcs_host/linux"
|
|
MORE_LIBS="-Wl,-rpath-link,${G_SYSROOT}/opt/vc/lib -L${G_SYSROOT}/opt/vc/lib -lbcm_host"
|
|
fi
|
|
if [[ "${G_PLATFORM}" == "mac" ]]; then
|
|
MODPLUG_CFLAGS="-I${G_INSTALLED}/include -DMODPLUG_STATIC" \
|
|
MODPLUG_LIBS="-L${G_INSTALLED}/lib -lmodplug -lstdc++ -lm" \
|
|
SDL_LIBS="${MAC_SDL_LIBS}" \
|
|
autoBuild libSDL2_mixer.a SDL2_mixer "--disable-music-midi-fluidsynth --disable-music-ogg-shared --disable-music-flac-shared --disable-music-mod-modplug-shared --disable-music-mp3-mpg123-shared --disable-music-opus-shared"
|
|
|
|
else
|
|
MODPLUG_CFLAGS="-I${G_INSTALLED}/include -DMODPLUG_STATIC" \
|
|
MODPLUG_LIBS="-L${G_INSTALLED}/lib -lmodplug -lstdc++ -lm" \
|
|
autoBuild libSDL2_mixer.a SDL2_mixer "--disable-music-midi-fluidsynth --disable-music-ogg-shared --disable-music-flac-shared --disable-music-mod-modplug-shared --disable-music-mp3-mpg123-shared --disable-music-opus-shared"
|
|
fi
|
|
|
|
# === SDL2_ttf ===
|
|
if [[ "${G_PLATFORM}" == "pi" ]]; then
|
|
MORE_CFLAGS="-I${G_SYSROOT}/opt/vc/include -I${G_SYSROOT}/usr/include -I${G_SYSROOT}/opt/vc/include/interface/vcos/pthreads -I${G_SYSROOT}/opt/vc/include/interface/vmcs_host/linux"
|
|
MORE_LIBS="-Wl,-rpath-link,${G_SYSROOT}/opt/vc/lib -L${G_SYSROOT}/opt/vc/lib -lbcm_host"
|
|
fi
|
|
MORE_CFLAGS="${MORE_CFLAGS} -I${G_INSTALLED}/include/SDL2" \
|
|
autoBuild libSDL2_ttf.a SDL2_ttf "--with-ft-prefix=\"${G_INSTALLED}\" --with-sdl-prefix=\"${G_INSTALLED}\"" "libSDL2_ttf.la install-libLTLIBRARIES install-libSDL2_ttfincludeHEADERS"
|
|
|
|
# === Combine all dependencies into one big mess ===
|
|
if [[ ! -e "${G_INSTALLED}/lib/everything.a" ]]; then
|
|
pushd "${G_INSTALLED}/lib"
|
|
if [[ "${G_PLATFORM}" == "mac" ]]; then
|
|
${G_CROSS}-libtool -o everything.a -static \
|
|
libSDL2main.a \
|
|
libSDL2.a \
|
|
libSDL2_image.a \
|
|
libpng16.a \
|
|
libwebp.a \
|
|
libjpeg.a \
|
|
libSDL2_mixer.a \
|
|
libFLAC.a \
|
|
libmodplug.a \
|
|
libmpg123.a \
|
|
libvorbisfile.a \
|
|
libvorbis.a \
|
|
libogg.a \
|
|
libopusfile.a \
|
|
libopus.a \
|
|
libSDL2_ttf.a \
|
|
libfreetype.a \
|
|
libharfbuzz.a \
|
|
liblua.a \
|
|
libffms2.a \
|
|
libavformat.a \
|
|
libavcodec.a \
|
|
libswscale.a \
|
|
libavutil.a \
|
|
libswresample.a \
|
|
libz.a \
|
|
liblzma.a \
|
|
libbz2.a
|
|
else
|
|
${G_CROSS}-ar -M <<-LIBS
|
|
CREATE everything.a
|
|
ADDLIB libSDL2main.a
|
|
ADDLIB libSDL2.a
|
|
ADDLIB libSDL2_image.a
|
|
ADDLIB libpng16.a
|
|
ADDLIB libwebp.a
|
|
ADDLIB libjpeg.a
|
|
ADDLIB libSDL2_mixer.a
|
|
ADDLIB libFLAC.a
|
|
ADDLIB libmodplug.a
|
|
ADDLIB libmpg123.a
|
|
ADDLIB libvorbisfile.a
|
|
ADDLIB libvorbis.a
|
|
ADDLIB libogg.a
|
|
ADDLIB libopusfile.a
|
|
ADDLIB libopus.a
|
|
ADDLIB libSDL2_ttf.a
|
|
ADDLIB libfreetype.a
|
|
ADDLIB libharfbuzz.a
|
|
ADDLIB liblua.a
|
|
ADDLIB libffms2.a
|
|
ADDLIB libavformat.a
|
|
ADDLIB libavcodec.a
|
|
ADDLIB libswscale.a
|
|
ADDLIB libavutil.a
|
|
ADDLIB libswresample.a
|
|
ADDLIB libz.a
|
|
ADDLIB liblzma.a
|
|
ADDLIB libbz2.a
|
|
SAVE
|
|
END
|
|
LIBS
|
|
fi
|
|
ln -sf everything.a libeverything.a
|
|
popd
|
|
fi
|
|
|
|
pushd "${G_PROJECT}"
|
|
|
|
rm font.h icon.h kangarooPunchLogo.h singeLogo.h laserDisc.h magnifyingGlass.h indexing.h Framework_singe.h controls_cfg.h Menu_singe.h || true
|
|
|
|
# === Overlay Font ===
|
|
createEmbeddedImage font
|
|
|
|
# === Window Icon ===
|
|
createEmbeddedImage icon
|
|
|
|
# === Kangaroo Punch Logo ===
|
|
createEmbeddedImage kangarooPunchLogo
|
|
|
|
# === Singe Logo ===
|
|
createEmbeddedImage singeLogo
|
|
|
|
# === Laser Disc ===
|
|
createEmbeddedImage laserDisc
|
|
|
|
# === Magnifying Glass ===
|
|
createEmbeddedImage magnifyingGlass
|
|
|
|
# === "Indexing" Text ===
|
|
createEmbeddedImage indexing
|
|
|
|
# === Singe Framework ===
|
|
createEmbeddedBinary Framework.singe Framework_singe.h FRAMEWORK_SINGE_H
|
|
|
|
# === Default Config ===
|
|
createEmbeddedBinary controls.cfg controls_cfg.h CONTROLS_CFG_H
|
|
|
|
# === Singe Menu App ===
|
|
createEmbeddedBinary Menu.singe Menu_singe.h MENU_SINGE_H
|
|
|
|
# === Singe Menu Background Video ===
|
|
if [[ ! -f menuBackground_mkv.h ]]; then
|
|
ffmpeg -i 180503_01_PurpleGrid.mp4 -filter:v 'crop=ih/3*4:ih' -vf scale=720:480 -c:v libx264 -c:a copy menuBackground.mkv
|
|
createEmbeddedBinary menuBackground.mkv menuBackground_mkv.h MENUBACKGROUND_MKV_H
|
|
rm menuBackground.mkv
|
|
fi
|
|
|
|
popd
|
|
|
|
# === Singe Manual ===
|
|
libreoffice --headless "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" --convert-to pdf:writer_pdf_Export Manual.odt
|
|
createEmbeddedBinary Manual.pdf Manual_pdf.h MANUAL_H
|
|
rm Manual.pdf
|
|
|
|
# Clean Uo
|
|
case "${G_PLATFORM}" in
|
|
mac)
|
|
export MACOSX_DEPLOYMENT_TARGET=${O_MACOSX_DEPLOYMENT_TARGET}
|
|
;;
|
|
esac
|