Commit Graph

25 Commits

Author SHA1 Message Date
Chun-wei Fan
e3ab6ab38a Visual Studio builds: Rearrange build configs
This is a follow-up commit for commit 82c2461, where the default build is
to use the PCRE that is installed in the system, if it is available and is
not overridden with --with-internal-pcre.

For Visual Studio builds, this means that the new 'Debug' and 'Release'
configs will now use PCRE that is found on the system, which were renamed
from the '*_ExtPCRE' configs; and that there are now 'Debug_BundledPCRE'
and 'Release_BundledPCRE' configs which make use of the PCRE that is
supplied with the GLib sources, which, replaces the former 'Debug' and
'Release' configs.
2016-01-18 16:04:45 +08:00
Chun-wei Fan
c50bb218de MSVC 2010+ builds: Do not explicitly use /LTCG
This partially reverts dc4361f.

As we now ensure that items using GResources and GConstructors are always
referenced so that the linker does not optimize them out in a default
Release build, we no longer need to enforce the use of /LTCG, so
/LTCG:incremental will work as well.
2015-11-12 15:26:20 +08:00
Chun-wei Fan
dc4361f4cb MSVC 2010+ builds: Explicitly use /LTCG
The Visual Studio projects used a default setting for link-time code
generation, which is a part of the various linker optimizations that is
available, which is set as /LTCG for Visual Studio 2013 and earlier.

This changed in Visual Studio 2015 to become /LTCG:incremental, which would
cause GResources-generated code to be optimized out during linking, unless
they were referred to directly in the main line code (such as when the
GResource is manually registered), causing programs to crash as a result as
they can't find the needed code/data at run time.

Fix this by explicitly setting /LTCG for all release builds, for Visual
Studio 2010 and later.

https://bugzilla.gnome.org/show_bug.cgi?id=752837
2015-10-13 19:30:22 +08:00
Chun-wei Fan
041e77249a Cleanup and Enhance the MSVC Project Generation
Make use of the common autotools module that is used to generate the MSVC
project files from their respective templates so that the main build files
beccome cleaner, and enhance them in a way that the headers that should be
installed can be written to the property sheets during 'make dist', so that
the chances of missing headers for MSVC builds can be greatly reduced.

Also use this autotools module to fill in the projects for
glib-compile-schemas and glib-compile-resources.

https://bugzilla.gnome.org/show_bug.cgi?id=735429
2015-09-03 19:10:06 +08:00
Chun-wei Fan
74c9eaac11 MSVC Builds: Few More Enahncements
Update the .pdb file generation for the MSVC 2010+ DLLs (and the x64 gspawn
helper programs), so that they match the names of the DLLs/EXEs that are
built.  Also update the .lib generation so that all will use -$(ApiVersion)
from the property sheets instead of the -2.0 which was previously hard
coded (as we will eventually move into GLib 3.x in the future, for example)
2015-03-04 20:11:43 +08:00
Chun-wei Fan
eb7ef594de Fix GLib MSVC Project
The glib/gthread-win32.c was accidently removed from the last commit, sorry
2014-01-06 12:31:18 +08:00
Chun-wei Fan
940b3c2250 Tidy Up the glib MSVC Project
Move the per-source define/undefine cflags into the property sheets, and
apply the cflags for the bundled PCRE sources to the PCRE sources only
2014-01-06 12:21:46 +08:00
Chun-wei Fan
ddc29a9036 Visual Studio Projects: Cleanup Property Sheets
Make the projects include a single property sheet as necessary, which will
in turn include the other property sheet(s) as needed, so that we can avoid
warnings where we include the same property sheets twice in a single
project.

Also make the copying of pre-configured headers into custom build rules so
that they can be removed upon the clean command from the IDE and that they
can be re-copied if their counterpart *.h.win32 are updated.
2013-12-27 12:25:18 +08:00
Chun-wei Fan
2ff85ca47c Fix typo in last commit
The gio.vcxprojin and glib.vcxprojin were including .vsprops property
sheets, but it should have been .props instead.
2013-08-21 17:54:32 +08:00
Chun-wei Fan
113793a442 MSVC 2010 Project Files: Split up the Property Sheets
Like the Visual Studio 2008 project files, split up the property sheets
so to ease maintenace, and to prepare to use autotools to fill in the
header entries to "install".

Put some of the items that are frequently repeated in the projects as well,
also to simplify maintenance.

Also, update the autotools files to automate the upgrade of Visual Studio
2010 project as we now have multiple property sheets to copy and process.
2013-08-21 16:57:11 +08:00
Chun-wei Fan
716ec71ece GLib MSVC Projects: Consolidate PCRE items
Move the definitions of macros used to build PCRE that ships with GLib into
the property sheets, so that it can be easier to maintain
2013-08-21 13:55:52 +08:00
Chun-wei Fan
524470d8e0 Fix the GLib Visual Studio Projects
Define the G_LOG_DOMAIN of the GLib DLL as "GLib", because:
-This makes it consistent with the autotools builds
-Some tests expect the log domain to be "GLib"
2013-05-27 13:23:58 +08:00
Chun-wei Fan
4ba56f3653 Bug 688681: Stop using .def files in Visual Studio builds
Since we are now starting to use __declspec (dllexport) to export the
public functions during the build of the GLib DLLs (i.e. to generate the
.lib files), we don't want to generate the .def files from the .symbols
files as we did before for a long time.

