Skip to content

Instantly share code, notes, and snippets.

@thatcosmonaut
Last active October 18, 2023 19:14
Show Gist options
  • Save thatcosmonaut/2ff0c2a783bcb1b0dc4d3597bc848697 to your computer and use it in GitHub Desktop.
Save thatcosmonaut/2ff0c2a783bcb1b0dc4d3597bc848697 to your computer and use it in GitHub Desktop.
Build moonlibs
#!/bin/bash
run_builds() {
cd ~/programming/$1
mkdir -p moonbuild
mkdir -p moonbuildWin64
mkdir -p moonbuildMac
cd moonbuild
cmake ..
make -j8
cd ../moonbuildMac
x86_64-apple-darwin18-cmake .. -DSDL2_LIBRARIES=/home/cosmonaut/programming/osxcross/target/lib/libSDL2-2.0.0.dylib -DSDL2_INCLUDE_DIRS=/home/cosmonaut/programming/osxcross/target/include/SDL2
make -j8
cd ../moonbuildWin64
mingw64-cmake .. -DSDL2_LIBRARIES=/home/cosmonaut/programming/SDL2-Win64/lib/x64/SDL2.lib -DSDL2_INCLUDE_DIRS=/home/cosmonaut/programming/SDL2-Win64/include
make -j8
}
pack_builds() {
mkdir -p ~/programming/$1/dist
cd ~/programming/$1/dist
mkdir -p lib64
mkdir -p x64
mkdir -p osx
cp ../moonbuild/lib$1.so.$2 lib64/
cp ../moonbuildWin64/$1.dll x64/
cp ../moonbuildMac/lib$1.$2.dylib osx/
x86_64-w64-mingw32-strip -S x64/$1.dll
x86_64-apple-darwin18-strip -S osx/lib$1.$2.dylib
x86_64-apple-darwin18-install_name_tool -id @rpath/lib$1.$2.dylib osx/lib$1.$2.dylib
x86_64-apple-darwin18-install_name_tool -change /home/cosmonaut/programming/osxcross/target/lib/libSDL2-2.0.0.dylib @rpath/libSDL2-2.0.0.dylib osx/lib$1.$2.dylib
mkdir -p debug_symbols
chrpath -d lib64/lib$1.so.$2
strip --only-keep-debug lib64/lib$1.so.$2 -o debug_symbols/lib$1.so.$2.debug
strip -S lib64/lib$1.so.$2
objcopy --add-gnu-debuglink=debug_symbols/lib$1.so.$2.debug lib64/lib$1.so.$2
cp lib64/lib$1.so.$2 ~/programming/moonlibs/lib64
cp x64/$1.dll ~/programming/moonlibs/x64
cp osx/lib$1.$2.dylib ~/programming/moonlibs/osx
}
set -ex
# args: [library name] [major version]
run_builds FAudio 0
run_builds Refresh 1
run_builds Wellspring 0
rm -rf ~/programming/moonlibs
mkdir -p ~/programming/moonlibs
mkdir -p ~/programming/moonlibs/lib64
mkdir -p ~/programming/moonlibs/x64
mkdir -p ~/programming/moonlibs/osx
mkdir -p ~/programming/moonlibs/video_shaders
pack_builds FAudio 0
pack_builds Refresh 1
pack_builds Wellspring 0
cd ~/programming
# download dav1dfile from github so we don't have to cross compile assembly
wget https://github.com/MoonsideGames/dav1dfile/releases/download/1.0.1/libdav1dfile.so
wget https://github.com/MoonsideGames/dav1dfile/releases/download/1.0.1/dav1dfile.dll
wget https://github.com/MoonsideGames/dav1dfile/releases/download/1.0.1/libdav1dfile.1.dylib
mv libdav1dfile.so ~/programming/moonlibs/lib64/libdav1dfile.so.1
mv dav1dfile.dll ~/programming/moonlibs/x64
mv libdav1dfile.1.dylib ~/programming/moonlibs/osx
# download fnalibs to get SDL2
mkdir -p ~/programming/fnalibs
wget https://fna.flibitijibibo.com/archive/fnalibs.tar.bz2
tar -xvC ~/programming/fnalibs -f ~/programming/fnalibs.tar.bz2
cp ~/programming/fnalibs/lib64/libSDL2-2.0.so.0 ~/programming/moonlibs/lib64
cp ~/programming/fnalibs/x64/SDL2.dll ~/programming/moonlibs/x64
cp ~/programming/fnalibs/osx/libSDL2-2.0.0.dylib ~/programming/moonlibs/osx
rm fnalibs.tar.bz2
# download MoltenVK
mkdir -p ~/programming/MoltenVK
wget https://github.com/KhronosGroup/MoltenVK/releases/download/v1.2.5/MoltenVK-macos.tar
tar -xvC ~/programming/MoltenVK -f ~/programming/MoltenVK-macos.tar
cp ~/programming/MoltenVK/MoltenVK/MoltenVK/dylib/macOS/libMoltenVK.dylib ~/programming/moonlibs/osx
cp ~/programming/MoltenVK/MoltenVK/MoltenVK/dylib/macOS/MoltenVK_icd.json ~/programming/moonlibs/osx
rm MoltenVK-macos.tar
# compile video shaders
cd ~/programming/moonlibs/video_shaders
dotnet run --project ~/programming/Refresh/shadercompiler --vulkan --d3d11 ~/programming/MoonWorks/src/Video/Shaders
cd ~/programming/moonlibs && tar cvfj ../moonlibs.tar.bz2 *
cd ..
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment