Browse Source
Issue #15968: Incorporated Tcl, Tk, and Tix builds into the Windows build
Issue #15968: Incorporated Tcl, Tk, and Tix builds into the Windows build
solution. Currently, Tix is not built in Debug configuration. This change also: - simplifies some Tcl/Tk-related msbuild properties for _tkinter - copies the Tcl and Tk DLLs into the build output directory, meaning they will always be available after a build without having to copy them manually or change PATH - removes PCbuild/build_tkinter.py: the solution does the build without needing to invoke Python (so Tcl/Tk/Tix can be built in parallel with the rest of the build using the `/m` msbuild command line switch) - removes an outdated README concerning building Tcl/Tk on AMD64pull/9921/head
18 changed files with 680 additions and 206 deletions
-
6Misc/NEWS
-
32PCbuild/_tkinter.vcxproj
-
78PCbuild/build_tkinter.py
-
4PCbuild/debug.props
-
52PCbuild/pcbuild.sln
-
32PCbuild/pyproject.props
-
38PCbuild/readme.txt
-
4PCbuild/release.props
-
4PCbuild/rt.bat
-
175PCbuild/tcl.vcxproj
-
30PCbuild/tcltk.props
-
171PCbuild/tix.vcxproj
-
178PCbuild/tk.vcxproj
-
8PCbuild/x64.props
-
36Tools/buildbot/README.tcltk-AMD64
-
15Tools/buildbot/external-amd64.bat
-
7Tools/buildbot/external-common.bat
-
16Tools/buildbot/external.bat
@ -1,78 +0,0 @@ |
|||
"""Script to compile the dependencies of _tkinter |
|||
|
|||
Copyright (c) 2007 by Christian Heimes <christian@cheimes.de> |
|||
|
|||
Licensed to PSF under a Contributor Agreement. |
|||
""" |
|||
|
|||
import os |
|||
import sys |
|||
|
|||
here = os.path.abspath(os.path.dirname(__file__)) |
|||
par = os.path.pardir |
|||
|
|||
TCL = "tcl8.6.1" |
|||
TK = "tk8.6.1" |
|||
TIX = "tix-8.4.3.3" |
|||
|
|||
ROOT = os.path.abspath(os.path.join(here, par, par)) |
|||
NMAKE = ('nmake /nologo /f %s %s %s') |
|||
|
|||
def nmake(makefile, command="", **kw): |
|||
defines = ' '.join(k+'='+str(v) for k, v in kw.items()) |
|||
cmd = NMAKE % (makefile, defines, command) |
|||
print("\n\n"+cmd+"\n") |
|||
if os.system(cmd) != 0: |
|||
raise RuntimeError(cmd) |
|||
|
|||
def build(platform, clean): |
|||
if platform == "Win32": |
|||
dest = os.path.join(ROOT, "tcltk") |
|||
machine = "IX86" |
|||
elif platform == "AMD64": |
|||
dest = os.path.join(ROOT, "tcltk64") |
|||
machine = "AMD64" |
|||
else: |
|||
raise ValueError(platform) |
|||
|
|||
# TCL |
|||
tcldir = os.path.join(ROOT, TCL) |
|||
if 1: |
|||
os.chdir(os.path.join(tcldir, "win")) |
|||
if clean: |
|||
nmake("makefile.vc", "clean") |
|||
nmake("makefile.vc", MACHINE=machine) |
|||
nmake("makefile.vc", "install", INSTALLDIR=dest, MACHINE=machine) |
|||
|
|||
# TK |
|||
if 1: |
|||
os.chdir(os.path.join(ROOT, TK, "win")) |
|||
if clean: |
|||
nmake("makefile.vc", "clean", DEBUG=0, TCLDIR=tcldir) |
|||
nmake("makefile.vc", DEBUG=0, MACHINE=machine, TCLDIR=tcldir) |
|||
nmake("makefile.vc", "install", DEBUG=0, INSTALLDIR=dest, MACHINE=machine, TCLDIR=tcldir) |
|||
|
|||
# TIX |
|||
if 1: |
|||
# python9.mak is available at http://svn.python.org |
|||
os.chdir(os.path.join(ROOT, TIX, "win")) |
|||
if clean: |
|||
nmake("python.mak", "clean") |
|||
nmake("python.mak", MACHINE=machine, INSTALL_DIR=dest) |
|||
nmake("python.mak", "install", MACHINE=machine, INSTALL_DIR=dest) |
|||
|
|||
def main(): |
|||
if len(sys.argv) < 2 or sys.argv[1] not in ("Win32", "AMD64"): |
|||
print("%s Win32|AMD64" % sys.argv[0]) |
|||
sys.exit(1) |
|||
|
|||
if "-c" in sys.argv: |
|||
clean = True |
|||
else: |
|||
clean = False |
|||
|
|||
build(sys.argv[1], clean) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
main() |
|||
@ -0,0 +1,175 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup Label="ProjectConfigurations"> |
|||
<ProjectConfiguration Include="Debug|Win32"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Debug|x64"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGInstrument|Win32"> |
|||
<Configuration>PGInstrument</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGInstrument|x64"> |
|||
<Configuration>PGInstrument</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGUpdate|Win32"> |
|||
<Configuration>PGUpdate</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGUpdate|x64"> |
|||
<Configuration>PGUpdate</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|Win32"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|x64"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
</ItemGroup> |
|||
<PropertyGroup Label="Globals"> |
|||
<ProjectGuid>{B5FD6F1D-129E-4BFF-9340-03606FAC7283}</ProjectGuid> |
|||
<RootNamespace>tcl</RootNamespace> |
|||
<Keyword>MakeFileProj</Keyword> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
|||
<ImportGroup Label="ExtensionSettings"> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="pgupdate.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="pginstrument.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="release.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="debug.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="pgupdate.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="pginstrument.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="release.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="debug.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<PropertyGroup Label="UserMacros" /> |
|||
<PropertyGroup> |
|||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> |
|||
<NMakeBuildCommandLine> |
|||
IF EXIST $(tcltkDir)\include\tcl.h ( |
|||
IF EXIST $(tcltkDir)\bin\$(tclDLLName) ( |
|||
IF EXIST $(OutDir)$(tclDLLName) ( |
|||
echo Tcl is already built and available. |
|||
exit /b 0 |
|||
) ELSE ( |
|||
echo Copying tcl dll to $(OutDir) |
|||
xcopy $(tcltkDir)\bin\$(tclDLLName) $(OutDir) |
|||
exit /b 0 |
|||
) |
|||
) |
|||
) |
|||
|
|||
IF NOT EXIST $(tclDir) ( |
|||
echo error: $(tclDir) doesn't exist. |
|||
exit 1 |
|||
) |
|||
|
|||
IF "$(Platform)" EQU "Win32" set TclMachine=IX86 |
|||
IF "$(Platform)" EQU "x64" set TclMachine=AMD64 |
|||
|
|||
IF "$(Configuration)" EQU "Debug" ( |
|||
set TclOpts=symbols |
|||
) ELSE ( |
|||
set TclOpts= |
|||
) |
|||
|
|||
cd $(tclDir)\win |
|||
|
|||
nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% core shell dlls && nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% INSTALLDIR=$(SolutionDir)$(tcltkDir) install-binaries install-libraries && xcopy /y $(SolutionDir)$(tcltkDir)\bin\$(tclDLLName) $(OutDir) |
|||
</NMakeBuildCommandLine> |
|||
<NMakeCleanCommandLine>del $(OutDir)$(tclDLLName) |
|||
echo Tcl must be cleaned manually if you want to rebuild it.</NMakeCleanCommandLine> |
|||
</PropertyGroup> |
|||
<ItemDefinitionGroup> |
|||
</ItemDefinitionGroup> |
|||
<ItemGroup> |
|||
</ItemGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
|||
<ImportGroup Label="ExtensionTargets"> |
|||
</ImportGroup> |
|||
</Project> |
|||
@ -0,0 +1,30 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ImportGroup Label="PropertySheets" /> |
|||
<PropertyGroup Label="UserMacros"> |
|||
<MSDEVDIR>Dummy value to avoid patching Tcl/Tk's makefile.vc</MSDEVDIR> |
|||
<tclDLLName>tcl86t$(TclDebugExt).dll</tclDLLName> |
|||
<tkDLLName>tk86t$(TclDebugExt).dll</tkDLLName> |
|||
<tixDLLName>tix84$(TclDebugExt).dll</tixDLLName> |
|||
<tcltkLib>$(tcltkDir)\lib\tcl86t$(TclDebugExt).lib;$(tcltkDir)\lib\tk86t$(TclDebugExt).lib</tcltkLib> |
|||
</PropertyGroup> |
|||
<ItemDefinitionGroup /> |
|||
<ItemGroup> |
|||
<BuildMacro Include="MSDEVDIR"> |
|||
<Value>$(MSDEVDIR)</Value> |
|||
<EnvironmentVariable>true</EnvironmentVariable> |
|||
</BuildMacro> |
|||
<BuildMacro Include="tclDLLName"> |
|||
<Value>$(tclDLLName)</Value> |
|||
</BuildMacro> |
|||
<BuildMacro Include="tkDLLName"> |
|||
<Value>$(tkDLLName)</Value> |
|||
</BuildMacro> |
|||
<BuildMacro Include="tixDLLName"> |
|||
<Value>$(tixDLLName)</Value> |
|||
</BuildMacro> |
|||
<BuildMacro Include="tcltkLib"> |
|||
<Value>$(tcltkLib)</Value> |
|||
</BuildMacro> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,171 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup Label="ProjectConfigurations"> |
|||
<ProjectConfiguration Include="Debug|Win32"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Debug|x64"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGInstrument|Win32"> |
|||
<Configuration>PGInstrument</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGInstrument|x64"> |
|||
<Configuration>PGInstrument</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGUpdate|Win32"> |
|||
<Configuration>PGUpdate</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGUpdate|x64"> |
|||
<Configuration>PGUpdate</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|Win32"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|x64"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
</ItemGroup> |
|||
<PropertyGroup Label="Globals"> |
|||
<ProjectGuid>{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}</ProjectGuid> |
|||
<RootNamespace>tix</RootNamespace> |
|||
<Keyword>MakeFileProj</Keyword> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
|||
<ImportGroup Label="ExtensionSettings"> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="pgupdate.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="pginstrument.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="release.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="debug.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="pgupdate.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="pginstrument.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="release.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="debug.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<PropertyGroup Label="UserMacros" /> |
|||
<PropertyGroup> |
|||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> |
|||
<NMakeBuildCommandLine> |
|||
IF EXIST $(tcltkDir)\lib\tix8.4.3\$(tixDLLName) ( |
|||
echo Tix is already built and available. |
|||
exit /b 0 |
|||
) |
|||
|
|||
IF NOT EXIST $(tixDir) ( |
|||
echo error: $(tixDir) doesn't exist. |
|||
exit 1 |
|||
) |
|||
|
|||
IF "$(Platform)" EQU "Win32" set TclMachine=IX86 |
|||
IF "$(Platform)" EQU "x64" set TclMachine=AMD64 |
|||
|
|||
IF "$(Configuration)" EQU "Debug" ( |
|||
set TixDebug=1 |
|||
) ELSE ( |
|||
set TixDebug=0 |
|||
) |
|||
|
|||
cd $(tixDir)\win |
|||
nmake -f python.mak MACHINE=%TclMachine% DEBUG=%TixDebug% TCL_DIR=$(SolutionDir)$(tclDir) TK_DIR=$(SolutionDir)$(tkDir) all && nmake -f python.mak MACHINE=%TclMachine% DEBUG=%TixDebug% TCL_DIR=$(SolutionDir)$(tclDir) TK_DIR=$(SolutionDir)$(tkDir) INSTALL_DIR=$(SolutionDir)$(tcltkDir) install |
|||
</NMakeBuildCommandLine> |
|||
<NMakeCleanCommandLine>echo Tix must be cleaned manually if you want to rebuild it.</NMakeCleanCommandLine> |
|||
</PropertyGroup> |
|||
<ItemDefinitionGroup> |
|||
</ItemDefinitionGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="tcl.vcxproj"> |
|||
<Project>{b5fd6f1d-129e-4bff-9340-03606fac7283}</Project> |
|||
</ProjectReference> |
|||
<ProjectReference Include="tk.vcxproj"> |
|||
<Project>{7e85eccf-a72c-4da4-9e52-884508e80ba1}</Project> |
|||
</ProjectReference> |
|||
</ItemGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
|||
<ImportGroup Label="ExtensionTargets"> |
|||
</ImportGroup> |
|||
</Project> |
|||
@ -0,0 +1,178 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<ItemGroup Label="ProjectConfigurations"> |
|||
<ProjectConfiguration Include="Debug|Win32"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Debug|x64"> |
|||
<Configuration>Debug</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGInstrument|Win32"> |
|||
<Configuration>PGInstrument</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGInstrument|x64"> |
|||
<Configuration>PGInstrument</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGUpdate|Win32"> |
|||
<Configuration>PGUpdate</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="PGUpdate|x64"> |
|||
<Configuration>PGUpdate</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|Win32"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>Win32</Platform> |
|||
</ProjectConfiguration> |
|||
<ProjectConfiguration Include="Release|x64"> |
|||
<Configuration>Release</Configuration> |
|||
<Platform>x64</Platform> |
|||
</ProjectConfiguration> |
|||
</ItemGroup> |
|||
<PropertyGroup Label="Globals"> |
|||
<ProjectGuid>{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}</ProjectGuid> |
|||
<RootNamespace>tk</RootNamespace> |
|||
<Keyword>MakeFileProj</Keyword> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> |
|||
<ConfigurationType>Makefile</ConfigurationType> |
|||
<CharacterSet>NotSet</CharacterSet> |
|||
</PropertyGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> |
|||
<ImportGroup Label="ExtensionSettings"> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="pgupdate.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="pginstrument.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="release.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="debug.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGUpdate|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="pgupdate.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='PGInstrument|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="pginstrument.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="release.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> |
|||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> |
|||
<Import Project="pyproject.props" /> |
|||
<Import Project="x64.props" /> |
|||
<Import Project="debug.props" /> |
|||
<Import Project="tcltk.props" /> |
|||
</ImportGroup> |
|||
<PropertyGroup Label="UserMacros" /> |
|||
<PropertyGroup> |
|||
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion> |
|||
<NMakeBuildCommandLine> |
|||
IF EXIST $(tcltkDir)\include\tk.h ( |
|||
IF EXIST $(tcltkDir)\bin\$(tkDLLName) ( |
|||
IF EXIST $(OutDir)$(tkDLLName) ( |
|||
echo Tk is already built and available. |
|||
exit /b 0 |
|||
) ELSE ( |
|||
echo Copying tk dll to $(OutDir) |
|||
xcopy $(tcltkDir)\bin\$(tkDLLName) $(OutDir) |
|||
exit /b 0 |
|||
) |
|||
) |
|||
) |
|||
|
|||
IF NOT EXIST $(tkDir) ( |
|||
echo error: $(tkDir) doesn't exist. |
|||
exit 1 |
|||
) |
|||
|
|||
IF "$(Platform)" EQU "Win32" set TclMachine=IX86 |
|||
IF "$(Platform)" EQU "x64" set TclMachine=AMD64 |
|||
|
|||
IF "$(Configuration)" EQU "Debug" ( |
|||
set TclOpts=symbols,noxp |
|||
) ELSE ( |
|||
set TclOpts=noxp |
|||
) |
|||
|
|||
cd $(tkDir)\win |
|||
|
|||
nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% TCLDIR=$(SolutionDir)$(tclDir) all && nmake -f makefile.vc MACHINE=%TclMachine% OPTS=%TclOpts% TCLDIR=$(SolutionDir)$(tclDir) INSTALLDIR=$(SolutionDir)$(tcltkDir) install-binaries install-libraries && xcopy /y $(SolutionDir)$(tcltkDir)\bin\$(tkDLLName) $(OutDir) |
|||
</NMakeBuildCommandLine> |
|||
<NMakeCleanCommandLine>del $(OutDir)$(tkDLLName) |
|||
echo Tk must be cleaned manually if you want to rebuild it.</NMakeCleanCommandLine> |
|||
</PropertyGroup> |
|||
<ItemDefinitionGroup> |
|||
</ItemDefinitionGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="tcl.vcxproj"> |
|||
<Project>{b5fd6f1d-129e-4bff-9340-03606fac7283}</Project> |
|||
</ProjectReference> |
|||
</ItemGroup> |
|||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> |
|||
<ImportGroup Label="ExtensionTargets"> |
|||
</ImportGroup> |
|||
</Project> |
|||
@ -1,36 +0,0 @@ |
|||
Comments on building tcl/tk for AMD64 with the MS SDK compiler |
|||
============================================================== |
|||
|
|||
I did have to build tcl/tk manually. |
|||
|
|||
First, I had to build the nmakehlp.exe helper utility manually by executing |
|||
cl nmakehlp.c /link bufferoverflowU.lib |
|||
in both the tcl8.4.12\win and tk8.4.12\win directories. |
|||
|
|||
Second, the AMD64 compiler refuses to compile the file |
|||
tcl8.4.12\generic\tclExecute.c because it insists on using intrinsics |
|||
for the 'ceil' and 'floor' functions: |
|||
|
|||
..\generic\tclExecute.c(394) : error C2099: initializer is not a constant |
|||
..\generic\tclExecute.c(398) : error C2099: initializer is not a constant |
|||
|
|||
I did comment out these lines; an alternative would have been to use |
|||
the /Oi- compiler flag to disable the intrinsic functions. |
|||
The commands then used were these: |
|||
|
|||
svn export http://svn.python.org/projects/external/tcl8.4.12 |
|||
cd tcl8.4.12\win |
|||
REM |
|||
echo patch the tcl8.4.12\generic\tclExecute.c file |
|||
pause |
|||
REM |
|||
cl nmakehlp.c /link bufferoverflowU.lib |
|||
nmake -f makefile.vc MACHINE=AMD64 |
|||
nmake -f makefile.vc INSTALLDIR=..\..\tcltk install |
|||
cd ..\.. |
|||
svn export http://svn.python.org/projects/external/tk8.4.12 |
|||
cd tk8.4.12\win |
|||
cl nmakehlp.c /link bufferoverflowU.lib |
|||
nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 MACHINE=AMD64 |
|||
nmake -f makefile.vc TCLDIR=..\..\tcl8.4.12 INSTALLDIR=..\..\tcltk install |
|||
cd ..\.. |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue