From 096b2ca2e049158126943fbd39eb969d2e040262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9?= Date: Thu, 17 Jun 2021 18:51:54 +0530 Subject: [PATCH 041/N] allow static tcltk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Алексей --- setup.py | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/setup.py b/setup.py index 497abbf..31b08de 100644 --- a/setup.py +++ b/setup.py @@ -786,7 +786,7 @@ class PyBuildExt(build_ext): if HOST_PLATFORM == 'hp-ux11': self.lib_dirs += ['/usr/lib/hpux64', '/usr/lib/hpux32'] - if MACOS: + if MACOS or MS_WINDOWS: # This should work on any unixy platform ;-) # If the user has bothered specifying additional -I and -L flags # in OPT and LDFLAGS we might as well use them here. @@ -796,6 +796,8 @@ class PyBuildExt(build_ext): # directories with whitespace in the name to store libraries. cflags, ldflags = sysconfig.get_config_vars( 'CFLAGS', 'LDFLAGS') + cflags = cflags + ' ' + ('',os.environ.get('CC'))[os.environ.get('CC') != None] + ldflags = ldflags + ' ' + ('',os.environ.get('LDSHARED'))[os.environ.get('LDSHARED') != None] for item in cflags.split(): if item.startswith('-I'): self.inc_dirs.append(item[2:]) @@ -2047,14 +2049,19 @@ class PyBuildExt(build_ext): # The versions with dots are used on Unix, and the versions without # dots on Windows, for detection by cygwin. tcllib = tklib = tcl_includes = tk_includes = None - for version in ['8.6', '86', '8.5', '85', '8.4', '84', '8.3', '83', - '8.2', '82', '8.1', '81', '8.0', '80']: - tklib = self.compiler.find_library_file(self.lib_dirs, - 'tk' + version) - tcllib = self.compiler.find_library_file(self.lib_dirs, - 'tcl' + version) - if tklib and tcllib: - # Exit the loop when we've found the Tcl/Tk libraries + tcltk_suffix = None + for suffix in ['', 's']: + for version in ['8.6', '86', '8.5', '85', '8.4', '84', '8.3', '83', + '8.2', '82', '8.1', '81', '8.0', '80', '']: + tklib = self.compiler.find_library_file(self.lib_dirs, + 'tk' + version + suffix) + tcllib = self.compiler.find_library_file(self.lib_dirs, + 'tcl' + version + suffix) + if tklib and tcllib: + # Exit the loop when we've found the Tcl/Tk libraries + tcltk_suffix = suffix + break + if tcltk_suffix != None: break # Now check for the header files @@ -2125,10 +2132,18 @@ class PyBuildExt(build_ext): # Add the Tcl/Tk libraries libs.append('tk'+ version) libs.append('tcl'+ version) + libs.append('tk'+ version + tcltk_suffix) + libs.append('tcl'+ version + tcltk_suffix) + if MS_WINDOWS: + for winlib in ['ws2_32','gdi32','comctl32','comdlg32','imm32','uuid','oleaut32','ole32']: + libs.append( winlib ) # Finally, link with the X11 libraries (not appropriate on cygwin) - if not CYGWIN: + # ...on those platforms, define STATIC_BUILD if linking to static tcl/tk. + if not CYGWIN and not MS_WINDOWS: libs.append('X11') + elif tcllib.endswith('s.a'): + defs.append( ('STATIC_BUILD',1) ) # XXX handle these, but how to detect? # *** Uncomment and edit for PIL (TkImaging) extension only: -- 2.33.0