mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #1584: Provide options to override default search paths for Tcl and Tk
when building _tkinter. configure has two new options; if used, both must be specified: ./configure \ --with-tcltk-includes="-I/opt/local/include" \ --with-tcltk-libs="-L/opt/local/lib -ltcl8.5 -ltk8.5" In addition, the options can be overridden with make: make \ TCLTK_INCLUDES="-I/opt/local/include" \ TCLTK_LIBS="-L/opt/local/lib -ltcl8.6 -ltk8.6"
This commit is contained in:
parent
7d6392c517
commit
65657c27fa
5 changed files with 126 additions and 1 deletions
43
setup.py
43
setup.py
|
@ -1538,6 +1538,41 @@ class PyBuildExt(build_ext):
|
|||
|
||||
return missing
|
||||
|
||||
def detect_tkinter_explicitly(self):
|
||||
# Build _tkinter using explicit locations for Tcl/Tk.
|
||||
#
|
||||
# This is enabled when both arguments are given to ./configure:
|
||||
#
|
||||
# --with-tcltk-includes="-I/path/to/tclincludes \
|
||||
# -I/path/to/tkincludes"
|
||||
# --with-tcltk-libs="-L/path/to/tcllibs -ltclm.n \
|
||||
# -L/path/to/tklibs -ltkm.n"
|
||||
#
|
||||
# These values can also be specified or overriden via make:
|
||||
# make TCLTK_INCLUDES="..." TCLTK_LIBS="..."
|
||||
#
|
||||
# This can be useful for building and testing tkinter with multiple
|
||||
# versions of Tcl/Tk. Note that a build of Tk depends on a particular
|
||||
# build of Tcl so you need to specify both arguments and use care when
|
||||
# overriding.
|
||||
|
||||
# The _TCLTK variables are created in the Makefile sharedmods target.
|
||||
tcltk_includes = os.environ.get('_TCLTK_INCLUDES')
|
||||
tcltk_libs = os.environ.get('_TCLTK_LIBS')
|
||||
if not (tcltk_includes and tcltk_libs):
|
||||
# Resume default configuration search.
|
||||
return 0
|
||||
|
||||
extra_compile_args = tcltk_includes.split()
|
||||
extra_link_args = tcltk_libs.split()
|
||||
ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
|
||||
define_macros=[('WITH_APPINIT', 1)],
|
||||
extra_compile_args = extra_compile_args,
|
||||
extra_link_args = extra_link_args,
|
||||
)
|
||||
self.extensions.append(ext)
|
||||
return 1
|
||||
|
||||
def detect_tkinter_darwin(self, inc_dirs, lib_dirs):
|
||||
# The _tkinter module, using frameworks. Since frameworks are quite
|
||||
# different the UNIX search logic is not sharable.
|
||||
|
@ -1627,10 +1662,16 @@ class PyBuildExt(build_ext):
|
|||
self.extensions.append(ext)
|
||||
return 1
|
||||
|
||||
|
||||
def detect_tkinter(self, inc_dirs, lib_dirs):
|
||||
# The _tkinter module.
|
||||
|
||||
# Check whether --with-tcltk-includes and --with-tcltk-libs were
|
||||
# configured or passed into the make target. If so, use these values
|
||||
# to build tkinter and bypass the searches for Tcl and TK in standard
|
||||
# locations.
|
||||
if self.detect_tkinter_explicitly():
|
||||
return
|
||||
|
||||
# Rather than complicate the code below, detecting and building
|
||||
# AquaTk is a separate method. Only one Tkinter will be built on
|
||||
# Darwin - either AquaTk, if it is found, or X11 based Tk.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue