The temporary bug in gtest has now been fixed, but we still can keep
using the current way of fixing MSVC 2012 builds instead of switching
to the solution used previously.
This avoids having to disambiguate between assembler parameters,
preprocessor parameters and MSVC parameters within gas-preprocessor.
In particular, this avoids creating a stray dependency file named
'-.d' while building. Future versions of gas-preprocessor might
require this in order to build at all.
All the code that relies on separating them uses the built-in defines
_WIN32 and _WIN64, or the corresponding machine defines (such as
_M_IX86, for MSVC 32 bit inline assembly).
The previous define change in 1e607d71 only made it work on MSVC
2005 and 2008, but broke things even more for 2010 and newer.
(One shouldn't override the internal details about which tuple
implementation to use, since one implementation don't work on
all versions.) Since we don't need or use the gtest tuple code,
the simplest workaround used to be just to disable it altogether,
but that was broken in r682 in gtest.
This has been tested and works on MSVC 2005, 2008, 2010, 2012 and
2013.
This fixes building of gtest on msvc.
See e.g. http://stackoverflow.com/questions/8274588 for
more discussion on the matter.
This is only required on MSVC 2012 - gtest itself (in the cmake
files) adds -D_VARIADIC_MAX=10 to the build when building using
MSVC 2012, but we don't know the MSVC version at the make stage
here. Since the gtest tuple support isn't used at all, it's
simpler to just disable it altogether than to try to add
-D_VARIADIC_MAX=10.
MSVC doesn't export any functions at all by default, contrary to
gcc which exports all global functions by default.
Doing the same for linux/OS X isn't too hard, but they use yet
two other, different syntaxes for the corresponding symbol file.
This makes sure that e.g. "make clean" actually removes
the built exe files, and avoids relinking the exe files each
time make is run when cross compiling from linux to windows.
(Make on windows seems to have an exception that knows to skip
rebuilding the 'h264enc' target if 'h264enc' doesn't exist but
'h264enc.exe' does, but this exception doesn't work on normal
unix make.)