Visual Studio project updates and enhancements to support static libmono and addition...
authorJohan Lorensson <lateralusx.github@gmail.com>
Sat, 20 Aug 2016 03:20:38 +0000 (05:20 +0200)
committerMiguel de Icaza <miguel@gnome.org>
Sat, 20 Aug 2016 03:20:38 +0000 (23:20 -0400)
commitc16b1270273e1dd7bf9870983327414dc4c1c52b
tree94a5c74cd23c4907bbac56b29729a6a5efb5b03b
parent6be008c409153a82e80394b98c93564e2cdb2309
Visual Studio project updates and enhancements to support static libmono and additional test/debug projects. (#3420)

* Fixing linker warning when building libmono DLL.

After splitting mono runtime into a static library used when building libmono
DLL, we got a linker warning since there were no object files left in the
libmono project. There was also a sematic issue with the current organization
of DllMain since it is located in driver.c that will be compiled into the static
library and then consumed by the linker building the DLL. In cases where the
static library was consumed directly it would still include DllMain entry point.

By splitting the DllMain method implementation into a separate specific windows file
we can both resolve the linker warning and remove the DllMain method implementation from the static
library and only include it when building the libmono DLL.

* Visual Studio projects support to optimally link mono applications using static libmono library.

Added a new property, MONO_USE_STATIC_LIBMONO that can be used to link some
mono applications, for example mono(-sgen).exe, towards static version of libmono.

This gives us the option to build a binary without dependencies on other runtime binaries
minimizing what’s needs to be deployed in order to run mono. This in combination with static linked c-runtime
(another option available through a VS property) will produce a mono runtime binary without
addition dependencies except .NET assemblies deployed by mono runtime users.

The default is still using the dynamic version of libmono as before.

* Visual Studio project to test/debug testdriver tests from within Visual Studio.

Added an additional Visual Studio project preconfigured to run testdriver related tests
directly from within Visual Studio.

Commit also includes an additional configuration script that can be used test projects in order
to setup a mono config file. The testdriver project uses this to create a unique configuration
files pointing to the build libtest.dll for running configuration. The configuration file will then
be used when the tests are executed to make sure the correct libtest.dll for current build configuration
gets used when running test different tests from within the Visual Studio debugger.

The project comes with a number of user macros as well that can be used in order to tailor how the tests are run.
Most of the values are preconfigured and shouldn't need to be changed in order to use
current build. In order to change the test that is executed, use the following user macro
defined in mono-testdriver-test property sheet added to the project:

MONO_TESTDRIVER_RUN_TARGET

and point it to the assembly hosting the tests to execute from within Visual Studio.

* Visual Studio project to test/debug nunit tests from within Visual Studio.

Added an additional Visual Studio project preconfigured to run nunit related tests
directly from within Visual Studio.

The project comes with a number of user macros as well that can be used in order to tailor how the tests are run.
Most of the values are preconfigured and shouldn't need to be changed in order to use
current build. In order to change the test that is executed, use the following user macro
defined in mono-nunit-test property sheet added to the project:

MONO_NUNIT_RUN_TARGET

and point it to the assembly hosting the tests to execute from within Visual Studio.

There is also an additional user macro defined:

MONO_NUNIT_FIXTURE

This can be used to limit the number of nunit test run within a test suite.
29 files changed:
mono/mini/Makefile.am.in
mono/mini/driver.c
mono/mini/mini-windows-dllmain.c [new file with mode: 0644]
msvc/libgcmonosgen.vcxproj
msvc/libgcmonosgen.vcxproj.filters
msvc/libmono-static.vcxproj
msvc/libmono-static.vcxproj.filters
msvc/libmono.vcxproj
msvc/libmono.vcxproj.filters
msvc/mono-full-aot-compile-test.vcxproj
msvc/mono-full-aot-run-test.vcxproj
msvc/mono-mini-regression-test.vcxproj
msvc/mono-nunit-test.props [new file with mode: 0644]
msvc/mono-nunit-test.vcxproj [new file with mode: 0644]
msvc/mono-test-env.props
msvc/mono-testdriver-test.props [new file with mode: 0644]
msvc/mono-testdriver-test.vcxproj [new file with mode: 0644]
msvc/mono-testdriver-test.vcxproj.filters [new file with mode: 0644]
msvc/mono.props
msvc/mono.sln
msvc/mono.vcxproj
msvc/monodis.vcxproj
msvc/monograph.vcxproj
msvc/profiler-vtune.vcxproj
msvc/test-config-setup.bat [new file with mode: 0644]
msvc/test-invoke.vcxproj
msvc/test-metadata.vcxproj
msvc/teste.vcxproj
msvc/winsetup.bat