GNOME Bugzilla – Bug 648197
Visual C++ 2008/2010 compilation support for Clutter
Last modified: 2011-11-17 14:47:02 UTC
Hi, I have tried to come up with (resurrected) support to build Clutter with Visual C++ 2008/2010, and have come up with a series of patches/support files to build COGL, COGL-Pango, Clutter, the microbench tests, the accessibility tests, the conformance tests and the interactive tests with the Visual C++ toolchain. The patches include the following (automation support for the Visual C++ 2008/2010 Project Files, pre-configured headers are included below): Fix for C99 usage in the test programs http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=e9cf01c1b756ed295df4d7f40f4cc55e05204ddc Visual C++ 2008 project files, including README.txt http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=0fcf584919d40cf27080c9f5a40ebb61f2f454a9 Visual C++ 2010 project files, including README.txt http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=bbdae5597dd3cad329b824306094b335ccc482ec Preconfigured config.h(.win32.in), clutter-config.h(.win32), clutter-version.h(.win32.h), cogl-defines.h(.win32), and *.symbols files for COGL, COGL-Pango and Clutter to be used to generate the .def file for exporting symbols from the Clutter DLL http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=c16cfc87b61b8d26976bb217a17357bceca57ec5 Various enhancements to the autotools files for distribution and automation http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=b297642ad0434e77f176362f86ade9deebf074f0 http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=62c888c67e7002dc93a67e53b9d004f7b176546c http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=90613d8615881a2e267cd3e4fdc9a4658229a48c http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=68c7051797fcc41c067e9b58a3b04db508001fcf Comments and suggestions are welcome. Thank you!
This patch is considered dependent on bug 640510 [Updated MSVC Project File Set (VS2010 support and automation added]) as JSON-GLib is a dependency of Clutter. Thank you!
Since Cogl is now in a package of its own, bug 650020 becomes a dependency of this. I will update my files for Visual C++ for this bug report as a result, too. Thank you!
Hi, Sorry for not keeping this bug report up to date... The updates since April 19 consists of the following (earliest first for each group, cogl specific changes are not listed here but in bug 650020): === Updates to VS property sheets/projects and other Windows/VS-specific items: === *Due to Cairo inclusion path () http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=7bcccd69f4792360589278161913df0e98a2cad3 *Define COGL_HAS_WIN32_SUPPORT for the build http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=3307e82844586d2c617727c24e43225c2287c10f *Clean up the projects and property sheets, and made definitions more like the ones in the autotools builds. http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=8bd5472933e16d5ed1a3f4006b6790cb72cc0d11 (VS2008) http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=81987b2a2a53a9b7b63b23a95f345d88fb52937f (VS2010) *Made up for missed VS2010/x64 pre-build steps http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=955e1b8f78a2a1f58791f5cea55be3beafff8107 *Fix-up VS2010 projects http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=8b9216b6fdb6f856431c3fd9d282354cc9a4ac77 *Correct inclusion/linking of JSON-GLib http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=2c32ce11f12373dab1d76a2b517b0cab350ea9ca *Install newly-added headers required for the public API http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=3fe72751e6e4f3544e690ba5faab5aae08e20e55 *Refined VS2010 projects to seperate intermediate directories for each project to avoid MSBuild errors http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=79b55adde2816da835384665f5267c6b3de1528a http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=59f6f1246fa9580a309bfadb6e497c0286cc0d6c (done likewise for VS2008) *Link to cairo-gobject.lib as well, as Cairo and Cairo-Gobject are normally 2 seperate libraries from the same package http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=925a82454cd86b26bb6cac53883cf6228e3357dd *Added and made-up for headers that need to be processed by glib-mkenums http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=fadf4535ac2f1bad8cc36764e7d0074579d29ac7 *Corrected *.sln files and Windows-specific README.txt's to have Windows EOL http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=a1f081cfba4fca22925394644366a85ba1562ba7 *Revert projects to depend on atk-1.0.lib (not atk-2.0.lib) http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=81ef6c1d0ab79bc0442d5776a53b06360ebf1877 *Have the test-conformance project to link to ATK as well http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=e12da2dd9c832382dbe5f6187fc5a55d90e8b07a *Tell people about the (upcoming) instructions to build Clutter with VS http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=df530f5c4bb73fc3b9fafe02d72ad4db16fee3bb *"Install" the cookbook examples and related items, and update the "installation" location of test case data http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=c022102f8c672ec6f12d174ddba871ec614a9e4c === Updates to autotools files: === *"Create" the pre-configured config.h.win32 and clutter/clutter-version.h.win32 during ./autogen.sh and/or ./configure http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=2b1303a939b7cc895f98e00d329d0bda7c2bc851 *Update test-interactive Makefile.am not to pick up the X11-only tests when creating the test-interactive.bat file. http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=069d20fcf660d89148e95813d90a8c412dfa7c69 *Update test-interactive/test-conformance Makefile.am's to create and distribute .bat files to run each applicable test. http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=b7fe0062b97232ab19c1a617ca4ff3afc479b7a7 *Reflected on the move of clutter-event-tslib.c (probably fixed in master) http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=f8d1c71b2742be4655e46a8738f548f24907b2a2 *Update test-interactive/test-conformance Makefile.am's on the creation of .bat files to run all the interactive/conformance tests http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=4db5a264e73e18980f6e517dae0c84a132de22a0 *Add the CLUTTER_ENABLE_EXPERIMENTAL_API define in the property sheets http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=78352c50d37a5dd646b23ea9190300117d9b580b === Update clutter.symbols === *Better conformance to the Clutter API after COGL became its own package http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=8bd5472933e16d5ed1a3f4006b6790cb72cc0d11 (I understand this was listed...) *Added new APIs/deprecated APIs accrdingly http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=3fe72751e6e4f3544e690ba5faab5aae08e20e55 (I understand this was listed...) http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=191e818d1c39082ca2612dac747e77b5c07de938 http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=c14b8caba07825ee817908337dcd91a041b3efd2 http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=5c9a426e861d6d79c7a1d46bde2edadd8bb447ed http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=8b7aa00120f73fdd6dbfbc3c57fd812312ca7293 http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=33a3bd575a8cb56c326fecd80492e90a6606b862 http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=78352c50d37a5dd646b23ea9190300117d9b580b (I understand this was listed... This is the experimental Clutter API) === Update predefined config.h.win32(.in) === *Remove COGL-only and other unneeded items as COGL is in a project of its own http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=955e1b8f78a2a1f58791f5cea55be3beafff8107 *Add entry (though underfined) for HAVE_PANGO_FT2, for consistency sake http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=b181165f2f48ce586732dad96bc1785243410e04 === Source updates === *Comply with COGL API naming http://git.gnome.org/browse/clutter/commit/?h=msvc-support&id=f13b6b0a3a213617faf540d32d40a2f1742218fa === Sorry for the large post... Thank you, and God bless!
Sorry, I have to switch my msvc-support branch to the msvc-support-master branch, as I accidently merged msvc-support-2.0 stuff into that branch, which broke it bad (git pushed my changes although I requested an abort in the rogue merge when I saw conflicts :|). Sorry for the inconveniences caused. Thank you, and God bless!
I think it's time to merge the msvc-support branch into master, at least for Clutter; this will at least leave you Cogl to concentrate on.
(In reply to comment #5) > I think it's time to merge the msvc-support branch into master, at least for > Clutter; this will at least leave you Cogl to concentrate on. Thanks Emmanuele, The msvc-support-master branch has been merged into master just now. God bless!