singe/singe/preBuild.sh
2020-03-29 22:13:50 -05:00

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