diff options
| -rw-r--r-- | Lib/distutils/sysconfig.py | 23 | ||||
| -rw-r--r-- | Lib/distutils/tests/test_sysconfig.py | 9 | 
2 files changed, 32 insertions, 0 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 0fbd5412bc..48f3fe4d59 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -300,6 +300,12 @@ def parse_makefile(fn, g=None):                  else:                      done[n] = v +    # Variables with a 'PY_' prefix in the makefile. These need to +    # be made available without that prefix through sysconfig. +    # Special care is needed to ensure that variable expansion works, even +    # if the expansion uses the name without a prefix. +    renamed_variables = ('CFLAGS', 'LDFLAGS', 'CPPFLAGS') +      # do variable interpolation here      while notdone:          for name in list(notdone): @@ -316,6 +322,16 @@ def parse_makefile(fn, g=None):                  elif n in os.environ:                      # do it like make: fall back to environment                      item = os.environ[n] + +                elif n in renamed_variables: +                    if name.startswith('PY_') and name[3:] in renamed_variables: +                        item = "" + +                    elif 'PY_' + n in notdone: +                        found = False + +                    else: +                        item = str(done['PY_' + n])                  else:                      done[n] = item = ""                  if found: @@ -330,6 +346,13 @@ def parse_makefile(fn, g=None):                          else:                              done[name] = value                          del notdone[name] + +                        if name.startswith('PY_') \ +                            and name[3:] in renamed_variables: + +                            name = name[3:] +                            if name not in done: +                                done[name] = value              else:                  # bogus variable reference; just drop it since we can't deal                  del notdone[name] diff --git a/Lib/distutils/tests/test_sysconfig.py b/Lib/distutils/tests/test_sysconfig.py index edc755ed15..0167e0f1a3 100644 --- a/Lib/distutils/tests/test_sysconfig.py +++ b/Lib/distutils/tests/test_sysconfig.py @@ -93,6 +93,15 @@ class SysconfigTestCase(support.EnvironGuard,                                'OTHER': 'foo'}) +    def test_sysconfig_module(self): +        import sysconfig as global_sysconfig +        self.assertEquals(global_sysconfig.get_config_var('CFLAGS'), sysconfig.get_config_var('CFLAGS')) +        self.assertEquals(global_sysconfig.get_config_var('LDFLAGS'), sysconfig.get_config_var('LDFLAGS')) +        self.assertEquals(global_sysconfig.get_config_var('LDSHARED'),sysconfig.get_config_var('LDSHARED')) +        self.assertEquals(global_sysconfig.get_config_var('CC'), sysconfig.get_config_var('CC')) + + +  def test_suite():      suite = unittest.TestSuite()      suite.addTest(unittest.makeSuite(SysconfigTestCase))  | 
