Bug 1275297 - Create Visual Studio project files by default on Windows; r=glandium
authorGregory Szorc <gps@mozilla.com>
Tue, 24 May 2016 08:47:24 -0700
changeset 337861 3b9f92c4aeeefba589dc360368bc3350f729a991
parent 337860 4472f0c5c39204141ae4264ed67afbe7a56f326d
child 337862 0ab9f64ac47cd6ce83e645fe5720db97b491c5fc
push id6249
push userjlund@mozilla.com
push dateMon, 01 Aug 2016 13:59:36 +0000
treeherdermozilla-beta@bad9d4f5bf7e [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersglandium
bugs1275297
milestone49.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1275297 - Create Visual Studio project files by default on Windows; r=glandium Now that the VisualStudio backend will no-op if nothing has changed, it should be safe to always run this backend. On first run, backend generation takes ~3.5s on my machine. On subsequent run, it takes ~1.5s. Wall time for a no-op config.status is now ~15.7s. We could like make the Visual Studio backend faster by not writing so many project files. But this would require consolidating libraries in moz.build files. And that's out of scope for this change. We drop the check for MSVS_VERSION because it won't always be defined on MinGW/GCC builds. We simply default to "2015" if it isn't set. MozReview-Commit-ID: 5W38HMGmcuV
moz.configure
python/mozbuild/mozbuild/backend/visualstudio.py
--- a/moz.configure
+++ b/moz.configure
@@ -104,22 +104,25 @@ include(memory_include)
 @imports(_from='mozbuild.backend', _import='backends')
 def build_backends_choices(help):
     return tuple(backends)
 
 
 option('--enable-build-backend', nargs='+', choices=build_backends_choices,
        help='Enable additional build backends')
 
-@depends('--enable-build-backend', '--enable-artifact-builds')
-def build_backend(backends, artifact_builds):
+@depends('--enable-build-backend', '--enable-artifact-builds', target,
+         compile_environment)
+def build_backend(backends, artifact_builds, target, compile_environment):
     if artifact_builds:
         all_backends = ['FasterMake+RecursiveMake']
     else:
         all_backends = ['RecursiveMake', 'FasterMake']
+    if target.os == 'WINNT' and compile_environment:
+        all_backends.append('VisualStudio')
     all_backends.extend(backends)
     return unique_list(all_backends)
 
 set_config('BUILD_BACKENDS', build_backend)
 
 
 # Awk detection
 # ==============================================================
--- a/python/mozbuild/mozbuild/backend/visualstudio.py
+++ b/python/mozbuild/mozbuild/backend/visualstudio.py
@@ -65,19 +65,17 @@ class VisualStudioBackend(CommonBackend)
 
     def _init(self):
         CommonBackend._init(self)
 
         # These should eventually evolve into parameters.
         self._out_dir = os.path.join(self.environment.topobjdir, 'msvc')
         self._projsubdir = 'projects'
 
-        self._version = self.environment.substs.get('MSVS_VERSION', None)
-        if not self._version:
-            raise Exception('MSVS_VERSION not defined; this should never happen')
+        self._version = self.environment.substs.get('MSVS_VERSION', '2015')
 
         self._paths_to_sources = {}
         self._paths_to_includes = {}
         self._paths_to_defines = {}
         self._paths_to_configs = {}
         self._libs_to_paths = {}
         self._progs_to_paths = {}