After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 648197 - Visual C++ 2008/2010 compilation support for Clutter
Visual C++ 2008/2010 compilation support for Clutter
Status: RESOLVED FIXED
Product: clutter
Classification: Platform
Component: general
git master
Other Windows
: Normal normal
: ---
Assigned To: clutter-maint
clutter-maint
Depends on: 650020
Blocks: 657237
 
 
Reported: 2011-04-19 11:41 UTC by Fan, Chun-wei
Modified: 2011-11-17 14:47 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Fan, Chun-wei 2011-04-19 11:41:13 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!
Comment 1 Fan, Chun-wei 2011-04-19 11:45:08 UTC
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!
Comment 2 Fan, Chun-wei 2011-05-12 09:32:32 UTC
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!
Comment 3 Fan, Chun-wei 2011-09-06 08:05:36 UTC
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!
Comment 4 Fan, Chun-wei 2011-09-16 09:23:20 UTC
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!
Comment 5 Emmanuele Bassi (:ebassi) 2011-11-16 16:48:42 UTC
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.
Comment 6 Fan, Chun-wei 2011-11-17 14:47:02 UTC
(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!