From 9d319287893ce676a7d827a28ef1b77c069f7dde Mon Sep 17 00:00:00 2001 From: Scott Duensing Date: Tue, 17 Mar 2020 20:20:38 -0500 Subject: [PATCH] macOS prereqs building. Ugly, bit it worked. --- singe/Framework.singe | 18 ++-- singe/preBuild.sh | 82 ++++++++++++++----- .../external/flac-1.3.3/doc/html/Makefile.in | 4 +- .../external/opus-1.3.1/doc/Makefile.in | 2 +- .../external/opusfile-0.11/Makefile.in | 4 +- singe/thirdparty/ffms2/src/core/track.cpp | 1 + 6 files changed, 78 insertions(+), 33 deletions(-) diff --git a/singe/Framework.singe b/singe/Framework.singe index d6ce60721..ed9bceef7 100644 --- a/singe/Framework.singe +++ b/singe/Framework.singe @@ -24,15 +24,15 @@ -- Singe 2.xx Features -function deepcopy(orig) +function utilDeepCopy(orig) local orig_type = type(orig) local copy if orig_type == 'table' then copy = {} for orig_key, orig_value in next, orig, nil do - copy[deepcopy(orig_key)] = deepcopy(orig_value) + copy[utilDeepCopy(orig_key)] = utilDeepCopy(orig_value) end - setmetatable(copy, deepcopy(getmetatable(orig))) + setmetatable(copy, utilDeepCopy(getmetatable(orig))) else -- number, string, boolean, etc copy = orig end @@ -327,9 +327,9 @@ GAMEPAD_0 = { GAMEPAD_0_MIN = 500 -- Lowest value GAMEPAD_0_MAX = 532 -- Highest value, not the number of items in the table. -GAMEPAD_1 = deepcopy(GAMEPAD_0) -GAMEPAD_2 = deepcopy(GAMEPAD_0) -GAMEPAD_3 = deepcopy(GAMEPAD_0) +GAMEPAD_1 = utilDeepCopy(GAMEPAD_0) +GAMEPAD_2 = utilDeepCopy(GAMEPAD_0) +GAMEPAD_3 = utilDeepCopy(GAMEPAD_0) for key, value in pairs(GAMEPAD_0) do GAMEPAD_1[key].value = GAMEPAD_1[key].value + 100 @@ -366,9 +366,9 @@ MOUSE_0 = { MOUSE_0_MIN = 1000 MOUSE_0_MAX = 1006 -MOUSE_1 = deepcopy(MOUSE_0) -MOUSE_2 = deepcopy(MOUSE_0) -MOUSE_3 = deepcopy(MOUSE_0) +MOUSE_1 = utilDeepCopy(MOUSE_0) +MOUSE_2 = utilDeepCopy(MOUSE_0) +MOUSE_3 = utilDeepCopy(MOUSE_0) for key, value in pairs(MOUSE_0) do MOUSE_1[key].value = MOUSE_1[key].value + 100 diff --git a/singe/preBuild.sh b/singe/preBuild.sh index 228c9fb2c..105856b5c 100755 --- a/singe/preBuild.sh +++ b/singe/preBuild.sh @@ -21,11 +21,11 @@ if [[ -z $1 ]]; then - G_PLATFORM=pi -# G_PLATFORM=mac + G_PLATFORM=mac # G_PLATFORM=mingw # G_PLATFORM=linux - G_BITS=32 +# G_PLATFORM=pi + G_BITS=64 G_THIRDPARTY=$(pwd)/thirdparty G_DEST="$(pwd)/../thirdparty-build/${G_PLATFORM}/${G_BITS}" G_TYPE=static @@ -49,6 +49,7 @@ case "${G_PLATFORM}" in 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" @@ -59,6 +60,7 @@ case "${G_PLATFORM}" in G_CROSS="x86_64-linux-gnu" G_CCOMPILER="gcc" G_CPPCOMPILER="g++" + G_RANLIB="ranlib" G_LUAPLAT="linux" G_ARCH="x86_64" ;; @@ -68,19 +70,21 @@ case "${G_PLATFORM}" in 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="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" - # ***HACK*** for macOS - export RANLIB=${G_CROSS}-ranlib + O_MACOSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} + export MACOSX_DEPLOYMENT_TARGET=10.8 ;; esac @@ -98,6 +102,7 @@ function autoBuild() { 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} @@ -126,14 +131,19 @@ function autoBuild() { export CC=${G_CCOMPILER} export CXX=${G_CPPCOMPILER} export CFLAGS="${MORE_CFLAGS} -isystem${G_INSTALLED}/include" - export CXXFLAGS="${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} \ @@ -142,6 +152,7 @@ function autoBuild() { --progs-suffix="" \ --prefix="${G_INSTALLED}" ${OPTIONS} else + PKG_CONFIG="/usr/bin/pkg-config" \ "${G_THIRDPARTY}/${LOCATION}/configure" \ --target="${G_CROSS}" \ --host="${G_CROSS}" \ @@ -160,6 +171,7 @@ function autoBuild() { fi MORE_CFLAGS="" + MORE_CXXFLAGS="" MORE_LIBS="" export CC=${O_CC} @@ -170,6 +182,7 @@ function autoBuild() { 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 @@ -301,7 +314,7 @@ if [[ ! -e "${G_INSTALLED}/lib/libz.a" ]]; then echo ${G_L} mkdir -p "${G_DEST}/zlib" pushd "${G_DEST}/zlib" - CC="${G_CCOMPILER}" "${G_THIRDPARTY}/zlib/configure" --static --prefix="${G_INSTALLED}" + RANLIB="${G_RANLIB}" CC="${G_CCOMPILER}" "${G_THIRDPARTY}/zlib/configure" --static --prefix="${G_INSTALLED}" make make install popd @@ -315,7 +328,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}" CC="${G_CCOMPILER}" + make install PREFIX="${G_INSTALLED}" CC="${G_CCOMPILER}" RANLIB="${G_RANLIB}" popd fi @@ -327,7 +340,7 @@ if [[ ! -e "${G_INSTALLED}/lib/liblua.a" ]]; then mkdir -p "${G_DEST}/lua" pushd "${G_DEST}/lua" cp -fr "${G_THIRDPARTY}/lua/." . - make ${G_LUAPLAT} CC="${G_CCOMPILER}" + make ${G_LUAPLAT} CC="${G_CCOMPILER}" RANLIB="${G_RANLIB}" make install INSTALL_TOP="${G_INSTALLED}" popd fi @@ -340,7 +353,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 CC="${G_CCOMPILER}" + make lib CC="${G_CCOMPILER}" RANLIB="${G_RANLIB}" cp -f libjbig/*.a "${G_INSTALLED}/lib/." cp -f libjbig/*.h "${G_INSTALLED}/include/." popd @@ -401,12 +414,18 @@ 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}" == "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" + 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 - 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 === @@ -431,6 +450,10 @@ 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 === @@ -438,9 +461,17 @@ 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 -MODPLUG_CFLAGS="-I${G_INSTALLED}/include -DMODPLUG_STATIC" \ +if [[ "${G_PLATFORM}" == "mac" ]]; then + 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" + 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 @@ -453,7 +484,12 @@ MORE_CFLAGS="${MORE_CFLAGS} -I${G_INSTALLED}/include/SDL2" \ # === Combine all dependencies into one big mess === if [[ ! -e "${G_INSTALLED}/lib/everything.a" ]]; then pushd "${G_INSTALLED}/lib" - ${G_CROSS}-ar -M <<-LIBS + if [[ "${G_PLATFORM}" == "mac" ]]; then + MY_AR="ar" + else + MY_AR="${G_CROSS}-ar" + fi + ${MY_AR} -M <<-LIBS CREATE everything.a ADDLIB libSDL2main.a ADDLIB libSDL2.a @@ -517,3 +553,11 @@ createEmbeddedBinary Framework.singe Framework_singe.h FRAMEWORK_SINGE_H # === Default Config === createEmbeddedBinary controls.cfg controls_cfg.h CONTROLS_CFG_H + + +# Clean Uo +case "${G_PLATFORM}" in + mac) + export MACOSX_DEPLOYMENT_TARGET=${O_MACOSX_DEPLOYMENT_TARGET} + ;; +esac diff --git a/singe/thirdparty/SDL2_mixer/external/flac-1.3.3/doc/html/Makefile.in b/singe/thirdparty/SDL2_mixer/external/flac-1.3.3/doc/html/Makefile.in index 31405dda8..3af9abfe8 100644 --- a/singe/thirdparty/SDL2_mixer/external/flac-1.3.3/doc/html/Makefile.in +++ b/singe/thirdparty/SDL2_mixer/external/flac-1.3.3/doc/html/Makefile.in @@ -667,9 +667,9 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -@FLaC__HAS_DOXYGEN_FALSE@uninstall-local: -@FLaC__HAS_DOXYGEN_FALSE@install-data-local: @FLaC__HAS_DOXYGEN_FALSE@distclean-local: +@FLaC__HAS_DOXYGEN_FALSE@install-data-local: +@FLaC__HAS_DOXYGEN_FALSE@uninstall-local: clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am diff --git a/singe/thirdparty/SDL2_mixer/external/opus-1.3.1/doc/Makefile.in b/singe/thirdparty/SDL2_mixer/external/opus-1.3.1/doc/Makefile.in index 354da2ad2..b2912d2e3 100644 --- a/singe/thirdparty/SDL2_mixer/external/opus-1.3.1/doc/Makefile.in +++ b/singe/thirdparty/SDL2_mixer/external/opus-1.3.1/doc/Makefile.in @@ -394,9 +394,9 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -@HAVE_DOXYGEN_FALSE@uninstall-local: @HAVE_DOXYGEN_FALSE@install-data-local: @HAVE_DOXYGEN_FALSE@clean-local: +@HAVE_DOXYGEN_FALSE@uninstall-local: clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am diff --git a/singe/thirdparty/SDL2_mixer/external/opusfile-0.11/Makefile.in b/singe/thirdparty/SDL2_mixer/external/opusfile-0.11/Makefile.in index 2ce5de6c0..721283f8d 100644 --- a/singe/thirdparty/SDL2_mixer/external/opusfile-0.11/Makefile.in +++ b/singe/thirdparty/SDL2_mixer/external/opusfile-0.11/Makefile.in @@ -1018,9 +1018,9 @@ distclean-generic: maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -@HAVE_DOXYGEN_FALSE@clean-local: -@HAVE_DOXYGEN_FALSE@uninstall-local: @HAVE_DOXYGEN_FALSE@install-data-local: +@HAVE_DOXYGEN_FALSE@uninstall-local: +@HAVE_DOXYGEN_FALSE@clean-local: clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool clean-local \ diff --git a/singe/thirdparty/ffms2/src/core/track.cpp b/singe/thirdparty/ffms2/src/core/track.cpp index fd30006ab..e9744494c 100644 --- a/singe/thirdparty/ffms2/src/core/track.cpp +++ b/singe/thirdparty/ffms2/src/core/track.cpp @@ -26,6 +26,7 @@ #include #include +#include extern "C" { #include