1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-30 15:15:31 +00:00

Merge pull request #1037 from ace13/appveyor

Visual Studio 2015 support
This commit is contained in:
scrawl 2016-08-29 12:40:09 +02:00 committed by GitHub
commit 20da3bc240
4 changed files with 359 additions and 212 deletions

View file

@ -1,5 +1,21 @@
#!/bin/bash #!/bin/bash
set -euo pipefail
APPVEYOR=${APPVEYOR:-}
CI=${CI:-}
STEP=${STEP:-}
VERBOSE=""
STRIP=""
SKIP_DOWNLOAD=""
SKIP_EXTRACT=""
KEEP=""
UNITY_BUILD=""
VS_VERSION=""
PLATFORM=""
CONFIGURATION=""
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
ARGSTR=$1 ARGSTR=$1
shift shift
@ -16,10 +32,6 @@ while [ $# -gt 0 ]; do
V ) V )
VERBOSE=true ;; VERBOSE=true ;;
v )
VS_VERSION=$1
shift ;;
d ) d )
SKIP_DOWNLOAD=true ;; SKIP_DOWNLOAD=true ;;
@ -32,6 +44,10 @@ while [ $# -gt 0 ]; do
u ) u )
UNITY_BUILD=true ;; UNITY_BUILD=true ;;
v )
VS_VERSION=$1
shift ;;
p ) p )
PLATFORM=$1 PLATFORM=$1
shift ;; shift ;;
@ -78,9 +94,6 @@ done
if [ -z $VERBOSE ]; then if [ -z $VERBOSE ]; then
STRIP="> /dev/null 2>&1" STRIP="> /dev/null 2>&1"
fi fi
if [ -z $VS_VERSION ]; then
VS_VERSION="2013"
fi
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
echo "Running prebuild outside of Appveyor." echo "Running prebuild outside of Appveyor."
@ -90,9 +103,7 @@ if [ -z $APPVEYOR ]; then
else else
echo "Running prebuild in Appveyor." echo "Running prebuild in Appveyor."
cd $APPVEYOR_BUILD_FOLDER cd "$APPVEYOR_BUILD_FOLDER"
VERSION="$(cat README.md | grep Version: | awk '{ print $3; }')-$(git rev-parse --short HEAD)"
appveyor UpdateBuild -Version "$VERSION" > /dev/null &
fi fi
run_cmd() { run_cmd() {
@ -105,7 +116,7 @@ run_cmd() {
if [ $RET -ne 0 ]; then if [ $RET -ne 0 ]; then
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
echo "Command $CMD failed, output can be found in `real_pwd`/output.log" echo "Command $CMD failed, output can be found in $(real_pwd)/output.log"
else else
echo echo
echo "Command $CMD failed;" echo "Command $CMD failed;"
@ -184,44 +195,58 @@ add_osg_dlls() {
OSG_PLUGINS="$OSG_PLUGINS $@" OSG_PLUGINS="$OSG_PLUGINS $@"
} }
QT_PLATFORMS=""
add_qt_platform_dlls() {
QT_PLATFORMS="$QT_PLATFORMS $@"
}
if [ -z $PLATFORM ]; then if [ -z $PLATFORM ]; then
PLATFORM=`uname -m` PLATFORM="$(uname -m)"
fi fi
if [ -z $CONFIGURATION ]; then if [ -z $CONFIGURATION ]; then
CONFIGURATION="Debug" CONFIGURATION="Debug"
fi fi
if [ -z $VS_VERSION ]; then
VS_VERSION="2013"
fi
case $VS_VERSION in case $VS_VERSION in
14|2015 ) 14|14.0|2015 )
GENERATOR="Visual Studio 14 2015" GENERATOR="Visual Studio 14 2015"
XP_TOOLSET="v140_xp" XP_TOOLSET="v140_xp"
TOOLSET="v140"
MSVC_VER="14"
MSVC_YEAR="2015"
;; ;;
# 12|2013| 12|12.0|2013 )
* )
GENERATOR="Visual Studio 12 2013" GENERATOR="Visual Studio 12 2013"
XP_TOOLSET="v120_xp" XP_TOOLSET="v120_xp"
TOOLSET="v120"
MSVC_VER="12"
MSVC_YEAR="2013"
;; ;;
esac esac
case $PLATFORM in case $PLATFORM in
x64|x86_64|x86-64|win64|Win64 ) x64|x86_64|x86-64|win64|Win64 )
ARCHNAME=x86-64 ARCHNAME="x86-64"
ARCHSUFFIX=64 ARCHSUFFIX="64"
BITS=64 BITS="64"
BASE_OPTS="-G\"$GENERATOR Win64\"" BASE_OPTS="-G\"$GENERATOR Win64\""
add_cmake_opts "-G\"$GENERATOR Win64\"" add_cmake_opts "-G\"$GENERATOR Win64\""
;; ;;
x32|x86|i686|i386|win32|Win32 ) x32|x86|i686|i386|win32|Win32 )
ARCHNAME=x86 ARCHNAME="x86"
ARCHSUFFIX=86 ARCHSUFFIX="86"
BITS=32 BITS="32"
BASE_OPTS="-G\"$GENERATOR\" -T$XP_TOOLSET" BASE_OPTS="-G\"$GENERATOR\""
add_cmake_opts "-G\"$GENERATOR\"" -T$XP_TOOLSET add_cmake_opts "-G\"$GENERATOR\""
;; ;;
* ) * )
@ -230,35 +255,38 @@ case $PLATFORM in
;; ;;
esac esac
if ! [ -z $UNITY_BUILD ]; then
add_cmake_opts "-DOPENMW_UNITY_BUILD=True"
fi
case $CONFIGURATION in case $CONFIGURATION in
debug|Debug|DEBUG ) debug|Debug|DEBUG )
CONFIGURATION=Debug CONFIGURATION=Debug
BUILD_CONFIG=Debug
;; ;;
release|Release|RELEASE ) release|Release|RELEASE )
CONFIGURATION=Release CONFIGURATION=Release
BUILD_CONFIG=Release
;; ;;
relwithdebinfo|RelWithDebInfo|RELWITHDEBINFO ) relwithdebinfo|RelWithDebInfo|RELWITHDEBINFO )
CONFIGURATION=RelWithDebInfo CONFIGURATION=Release
BUILD_CONFIG=RelWithDebInfo
;; ;;
esac esac
if ! [ -z $UNITY_BUILD ]; then
add_cmake_opts "-DOPENMW_UNITY_BUILD=True"
fi
echo echo
echo "==========================" echo "==================================="
echo "Starting prebuild on win$BITS" echo "Starting prebuild on MSVC${MSVC_YEAR} WIN${BITS}"
echo "==========================" echo "==================================="
echo echo
# cd OpenMW/AppVeyor-test # cd OpenMW/AppVeyor-test
mkdir -p deps mkdir -p deps
cd deps cd deps
DEPS="`pwd`" DEPS="$(pwd)"
if [ -z $SKIP_DOWNLOAD ]; then if [ -z $SKIP_DOWNLOAD ]; then
echo "Downloading dependency packages." echo "Downloading dependency packages."
@ -266,142 +294,165 @@ if [ -z $SKIP_DOWNLOAD ]; then
# Boost # Boost
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
download "Boost 1.58.0" \ download "Boost 1.61.0" \
http://sourceforge.net/projects/boost/files/boost-binaries/1.58.0/boost_1_58_0-msvc-12.0-$BITS.exe \ "http://sourceforge.net/projects/boost/files/boost-binaries/1.61.0/boost_1_61_0-msvc-${MSVC_VER}.0-${BITS}.exe" \
boost-1.58.0-win$BITS.exe "boost-1.61.0-msvc${MSVC_YEAR}-win${BITS}.exe"
fi fi
# Bullet # Bullet
download "Bullet 2.83.5" \ download "Bullet 2.83.7" \
http://www.lysator.liu.se/~ace/OpenMW/deps/Bullet-2.83.5-win$BITS.7z \ "http://www.lysator.liu.se/~ace/OpenMW/deps/Bullet-2.83.7-msvc${MSVC_YEAR}-win${BITS}.7z" \
Bullet-2.83.5-win$BITS.7z "Bullet-2.83.7-msvc${MSVC_YEAR}-win${BITS}.7z"
# FFmpeg # FFmpeg
download "FFmpeg 2.5.2" \ download "FFmpeg 3.0.1" \
http://ffmpeg.zeranoe.com/builds/win$BITS/shared/ffmpeg-2.5.2-win$BITS-shared.7z \ "http://ffmpeg.zeranoe.com/builds/win${BITS}/shared/ffmpeg-3.0.1-win${BITS}-shared.7z" \
ffmpeg$BITS-2.5.2.7z \ "ffmpeg-3.0.1-win${BITS}.7z" \
http://ffmpeg.zeranoe.com/builds/win$BITS/dev/ffmpeg-2.5.2-win$BITS-dev.7z \ "http://ffmpeg.zeranoe.com/builds/win${BITS}/dev/ffmpeg-3.0.1-win${BITS}-dev.7z" \
ffmpeg$BITS-2.5.2-dev.7z "ffmpeg-3.0.1-dev-win${BITS}.7z"
# MyGUI # MyGUI
download "MyGUI 3.2.2" \ download "MyGUI 3.2.3-git" \
http://www.lysator.liu.se/~ace/OpenMW/deps/MyGUI-3.2.2-win$BITS.7z \ "http://www.lysator.liu.se/~ace/OpenMW/deps/MyGUI-3.2.3-git-msvc${MSVC_YEAR}-win${BITS}.7z" \
MyGUI-3.2.2-win$BITS.7z "MyGUI-3.2.3-git-msvc${MSVC_YEAR}-win${BITS}.7z"
# OpenAL # OpenAL
download "OpenAL-Soft 1.16.0" \ download "OpenAL-Soft 1.17.2" \
http://kcat.strangesoft.net/openal-binaries/openal-soft-1.16.0-bin.zip \ "http://kcat.strangesoft.net/openal-binaries/openal-soft-1.17.2-bin.zip" \
OpenAL-Soft-1.16.0.zip "OpenAL-Soft-1.17.2.zip"
# OSG # OSG
download "OpenSceneGraph 3.3.8" \ download "OpenSceneGraph 3.4.0-scrawl" \
http://www.lysator.liu.se/~ace/OpenMW/deps/OSG-3.3.8-win$BITS.7z \ "http://www.lysator.liu.se/~ace/OpenMW/deps/OSG-3.4.0-scrawl-msvc${MSVC_YEAR}-win${BITS}.7z" \
OSG-3.3.8-win$BITS.7z "OSG-3.4.0-scrawl-msvc${MSVC_YEAR}-win${BITS}.7z"
# Qt # Qt
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
download "Qt 4.8.6" \ if [ $BITS == "64" ]; then
http://sourceforge.net/projects/qt64ng/files/qt/$ARCHNAME/4.8.6/msvc2013/qt-4.8.6-x$ARCHSUFFIX-msvc2013.7z \ QT_SUFFIX="_64"
qt$BITS-4.8.6.7z else
QT_SUFFIX=""
fi
download "Qt 5.7.2" \
"http://download.qt.io/official_releases/qt/5.7/5.7.0/qt-opensource-windows-x86-msvc${MSVC_YEAR}${QT_SUFFIX}-5.7.0.exe" \
"qt-5.7.0-msvc${MSVC_YEAR}-win${BITS}.exe" \
"http://www.lysator.liu.se/~ace/OpenMW/deps/qt-5-install.qs" \
"qt-5-install.qs"
fi fi
# SDL2 # SDL2
download "SDL 2.0.3" \ download "SDL 2.0.4" \
https://www.libsdl.org/release/SDL2-devel-2.0.3-VC.zip \ "https://www.libsdl.org/release/SDL2-devel-2.0.4-VC.zip" \
SDL2-2.0.3.zip "SDL2-2.0.4.zip"
fi fi
cd .. #/.. cd .. #/..
# Set up dependencies # Set up dependencies
BUILD_DIR="MSVC${MSVC_YEAR}_${BITS}"
if [ -z $KEEP ]; then if [ -z $KEEP ]; then
echo echo
printf "Preparing build directory... " echo "(Re)Creating build directory."
rm -rf Build_$BITS rm -rf "$BUILD_DIR"
mkdir -p Build_$BITS/deps
echo Done.
fi fi
mkdir -p Build_$BITS/deps
cd Build_$BITS/deps
DEPS_INSTALL=`pwd` mkdir -p "${BUILD_DIR}/deps"
cd "${BUILD_DIR}/deps"
DEPS_INSTALL="$(pwd)"
cd $DEPS cd $DEPS
echo echo
echo "Extracting dependencies..." echo "Extracting dependencies, this might take a while..."
echo "---------------------------------------------------"
echo
# Boost # Boost
printf "Boost 1.58.0... " if [ -z $APPVEYOR ]; then
printf "Boost 1.61.0... "
else
if [ $MSVC_VER -eq 12 ]; then
printf "Boost 1.58.0 AppVeyor... "
else
printf "Boost 1.60.0 AppVeyor... "
fi
fi
{ {
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
cd $DEPS_INSTALL cd $DEPS_INSTALL
BOOST_SDK="`real_pwd`/Boost" BOOST_SDK="$(real_pwd)/Boost"
if [ -d Boost ] && grep "BOOST_VERSION 105800" Boost/boost/version.hpp > /dev/null; then if [ -d Boost ] && grep "BOOST_VERSION 106100" Boost/boost/version.hpp > /dev/null; then
printf "Exists. " printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf Boost rm -rf Boost
$DEPS/boost-1.58.0-win$BITS.exe //dir="$(echo $BOOST_SDK | sed s,/,\\\\,g)" //verysilent "${DEPS}/boost-1.61.0-msvc${MSVC_YEAR}-win${BITS}.exe" //dir="$(echo $BOOST_SDK | sed s,/,\\\\,g)" //verysilent
fi fi
add_cmake_opts -DBOOST_ROOT="$BOOST_SDK" \ add_cmake_opts -DBOOST_ROOT="$BOOST_SDK" \
-DBOOST_LIBRARYDIR="$BOOST_SDK/lib$BITS-msvc-12.0" -DBOOST_LIBRARYDIR="${BOOST_SDK}/lib${BITS}-msvc-${MSVC_VER}.0"
echo Done. echo Done.
else else
# Appveyor unstable has all the boost we need already # Appveyor unstable has all the boost we need already
BOOST_SDK="c:/Libraries/boost" if [ $MSVC_VER -eq 12 ]; then
BOOST_SDK="c:/Libraries/boost_1_58_0"
else
BOOST_SDK="c:/Libraries/boost_1_60_0"
fi
add_cmake_opts -DBOOST_ROOT="$BOOST_SDK" \ add_cmake_opts -DBOOST_ROOT="$BOOST_SDK" \
-DBOOST_LIBRARYDIR="$BOOST_SDK/lib$BITS-msvc-12.0" -DBOOST_LIBRARYDIR="${BOOST_SDK}/lib${BITS}-msvc-${MSVC_VER}.0"
echo AppVeyor. echo Done.
fi fi
} }
cd $DEPS cd $DEPS
echo
# Bullet # Bullet
printf "Bullet 2.83.5... " printf "Bullet 2.83.7... "
{ {
cd $DEPS_INSTALL cd $DEPS_INSTALL
if [ -d Bullet ]; then if [ -d Bullet ]; then
printf "Exists. (No version checking) " printf -- "Exists. (No version checking) "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf Bullet rm -rf Bullet
eval 7z x -y $DEPS/Bullet-2.83.5-win$BITS.7z $STRIP eval 7z x -y "${DEPS}/Bullet-2.83.7-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP
mv Bullet-2.83.5-win$BITS Bullet mv "Bullet-2.83.7-msvc${MSVC_YEAR}-win${BITS}" Bullet
fi fi
export BULLET_ROOT="`real_pwd`/Bullet" export BULLET_ROOT="$(real_pwd)/Bullet"
echo Done. echo Done.
} }
cd $DEPS cd $DEPS
echo
# FFmpeg # FFmpeg
printf "FFmpeg 2.5.2... " printf "FFmpeg 3.0.1... "
{ {
cd $DEPS_INSTALL cd $DEPS_INSTALL
if [ -d FFmpeg ] && grep "FFmpeg version: 2.5.2" FFmpeg/README.txt > /dev/null; then if [ -d FFmpeg ] && grep "FFmpeg version: 3.0.1" FFmpeg/README.txt > /dev/null; then
printf "Exists. " printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf FFmpeg rm -rf FFmpeg
eval 7z x -y $DEPS/ffmpeg$BITS-2.5.2.7z $STRIP eval 7z x -y "${DEPS}/ffmpeg-3.0.1-win${BITS}.7z" $STRIP
eval 7z x -y $DEPS/ffmpeg$BITS-2.5.2-dev.7z $STRIP eval 7z x -y "${DEPS}/ffmpeg-3.0.1-dev-win${BITS}.7z" $STRIP
mv ffmpeg-2.5.2-win$BITS-shared FFmpeg mv "ffmpeg-3.0.1-win${BITS}-shared" FFmpeg
cp -r ffmpeg-2.5.2-win$BITS-dev/* FFmpeg/ cp -r "ffmpeg-3.0.1-win${BITS}-dev/"* FFmpeg/
rm -rf ffmpeg-2.5.2-win$BITS-dev rm -rf "ffmpeg-3.0.1-win${BITS}-dev"
fi fi
export FFMPEG_HOME="`real_pwd`/FFmpeg" export FFMPEG_HOME="$(real_pwd)/FFmpeg"
add_runtime_dlls `pwd`/FFmpeg/bin/{avcodec-56,avformat-56,avutil-54,swresample-1,swscale-3}.dll add_runtime_dlls "$(pwd)/FFmpeg/bin/"{avcodec-57,avformat-57,avutil-55,swresample-2,swscale-4}.dll
if [ $BITS -eq 32 ]; then if [ $BITS -eq 32 ]; then
add_cmake_opts "-DCMAKE_EXE_LINKER_FLAGS=\"/machine:X86 /safeseh:no\"" add_cmake_opts "-DCMAKE_EXE_LINKER_FLAGS=\"/machine:X86 /safeseh:no\""
@ -410,74 +461,77 @@ printf "FFmpeg 2.5.2... "
echo Done. echo Done.
} }
cd $DEPS cd $DEPS
echo
# MyGUI # MyGUI
printf "MyGUI 3.2.2... " printf "MyGUI 3.2.3-git... "
{ {
cd $DEPS_INSTALL cd $DEPS_INSTALL
if [ -d MyGUI ] && \ if [ -d MyGUI ] && \
grep "MYGUI_VERSION_MAJOR 3" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null && \ grep "MYGUI_VERSION_MAJOR 3" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null && \
grep "MYGUI_VERSION_MINOR 2" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null && \ grep "MYGUI_VERSION_MINOR 2" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null && \
grep "MYGUI_VERSION_PATCH 2" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null grep "MYGUI_VERSION_PATCH 3" MyGUI/include/MYGUI/MyGUI_Prerequest.h > /dev/null
then then
printf "Exists. " printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf MyGUI rm -rf MyGUI
eval 7z x -y $DEPS/MyGUI-3.2.2-win$BITS.7z $STRIP eval 7z x -y "${DEPS}/MyGUI-3.2.3-git-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP
mv MyGUI-3.2.2-win$BITS MyGUI mv "MyGUI-3.2.3-git-msvc${MSVC_YEAR}-win${BITS}" MyGUI
fi fi
export MYGUI_HOME="`real_pwd`/MyGUI" export MYGUI_HOME="$(real_pwd)/MyGUI"
if [ $CONFIGURATION == "Debug" ]; then if [ $CONFIGURATION == "Debug" ]; then
SUFFIX="_d" SUFFIX="_d"
else else
SUFFIX="" SUFFIX=""
fi fi
add_runtime_dlls `pwd`/MyGUI/bin/$CONFIGURATION/MyGUIEngine$SUFFIX.dll add_runtime_dlls "$(pwd)/MyGUI/bin/${CONFIGURATION}/MyGUIEngine${SUFFIX}.dll"
echo Done. echo Done.
} }
cd $DEPS cd $DEPS
echo
# OpenAL # OpenAL
printf "OpenAL-Soft 1.16.0... " printf "OpenAL-Soft 1.17.2... "
{ {
if [ -d openal-soft-1.16.0-bin ]; then if [ -d openal-soft-1.17.2-bin ]; then
printf "Exists. " printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf openal-soft-1.16.0-bin rm -rf openal-soft-1.17.2-bin
eval 7z x -y OpenAL-Soft-1.16.0.zip $STRIP eval 7z x -y OpenAL-Soft-1.17.2.zip $STRIP
fi fi
OPENAL_SDK="`real_pwd`/openal-soft-1.16.0-bin" OPENAL_SDK="$(real_pwd)/openal-soft-1.17.2-bin"
add_cmake_opts -DOPENAL_INCLUDE_DIR="$OPENAL_SDK/include/AL" \ add_cmake_opts -DOPENAL_INCLUDE_DIR="${OPENAL_SDK}/include/AL" \
-DOPENAL_LIBRARY="$OPENAL_SDK/libs/Win$BITS/OpenAL32.lib" -DOPENAL_LIBRARY="${OPENAL_SDK}/libs/Win${BITS}/OpenAL32.lib"
echo Done. echo Done.
} }
cd $DEPS cd $DEPS
echo
# OSG # OSG
printf "OSG 3.3.8... " printf "OSG 3.4.0-scrawl... "
{ {
cd $DEPS_INSTALL cd $DEPS_INSTALL
if [ -d OSG ] && \ if [ -d OSG ] && \
grep "OPENSCENEGRAPH_MAJOR_VERSION 3" OSG/include/osg/Version > /dev/null && \ grep "OPENSCENEGRAPH_MAJOR_VERSION 3" OSG/include/osg/Version > /dev/null && \
grep "OPENSCENEGRAPH_MINOR_VERSION 3" OSG/include/osg/Version > /dev/null && \ grep "OPENSCENEGRAPH_MINOR_VERSION 4" OSG/include/osg/Version > /dev/null && \
grep "OPENSCENEGRAPH_PATCH_VERSION 8" OSG/include/osg/Version > /dev/null grep "OPENSCENEGRAPH_PATCH_VERSION 0" OSG/include/osg/Version > /dev/null
then then
printf "Exists. " printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf OSG rm -rf OSG
eval 7z x -y $DEPS/OSG-3.3.8-win$BITS.7z $STRIP eval 7z x -y "${DEPS}/OSG-3.4.0-scrawl-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP
mv OSG-3.3.8-win$BITS OSG mv "OSG-3.4.0-scrawl-msvc${MSVC_YEAR}-win${BITS}" OSG
fi fi
OSG_SDK="`real_pwd`/OSG" OSG_SDK="$(real_pwd)/OSG"
add_cmake_opts -DOSG_DIR="$OSG_SDK" add_cmake_opts -DOSG_DIR="$OSG_SDK"
@ -487,82 +541,101 @@ printf "OSG 3.3.8... "
SUFFIX="" SUFFIX=""
fi fi
add_runtime_dlls `pwd`/OSG/bin/{OpenThreads,zlib}$SUFFIX.dll \ add_runtime_dlls "$(pwd)/OSG/bin/"{OpenThreads,zlib,libpng*}${SUFFIX}.dll \
`pwd`/OSG/bin/osg{,Animation,DB,FX,GA,Particle,Qt,Text,Util,Viewer}$SUFFIX.dll "$(pwd)/OSG/bin/osg"{,Animation,DB,FX,GA,Particle,Text,Util,Viewer}${SUFFIX}.dll
add_osg_dlls `pwd`/OSG/bin/osgPlugins-3.3.8/osgdb_{bmp,dds,gif,jpeg,png,tga}$SUFFIX.dll add_osg_dlls "$(pwd)/OSG/bin/osgPlugins-3.4.0/osgdb_"{bmp,dds,jpeg,osg,png,tga}${SUFFIX}.dll
add_osg_dlls "$(pwd)/OSG/bin/osgPlugins-3.4.0/osgdb_serializers_osg"{,animation,fx,ga,particle,text,util,viewer}${SUFFIX}.dll
echo Done. echo Done.
} }
cd $DEPS cd $DEPS
echo
# Qt # Qt
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
printf "Qt 4.8.6... " printf "Qt 5.7.0... "
else else
printf "Qt 5.4... " printf "Qt 5.7 AppVeyor... "
fi fi
{ {
if [ $BITS -eq 64 ]; then
SUFFIX="_64"
else
SUFFIX=""
fi
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
cd $DEPS_INSTALL cd $DEPS_INSTALL
QT_SDK="`real_pwd`/Qt" QT_SDK="$(real_pwd)/Qt/5.7/msvc${MSVC_YEAR}${SUFFIX}"
if [ -d Qt ] && head -n2 Qt/BUILDINFO.txt | grep "4.8.6" > /dev/null; then if [ -d Qt ] && head -n2 Qt/InstallationLog.txt | grep "5.7.0" > /dev/null; then
printf "Exists. " printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf Qt rm -rf Qt
eval 7z x -y $DEPS/qt$BITS-4.8.6.7z $STRIP cp "${DEPS}/qt-5-install.qs" qt-install.qs
mv qt-4.8.6-* Qt
cd Qt
eval ./qtbinpatcher.exe $STRIP sed -i "s|INSTALL_DIR|$(real_pwd)/Qt|" qt-install.qs
sed -i "s/qt.VERSION.winBITS_msvcYEAR/qt.57.win${BITS}_msvc${MSVC_YEAR}${SUFFIX}/" qt-install.qs
printf -- "(Installation might take a while) "
"${DEPS}/qt-5.7.0-msvc${MSVC_YEAR}-win${BITS}.exe" --script qt-install.qs --silent
mv qt-install.qs Qt/
echo Done.
printf " Cleaning up extraneous data... "
rm -r "$(real_pwd)/Qt/"{dist,Docs,Examples,Tools,vcredist,components.xml,MaintenanceTool.dat,MaintenanceTool.exe,MaintenanceTool.ini,network.xml,qt-install.qs}
fi fi
cd $QT_SDK cd $QT_SDK
add_cmake_opts -DDESIRED_QT_VERSION=4 \ add_cmake_opts -DDESIRED_QT_VERSION=5 \
-DQT_QMAKE_EXECUTABLE="$QT_SDK/bin/qmake.exe" -DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \
-DCMAKE_PREFIX_PATH="$QT_SDK"
if [ $CONFIGURATION == "Debug" ]; then if [ $CONFIGURATION == "Debug" ]; then
SUFFIX="d4" SUFFIX="d"
else else
SUFFIX="4" SUFFIX=""
fi fi
add_runtime_dlls `pwd`/bin/Qt{Core,Gui,Network,OpenGL}$SUFFIX.dll add_runtime_dlls "$(pwd)/bin/lib"{EGL,GLESv2}${SUFFIX}.dll \
"$(pwd)/bin/Qt5"{Core,Gui,Network,OpenGL,Widgets}${SUFFIX}.dll
add_qt_platform_dlls "$(pwd)/plugins/platforms/qwindows${SUFFIX}.dll"
echo Done. echo Done.
else else
if [ $BITS -eq 32 ]; then QT_SDK="C:/Qt/5.7/msvc${MSVC_YEAR}${SUFFIX}"
QT_SDK="C:/Qt/5.4/msvc2013_opengl"
else
QT_SDK="C:/Qt/5.4/msvc2013_64_opengl"
fi
add_cmake_opts -DDESIRED_QT_VERSION=5 \ add_cmake_opts -DDESIRED_QT_VERSION=5 \
-DQT_QMAKE_EXECUTABLE="$QT_SDK/bin/qmake.exe" \ -DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \
-DCMAKE_PREFIX_PATH="$QT_SDK" -DCMAKE_PREFIX_PATH="$QT_SDK"
echo AppVeyor. echo Done.
fi fi
} }
cd $DEPS cd $DEPS
echo
# SDL2 # SDL2
printf "SDL 2.0.3... " printf "SDL 2.0.4... "
{ {
if [ -d SDL2-2.0.3 ]; then if [ -d SDL2-2.0.4 ]; then
printf "Exists. " printf "Exists. "
elif [ -z $SKIP_EXTRACT ]; then elif [ -z $SKIP_EXTRACT ]; then
rm -rf SDL2-2.0.3 rm -rf SDL2-2.0.4
eval 7z x -y SDL2-2.0.3.zip $STRIP eval 7z x -y SDL2-2.0.4.zip $STRIP
fi fi
export SDL2DIR="`real_pwd`/SDL2-2.0.3" export SDL2DIR="$(real_pwd)/SDL2-2.0.4"
add_runtime_dlls $SDL2DIR/lib/x$ARCHSUFFIX/SDL2.dll add_runtime_dlls "${SDL2DIR}/lib/x${ARCHSUFFIX}/SDL2.dll"
echo Done. echo Done.
} }
echo
cd $DEPS_INSTALL/.. cd $DEPS_INSTALL/..
@ -575,12 +648,10 @@ add_cmake_opts -DBUILD_BSATOOL=no \
-DBUILD_MYGUI_PLUGIN=no \ -DBUILD_MYGUI_PLUGIN=no \
-DOPENMW_MP_BUILD=on -DOPENMW_MP_BUILD=on
if [ -z $CI ]; then if [ ! -z $CI ]; then
echo " (Outside of CI, doing full build.)"
else
case $STEP in case $STEP in
components ) components )
echo " Subproject: Components." echo " Building subproject: Components."
add_cmake_opts -DBUILD_ESSIMPORTER=no \ add_cmake_opts -DBUILD_ESSIMPORTER=no \
-DBUILD_LAUNCHER=no \ -DBUILD_LAUNCHER=no \
-DBUILD_MWINIIMPORTER=no \ -DBUILD_MWINIIMPORTER=no \
@ -588,77 +659,90 @@ else
-DBUILD_OPENMW=no \ -DBUILD_OPENMW=no \
-DBUILD_WIZARD=no -DBUILD_WIZARD=no
;; ;;
openmw ) openmw )
echo " Subproject: OpenMW." echo " Building subproject: OpenMW."
add_cmake_opts -DBUILD_ESSIMPORTER=no \ add_cmake_opts -DBUILD_ESSIMPORTER=no \
-DBUILD_LAUNCHER=no \ -DBUILD_LAUNCHER=no \
-DBUILD_MWINIIMPORTER=no \ -DBUILD_MWINIIMPORTER=no \
-DBUILD_OPENCS=no \ -DBUILD_OPENCS=no \
-DBUILD_WIZARD=no -DBUILD_WIZARD=no
;; ;;
opencs ) opencs )
echo " Subproject: OpenCS." echo " Building subproject: OpenCS."
add_cmake_opts -DBUILD_ESSIMPORTER=no \ add_cmake_opts -DBUILD_ESSIMPORTER=no \
-DBUILD_LAUNCHER=no \ -DBUILD_LAUNCHER=no \
-DBUILD_MWINIIMPORTER=no \ -DBUILD_MWINIIMPORTER=no \
-DBUILD_OPENMW=no \ -DBUILD_OPENMW=no \
-DBUILD_WIZARD=no -DBUILD_WIZARD=no
;; ;;
misc ) misc )
echo " Subproject: Misc." echo " Building subprojects: Misc."
add_cmake_opts -DBUILD_OPENCS=no \ add_cmake_opts -DBUILD_OPENCS=no \
-DBUILD_OPENMW=no -DBUILD_OPENMW=no
;; ;;
* )
echo " Building everything."
;;
esac esac
fi fi
# NOTE: Disable this when/if we want to run test cases
if [ -z $CI ]; then
echo "- Copying Runtime DLLs..."
mkdir -p $BUILD_CONFIG
for DLL in $RUNTIME_DLLS; do
echo " $(basename $DLL)."
cp "$DLL" $BUILD_CONFIG/
done
echo
echo "- OSG Plugin DLLs..."
mkdir -p $BUILD_CONFIG/osgPlugins-3.4.0
for DLL in $OSG_PLUGINS; do
echo " $(basename $DLL)."
cp "$DLL" $BUILD_CONFIG/osgPlugins-3.4.0
done
echo
echo "- Qt Platform DLLs..."
mkdir -p ${BUILD_CONFIG}/platforms
for DLL in $QT_PLATFORMS; do
echo " $(basename $DLL)"
cp "$DLL" "${BUILD_CONFIG}/platforms"
done
echo
fi
if [ -z $VERBOSE ]; then if [ -z $VERBOSE ]; then
printf " Configuring... " printf -- "- Configuring... "
else else
echo " cmake .. $CMAKE_OPTS" echo "- cmake .. $CMAKE_OPTS"
fi fi
run_cmd cmake .. $CMAKE_OPTS run_cmd cmake .. $CMAKE_OPTS
RET=$? RET=$?
if [ -z $VERBOSE ]; then if [ -z $VERBOSE ]; then
if [ $RET -eq 0 ]; then echo Done. if [ $RET -eq 0 ]; then
else echo Failed.; fi echo Done.
else
echo Failed.
fi
fi fi
echo
# NOTE: Disable this when/if we want to run test cases
if [ -z $CI ]; then if [ -z $CI ]; then
echo "Copying Runtime DLLs..." echo "- Copying Runtime Resources/Config Files"
mkdir -p $CONFIGURATION echo " gamecontrollerdb.txt"
for DLL in $RUNTIME_DLLS; do cp gamecontrollerdb.txt $BUILD_CONFIG/gamecontrollerdb.txt
echo " `basename $DLL`." echo " openmw.cfg"
cp "$DLL" $CONFIGURATION/ cp openmw.cfg.install $BUILD_CONFIG/openmw.cfg
done echo " openmw-cs.cfg"
echo "OSG Plugin DLLs..." cp openmw-cs.cfg $BUILD_CONFIG/openmw-cs.cfg
mkdir -p $CONFIGURATION/osgPlugins-3.3.8 echo " settings-default.cfg"
for DLL in $OSG_PLUGINS; do cp settings-default.cfg $BUILD_CONFIG/settings-default.cfg
echo " `basename $DLL`." echo " resources/"
cp "$DLL" $CONFIGURATION/osgPlugins-3.3.8 cp -r resources $BUILD_CONFIG/resources
done
echo echo
echo "Copying Runtime Resources/Config Files"
echo " gamecontrollerdb.txt"
cp $CONFIGURATION/../gamecontrollerdb.txt $CONFIGURATION/gamecontrollerdb.txt
echo " openmw.cfg"
cp $CONFIGURATION/../openmw.cfg.install $CONFIGURATION/openmw.cfg
echo " openmw-cs.cfg"
cp $CONFIGURATION/../openmw-cs.cfg $CONFIGURATION/openmw-cs.cfg
echo " settings-default.cfg"
cp $CONFIGURATION/../settings-default.cfg $CONFIGURATION/settings-default.cfg
echo " resources/"
cp -r $CONFIGURATION/../resources $CONFIGURATION/resources
fi fi
exit $RET exit $RET

View file

@ -1,5 +1,13 @@
#!/bin/bash #!/bin/bash
APPVEYOR=""
CI=""
PACKAGE=""
PLATFORM=""
CONFIGURATION=""
VS_VERSION=""
if [ -z $PLATFORM ]; then if [ -z $PLATFORM ]; then
PLATFORM=`uname -m` PLATFORM=`uname -m`
fi fi
@ -8,39 +16,63 @@ if [ -z $CONFIGURATION ]; then
CONFIGURATION="Debug" CONFIGURATION="Debug"
fi fi
case $PLATFORM in case $VS_VERSION in
x32|x86|i686|i386|win32|Win32 ) 14|14.0|2015 )
BITS=32 GENERATOR="Visual Studio 14 2015"
PLATFORM=Win32 MSVC_YEAR="2015"
MSVC_VER="14.0"
;; ;;
# 12|2013|
* )
GENERATOR="Visual Studio 12 2013"
MSVC_YEAR="2013"
MVSC_VER="12.0"
;;
esac
case $PLATFORM in
x64|x86_64|x86-64|win64|Win64 ) x64|x86_64|x86-64|win64|Win64 )
BITS=64 BITS=64
PLATFORM=x64
;; ;;
* ) x32|x86|i686|i386|win32|Win32 )
echo "Unknown platform $PLATFORM." BITS=32
exit 1 ;; ;;
esac
case $CONFIGURATION in
debug|Debug|DEBUG )
CONFIGURATION=Debug
;;
release|Release|RELEASE )
CONFIGURATION=Release
;;
relwithdebinfo|RelWithDebInfo|RELWITHDEBINFO )
CONFIGURATION=RelWithDebInfo
;;
esac esac
if [ -z $APPVEYOR ]; then if [ -z $APPVEYOR ]; then
echo "Running $BITS-bit $CONFIGURATION build outside of Appveyor." echo "Running ${BITS}-bit MSVC${MSVC_YEAR} ${CONFIGURATION} build outside of Appveyor."
DIR=$(echo "$0" | sed "s,\\\\,/,g" | sed "s,\(.\):,/\\1,") DIR=$(echo "$0" | sed "s,\\\\,/,g" | sed "s,\(.\):,/\\1,")
cd $(dirname "$DIR")/.. cd $(dirname "$DIR")/..
else else
echo "Running $BITS-bit $CONFIGURATION build in Appveyor." echo "Running ${BITS}-bit MSVC${MSVC_YEAR} ${CONFIGURATION} build in Appveyor."
cd $APPVEYOR_BUILD_FOLDER cd $APPVEYOR_BUILD_FOLDER
fi fi
cd build_$BITS BUILD_DIR="MSVC${MSVC_YEAR}_${BITS}"
cd ${BUILD_DIR}
which msbuild > /dev/null which msbuild > /dev/null
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
msbuild() { msbuild() {
/c/Program\ Files\ \(x86\)/MSBuild/12.0/Bin/MSBuild.exe "$@" /c/Program\ Files\ \(x86\)/MSBuild/${MSVC_VER}/Bin/MSBuild.exe "$@"
} }
fi fi

View file

@ -610,9 +610,15 @@ if (WIN32)
4987 # nonstandard extension used (triggered by setjmp.h) 4987 # nonstandard extension used (triggered by setjmp.h)
4996 # Function was declared deprecated 4996 # Function was declared deprecated
# caused by OSG
4589 # Constructor of abstract class 'osg::Operation' ignores initializer for virtual base class 'osg::Referenced' (False warning)
# caused by boost # caused by boost
4191 # 'type cast' : unsafe conversion (1.56, thread_primitives.hpp, normally off) 4191 # 'type cast' : unsafe conversion (1.56, thread_primitives.hpp, normally off)
# caused by MyGUI
4275 # non dll-interface class 'std::exception' used as base for dll-interface class 'MyGUI::Exception'
# OpenMW specific warnings # OpenMW specific warnings
4099 # Type mismatch, declared class or struct is defined with other type 4099 # Type mismatch, declared class or struct is defined with other type
4100 # Unreferenced formal parameter (-Wunused-parameter) 4100 # Unreferenced formal parameter (-Wunused-parameter)
@ -626,12 +632,20 @@ if (WIN32)
4309 # Variable overflow, trying to store 128 in a signed char for example 4309 # Variable overflow, trying to store 128 in a signed char for example
4351 # New behavior: elements of array 'array' will be default initialized (desired behavior) 4351 # New behavior: elements of array 'array' will be default initialized (desired behavior)
4355 # Using 'this' in member initialization list 4355 # Using 'this' in member initialization list
4464 # relative include path contains '..'
4505 # Unreferenced local function has been removed 4505 # Unreferenced local function has been removed
4701 # Potentially uninitialized local variable used 4701 # Potentially uninitialized local variable used
4702 # Unreachable code 4702 # Unreachable code
4714 # function 'QString QString::trimmed(void) &&' marked as __forceinline not inlined
4800 # Boolean optimization warning, e.g. myBool = (myInt != 0) instead of myBool = myInt 4800 # Boolean optimization warning, e.g. myBool = (myInt != 0) instead of myBool = myInt
) )
if (MSVC_VERSION GREATER 1800)
set(WARNINGS_DISABLE ${WARNINGS_DISABLE} 5026 5027
5031 # #pragma warning(pop): likely mismatch, popping warning state pushed in different file (config_begin.hpp, config_end.hpp)
)
endif()
foreach(d ${WARNINGS_DISABLE}) foreach(d ${WARNINGS_DISABLE})
set(WARNINGS "${WARNINGS} /wd${d}") set(WARNINGS "${WARNINGS} /wd${d}")
endforeach(d) endforeach(d)
@ -664,7 +678,12 @@ if (WIN32)
endif() endif()
if (BUILD_OPENMW) if (BUILD_OPENMW)
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}") # Very specific issue this, only needed on 32-bit VS2015 during unity builds.
if (MSVC_VERSION GREATER 1800 AND CMAKE_SIZEOF_VOID_P EQUAL 4 AND OPENMW_UNITY_BUILD)
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD} /bigobj")
else()
set_target_properties(openmw PROPERTIES COMPILE_FLAGS "${WARNINGS} ${MT_BUILD}")
endif()
endif() endif()
if (BUILD_WIZARD) if (BUILD_WIZARD)

View file

@ -6,42 +6,54 @@ branches:
- /openmw-.*$/ - /openmw-.*$/
- appveyor - appveyor
environment:
matrix:
- msvc: 2013
- msvc: 2015
platform: platform:
- Win32 - Win32
# - x64 # - x64
configuration: Debug configuration:
- Debug
matrix: # - Release
fast_finish: true
# For the Qt, Boost, CMake, etc installs # For the Qt, Boost, CMake, etc installs
os: unstable os: Visual Studio 2015
# We want the git revision for versioning, # We want the git revision for versioning,
# so shallow clones don't work. # so shallow clones don't work.
clone_depth: 1 clone_depth: 1
cache: cache:
- C:\projects\openmw\deps\Bullet-2.83.5-win32.7z - C:\projects\openmw\deps\Bullet-2.83.7-msvc2013-win32.7z
- C:\projects\openmw\deps\Bullet-2.83.5-win64.7z - C:\projects\openmw\deps\Bullet-2.83.7-msvc2013-win64.7z
- C:\projects\openmw\deps\MyGUI-3.2.2-win32.7z - C:\projects\openmw\deps\Bullet-2.83.7-msvc2015-win32.7z
- C:\projects\openmw\deps\MyGUI-3.2.2-win64.7z - C:\projects\openmw\deps\Bullet-2.83.7-msvc2015-win64.7z
- C:\projects\openmw\deps\OSG-3.3.8-win32.7z - C:\projects\openmw\deps\MyGUI-3.2.3-git-msvc2013-win32.7z
- C:\projects\openmw\deps\OSG-3.3.8-win64.7z - C:\projects\openmw\deps\MyGUI-3.2.3-git-msvc2013-win32.7z
- C:\projects\openmw\deps\ffmpeg32-2.5.2.7z - C:\projects\openmw\deps\MyGUI-3.2.3-git-msvc2015-win64.7z
- C:\projects\openmw\deps\ffmpeg32-2.5.2-dev.7z - C:\projects\openmw\deps\MyGUI-3.2.3-git-msvc2015-win64.7z
- C:\projects\openmw\deps\ffmpeg64-2.5.2.7z - C:\projects\openmw\deps\OSG-3.4.0-scrawl-msvc2013-win32.7z
- C:\projects\openmw\deps\ffmpeg64-2.5.2-dev.7z - C:\projects\openmw\deps\OSG-3.4.0-scrawl-msvc2013-win32.7z
- C:\projects\openmw\deps\OSG-3.4.0-scrawl-msvc2015-win64.7z
- C:\projects\openmw\deps\OSG-3.4.0-scrawl-msvc2015-win64.7z
- C:\projects\openmw\deps\ffmpeg-3.0.1-dev-win32.7z
- C:\projects\openmw\deps\ffmpeg-3.0.1-dev-win64.7z
- C:\projects\openmw\deps\ffmpeg-3.0.1-win32.7z
- C:\projects\openmw\deps\ffmpeg-3.0.1-win64.7z
- C:\projects\openmw\deps\OpenAL-Soft-1.17.2.zip
- C:\projects\openmw\deps\SDL2-2.0.4.zip
clone_folder: C:\projects\openmw clone_folder: C:\projects\openmw
before_build: before_build:
- cmd: sh %APPVEYOR_BUILD_FOLDER%\CI\before_script.msvc.sh -u -p %PLATFORM% - cmd: sh %APPVEYOR_BUILD_FOLDER%\CI\before_script.msvc.sh -u -p %PLATFORM% -v %msvc%
build_script: build_script:
- cmd: if %PLATFORM%==Win32 set build=Build_32 - cmd: if %PLATFORM%==Win32 set build=MSVC%msvc%_32
- cmd: if %PLATFORM%==x64 set build=Build_64 - cmd: if %PLATFORM%==x64 set build=MSVC%msvc%_64
- cmd: msbuild %build%\OpenMW.sln /t:Build /p:Configuration=%configuration% /m:2 /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" - cmd: msbuild %build%\OpenMW.sln /t:Build /p:Configuration=%configuration% /m:2 /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
test: off test: off