From 46a1c80a41c6d5be7204fbd9c38875dd393b456f Mon Sep 17 00:00:00 2001 From: lateralusX Date: Tue, 8 Jan 2019 14:06:14 +0100 Subject: Fix warnings and build errors when bumping Mono on alternative Windows platforms. Several of the name changes fixes MSVC warnings where local variables hides global variables using the same name. Number of adjustments not building on platforms not defining HAVE_CLASSIC_WINAPI_SUPPORT. Fix a couple of build projects not setting dependencies on build-init.vcxproj. This could cause races in build order if projects depend on build initialization. Added support to force external builds to use msbuild even if ninja is present. --- msvc/build-external-btls.bat | 39 +++++++++++++++++++++++++++---------- msvc/build-external-btls.vcxproj | 9 +++++++-- msvc/build-external-llvm.bat | 42 +++++++++++++++++++++++++++++----------- msvc/build-external-llvm.vcxproj | 18 ++++++++++++++--- msvc/libgc.vcxproj | 5 +++++ msvc/libgcmonosgen.vcxproj | 5 +++++ msvc/mono.external.targets | 2 ++ 7 files changed, 94 insertions(+), 26 deletions(-) (limited to 'msvc') diff --git a/msvc/build-external-btls.bat b/msvc/build-external-btls.bat index 8b16219faec..d4de955a5a0 100644 --- a/msvc/build-external-btls.bat +++ b/msvc/build-external-btls.bat @@ -13,6 +13,7 @@ :: %7 VS configuration (Debug/Release) :: %8 VS target :: %9 MsBuild bin path, if used. +:: %10 Force MSBuild (true/false), if used. :: -------------------------------------------------- @echo off @@ -30,14 +31,24 @@ set PERL_BIN_NAME=perl.exe set YASM_BIN_NAME=yasm.exe set MONO_BTLS_DIR=%~1 -set BTLS_DIR=%~2 -set BTLS_BUILD_DIR=%~3 -set MONO_DIST_DIR=%~4 -set VS_CFLAGS=%~5 -set VS_PLATFORM=%~6 -set VS_CONFIGURATION=%~7 -set VS_TARGET=%~8 -set MSBUILD_BIN_PATH=%~9 +shift +set BTLS_DIR=%~1 +shift +set BTLS_BUILD_DIR=%~1 +shift +set MONO_DIST_DIR=%~1 +shift +set VS_CFLAGS=%~1 +shift +set VS_PLATFORM=%~1 +shift +set VS_CONFIGURATION=%~1 +shift +set VS_TARGET=%~1 +shift +set MSBUILD_BIN_PATH=%~1 +shift +set FORCE_MSBUILD=%~1 :: Setup toolchain. :: set GIT= @@ -82,6 +93,10 @@ if "%VS_TARGET%" == "" ( set VS_TARGET=Build ) +if "%FORCE_MSBUILD%" == "" ( + set FORCE_MSBUILD=false +) + if not exist "%MONO_BTLS_DIR%" ( echo Could not find "%MONO_BTLS_DIR%". goto ON_ERROR @@ -326,7 +341,11 @@ if "%CMAKE%" == "" ( ) if /i "%VS_TARGET%" == "build" ( - echo Found CMake: %CMAKE% + echo Found CMake: "%CMAKE%" +) + +if /i "%FORCE_MSBUILD%" == "true" ( + goto _SETUP_CMAKE_ENVIRONMENT_VS_GENERATOR ) :: Check for optional cmake generate and build tools for full BTLS assembler supported build. NOTE, currently BTLS assembler build @@ -362,7 +381,7 @@ goto _SETUP_CMAKE_ENVIRONMENT_EXIT :_SETUP_CMAKE_ENVIRONMENT_NINJA_GENERATOR if /i "%VS_TARGET%" == "build" ( - echo Found Ninja: %NINJA% + echo Found Ninja: "%NINJA%" echo Using Ninja build generator, enabling full assembler build. ) diff --git a/msvc/build-external-btls.vcxproj b/msvc/build-external-btls.vcxproj index b3eddb01ed3..a07b4bb6d60 100644 --- a/msvc/build-external-btls.vcxproj +++ b/msvc/build-external-btls.vcxproj @@ -18,6 +18,11 @@ x64 + + + {92ae7622-5f58-4234-9a26-9ec71876b3f4} + + {E41DDF41-0916-454B-A7C2-6E410E45CAFD} buildexternalbtls @@ -155,12 +160,12 @@ <_BtlsBuildCommand>build-external-btls.bat "$(_MonoBtlsSourceDir)" "$(_BtlsSourceDir)" "$(_BtlsBuildDir)" "$(_MonoOutputDir)" "$(_BtlsCFlags)" "$(Platform)" "$(Configuration)" - + - + diff --git a/msvc/build-external-llvm.bat b/msvc/build-external-llvm.bat index 4982a64c42d..22a0ad50938 100644 --- a/msvc/build-external-llvm.bat +++ b/msvc/build-external-llvm.bat @@ -14,6 +14,7 @@ :: %8 VS configuration (Debug/Release). :: %9 VS target. :: %10 MsBuild bin path, if used. +:: %11 Force MSBuild (true/false), if used. :: -------------------------------------------------- @echo off @@ -30,15 +31,26 @@ set NINJA_BIN_NAME=ninja.exe set PYTHON_BIN_NAME=python.exe set LLVM_DIR=%~1 -set LLVM_BUILD_DIR=%~2 -set LLVM_INSTALL_DIR=%~3 -set MONO_DIST_DIR=%~4 -set VS_CFLAGS=%~5 -set LLVM_ADDITIONAL_CMAKE_ARGS=%~6 -set VS_PLATFORM=%~7 -set VS_CONFIGURATION=%~8 -set VS_TARGET=%~9 -set MSBUILD_BIN_PATH=%~10 +shift +set LLVM_BUILD_DIR=%~1 +shift +set LLVM_INSTALL_DIR=%~1 +shift +set MONO_DIST_DIR=%~1 +shift +set VS_CFLAGS=%~1 +shift +set LLVM_ADDITIONAL_CMAKE_ARGS=%~1 +shift +set VS_PLATFORM=%~1 +shift +set VS_CONFIGURATION=%~1 +shift +set VS_TARGET=%~1 +shift +set MSBUILD_BIN_PATH=%~1 +shift +set FORCE_MSBUILD=%~1 :: Setup toolchain. :: set GIT= @@ -83,6 +95,10 @@ if "%VS_TARGET%" == "" ( set VS_TARGET=Build ) +if "%FORCE_MSBUILD%" == "" ( + set FORCE_MSBUILD=false +) + if not exist "%LLVM_DIR%" ( echo Could not find "%LLVM_DIR%". goto ON_ERROR @@ -362,7 +378,11 @@ if "%CMAKE%" == "" ( ) if /i "%VS_TARGET%" == "build" ( - echo Found CMake: %CMAKE% + echo Found CMake: "%CMAKE%" +) + +if /i "%FORCE_MSBUILD%" == "true" ( + goto _SETUP_CMAKE_ENVIRONMENT_VS_GENERATOR ) :: Check for optional cmake generate and build tools. @@ -395,7 +415,7 @@ goto _SETUP_CMAKE_ENVIRONMENT_EXIT :_SETUP_CMAKE_ENVIRONMENT_NINJA_GENERATOR if /i "%VS_TARGET%" == "build" ( - echo Found Ninja: %NINJA% + echo Found Ninja: "%NINJA%" echo Using Ninja build generator. ) diff --git a/msvc/build-external-llvm.vcxproj b/msvc/build-external-llvm.vcxproj index e74168261aa..92ccd49fe19 100644 --- a/msvc/build-external-llvm.vcxproj +++ b/msvc/build-external-llvm.vcxproj @@ -18,6 +18,11 @@ x64 + + + {92ae7622-5f58-4234-9a26-9ec71876b3f4} + + {C3D4C623-55F8-4653-980D-61AA629B4E1D} buildexternalllvm @@ -153,20 +158,27 @@ <_LLVMCFlags>$(_LLVMCFlags.Trim()) <_LLVMCFlags Condition="'$(_LLVMCFlags)' != ''">-D$(_LLVMCFlags.Replace(" "," -D")) <_LLVMEnableAsserts>-DLLVM_ENABLE_ASSERTIONS=Off - <_LLVMEnableAsserts Condition="'$(MONO_ENABLE_LLVM_ASSERTS)' == 'true'" >-DLLVM_ENABLE_ASSERTIONS=On + <_LLVMEnableAsserts Condition="'$(MONO_ENABLE_LLVM_ASSERTS)' == 'true'">-DLLVM_ENABLE_ASSERTIONS=On <_LLVMAdditionalCMakeArgs>$(_LLVMEnableAsserts) <_LLVMBuildCommand>build-external-llvm.bat "$(_LLVMSourceDir)" "$(_LLVMBuildDir)" "$(_LLVMInstallDir)" "$(_MonoOutputDir)" "$(_LLVMCFlags)" "$(_LLVMAdditionalCMakeArgs)" "$(Platform)" "$(Configuration)" - + - + + + + + <_GetLLVMConfigOutputItems Include="$(_MonoLLVMConfig)" /> + + + \ No newline at end of file diff --git a/msvc/libgc.vcxproj b/msvc/libgc.vcxproj index 9d4116721e9..abfef90a3a1 100644 --- a/msvc/libgc.vcxproj +++ b/msvc/libgc.vcxproj @@ -18,6 +18,11 @@ x64 + + + {92ae7622-5f58-4234-9a26-9ec71876b3f4} + + {EB56000B-C80B-4E8B-908D-D84D31B517D3} libgc diff --git a/msvc/libgcmonosgen.vcxproj b/msvc/libgcmonosgen.vcxproj index 3db4e154d23..0266b75c656 100644 --- a/msvc/libgcmonosgen.vcxproj +++ b/msvc/libgcmonosgen.vcxproj @@ -18,6 +18,11 @@ x64 + + + {92ae7622-5f58-4234-9a26-9ec71876b3f4} + + {C36612BD-22D3-4B95-85E2-7FDC4FC5D740} Win32Proj diff --git a/msvc/mono.external.targets b/msvc/mono.external.targets index e6c998118a4..022246be92d 100644 --- a/msvc/mono.external.targets +++ b/msvc/mono.external.targets @@ -106,6 +106,8 @@ <_MonoSourceDir>$([System.IO.Path]::GetFullPath('$(MONO_DIR)').TrimEnd('\')) <_MonoOutputDir>$([System.IO.Path]::GetFullPath('$(OutDir)')) + <_MonoExternalBuildForceMSBuild Condition="'$(MONO_EXTERNAL_BUILD_FORCE_MSBUILD)' == 'true'">true + <_MonoExternalBuildForceMSBuild Condition="'$(MONO_EXTERNAL_BUILD_FORCE_MSBUILD)' != 'true'">false -- cgit v1.2.3 From 4486952c2fff57b817681bf81117f1a6e03ef35d Mon Sep 17 00:00:00 2001 From: lateralusX Date: Tue, 8 Jan 2019 15:01:48 +0100 Subject: Fix build error when doing MSVC build wihtout cygwin not having a config.h. --- msvc/build-init.vcxproj | 2 +- msvc/winsetup.bat | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'msvc') diff --git a/msvc/build-init.vcxproj b/msvc/build-init.vcxproj index 2a6ba7c6df2..2b6f883483c 100644 --- a/msvc/build-init.vcxproj +++ b/msvc/build-init.vcxproj @@ -167,7 +167,7 @@ - + diff --git a/msvc/winsetup.bat b/msvc/winsetup.bat index a7b1c6290a7..44442f06d8c 100755 --- a/msvc/winsetup.bat +++ b/msvc/winsetup.bat @@ -32,7 +32,9 @@ mkdir "%CONFIG_H_TEMP%\.." 2>nul set CONFIG_H_TEMP="%CONFIG_H_TEMP%" REM Backup existing config.h into cygconfig.h if its not already replaced. -findstr /i /r /c:"#include *\"cygconfig.h\"" %CONFIG_H% >nul || copy /y %CONFIG_h% %CYG_CONFIG_H% +if exist %CONFIG_H% ( + findstr /i /r /c:"#include *\"cygconfig.h\"" %CONFIG_H% >nul || copy /y %CONFIG_h% %CYG_CONFIG_H% +) :: Extract MONO_VERSION from configure.ac. for /f "delims=[] tokens=2" %%a in ('findstr /b /c:"AC_INIT(mono, [" %CONFIGURE_AC%') do ( -- cgit v1.2.3