mirror of
https://github.com/ValveSoftware/Proton.git
synced 2024-12-25 14:15:45 +03:00
remove old build script
This commit is contained in:
parent
f097693864
commit
90ef255eb9
739
build_proton.sh
739
build_proton.sh
@ -1,739 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "$1: [--build component] [--release] [--package] [--with-ffmpeg]"
|
||||
echo "Build the Proton Steam Tool"
|
||||
echo "Component can be one or more of:"
|
||||
echo " wine, wine32, wine64"
|
||||
echo " vrclient, vrclient32, vrclient64"
|
||||
echo " lsteamclient, lsteamclient32, lsteamclient64"
|
||||
echo "or all, which is the default. The 'all' component also implies --package"
|
||||
echo "--release causes symbols to be stripped of debug info."
|
||||
echo "--package creates the tar ball in dist/."
|
||||
echo "--with-ffmpeg builds FFmpeg for WMA audio support"
|
||||
}
|
||||
|
||||
set -e
|
||||
|
||||
JOBS=-j"$(( $(nproc 2>/dev/null||sysctl -n hw.ncpu 2>/dev/null||echo 4) + 1))"
|
||||
PLATFORM=$(uname)
|
||||
|
||||
[ -z "$STEAM_RUNTIME" ] && STEAM_RUNTIME="$HOME/steam-runtime"
|
||||
|
||||
#./wine/ <-- wine source
|
||||
#./build/ <-- build files
|
||||
#./dist/ <-- proton build, ready to distribute
|
||||
|
||||
function build_freetype
|
||||
{
|
||||
cd "$TOP"/freetype2
|
||||
|
||||
if [ ! -e "$TOOLS_DIR64"/lib/libprotonfreetype."$LIB_SUFFIX" ]; then
|
||||
sed -i -e 's/^LIBRARY.*/LIBRARY=libprotonfreetype/' builds/unix/unix-cc.in
|
||||
|
||||
bash ./autogen.sh
|
||||
|
||||
#freetype 32-bit
|
||||
mkdir -p "$TOP"/build/freetype.win32
|
||||
cd "$TOP"/build/freetype.win32
|
||||
"$TOP"/freetype2/configure --prefix="$TOOLS_DIR32" --without-png --host i686-apple-darwin CFLAGS='-m32 -g -O2' LDFLAGS=-m32 PKG_CONFIG=false
|
||||
make $JOBS
|
||||
make install
|
||||
|
||||
#freetype 64-bit
|
||||
mkdir -p "$TOP"/build/freetype.win64
|
||||
cd "$TOP"/build/freetype.win64
|
||||
"$TOP"/freetype2/configure --prefix="$TOOLS_DIR64" --without-png --host x86_64-apple-darwin PKG_CONFIG=false
|
||||
make $JOBS
|
||||
make install
|
||||
fi
|
||||
|
||||
cp "$TOOLS_DIR32"/lib/libprotonfreetype.dylib "$DST_DIR"/lib
|
||||
$STRIP "$DST_DIR"/lib/libprotonfreetype.dylib
|
||||
|
||||
cp "$TOOLS_DIR64"/lib/libprotonfreetype.dylib "$DST_DIR"/lib64
|
||||
$STRIP "$DST_DIR"/lib64/libprotonfreetype.dylib
|
||||
}
|
||||
|
||||
function build_libpng
|
||||
{
|
||||
cd "$TOP"/libpng
|
||||
if [ ! -e 'configure' ]; then
|
||||
sed -i -e 's/libpng@PNGLIB_MAJOR@@PNGLIB_MINOR@/libprotonpng@PNGLIB_MAJOR@@PNGLIB_MINOR@/' Makefile.am
|
||||
|
||||
bash ./autogen.sh
|
||||
fi
|
||||
|
||||
if [ ! -e "$TOOLS_DIR64"/lib/libprotonpng16."$LIB_SUFFIX" ]; then
|
||||
#libpng 32-bit
|
||||
mkdir -p "$TOP"/build/libpng.win32
|
||||
cd "$TOP"/build/libpng.win32
|
||||
"$TOP"/libpng/configure --prefix="$TOOLS_DIR32" --host i686-apple-darwin CFLAGS='-m32 -g -O2' LDFLAGS=-m32
|
||||
make $JOBS
|
||||
make install
|
||||
|
||||
#libpng 64-bit
|
||||
mkdir -p "$TOP"/build/libpng.win64
|
||||
cd "$TOP"/build/libpng.win64
|
||||
"$TOP"/libpng/configure --prefix="$TOOLS_DIR64" --host x86_64-apple-darwin
|
||||
make $JOBS
|
||||
make install
|
||||
fi
|
||||
|
||||
cp "$TOOLS_DIR32"/lib/libprotonpng16.dylib "$DST_DIR"/lib
|
||||
$STRIP "$DST_DIR"/lib/libprotonpng16.dylib
|
||||
|
||||
cp "$TOOLS_DIR64"/lib/libprotonpng16.dylib "$DST_DIR"/lib64
|
||||
$STRIP "$DST_DIR"/lib64/libprotonpng16.dylib
|
||||
}
|
||||
|
||||
function build_libjpeg
|
||||
{
|
||||
cd "$TOP"/libjpeg-turbo
|
||||
if [ ! -e 'configure' ]; then
|
||||
autoreconf -fiv
|
||||
fi
|
||||
|
||||
#if this fails with an nasm error, install a newer nasm with
|
||||
#homebrew or the like and put it into your PATH
|
||||
|
||||
if [ ! -e "$TOOLS_DIR64"/lib/libprotonjpeg."$LIB_SUFFIX" ]; then
|
||||
#libjpeg 32-bit
|
||||
mkdir -p "$TOP"/build/libjpeg.win32
|
||||
cd "$TOP"/build/libjpeg.win32
|
||||
"$TOP"/libjpeg-turbo/configure --prefix="$TOOLS_DIR32" --host i686-apple-darwin CFLAGS='-O3 -g -m32' LDFLAGS=-m32
|
||||
make $JOBS
|
||||
make install
|
||||
mv "$TOOLS_DIR32"/lib/lib{,proton}jpeg.dylib
|
||||
|
||||
#libjpeg 64-bit
|
||||
mkdir -p "$TOP"/build/libjpeg.win64
|
||||
cd "$TOP"/build/libjpeg.win64
|
||||
"$TOP"/libjpeg-turbo/configure --prefix="$TOOLS_DIR64" --host x86_64-apple-darwin
|
||||
make $JOBS
|
||||
make install
|
||||
mv "$TOOLS_DIR64"/lib/lib{,proton}jpeg.dylib
|
||||
fi
|
||||
|
||||
cp "$TOOLS_DIR32"/lib/libprotonjpeg.dylib "$DST_DIR"/lib/
|
||||
$STRIP "$DST_DIR"/lib/libprotonjpeg.dylib
|
||||
|
||||
cp "$TOOLS_DIR64"/lib/libprotonjpeg.dylib "$DST_DIR"/lib64/
|
||||
$STRIP "$DST_DIR"/lib64/libprotonjpeg.dylib
|
||||
}
|
||||
|
||||
function build_openal
|
||||
{
|
||||
if [ ! -e "$TOOLS_DIR64"/lib/libopenal."$LIB_SUFFIX" ]; then
|
||||
#openal 32-bit
|
||||
cd "$TOP"
|
||||
mkdir -p build/openal.win32
|
||||
cd build/openal.win32
|
||||
$I386_WRAPPER "$CMAKE32" "$TOP"/openal-soft -DCMAKE_C_FLAGS="-m32" -DCMAKE_INSTALL_PREFIX="$TOOLS_DIR32"
|
||||
$I386_WRAPPER make $JOBS VERBOSE=1
|
||||
$I386_WRAPPER make install VERBOSE=1
|
||||
|
||||
#openal 64-bit
|
||||
cd "$TOP"
|
||||
mkdir -p build/openal.win64
|
||||
cd build/openal.win64
|
||||
$AMD64_WRAPPER "$CMAKE64" "$TOP"/openal-soft -DCMAKE_INSTALL_PREFIX="$TOOLS_DIR64"
|
||||
$AMD64_WRAPPER make $JOBS VERBOSE=1
|
||||
$AMD64_WRAPPER make install VERBOSE=1
|
||||
fi
|
||||
|
||||
cp -L "$TOOLS_DIR32"/lib/libopenal* "$DST_DIR"/lib/
|
||||
cp -L "$TOOLS_DIR64"/lib/libopenal* "$DST_DIR"/lib64/
|
||||
$STRIP "$DST_DIR"/lib/libopenal."$LIB_SUFFIX"
|
||||
$STRIP "$DST_DIR"/lib64/libopenal."$LIB_SUFFIX"
|
||||
}
|
||||
|
||||
function build_libSDL
|
||||
{
|
||||
if [ ! -e "$TOOLS_DIR64/lib/libSDL2.$LIB_SUFFIX" ]; then
|
||||
cd "$TOP"/SDL-mirror
|
||||
bash ./autogen.sh
|
||||
|
||||
#libsdl2 32-bit
|
||||
cd "$TOP"
|
||||
mkdir -p build/SDL2.win32
|
||||
cd build/SDL2.win32
|
||||
"$TOP"/SDL-mirror/configure --prefix="$TOOLS_DIR32" --host i686-apple-darwin CFLAGS='-m32 -g -O2' LDFLAGS=-m32
|
||||
make $JOBS
|
||||
make install-hdrs
|
||||
make install-lib
|
||||
|
||||
#libsdl2 64-bit
|
||||
cd "$TOP"
|
||||
mkdir -p build/SDL2.win64
|
||||
cd build/SDL2.win64
|
||||
"$TOP"/SDL-mirror/configure --prefix="$TOOLS_DIR64" --host x86_64-apple-darwin
|
||||
make $JOBS
|
||||
make install-hdrs
|
||||
make install-lib
|
||||
fi
|
||||
|
||||
cp "$TOOLS_DIR32"/lib/libSDL2."$LIB_SUFFIX" "$DST_DIR"/lib
|
||||
$STRIP "$DST_DIR"/lib/libSDL2.dylib
|
||||
|
||||
cp "$TOOLS_DIR64"/lib/libSDL2."$LIB_SUFFIX" "$DST_DIR"/lib64
|
||||
$STRIP "$DST_DIR"/lib64/libSDL2.dylib
|
||||
}
|
||||
|
||||
function build_moltenvk
|
||||
{
|
||||
#requires Xcode >= 9
|
||||
cd "$TOP"/MoltenVK/
|
||||
|
||||
if [ ! -e "Package/Release/MoltenVK/macOS/libMoltenVK.dylib" ]; then
|
||||
./fetchDependencies
|
||||
xcodebuild -scheme 'MoltenVK (Release)' build
|
||||
fi
|
||||
|
||||
cp -a Package/Release/MoltenVK/include/* "$TOOLS_DIR64"/include/
|
||||
cp -a Package/Release/MoltenVK/macOS/libMoltenVK.dylib "$TOOLS_DIR64"/lib/
|
||||
cp -a Package/Release/MoltenVK/macOS/libMoltenVK.dylib "$DST_DIR"/lib64/
|
||||
}
|
||||
|
||||
function build_ffmpeg
|
||||
{
|
||||
if [ ! -e "$TOOLS_DIR64/lib/libavcodec.$LIB_SUFFIX" ]; then
|
||||
#ffmpeg 32-bit
|
||||
cd "$TOP"
|
||||
mkdir -p build/ffmpeg.win32
|
||||
cd build/ffmpeg.win32
|
||||
$I386_WRAPPER "$TOP"/ffmpeg/configure \
|
||||
--extra-cflags="$FFMPEG_CROSS_CFLAGS" --extra-ldflags="$FFMPEG_CROSS_LDFLAGS" \
|
||||
--prefix="$TOOLS_DIR32" \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--disable-programs \
|
||||
--disable-doc \
|
||||
--disable-avdevice \
|
||||
--disable-avformat \
|
||||
--disable-swresample \
|
||||
--disable-swscale \
|
||||
--disable-postproc \
|
||||
--disable-avfilter \
|
||||
--disable-alsa \
|
||||
--disable-iconv \
|
||||
--disable-libxcb_shape \
|
||||
--disable-libxcb_shm \
|
||||
--disable-libxcb_xfixes \
|
||||
--disable-sdl2 \
|
||||
--disable-xlib \
|
||||
--disable-zlib \
|
||||
--disable-bzlib \
|
||||
--disable-libxcb \
|
||||
--disable-vaapi \
|
||||
--disable-vdpau \
|
||||
--disable-everything \
|
||||
--enable-decoder=wmav2 \
|
||||
--enable-decoder=adpcm_ms
|
||||
$I386_WRAPPER make $JOBS
|
||||
$I386_WRAPPER make install
|
||||
|
||||
|
||||
#ffmpeg 64-bit
|
||||
cd "$TOP"
|
||||
mkdir -p build/ffmpeg.win64
|
||||
cd build/ffmpeg.win64
|
||||
$AMD64_WRAPPER "$TOP"/ffmpeg/configure --prefix="$TOOLS_DIR64" \
|
||||
--disable-static \
|
||||
--enable-shared \
|
||||
--disable-programs \
|
||||
--disable-doc \
|
||||
--disable-avdevice \
|
||||
--disable-avformat \
|
||||
--disable-swresample \
|
||||
--disable-swscale \
|
||||
--disable-postproc \
|
||||
--disable-avfilter \
|
||||
--disable-alsa \
|
||||
--disable-iconv \
|
||||
--disable-libxcb_shape \
|
||||
--disable-libxcb_shm \
|
||||
--disable-libxcb_xfixes \
|
||||
--disable-sdl2 \
|
||||
--disable-xlib \
|
||||
--disable-zlib \
|
||||
--disable-bzlib \
|
||||
--disable-libxcb \
|
||||
--disable-vaapi \
|
||||
--disable-vdpau \
|
||||
--disable-everything \
|
||||
--enable-decoder=wmav2 \
|
||||
--enable-decoder=adpcm_ms
|
||||
$AMD64_WRAPPER make $JOBS
|
||||
$AMD64_WRAPPER make install
|
||||
fi
|
||||
|
||||
cp -L "$TOOLS_DIR32"/lib/libavcodec* "$DST_DIR"/lib/
|
||||
cp -L "$TOOLS_DIR32"/lib/libavutil* "$DST_DIR"/lib/
|
||||
cp -L "$TOOLS_DIR64"/lib/libavcodec* "$DST_DIR"/lib64/
|
||||
cp -L "$TOOLS_DIR64"/lib/libavutil* "$DST_DIR"/lib64/
|
||||
}
|
||||
|
||||
function build_wine64
|
||||
{
|
||||
cd "$TOP"/build/wine.win64
|
||||
STRIP="$STRIP" CFLAGS="-I$TOOLS_DIR64/include -g -O2" LDFLAGS="-L$TOOLS_DIR64/lib" PKG_CONFIG_PATH="$TOOLS_DIR64/lib/pkgconfig" CC="$CC" \
|
||||
PNG_CFLAGS="$PNG64_CFLAGS" PNG_LIBS="$PNG64_LIBS" ac_cv_lib_soname_png="$ac_cv_lib_soname_png64" \
|
||||
JPEG_CFLAGS="$JPEG64_CFLAGS" JPEG_LIBS="$JPEG64_LIBS" ac_cv_lib_soname_jpeg="$ac_cv_lib_soname_jpeg64" \
|
||||
FREETYPE_CFLAGS="$FREETYPE64_CFLAGS" FREETYPE_LIBS="$FREETYPE64_LIBS" ac_cv_lib_soname_freetype="$ac_cv_lib_soname_freetype64" \
|
||||
$AMD64_WRAPPER "$TOP"/wine/configure \
|
||||
--without-curses "$WITHOUT_X" \
|
||||
--enable-win64 --disable-tests --prefix="$DST_DIR"
|
||||
STRIP="$STRIP" $AMD64_WRAPPER make $JOBS
|
||||
INSTALL_PROGRAM_FLAGS="$INSTALL_PROGRAM_FLAGS" STRIP="$STRIP" $AMD64_WRAPPER make install-lib
|
||||
INSTALL_PROGRAM_FLAGS="$INSTALL_PROGRAM_FLAGS" STRIP="$STRIP" $AMD64_WRAPPER make prefix="$TOOLS_DIR64" libdir="$TOOLS_DIR64/lib64" dlldir="$TOOLS_DIR64/lib64/wine" install-dev install-lib
|
||||
rm -f "$DST_DIR"/bin/{msiexec,notepad,regedit,regsvr32,wineboot,winecfg,wineconsole,winedbg,winefile,winemine,winepath}
|
||||
rm -rf "$DST_DIR/share/man/"
|
||||
|
||||
mkdir -p "$TOOLS_DIR64"/lib/pkgconfig/
|
||||
cat > "$TOOLS_DIR64"/lib/pkgconfig/proton.pc <<EOF
|
||||
prefix=$TOOLS_DIR64
|
||||
exec_prefix=\${prefix}
|
||||
libdir=\${exec_prefix}/lib64
|
||||
includedir=\${prefix}/include
|
||||
|
||||
Name: Proton
|
||||
Description: Proton
|
||||
Requires:
|
||||
Version: 3.16
|
||||
Libs: -L\${libdir} -L\${libdir}/wine
|
||||
Cflags: -I\${includedir} -I\${includedir}/wine -I\${includedir}/wine/windows
|
||||
EOF
|
||||
}
|
||||
|
||||
function build_wine32
|
||||
{
|
||||
cd "$TOP"/build/wine.win32
|
||||
STRIP="$STRIP" CFLAGS="-I$TOOLS_DIR32/include -g -O2" LDFLAGS="-L$TOOLS_DIR32/lib" PKG_CONFIG_PATH="$TOOLS_DIR32/lib/pkgconfig" CC="$CC" \
|
||||
PNG_CFLAGS="$PNG32_CFLAGS" PNG_LIBS="$PNG32_LIBS" ac_cv_lib_soname_png="$ac_cv_lib_soname_png32" \
|
||||
JPEG_CFLAGS="$JPEG32_CFLAGS" JPEG_LIBS="$JPEG32_LIBS" ac_cv_lib_soname_jpeg="$ac_cv_lib_soname_jpeg32" \
|
||||
FREETYPE_CFLAGS="$FREETYPE32_CFLAGS" FREETYPE_LIBS="$FREETYPE32_LIBS" ac_cv_lib_soname_freetype="$ac_cv_lib_soname_freetype32" \
|
||||
$I386_WRAPPER "$TOP"/wine/configure \
|
||||
--without-curses "$WITHOUT_X" \
|
||||
--disable-tests --prefix="$TOP/build/dist.win32/"
|
||||
STRIP="$STRIP" $I386_WRAPPER make $JOBS
|
||||
INSTALL_PROGRAM_FLAGS="$INSTALL_PROGRAM_FLAGS" STRIP="$STRIP" $I386_WRAPPER make install-lib
|
||||
INSTALL_PROGRAM_FLAGS="$INSTALL_PROGRAM_FLAGS" STRIP="$STRIP" $I386_WRAPPER make prefix="$TOOLS_DIR32" libdir="$TOOLS_DIR32/lib" dlldir="$TOOLS_DIR32/lib/wine" install-dev install-lib
|
||||
|
||||
#install 32-bit stuff manually, see
|
||||
# https://wiki.winehq.org/Packaging#WoW64_Workarounds
|
||||
cd "$TOP"/build/dist.win32/
|
||||
cp -a lib "$DST_DIR"/
|
||||
cp -a bin/wine "$DST_DIR"/bin/
|
||||
if [ "$PLATFORM" != "Darwin" ]; then
|
||||
cp -a bin/wine-preloader "$DST_DIR"/bin/
|
||||
fi
|
||||
cat > "$TOOLS_DIR32"/lib/pkgconfig/proton.pc <<EOF
|
||||
prefix=$TOOLS_DIR32
|
||||
exec_prefix=\${prefix}
|
||||
libdir=\${exec_prefix}/lib
|
||||
includedir=\${prefix}/include
|
||||
|
||||
Name: Proton
|
||||
Description: Proton
|
||||
Requires:
|
||||
Version: 3.16
|
||||
Libs: -L\${libdir} -L\${libdir}/wine
|
||||
Cflags: -I\${includedir} -I\${includedir}/wine -I\${includedir}/wine/windows
|
||||
EOF
|
||||
}
|
||||
|
||||
function build_lsteamclient64
|
||||
{
|
||||
cd "$TOP"
|
||||
rm -rf build/lsteamclient.win64
|
||||
cp -a lsteamclient build/lsteamclient.win64
|
||||
cd "$TOP"/build/lsteamclient.win64/
|
||||
$AMD64_WRAPPER "$TOP"/wine/tools/winemaker/winemaker \
|
||||
--nosource-fix --nolower-include --nodlls --nomsvcrt \
|
||||
-DSTEAM_API_EXPORTS \
|
||||
-I"$TOOLS_DIR64"/include/ \
|
||||
-I"$TOOLS_DIR64"/include/wine/ \
|
||||
-I"$TOOLS_DIR64"/include/wine/windows/ \
|
||||
-L"$TOOLS_DIR64"/lib64/ \
|
||||
-L"$TOOLS_DIR64"/lib64/wine/ \
|
||||
--dll .
|
||||
CXXFLAGS="-Wno-attributes -O2" CFLAGS="-O2 -g" PATH="$TOOLS_DIR64/bin:$PATH" $AMD64_WRAPPER make $JOBS
|
||||
if [ x"$STRIP" != x ]; then
|
||||
$AMD64_WRAPPER $STRIP lsteamclient.dll.so
|
||||
fi
|
||||
cp -a lsteamclient.dll.so "$DST_DIR"/lib64/wine/
|
||||
}
|
||||
|
||||
function build_lsteamclient32
|
||||
{
|
||||
cd "$TOP"
|
||||
rm -rf build/lsteamclient.win32
|
||||
cp -a lsteamclient build/lsteamclient.win32
|
||||
cd "$TOP"/build/lsteamclient.win32/
|
||||
$I386_WRAPPER "$TOP"/wine/tools/winemaker/winemaker \
|
||||
--nosource-fix --nolower-include --nodlls --nomsvcrt --wine32 \
|
||||
-DSTEAM_API_EXPORTS \
|
||||
-I"$TOOLS_DIR32"/include/ \
|
||||
-I"$TOOLS_DIR32"/include/wine/ \
|
||||
-I"$TOOLS_DIR32"/include/wine/windows/ \
|
||||
-L"$TOOLS_DIR32"/lib/ \
|
||||
-L"$TOOLS_DIR32"/lib/wine/ \
|
||||
--dll .
|
||||
CXXFLAGS="-Wno-attributes -O2" CFLAGS="-O2 -g" PATH="$TOOLS_DIR32/bin:$PATH" $I386_WRAPPER make $JOBS
|
||||
if [ x"$STRIP" != x ]; then
|
||||
$I386_WRAPPER $STRIP lsteamclient.dll.so
|
||||
fi
|
||||
cp -a lsteamclient.dll.so "$DST_DIR"/lib/wine/
|
||||
}
|
||||
|
||||
function build_vrclient64
|
||||
{
|
||||
cd "$TOP"
|
||||
rm -rf build/vrclient_x64
|
||||
cp -a vrclient_x64 build/vrclient_x64
|
||||
cd "$TOP"/build/vrclient_x64/
|
||||
$AMD64_WRAPPER "$TOP"/wine/tools/winemaker/winemaker \
|
||||
--nosource-fix --nolower-include --nodlls --nomsvcrt \
|
||||
-I"$TOOLS_DIR64"/include/ \
|
||||
-I"$TOOLS_DIR64"/include/wine/ \
|
||||
-I"$TOOLS_DIR64"/include/wine/windows/ \
|
||||
-I.. \
|
||||
-L"$TOOLS_DIR64"/lib64/ \
|
||||
-L"$TOOLS_DIR64"/lib64/wine/ \
|
||||
--dll vrclient_x64
|
||||
CXXFLAGS="-Wno-attributes -std=c++0x -O2 -g" CFLAGS="-O2 -g" PATH="$TOOLS_DIR64/bin:$PATH" $AMD64_WRAPPER make $JOBS -C vrclient_x64
|
||||
PATH="$TOOLS_DIR64/bin:$PATH" $AMD64_WRAPPER winebuild --dll --fake-module -E vrclient_x64/vrclient_x64.spec -o vrclient_x64.dll.fake
|
||||
if [ x"$STRIP" != x ]; then
|
||||
$AMD64_WRAPPER $STRIP vrclient_x64/vrclient_x64.dll.so
|
||||
fi
|
||||
cp -a vrclient_x64/vrclient_x64.dll.so "$DST_DIR"/lib64/wine/
|
||||
cp -a vrclient_x64.dll.fake "$DST_DIR"/lib64/wine/fakedlls/vrclient_x64.dll
|
||||
}
|
||||
|
||||
function build_vrclient64_tests
|
||||
{
|
||||
build_vrclient64
|
||||
|
||||
cp -a vrclient_x64/flatapi.c tests/
|
||||
$AMD64_WRAPPER "$TOP"/wine/tools/winemaker/winemaker \
|
||||
--nosource-fix --nolower-include --nodlls --nomsvcrt \
|
||||
-I"$TOOLS_DIR64"/include/ \
|
||||
-I"$TOOLS_DIR64"/include/wine/ \
|
||||
-I"$TOOLS_DIR64"/include/wine/windows/ \
|
||||
-I../vrclient_x64/ \
|
||||
-L"$TOOLS_DIR64"/lib64/ \
|
||||
-L"$TOOLS_DIR64"/lib64/wine/ \
|
||||
tests
|
||||
CXXFLAGS="-Wno-attributes -std=c++0x -O2 -g" CFLAGS="-O2 -g" PATH="$TOOLS_DIR64/bin:$PATH" $AMD64_WRAPPER make $JOBS -C tests
|
||||
}
|
||||
|
||||
function build_vrclient32
|
||||
{
|
||||
cd "$TOP"
|
||||
rm -rf build/vrclient
|
||||
cp -a vrclient_x64 build/vrclient
|
||||
cd "$TOP"/build/vrclient/
|
||||
mv vrclient_x64 vrclient
|
||||
mv vrclient/vrclient_x64.spec vrclient/vrclient.spec
|
||||
$I386_WRAPPER "$TOP"/wine/tools/winemaker/winemaker \
|
||||
--nosource-fix --nolower-include --nodlls --nomsvcrt --wine32 \
|
||||
-I"$TOOLS_DIR32"/include/ \
|
||||
-I"$TOOLS_DIR32"/include/wine/ \
|
||||
-I"$TOOLS_DIR32"/include/wine/windows/ \
|
||||
-I.. \
|
||||
-L"$TOOLS_DIR32"/lib/ \
|
||||
-L"$TOOLS_DIR32"/lib/wine/ \
|
||||
--dll vrclient
|
||||
CXXFLAGS="-Wno-attributes -std=c++0x -O2 -g" CFLAGS="-O2 -g" PATH="$TOOLS_DIR32/bin:$PATH" $I386_WRAPPER make $JOBS -C vrclient
|
||||
PATH="$TOOLS_DIR32/bin:$PATH" $I386_WRAPPER winebuild --dll --fake-module -E vrclient/vrclient.spec -o vrclient.dll.fake
|
||||
if [ x"$STRIP" != x ]; then
|
||||
$I386_WRAPPER $STRIP vrclient/vrclient.dll.so
|
||||
fi
|
||||
cp -a vrclient/vrclient.dll.so "$DST_DIR"/lib/wine/
|
||||
cp -a vrclient.dll.fake "$DST_DIR"/lib/wine/fakedlls/vrclient.dll
|
||||
}
|
||||
|
||||
function build_vrclient32_tests
|
||||
{
|
||||
build_vrclient32
|
||||
|
||||
cp -a vrclient/flatapi.c tests/
|
||||
$I386_WRAPPER "$TOP"/wine/tools/winemaker/winemaker \
|
||||
--nosource-fix --nolower-include --nodlls --nomsvcrt \
|
||||
-I"$TOOLS_DIR32"/include/ \
|
||||
-I"$TOOLS_DIR32"/include/wine/ \
|
||||
-I"$TOOLS_DIR32"/include/wine/windows/ \
|
||||
-I../vrclient/ \
|
||||
-L"$TOOLS_DIR32"/lib/ \
|
||||
-L"$TOOLS_DIR32"/lib/wine/ \
|
||||
tests
|
||||
CXXFLAGS="-Wno-attributes -std=c++0x -O2 -g" CFLAGS="-O2 -g" PATH="$TOOLS_DIR32/bin:$PATH" $I386_WRAPPER make $JOBS -C tests
|
||||
}
|
||||
|
||||
function build_dxvk
|
||||
{
|
||||
#unfortunately the Steam chroots are too old to build DXVK, so we have to
|
||||
#build it in the host system
|
||||
if [ ! -e "$TOP/build/dxvk.win64/lib/dxgi.dll.so" ]; then
|
||||
cd "$TOP"/dxvk
|
||||
mkdir -p "$TOP"/build/dxvk.win32
|
||||
PATH="$TOP/glslang/bin/:$TOP/build/tools.win32/bin/:$PATH" \
|
||||
PKG_CONFIG_PATH=$TOOLS_DIR32/lib/pkgconfig/ \
|
||||
meson \
|
||||
--strip \
|
||||
--buildtype="release" \
|
||||
--prefix="$TOP"/build/dxvk.win32 \
|
||||
--cross-file build-wine32.txt \
|
||||
"$TOP"/build/dxvk.win32
|
||||
cd "$TOP"/build/dxvk.win32
|
||||
PATH="$TOP/glslang/bin/:$TOP/build/tools.win32/bin/:$PATH" ninja
|
||||
PATH="$TOP/glslang/bin/:$TOP/build/tools.win32/bin/:$PATH" ninja install
|
||||
|
||||
cd "$TOP"/dxvk
|
||||
mkdir -p "$TOP"/build/dxvk.win64
|
||||
PATH="$TOP/glslang/bin/:$TOP/build/tools.win64/bin/:$PATH" \
|
||||
PKG_CONFIG_PATH=$TOOLS_DIR64/lib/pkgconfig/ \
|
||||
meson \
|
||||
--strip \
|
||||
--buildtype="release" \
|
||||
--prefix="$TOP"/build/dxvk.win64 \
|
||||
--cross-file build-wine64.txt \
|
||||
"$TOP"/build/dxvk.win64
|
||||
cd "$TOP"/build/dxvk.win64
|
||||
PATH="$TOP/glslang/bin/:$TOP/build/tools.win64/bin/:$PATH" ninja
|
||||
PATH="$TOP/glslang/bin/:$TOP/build/tools.win64/bin/:$PATH" ninja install
|
||||
fi
|
||||
|
||||
cd "$TOP"
|
||||
mkdir -p "$DST_DIR"/lib64/wine/dxvk
|
||||
cp "$TOP"/build/dxvk.win64/lib/*.dll.so "$DST_DIR"/lib64/wine/dxvk/
|
||||
git submodule status -- dxvk > "$DST_DIR"/lib64/wine/dxvk/version
|
||||
#move replaced .dll.sos into a wined3d directory
|
||||
mkdir -p "$DST_DIR"/lib64/wine/wined3d
|
||||
for f in "$DST_DIR"/lib64/wine/dxvk/*.dll.so; do
|
||||
if [ -e "$DST_DIR"/lib64/wine/$(basename $f) ]; then
|
||||
mv "$DST_DIR"/lib64/wine/$(basename $f) "$DST_DIR"/lib64/wine/wined3d/
|
||||
fi
|
||||
done
|
||||
|
||||
mkdir -p "$DST_DIR"/lib/wine/dxvk
|
||||
cp "$TOP"/build/dxvk.win32/lib/*.dll.so "$DST_DIR"/lib/wine/dxvk/
|
||||
git submodule status -- dxvk > "$DST_DIR"/lib/wine/dxvk/version
|
||||
#move replaced .dll.sos into a wined3d directory
|
||||
mkdir -p "$DST_DIR"/lib/wine/wined3d
|
||||
for f in "$DST_DIR"/lib/wine/dxvk/*.dll.so; do
|
||||
if [ -e "$DST_DIR"/lib/wine/$(basename $f) ]; then
|
||||
mv "$DST_DIR"/lib/wine/$(basename $f) "$DST_DIR"/lib/wine/wined3d/
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
|
||||
PACKAGE=false
|
||||
BUILD_COMPONENTS='all'
|
||||
INSTALL_PROGRAM_FLAGS=''
|
||||
for (( i=1; i <= $#; i++)); do
|
||||
param="${!i}"
|
||||
if [ "$param" == "--release" ]; then
|
||||
RELEASE_BUILD=1
|
||||
INSTALL_PROGRAM_FLAGS='-s'
|
||||
elif [ "$param" == "--package" ]; then
|
||||
PACKAGE=true
|
||||
elif [ "$param" == "--build" ]; then
|
||||
i=$((i+1))
|
||||
if [ "$i" -gt "$#" ]; then
|
||||
usage "$(basename "$0")"
|
||||
exit 1
|
||||
fi
|
||||
BUILD_COMPONENTS="${!i}"
|
||||
elif [ "$param" == "--with-ffmpeg" ]; then
|
||||
WITH_FFMPEG=1
|
||||
else
|
||||
usage "$(basename "$0")"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$BUILD_COMPONENTS" == "all" ]; then
|
||||
PACKAGE=true
|
||||
fi
|
||||
|
||||
TOP="$PWD"
|
||||
DST_DIR="$TOP/build/dist"
|
||||
TOOLS_DIR64="$TOP/build/tools.win64"
|
||||
TOOLS_DIR32="$TOP/build/tools.win32"
|
||||
mkdir -p "$TOP"/dist
|
||||
mkdir -p "$TOP"/build/wine.win{32,64} "$TOP"/build/dist.win32
|
||||
mkdir -p "$DST_DIR"/{bin,lib,lib64}
|
||||
mkdir -p "$TOOLS_DIR64"/lib{,64}
|
||||
|
||||
if [ x"$RELEASE_BUILD" == x ]; then
|
||||
set +e; CCACHE="$(command -v ccache)"; set -e
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" == "Darwin" ]; then
|
||||
CC="$CCACHE clang"
|
||||
AMD64_WRAPPER=""
|
||||
I386_WRAPPER=""
|
||||
STRIP='strip -x'
|
||||
MAKE="make"
|
||||
LIB_SUFFIX="dylib"
|
||||
CMAKE32="cmake"
|
||||
CMAKE64="cmake"
|
||||
WITHOUT_X="--without-x"
|
||||
FFMPEG_CROSS_CFLAGS="-m32"
|
||||
FFMPEG_CROSS_LDFLAGS="-m32"
|
||||
else
|
||||
CC="$CCACHE gcc"
|
||||
AMD64_WRAPPER="schroot --chroot steamrt_scout_beta_amd64 --"
|
||||
I386_WRAPPER="schroot --chroot steamrt_scout_beta_i386 --"
|
||||
STRIP='strip'
|
||||
MAKE="make"
|
||||
LIB_SUFFIX="so"
|
||||
WITHOUT_X=""
|
||||
FFMPEG_CROSS_CFLAGS=""
|
||||
FFMPEG_CROSS_LDFLAGS=""
|
||||
|
||||
if [ -e "$HOME/opt32/bin/cmake" ]; then
|
||||
CMAKE32="$HOME/opt32/bin/cmake"
|
||||
else
|
||||
CMAKE32="cmake"
|
||||
fi
|
||||
if [ -e "$HOME/opt64/bin/cmake" ]; then
|
||||
CMAKE64="$HOME/opt64/bin/cmake"
|
||||
else
|
||||
CMAKE64="cmake"
|
||||
fi
|
||||
|
||||
gcc_ver=$($AMD64_WRAPPER gcc -v 2>&1 | grep 'gcc version' | cut -d' ' -f3)
|
||||
gcc_maj=$(echo "$gcc_ver" | cut -d'.' -f1)
|
||||
gcc_min=$(echo "$gcc_ver" | cut -d'.' -f2)
|
||||
if [ "$gcc_maj" -lt 5 ] || { [ "$gcc_maj" -eq 5 ] && [ "$gcc_min" -lt 3 ];}; then
|
||||
echo "need gcc >= 5.3"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$PLATFORM" == "Darwin" ]; then
|
||||
build_freetype
|
||||
|
||||
FREETYPE32_CFLAGS="-I$TOOLS_DIR32/include/freetype2"
|
||||
FREETYPE32_LIBS="-L$TOOLS_DIR32/lib -lprotonfreetype -framework CoreServices -framework ApplicationServices -lz"
|
||||
ac_cv_lib_soname_freetype32=libprotonfreetype.dylib
|
||||
|
||||
FREETYPE64_CFLAGS="-I$TOOLS_DIR64/include/freetype2"
|
||||
FREETYPE64_LIBS="-L$TOOLS_DIR64/lib -lprotonfreetype"
|
||||
ac_cv_lib_soname_freetype64=libprotonfreetype.dylib
|
||||
|
||||
|
||||
build_libpng
|
||||
|
||||
PNG32_CFLAGS="-I$TOOLS_DIR32/include"
|
||||
PNG32_LIBS="-L$TOOLS_DIR32/lib -lprotonpng"
|
||||
ac_cv_lib_soname_png32=libprotonpng16.dylib
|
||||
|
||||
PNG64_CFLAGS="-I$TOOLS_DIR64/include"
|
||||
PNG64_LIBS="-L$TOOLS_DIR64/lib -lprotonpng"
|
||||
ac_cv_lib_soname_png64=libprotonpng16.dylib
|
||||
|
||||
|
||||
build_libjpeg
|
||||
|
||||
JPEG32_CFLAGS="-I$TOOLS_DIR32/include"
|
||||
JPEG32_LIBS="-L$TOOLS_DIR32/lib -lprotonjpeg"
|
||||
ac_cv_lib_soname_jpeg32=libprotonjpeg.dylib
|
||||
|
||||
JPEG64_CFLAGS="-I$TOOLS_DIR64/include"
|
||||
JPEG64_LIBS="-L$TOOLS_DIR64/lib -lprotonjpeg"
|
||||
ac_cv_lib_soname_jpeg64=libprotonjpeg.dylib
|
||||
|
||||
build_libSDL
|
||||
|
||||
build_moltenvk
|
||||
fi
|
||||
|
||||
if [ "$WITH_FFMPEG" = 1 ]; then
|
||||
build_ffmpeg
|
||||
fi
|
||||
|
||||
case "$BUILD_COMPONENTS" in
|
||||
"all")
|
||||
build_openal
|
||||
build_wine64
|
||||
build_wine32
|
||||
build_dxvk
|
||||
build_lsteamclient64
|
||||
build_lsteamclient32
|
||||
build_vrclient64
|
||||
build_vrclient32
|
||||
;;
|
||||
"wine") build_wine64; build_wine32 ;;
|
||||
"wine32") build_wine32 ;;
|
||||
"wine64") build_wine64 ;;
|
||||
"vrclient") build_vrclient32; build_vrclient64 ;;
|
||||
"vrclient32") build_vrclient32 ;;
|
||||
"vrclient64") build_vrclient64 ;;
|
||||
"lsteamclient") build_lsteamclient32; build_lsteamclient64 ;;
|
||||
"lsteamclient32") build_lsteamclient32 ;;
|
||||
"lsteamclient64") build_lsteamclient64 ;;
|
||||
"vrclient_tests") build_vrclient32_tests; build_vrclient64_tests ;;
|
||||
*) echo "Invalid build components: $BUILD_COMPONENTS" ;;
|
||||
esac
|
||||
|
||||
function setup_wine_gecko
|
||||
{
|
||||
mkdir -p "$DST_DIR"/share/wine/gecko/
|
||||
if [ -e "$TOP/../gecko/wine_gecko-$1-$2.msi" ]; then
|
||||
cp "$TOP/../gecko/wine_gecko-$1-$2.msi" "$DST_DIR"/share/wine/gecko/
|
||||
else
|
||||
mkdir -p contrib/
|
||||
if [ ! -e "contrib/wine_gecko-$1-$2.msi" ]; then
|
||||
echo ">>>> Downloading wine-gecko. To avoid this in future, put it here: $TOP/../gecko/wine_gecko-$1-$2.msi"
|
||||
wget -O "contrib/wine_gecko-$1-$2.msi" "https://dl.winehq.org/wine/wine-gecko/$1/wine_gecko-$1-$2.msi"
|
||||
fi
|
||||
cp "contrib/wine_gecko-$1-$2.msi" "$DST_DIR"/share/wine/gecko/
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$PACKAGE" = true ]; then
|
||||
echo ">>>> Packaging..."
|
||||
cd "$TOP"
|
||||
|
||||
#create default prefix
|
||||
rm -rf "$TOP"/build/dist/share/default_pfx/
|
||||
if [ "$PLATFORM" != "Darwin" ]; then
|
||||
RUNTIME_RUNSH="$STEAM_RUNTIME"/runtime/run.sh
|
||||
else
|
||||
RUNTIME_RUNSH=""
|
||||
fi
|
||||
WINEPREFIX="$TOP"/build/dist/share/default_pfx/ $RUNTIME_RUNSH ./build/dist/bin/wine64 wineboot
|
||||
WINEPREFIX="$TOP"/build/dist/share/default_pfx/ $RUNTIME_RUNSH ./build/dist/bin/wineserver -w
|
||||
|
||||
cp -a openvr/bin/linux32/libopenvr_api.so "$TOP"/build/dist/lib/libopenvr_api_dxvk.so
|
||||
cp -a openvr/bin/linux64/libopenvr_api.so "$TOP"/build/dist/lib64/libopenvr_api_dxvk.so
|
||||
|
||||
setup_wine_gecko "2.47" "x86"
|
||||
setup_wine_gecko "2.47" "x86_64"
|
||||
|
||||
#the difference between -1 and -9 is about 20 MB, so prioritize quick startup over file size
|
||||
tar -C build/dist -c . | gzip -c -1 > dist/proton_dist.tar.gz
|
||||
|
||||
cp -a toolmanifest.vdf dist/
|
||||
cp -a filelock.py dist/
|
||||
cp -a user_settings.sample.py dist/
|
||||
if [ "$PLATFORM" == "Darwin" ]; then
|
||||
cp -a dist.LICENSE.osx dist/LICENSE
|
||||
sed -e 's/@PYTHON_NAME@/python/' proton.in > dist/proton
|
||||
else
|
||||
cp -a dist.LICENSE.lin dist/LICENSE
|
||||
#work around Ubuntu 18.04 failing to ship a python by default
|
||||
sed -e 's/@PYTHON_NAME@/python3/' proton.in > dist/proton
|
||||
fi
|
||||
chmod 755 dist/proton
|
||||
date '+%s' > dist/version
|
||||
|
||||
echo "Proton ready in dist/"
|
||||
fi
|
Loading…
Reference in New Issue
Block a user