Chromium Code Reviews| Index: pylib/gyp/generator/ninja.py |
| =================================================================== |
| --- pylib/gyp/generator/ninja.py (revision 1202) |
| +++ pylib/gyp/generator/ninja.py (working copy) |
| @@ -77,7 +77,7 @@ |
| # Only need to handle relative paths into subdirectories for now. |
| assert '..' not in path, path |
| depth = len(path.split(os.path.sep)) |
| - return '/'.join(['..'] * depth) |
| + return os.path.sep.join(['..'] * depth) |
| class Target: |
| @@ -201,6 +201,7 @@ |
| path = path.replace(PRODUCT_DIR, product_dir) |
| else: |
| path = path.replace(PRODUCT_DIR + '/', '') |
| + path = path.replace(PRODUCT_DIR + '\\', '') |
| path = path.replace(PRODUCT_DIR, '.') |
| INTERMEDIATE_DIR = '$!INTERMEDIATE_DIR' |
| @@ -911,7 +912,7 @@ |
| elif type == 'shared_library': |
| libdir = 'lib' |
| if self.toolset != 'target': |
| - libdir = 'lib/%s' % self.toolset |
| + libdir = os.path.join('lib', '%s' % self.toolset) |
| return os.path.join(libdir, filename) |
| else: |
| return self.GypPathToUniqueOutput(filename, qualified=False) |
| @@ -940,10 +941,19 @@ |
| # gyp dictates that commands are run from the base directory. |
| # cd into the directory before running, and adjust paths in |
| # the arguments to point to the proper locations. |
| - cd = 'cd %s; ' % self.build_to_base |
| + if self.flavor == 'win': |
| + cd = 'cmd /s /c "cd %s && ' % self.build_to_base |
| + else: |
| + cd = 'cd %s; ' % self.build_to_base |
| args = [self.ExpandSpecial(arg, self.base_to_build) for arg in args] |
| env = self.ComputeExportEnvString(env) |
| - command = gyp.common.EncodePOSIXShellList(args) |
| + if self.flavor == 'win': |
| + # TODO(scottmg): Really don't want encourage cygwin, but I'm not sure |
| + # how much sh is depended upon. For now, double quote args to make most |
| + # things work. |
|
Evan Martin
2012/02/16 16:10:33
I think there's a gyp attribute related to whether
|
| + command = args[0] + ' "' + '" "'.join(args[1:]) + '""' |
| + else: |
| + command = gyp.common.EncodePOSIXShellList(args) |
| if env: |
| # If an environment is passed in, variables in the command should be |
| # read from it, instead of from ninja's internal variables. |
| @@ -995,7 +1005,8 @@ |
| operating_system = 'linux' # Keep this legacy behavior for now. |
| default_variables.setdefault('OS', operating_system) |
| default_variables.setdefault('SHARED_LIB_SUFFIX', '.so') |
| - default_variables.setdefault('SHARED_LIB_DIR', '$!PRODUCT_DIR/lib') |
| + default_variables.setdefault('SHARED_LIB_DIR', |
| + os.path.join('$!PRODUCT_DIR', 'lib')) |
| default_variables.setdefault('LIB_DIR', '') |
| @@ -1110,7 +1121,7 @@ |
| master_ninja.rule( |
| 'alink', |
| description='AR $out', |
| - command='lib /nologo /OUT:$out.lib $in') |
| + command='lib /nologo /OUT:$out $in') |
| master_ninja.rule( |
| 'solink', |
| description='SOLINK $out', |