This removes from the projects the custom build steps to generate the
various .def files

This will also update the pre-configured config.h(.win32.in) to define
_GLIB_EXTERN appropriately as __declspec (dllexport), as well as making its
entries reflect config.h.in more closely.
2013-01-15 15:23:05 +08:00
Chun-wei Fan
c5b9a47fac Visual C++ 2010 projects: Prepare support for VS2012
Add the PlatformToolset tag to the project configs so that we can use add a
simple script later to the autotools files to copy the projects and change
the value (v100 -> v110) of that tag (and other simple changes) in order
that we can quickly provide and maintain support for Visual Studio 2012
with minimal effort.

Note that at the moment GLib does not yet support the API/SDK requirements
for Windows 8 Modern UI (formerly known as Metro), but this paves the very
initial step.
2012-11-05 12:31:44 +08:00
Chun-wei Fan
810a296d42 Visual C++ projects: Clean/fix up
Clean/fix up the Preprocessor Definitions for the various projects, where
we purge out the unneeded macros and add _DEBUG to the Debug builds of
various projects that somehow lacked this.

This will also fix the GIO build under Visual C++ 2008, as the _DEBUG macro
in the release builds will cause a debug entry to appear in its manifest
file during the build, which will cause GIO-using applications to fail
to run on systems not running Visual C++/Studio 2008 due to its embedding
of a badly-generated manifest file.
2012-04-24 00:03:33 +08:00
Chun-wei Fan
63673da5eb Update GLib Visual C++ projects
Some of the bundled PCRE source files are removed as they are not needed
anymore (please see commit e7c0f10e), so don't include them in the projects
2012-04-05 15:45:38 +08:00
Chun-wei Fan
9db8692f5a Update Visual C++ projects
Update the build support of the included PCRE as we are now including
PCRE 8.30 with the GLib distribution.

Also "install" the new gversionmacros.h header file.
2012-02-29 11:58:16 +08:00
Chun-wei Fan
fee6293bc9 Update GLib Visual C++ projects
Also link to WinMM.lib since timeGetTime is used (commit 8d023c27).
2011-11-21 10:45:27 +08:00
Chun-wei Fan
b2717740a2 VS support updates
-Fix GLib project/filter files generation as some source items are under
 the "deprecated" subfolder, and filter out the gthread-*.c
-Explicitly specify gthread-win32.c in the GLib project/filter file
 templates, since tarballs are done on Linux.
-Don't define g_static_mutex_get_mutex in the pregenerated
 glibconfig.h.win32(.in) as it is defined in deprecated/gthread.h for Windows
2011-09-23 10:48:25 +08:00
Chun-wei Fan
7e5874dd17 Update GLib Visual C++ Projects
Define USE_SYSTEM_PCRE for all configurations which uses the PCRE that
was already built and "installed" beforehand (i.e. the *_ExtPCRE
configurations) so that the compilation will not pick up the
GLib-bundled pcre.h when one wants to use the PCRE "installation" on
his/her system.
2011-08-23 00:09:05 +08:00
Chun-wei Fan
088b08bdfc Refine Visual Studio Projects
-Reinstate build/win32/vs10/glib.sln with the correct EOL (DOS/Windows) so
 that the file can be correctly recognized by Windows, rather than having
 the "Unrecognized Visual Studio Version".

-Update the main GLib projects to output the DLL/LIB file into <Release or
 Debug>\<Win32 or x64>\bin for all configurations.

-Update/simplify the property sheets to copy all DLL and LIB files from
 <Release or Debug>\<Win32 or x64>\bin for all configurations.

-Update the VS 2008 property sheet to seperate the intermediate directories
 for all projects as well to avoid errors/warnings of being unable to
 write/access the PDB files as they are in use.
2011-06-24 11:22:47 +08:00
Chun-wei Fan
c68683f780 Visual C++ 2010 project files update
Consolidate my previous commit into property file... should have realized
this sooner...
2011-06-20 11:50:57 +08:00
Chun-wei Fan
801e52f809 Update Visual C++ 2010 Projects
-Seperate intermediate directories for each project to avoid intermittent
 MSBuild errors that a build log cannot be written while in use, and
 update the property sheet as necessary.
-Minor cleanups of uneeded tags in the projects/properties
2011-06-20 11:34:15 +08:00
Chun-wei Fan
c08fc65edf Update GLib VS9/10 projects
There is no longer need to distinguish between gatomic.c and gatomic-gcc.c.
This will avoid gatomic.c from being included in the projects twice.
2011-06-07 00:37:38 +08:00
Chun-wei Fan
cd23ae7134 Visual C++ 2010 Project Files
These are the actual GLib VS2010 project files (*.vcxproj,
*.vcxproj.filters) and property sheet file (*.props) that are used
to compile the GLib, GModule, GObject, GThread, GIO DLLs, along with
the gspawn-win32-helper* programs, glib-genmarshal utility and
testglib test program.  A readme.txt file is also enclosed for
references for building GLib under VS2010.

Note that the project files for GLib, GIO and GObject are templates
that makes use of the autotools items of my last commit so that maintenance
of those files are simplified as new source files are added to these rather
frequently.

Suggestions are welcome for these-please let me know via BugZilla.

Thank you!
2011-02-22 20:08:36 +08:00