Rename the install projects to cogl-install, so that it is easier to
differentiate the projects when using the project set in a grand solution
file, such as a grand solution file that is used to build the entire
Clutter stack.
"Install" the .pdb files with the built DLLs and examples, as the .pdb
files are already generated for all builds, which are useful for debugging
during Cogl development, or during development of Cogl-using items.
Also be more selective on the LIBs, DLLs and EXEs that are copied, so that
we only copy the items built during Cogl compilation when the project set
is used in a grand solution, such as when building the entire Clutter
stack, which will avoid items being incorrectly copied or extra and
unneeded items being copied.
Use the multiprocessor compilation (/MP) option so that release build times
can be cut down quite a bit. This will generate a brief warning for debug
builds as such builds use /Gm, but otherwise the build will proceed
normally albeit it would be slower.
Also use the /d2Zi+ flag for Visual Studio 2010 (and later) builds to log
more useful information in the .pdb files that are generated, to aid
debugging release builds when necessary.
To make the .pdb filename match the filename of the built target, one must
specify the .pdb file name if the target filename does not match the
project name for Visual Studio 2010 and later. Update the projects
accordingly.
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, includes the SDL headers in its
headers, which causes main() to be defined to SDL's main() wrapper on
Windows, which means that SDL2.lib and SDL2main.lib need to be linked to
every single program that links to Cogl with the SDL winsys.
Avoid this behavior by defining SDL_MAIN_HANDLED in the CFLAGS of the
sample and test programs, and let people know that this is the case.
Let people know that for Visual Studio builds GLib is a hard requirement,
and let the people also know that SDL-2.x is now used for builds supporting
the SDL winsys. Also let people know that current situation regarding
building and linking Cogl applications with the SDL winsys built in.
This adds a PlatformToolset tag in order to make upgrading the projects to
Visual Studio 2012/2013 formats easier, especially when done with a script.
The script, for example, can change the value inside these tags
apporpriately to do the upgrade job quite easily.
This updates the Visual Studio 2010 Projects in the following ways,
similar to the recent changes to the Visual Studio 2008 projects:
-Make all the copying of the pre-configured header files custom build
rules, so that it is cleaner when people clean their builds, and the files
can be re-copied when updated.
-Split up the property sheets, so to ease future maintenance
-Make the cogl-path library built as a DLL
-Build and link against SDL-2.x for SDL builds
-Make everything except the .sln file and the README.txt file use UNIX line
endings, for easier maintenance.
-Merge cogl_sdl.sln and install-sdl.vcxproj into cogl.sln and
install.vcxproj respectively.
-Update build of the conformance test to not use COGL_COMPILATION, and make
it link to cogl-path.
The solution files which are updated due to the split of Cogl-Path need
to be pushed as well, which were forgotten. Sorry about this, and fix
.def file generation on Cogl with SDL on Visual Studio 2010 builds.
This adds a centralized autotools Makefile to be used in the completion
of the project files for Cogl-Path for now, which can be used also in
Cogl, Cogl-Pango and possibly Cogl-Gst so that we could have less clutter
in the autotools files.
This patch set will also allow the Cogl-Path project files to be filled in
during 'make dist' and make them distributed during a tarball release.
Reviewed-by: Neil Roberts <neil@linux.intel.com>
(cherry picked from commit 491020592b240ca5f2885dee104c88bf431858ae)
Conflicts:
cogl-path/Makefile.am
This adds template project files that is used to build cogl-path, where the
source files can be filled in using autotools. Note that although
cogl-path is built as a static library, items to build DLLs for this
is intentionally left in there as this is intended to be a shared library
later.
Use custom build rules to generate the enumeration sources and the .def
files so that the IDE will regenerate those files upon change and
clean them when a clean up request is requested.
-Make entries of the property sheets more like the property sheets of the
projects in the GTK+/Clutter stack, mainly changing CoglApiVersion to
ApiVersion, for better consistency, and update the corresponding projects
-Add command item in property sheets to build introspection files for Cogl
and Cogl Pango.
-Stop building and installing the cogl-msaa example, as it is something
that isn't really meant for Windows, and causes an internal compiler error
on Visual Studio 2010 x64 builds
Some public headers were added, so these need to be "installed" as well.
Also clean up the preprocessor definitions as they were meant to be
in cogl/cogl-defines.h.
Since commit 7253c5ca (Bug 682071-cogl/cogl-sdl.h: MSVC: Link to SDL when
apps are built), on Visual C++ we link to SDL.lib and SDLmain.lib using
a #pragma comment directive in cogl/cogl-sdl.h, so we no longer need
specific project configs for Cogl programs which build against a Cogl built
with SDL. This removes those unneeded configs.
Also "install" cogl/cogl-sdl.h when Cogl is built with the SDL winsys, as
it is a needed header
-Make "install" parts for VS9 and VS10 more consistent with each other
-Create the .def files in the respective intermediate/.obj folders, so that
it is cleaner duringg the build
-Make up for missed files to "install"
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.
(cherry picked from commit a93eafe6596e3b262dbb86f24a456e53b044055a)
-The test program and examples must be linked to SDL too when COGL is
built with the SDL renderer, so add configs accordingly.
-Also use Multibyte character sets (i.e. don't -DUNICODE) for all configs,
like what GLib does, for consistency.
-Fix the VS2010 property sheets that was accidently malformed.
(cherry picked from commit 9ed541b4e35208df87ffaa5fbbb39e11e8c247ef)
The command to copy cogl-gl-header.h from the pre-configured
cogl-gl-header.h.win32 is wrong. Fix that.
Also add -DCOGL_ENABLE_EXPERIMENTAL_API for all creations of the cogl.def
(cherry picked from commit 6df152c411749a610a57ecaab6a983b51d2a7612)
-Create a pre-defined cogl/cogl-gl-header.h(.win32) that is to be used on
any Windows builds, and adapt the MSVC build process to set up and use
that file.
-Fix up glib-mkenums code generation .bat file that is generated during
"make"/"make dist", like the autotools-based builds.
-Since cogl/cogl-defines.h now contain versionioning info, and it no longer
directly includes the GL headers, update the pre-configured
cogl-defines.h[.win32|.win32_SDL] and use autotools to fill in the
versioning info during "make"/"make dist".
-Fix up cogl/cogl-pango.rc.in so that they reflect the cogl-2.x versioning
stuff correctly and versioning info can be filled in correctly during
"make"/"make dist"
Reviewed-by: Robert Bragg <robert@linux.intel.com>
(cherry picked from commit 7ff42bb1c5280b0f53370f8d94ef5f10c9f39e2f)
Update SDL build configs as there are now SDL-specific public APIs and
new SDL sources.
(cherry picked from commit 006f9f7c44136fc8524649fb790da7f19cd0dc4d)
Fix the situation where glib-mkenums isn't located correctly when COGL
is not built in a root folder of a drive (ex: COGL is not unpacked in
c:\ or D:\, but in c:\blah or d:\blah)
We no longer have COGL_ENABLE_EXPERIMENTAL_API in cogl.symbols as those
APIs are always built into the COGL DLL, so the
-DCOGL_ENABLE_EXPERIMENTAL_API is not needed anymore in the cogl.def
generation process.
This had to be in another commit as git am did not like a mixture of
file updates with Windows and Unix EOL.
Should deal with the conflicts that Neil talked about in his comments
for the bug :)
Use a pre-generated .bat to create the cogl-enum-types.[ch] files.
This will greatly simplify the maintenance process of the property sheets
when public headers are added/removed.