Regarding theWin32/Visual C++ project completion items



Hello List,

As people here might know, the Visual C++ 2008/2010 projects to build the GNOME parts of the GTK+ and Clutter stack are currently using autotools to fill in the source file listings during 'make dist', which was mostly doing the job for getting the project files to be kept up-to-date for building these libraries on Windows, which is an idea that was initiated by Tor Lillqvist when he started providing such mechanism to provide Visual Studio build support aimed to ease maintenance of such files.

However, as time progresses, it turns out that there are some disadvantages with this approach:
-It adds significant bits to the various Makefile.am's.
-It is not easy for people using a GIT checkout to build the libraries under Windows/Visual Studio directly (one must 'make dist' tarball from a Linux system in order to get the necessary project files and source files using autogen.sh), hence items from others have been used to facilitate this kind of thing for GLib [1] -There needs to be tailored filter lists to get the correct sources in the project files, especially as the release tarballs are generated on Linux, meaning the source files that are meant for Linux (not Windows) will be picked up for the project files if those filters are not in place, and these filters can be out-of sync from time-to-time
-Possibly some other issues with this as well.

I am, therefore, thinking about using sets of Python 2/3 scripts (credits to Shixin Zeng for the original idea[1]) to facilitate the same functionality to complete the various Visual Studio Project (and also NMake Makefiles, where applicable), which has the following advantages compared to the current approach that I've mentioned earlier in this e-mail-a proposal for this can be found in [2]: -It can be invoked rather easily during 'make dist' by calling the Python script with the appropriate parameters -It is split in 2 parts for GLib, for one universal part (msvcfiles.py) can be used for various projects while the project-specfic parts can be in another Python script (glib_msvc_files.py) , which includes the needed items from the msvcfiles.py and creates the necessary project files for the specific project/ -It can also be invoked from a standard Windows cmd.exe prompt using Python, so that the necessary project files and/or NMake Makefiles can be created to be used on the spot. -The Python scripts will read from the various Makefile.am's using Python regex functionality, so the necessary build conditions (such as OS_WIN32) can be set to acquire the necessary source files for the msvc project files/NMake Makefiles, so filtering off the Linux source files can be significantly reduced, if not significantly eliminated. This will simplify maintenance, at least on my side, as I am certainly not an autotools expert. -It is already extended to make the listing of headers to "install" after building the various libraries, as the list of headers change from time in a development cycle, also to simplify maintenance on my part.

The key purpose in this venture is to make it easier for other people interested in using/developing the GTK+/Clutter (and its dependent libraries/items) stack to contribute to their development and maintenance on Windows, as I am inclined to believe people developing on Windows are more leaned towards using MSVC over MinGW (no offense intended here, even as I do not use MinGW most of the time, I still believe it (and its derived projects) is a formidable project).

I just wanted to hear from people here about what they think about this, especially: -Whether this is a viable approach-i.e. whether Python 2/3 is readily available on the Linux systems which people use to generate dist tarballs (I am not too acquainted with the Python situation on Linux, but I am inclined to believe that it is bundled with most Linux distros at least), and whether people think this change is useful as a whole, so that I can see whether this is something I want to really venture into for the other parts of the GTK+/Clutter stack
-Any other comments on this approach.

[1]: Please see build/win32/setup.py by Shixin Zeng in the GLib GIT checkout for an example for this. [2]: Please see attachment 259242 ("Add NMake Makefiles to build the GLib unit tests (take ii, automation added)") in Bug 711047 for a proposal. This contains the parts necessary for the msvc project files and property sheets, but the patch does not yet integrate completion of the project files using those scripts (however, it can be done quite easily by adding something like:
"glib.vcproj:
    $(PYTHON) $(top_srcdir)/build/glib_msvc_files.py -t vs9"
in build/win32/vs9/Makefile.am for example

Thanks for the time, with blessings!


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]