diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d815c7d77..565feff14 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -34,6 +34,8 @@ MacOS: tags: - macos - xcode + except: + - branches # because our CI VMs are not public, MRs can't use them and timeout stage: build allow_failure: true script: @@ -43,4 +45,25 @@ MacOS: - cd build; make -j2 package artifacts: paths: - - build/OpenMW-*.dmg \ No newline at end of file + - build/OpenMW-*.dmg + +Windows: + tags: + - win10 + - msvc2017 + except: + - branches # because our CI VMs are not public, MRs can't use them and timeout + stage: build + allow_failure: true + script: + # - env # turn on for debugging + - sh %CI_PROJECT_DIR%/CI/before_script.msvc.sh -c Release -p x64 -v 2017 -V + - SET msBuildLocation="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" + - call %msBuildLocation% MSVC2017_64\OpenMW.sln /t:Build /p:Configuration=Release /m:%NUMBER_OF_PROCESSORS% + - 7z a OpenMW_MSVC2017_64_%CI_BUILD_REF_NAME%_%CI_BUILD_ID%.zip %CI_PROJECT_DIR%\MSVC2017_64\Release\ + cache: + paths: + - deps + artifacts: + paths: + - "*.zip" diff --git a/CI/before_script.msvc.sh b/CI/before_script.msvc.sh index eba278316..264d33dd2 100644 --- a/CI/before_script.msvc.sh +++ b/CI/before_script.msvc.sh @@ -77,7 +77,6 @@ while [ $# -gt 0 ]; do h ) cat < Set the configuration, can also be set with environment variable CONFIGURATION. @@ -459,12 +458,10 @@ fi } cd $DEPS echo - # Bullet printf "Bullet 2.86... " { cd $DEPS_INSTALL - if [ -d Bullet ]; then printf -- "Exists. (No version checking) " elif [ -z $SKIP_EXTRACT ]; then @@ -472,49 +469,38 @@ printf "Bullet 2.86... " eval 7z x -y "${DEPS}/Bullet-2.86-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP mv "Bullet-2.86-msvc${MSVC_YEAR}-win${BITS}" Bullet fi - export BULLET_ROOT="$(real_pwd)/Bullet" - echo Done. } cd $DEPS echo - # FFmpeg printf "FFmpeg 3.2.4... " { cd $DEPS_INSTALL - if [ -d FFmpeg ] && grep "FFmpeg version: 3.2.4" FFmpeg/README.txt > /dev/null; then printf "Exists. " elif [ -z $SKIP_EXTRACT ]; then rm -rf FFmpeg - eval 7z x -y "${DEPS}/ffmpeg-3.2.4-win${BITS}.zip" $STRIP eval 7z x -y "${DEPS}/ffmpeg-3.2.4-dev-win${BITS}.zip" $STRIP - mv "ffmpeg-3.2.4-win${BITS}-shared" FFmpeg cp -r "ffmpeg-3.2.4-win${BITS}-dev/"* FFmpeg/ rm -rf "ffmpeg-3.2.4-win${BITS}-dev" fi - export FFMPEG_HOME="$(real_pwd)/FFmpeg" add_runtime_dlls "$(pwd)/FFmpeg/bin/"{avcodec-57,avformat-57,avutil-55,swresample-2,swscale-4}.dll - if [ $BITS -eq 32 ]; then add_cmake_opts "-DCMAKE_EXE_LINKER_FLAGS=\"/machine:X86 /safeseh:no\"" fi - echo Done. } cd $DEPS echo - # MyGUI printf "MyGUI 3.2.2... " { cd $DEPS_INSTALL - if [ -d MyGUI ] && \ 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 && \ @@ -526,21 +512,17 @@ printf "MyGUI 3.2.2... " eval 7z x -y "${DEPS}/MyGUI-3.2.2-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP mv "MyGUI-3.2.2-msvc${MSVC_YEAR}-win${BITS}" MyGUI fi - export MYGUI_HOME="$(real_pwd)/MyGUI" - if [ $CONFIGURATION == "Debug" ]; then SUFFIX="_d" else SUFFIX="" fi add_runtime_dlls "$(pwd)/MyGUI/bin/${CONFIGURATION}/MyGUIEngine${SUFFIX}.dll" - echo Done. } cd $DEPS echo - # OpenAL printf "OpenAL-Soft 1.17.2... " { @@ -550,24 +532,18 @@ printf "OpenAL-Soft 1.17.2... " rm -rf openal-soft-1.17.2-bin eval 7z x -y OpenAL-Soft-1.17.2.zip $STRIP fi - OPENAL_SDK="$(real_pwd)/openal-soft-1.17.2-bin" - add_cmake_opts -DOPENAL_INCLUDE_DIR="${OPENAL_SDK}/include/AL" \ -DOPENAL_LIBRARY="${OPENAL_SDK}/libs/Win${BITS}/OpenAL32.lib" - add_runtime_dlls "$(pwd)/openal-soft-1.17.2-bin/bin/WIN${BITS}/soft_oal.dll:OpenAL32.dll" - echo Done. } cd $DEPS echo - # OSG printf "OSG 3.4.1-scrawl... " { cd $DEPS_INSTALL - if [ -d OSG ] && \ grep "OPENSCENEGRAPH_MAJOR_VERSION 3" OSG/include/osg/Version > /dev/null && \ grep "OPENSCENEGRAPH_MINOR_VERSION 4" OSG/include/osg/Version > /dev/null && \ @@ -579,28 +555,21 @@ printf "OSG 3.4.1-scrawl... " eval 7z x -y "${DEPS}/OSG-3.4.1-scrawl-msvc${MSVC_YEAR}-win${BITS}.7z" $STRIP mv "OSG-3.4.1-scrawl-msvc${MSVC_YEAR}-win${BITS}" OSG fi - OSG_SDK="$(real_pwd)/OSG" - add_cmake_opts -DOSG_DIR="$OSG_SDK" - if [ $CONFIGURATION == "Debug" ]; then SUFFIX="d" else SUFFIX="" fi - add_runtime_dlls "$(pwd)/OSG/bin/"{OpenThreads,zlib,libpng*}${SUFFIX}.dll \ "$(pwd)/OSG/bin/osg"{,Animation,DB,FX,GA,Particle,Text,Util,Viewer}${SUFFIX}.dll - add_osg_dlls "$(pwd)/OSG/bin/osgPlugins-3.4.1/osgdb_"{bmp,dds,jpeg,osg,png,tga}${SUFFIX}.dll add_osg_dlls "$(pwd)/OSG/bin/osgPlugins-3.4.1/osgdb_serializers_osg"{,animation,fx,ga,particle,text,util,viewer}${SUFFIX}.dll - echo Done. } cd $DEPS echo - # Qt if [ -z $APPVEYOR ]; then printf "Qt 5.7.0... " @@ -613,71 +582,53 @@ fi else SUFFIX="" fi - if [ -z $APPVEYOR ]; then cd $DEPS_INSTALL QT_SDK="$(real_pwd)/Qt/5.7/msvc${MSVC_YEAR}${SUFFIX}" - if [ -d Qt ] && head -n2 Qt/InstallationLog.txt | grep "5.7.0" > /dev/null; then printf "Exists. " elif [ -z $SKIP_EXTRACT ]; then rm -rf Qt cp "${DEPS}/qt-5-install.qs" qt-install.qs - - 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 - cd $QT_SDK - add_cmake_opts -DDESIRED_QT_VERSION=5 \ -DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \ -DCMAKE_PREFIX_PATH="$QT_SDK" - if [ $CONFIGURATION == "Debug" ]; then SUFFIX="d" else SUFFIX="" fi - add_runtime_dlls "$(pwd)/bin/Qt5"{Core,Gui,Network,OpenGL,Widgets}${SUFFIX}.dll add_qt_platform_dlls "$(pwd)/plugins/platforms/qwindows${SUFFIX}.dll" - echo Done. else QT_SDK="C:/Qt/5.10/msvc${MSVC_DISPLAY_YEAR}${SUFFIX}" - add_cmake_opts -DDESIRED_QT_VERSION=5 \ -DQT_QMAKE_EXECUTABLE="${QT_SDK}/bin/qmake.exe" \ -DCMAKE_PREFIX_PATH="$QT_SDK" - if [ $CONFIGURATION == "Debug" ]; then SUFFIX="d" else SUFFIX="" fi - DIR=$(echo "${QT_SDK}" | sed "s,\\\\,/,g" | sed "s,\(.\):,/\\1,") - add_runtime_dlls "${DIR}/bin/Qt5"{Core,Gui,Network,OpenGL,Widgets}${SUFFIX}.dll add_qt_platform_dlls "${DIR}/plugins/platforms/qwindows${SUFFIX}.dll" - echo Done. fi } cd $DEPS echo - # SDL2 printf "SDL 2.0.7... " { @@ -687,26 +638,18 @@ printf "SDL 2.0.7... " rm -rf SDL2-2.0.7 eval 7z x -y SDL2-2.0.7.zip $STRIP fi - export SDL2DIR="$(real_pwd)/SDL2-2.0.7" - add_runtime_dlls "$(pwd)/SDL2-2.0.7/lib/x${ARCHSUFFIX}/SDL2.dll" - echo Done. } echo - - cd $DEPS_INSTALL/.. - echo echo "Setting up OpenMW build..." - add_cmake_opts -DBUILD_BSATOOL=no \ -DBUILD_ESMTOOL=no \ -DBUILD_MYGUI_PLUGIN=no \ -DOPENMW_MP_BUILD=on - if [ ! -z $CI ]; then case $STEP in components ) @@ -718,7 +661,6 @@ if [ ! -z $CI ]; then -DBUILD_OPENMW=no \ -DBUILD_WIZARD=no ;; - openmw ) echo " Building subproject: OpenMW." add_cmake_opts -DBUILD_ESSIMPORTER=no \ @@ -727,7 +669,6 @@ if [ ! -z $CI ]; then -DBUILD_OPENCS=no \ -DBUILD_WIZARD=no ;; - opencs ) echo " Building subproject: OpenCS." add_cmake_opts -DBUILD_ESSIMPORTER=no \ @@ -736,7 +677,6 @@ if [ ! -z $CI ]; then -DBUILD_OPENMW=no \ -DBUILD_WIZARD=no ;; - misc ) echo " Building subprojects: Misc." add_cmake_opts -DBUILD_OPENCS=no \ @@ -744,7 +684,6 @@ if [ ! -z $CI ]; then ;; esac fi - # NOTE: Disable this when/if we want to run test cases #if [ -z $CI ]; then echo "- Copying Runtime DLLs..." @@ -753,16 +692,13 @@ fi TARGET="$(basename "$DLL")" if [[ "$DLL" == *":"* ]]; then IFS=':'; SPLIT=( ${DLL} ); unset IFS - DLL=${SPLIT[0]} TARGET=${SPLIT[1]} fi - echo " ${TARGET}." cp "$DLL" "$BUILD_CONFIG/$TARGET" done echo - echo "- OSG Plugin DLLs..." mkdir -p $BUILD_CONFIG/osgPlugins-3.4.1 for DLL in $OSG_PLUGINS; do @@ -770,7 +706,6 @@ fi cp "$DLL" $BUILD_CONFIG/osgPlugins-3.4.1 done echo - echo "- Qt Platform DLLs..." mkdir -p ${BUILD_CONFIG}/platforms for DLL in $QT_PLATFORMS; do @@ -779,16 +714,13 @@ fi done echo #fi - if [ -z $VERBOSE ]; then printf -- "- Configuring... " else echo "- cmake .. $CMAKE_OPTS" fi - run_cmd cmake .. $CMAKE_OPTS RET=$? - if [ -z $VERBOSE ]; then if [ $RET -eq 0 ]; then echo Done. @@ -796,5 +728,4 @@ if [ -z $VERBOSE ]; then echo Failed. fi fi - exit $RET