Currently, due to the way that Visual Studio 2010+ projects are handled,
the "install" project does not re-build upon changes to the sources, as it
does not believe that its dependencies have changed, although the changed
sources are automatically recompiled. This means that if a part or more
of the solution does not build, or if the sources need some other fixes
or enhancements, the up-to-date build is not copied automatically, which
can be misleading.
Improve on the situation by forcing the "install" project to trigger its
rebuild, so that the updated binaries can be copied. This does trigger an
MSBuild warning, but having that warning is way better than not having an
up-to-date build, especially during testing and development.
Cogl, when built with the SDL winsys, will include the SDL headers when
Cogl-based programs are built, which causes the SDL's wrapper for main()
to be used on Windows, causing an implicit requirement that all Cogl-based
apps must link to SDL2.lib and SDL2main.lib. Avoid this behavior by
defining SDL_MAIN_HANDLED in the CFLAGS of the sample and interactive test
programs
Clutter, like GTK+ and GLib, has recently switched to a visibility-based
method of exporting symbols, so update the Visual Studio build files to
do likewise, by using __declspec (dllexport). This eliminats the need to
use a .def file to export the symbols. The pre-configured
config.h.win32.in is also updated accordingly for this purpose. The
clutter.symbols file can be dropped if it is not being used otherwise.
This adds a PlatformToolset tag for each configuration so that it is easier
to upgrade the projects to Visual Studio 2012/2013 formats, which are
largely the same as the Visual Studio 2010 projects. We can, for example,
use a script to change the values of the PlatformToolset to make these
projects usable out-of-the-box for Visual Studio 2012/2013.
Like the Visual Studio 2008 projects, give the Visual Studio 2010 projects
an overhaul, where:
-The property sheets are split up, so that they are easier to maintain and
each project only needs to include the necessary parts. The various
projects are updated accordingly, too. The copying of config.h.win32 and
clutter-config.h.win32(_GDK) are now done with custom build rules, so that
these files can be cleaned and/or recopied during a clean, rebuild or
update.
-Clean up the property sheets, to get rid of parts that are actually
repeated. Also update the build macros, so that we won't get warnings
for repeated #defines of macros and fix the build of the various tests/
demo programs.
-Make all projects use Unix line endings, except for the .sln and
README.txt files, which need to have Windows line endings. This makes it
easier to apply patches to these project files.
-Update the installation of headers, as headers are introduced/deprecated.
-Cosmetics: get rid of "\ No newline at end of file".
Split up the property sheets, so that they are easier to maintain, and
clean up the projects and property sheets, especially on items that are
being repeated, and therefore silence many build warnings. Update the
project files correspondingly, and make all project files use Unix line
endings, for easier application of patches (the .sln and README.txt files
still has to have Windows line endings in order to work properly).
Also make the copying of config.h.win32 and clutter-config.h.win32(_GDK)
custom build rules, so that they may also be cleaned during the cleaning
of the build, which makes it easier for one to do a rebuild.
Similar updates to the Visual Studio 2010 project files will follow.
...and drop these project files, as the way how the conformance
tests are built has been totally reworked. Instead, in the future,
use NMake Makefiles to build them, which will be proposed later.
The current conformance test suite is suboptimal in many ways.
All tests are built into the same binary, which makes adding new tests,
builting tests, and running groups of tests much more awkward than it
needs to be. The first issue, especially, raises the bar of contribution
in a significant way, while the other two take their toll on the
maintainer. All of these changes were introduced back when we had both
Clutter and Cogl tests in tree, and because we were building the test
suite for every single change; since then, Cogl moved out of tree with
all its tests, and we build the conformance test suite only when running
the `check` make target.
This admittedly large-ish commit changes the way the conformance test
suite works, taking advantage of the changes in the GTest API and test
harness.
First of all, all tests are now built separately, using their own test
suite as defined by each separate file. All tests run under the TAP
harness provided by GTest and Automake, to gather a proper report using
the Test Anything Protocol without using the `gtester` harness and the
`gtester-report` script. We also use the Makefile rules provided by GLib
to vastly simplify the build environment for the conformance test suite.
On top of the changes for the build and harness, we also provide new API
for creating and running test suites for Clutter. The API is public,
because the test suite has to use it, but it's minimal and mostly
provides convenience wrappers around GTest that make writing test units
for Clutter easier.
This commit disables all tests in the conformance test suite, as well as
moving the data files outside of the tests/data directory; the next few
commits will re-establish the conformance test suite separately so we
can check that everything works in a reliable way.
Cogl-1.16 has much deprecation that is done, which causes the build of
Clutter to generate lots of C4996 (deprecation) warnings. As in commit
fa8809d7 (Add COGL_DISABLE_DEPRECATION_WARNINGS to the build flags), do
likewise by adding this macro in the Visual C++ property sheets, so we
would have much less C4996 warnings during the build.
Please see bug 703877 for the rationale behind this.
-Combine entries in the property sheets and make it a bit more flexible,
and drop some redundant items
-Use Custom Build Rules for generating enumeration and marshalling sources,
and the .def file so that they can be wiped off when a "clean" is
requested, and regenerate automatically when the templates/.symbols
files are updated.
-Improve consistency by using ApiVersion rather than ClutterApiVersion
with the Visual Studio project for other components of the Clutter/GTK+
stack
-Get rid of unneeded configs in the "install" project
-Make things a bit cleaner by generating clutter.def in the intermediate
build folder
-Fix the include paths as config.h is now in clutter/
-Make things a little bit more consistent between vs9 and vs10 in terms of
the "install" stage
The C4819 warnings appear due to a bug on Visual C++ when running on
non-English locales, specifically CJK versions/locales of Windows.
Re-enable this, like what is done in GLib, and add a note in the
Visual C++ README.txt's to tell people about this, so that Cogl will be
built correctly.
Apparently the update to build the GDK backend broke the "installation"
process of the binaries. Fix that by grouping the binaries as Release or
Debug.
-Add configuration in Clutter projects to add option to build Clutter with
the GDK3 backend in addition to the Win32 backend
-Add another preconfigured clutter-config.h.win32_GDK which contains
backend configs for both GDK3 and Win32 windowing and input.
-"Install" the newly-introduced headers
-Fix the situation when the Clutter sources are not unpacked in the root
folder of a drive (ex: Clutter is unpacked in c:\blah or d:\blah, instead
of c:\ or d:\)