summaryrefslogtreecommitdiff
path: root/PCbuild
diff options
context:
space:
mode:
Diffstat (limited to 'PCbuild')
-rw-r--r--PCbuild/_freeze_module.vcxproj157
-rw-r--r--PCbuild/pcbuild.proj19
-rw-r--r--PCbuild/pcbuild.sln49
3 files changed, 175 insertions, 50 deletions
diff --git a/PCbuild/_freeze_module.vcxproj b/PCbuild/_freeze_module.vcxproj
index a0bedf49e6..a87dca75c3 100644
--- a/PCbuild/_freeze_module.vcxproj
+++ b/PCbuild/_freeze_module.vcxproj
@@ -88,24 +88,145 @@
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup>
<ClCompile>
- <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <PreprocessorDefinitions>Py_NO_ENABLE_SHARED;Py_BUILD_CORE;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
+ <AdditionalDependencies>version.lib;shlwapi.lib;ws2_32.lib;pathcch.lib;bcrypt.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\Programs\_freeze_module.c" />
+ <ClCompile Include="..\PC\config_minimal.c" />
</ItemGroup>
<ItemGroup>
- <ProjectReference Include="pythoncore.vcxproj">
- <Project>{cf7ac3d1-e2df-41d2-bea6-1e2556cdea26}</Project>
- <Private>true</Private>
- <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
- <CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
- <LinkLibraryDependencies>true</LinkLibraryDependencies>
- <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>
- </ProjectReference>
+ <ClCompile Include="..\Modules\atexitmodule.c" />
+ <ClCompile Include="..\Modules\faulthandler.c" />
+ <ClCompile Include="..\Modules\gcmodule.c" />
+ <ClCompile Include="..\Modules\getbuildinfo.c" />
+ <ClCompile Include="..\Modules\posixmodule.c" />
+ <ClCompile Include="..\Modules\signalmodule.c" />
+ <ClCompile Include="..\Modules\_tracemalloc.c" />
+ <ClCompile Include="..\Modules\_io\_iomodule.c" />
+ <ClCompile Include="..\Modules\_io\bufferedio.c" />
+ <ClCompile Include="..\Modules\_io\bytesio.c" />
+ <ClCompile Include="..\Modules\_io\fileio.c" />
+ <ClCompile Include="..\Modules\_io\iobase.c" />
+ <ClCompile Include="..\Modules\_io\stringio.c" />
+ <ClCompile Include="..\Modules\_io\textio.c" />
+ <ClCompile Include="..\Modules\_io\winconsoleio.c" />
+ <ClCompile Include="..\Objects\abstract.c" />
+ <ClCompile Include="..\Objects\accu.c" />
+ <ClCompile Include="..\Objects\boolobject.c" />
+ <ClCompile Include="..\Objects\bytearrayobject.c" />
+ <ClCompile Include="..\Objects\bytes_methods.c" />
+ <ClCompile Include="..\Objects\bytesobject.c" />
+ <ClCompile Include="..\Objects\call.c" />
+ <ClCompile Include="..\Objects\capsule.c" />
+ <ClCompile Include="..\Objects\cellobject.c" />
+ <ClCompile Include="..\Objects\classobject.c" />
+ <ClCompile Include="..\Objects\codeobject.c" />
+ <ClCompile Include="..\Objects\complexobject.c" />
+ <ClCompile Include="..\Objects\descrobject.c" />
+ <ClCompile Include="..\Objects\dictobject.c" />
+ <ClCompile Include="..\Objects\enumobject.c" />
+ <ClCompile Include="..\Objects\exceptions.c" />
+ <ClCompile Include="..\Objects\fileobject.c" />
+ <ClCompile Include="..\Objects\floatobject.c" />
+ <ClCompile Include="..\Objects\frameobject.c" />
+ <ClCompile Include="..\Objects\funcobject.c" />
+ <ClCompile Include="..\Objects\genericaliasobject.c" />
+ <ClCompile Include="..\Objects\genobject.c" />
+ <ClCompile Include="..\Objects\interpreteridobject.c" />
+ <ClCompile Include="..\Objects\iterobject.c" />
+ <ClCompile Include="..\Objects\listobject.c" />
+ <ClCompile Include="..\Objects\longobject.c" />
+ <ClCompile Include="..\Objects\memoryobject.c" />
+ <ClCompile Include="..\Objects\methodobject.c" />
+ <ClCompile Include="..\Objects\moduleobject.c" />
+ <ClCompile Include="..\Objects\namespaceobject.c" />
+ <ClCompile Include="..\Objects\object.c" />
+ <ClCompile Include="..\Objects\obmalloc.c" />
+ <ClCompile Include="..\Objects\odictobject.c" />
+ <ClCompile Include="..\Objects\picklebufobject.c" />
+ <ClCompile Include="..\Objects\rangeobject.c" />
+ <ClCompile Include="..\Objects\setobject.c" />
+ <ClCompile Include="..\Objects\sliceobject.c" />
+ <ClCompile Include="..\Objects\structseq.c" />
+ <ClCompile Include="..\Objects\tupleobject.c" />
+ <ClCompile Include="..\Objects\typeobject.c" />
+ <ClCompile Include="..\Objects\unicodectype.c" />
+ <ClCompile Include="..\Objects\unicodeobject.c" />
+ <ClCompile Include="..\Objects\unionobject.c" />
+ <ClCompile Include="..\Objects\weakrefobject.c" />
+ <ClCompile Include="..\Parser\myreadline.c" />
+ <ClCompile Include="..\Parser\parser.c" />
+ <ClCompile Include="..\Parser\peg_api.c" />
+ <ClCompile Include="..\Parser\pegen.c" />
+ <ClCompile Include="..\Parser\string_parser.c" />
+ <ClCompile Include="..\Parser\token.c" />
+ <ClCompile Include="..\Parser\tokenizer.c" />
+ <ClCompile Include="..\PC\getpathp.c" />
+ <ClCompile Include="..\PC\invalid_parameter_handler.c" />
+ <ClCompile Include="..\PC\msvcrtmodule.c" />
+ <ClCompile Include="..\PC\winreg.c" />
+ <ClCompile Include="..\Python\_warnings.c" />
+ <ClCompile Include="..\Python\asdl.c" />
+ <ClCompile Include="..\Python\ast.c" />
+ <ClCompile Include="..\Python\ast_opt.c" />
+ <ClCompile Include="..\Python\ast_unparse.c" />
+ <ClCompile Include="..\Python\bltinmodule.c" />
+ <ClCompile Include="..\Python\bootstrap_hash.c" />
+ <ClCompile Include="..\Python\ceval.c" />
+ <ClCompile Include="..\Python\codecs.c" />
+ <ClCompile Include="..\Python\compile.c" />
+ <ClCompile Include="..\Python\context.c" />
+ <ClCompile Include="..\Python\dtoa.c" />
+ <ClCompile Include="..\Python\dynamic_annotations.c" />
+ <ClCompile Include="..\Python\dynload_win.c" />
+ <ClCompile Include="..\Python\errors.c" />
+ <ClCompile Include="..\Python\fileutils.c" />
+ <ClCompile Include="..\Python\formatter_unicode.c" />
+ <ClCompile Include="..\Python\frame.c" />
+ <ClCompile Include="..\Python\future.c" />
+ <ClCompile Include="..\Python\getargs.c" />
+ <ClCompile Include="..\Python\getcompiler.c" />
+ <ClCompile Include="..\Python\getcopyright.c" />
+ <ClCompile Include="..\Python\getopt.c" />
+ <ClCompile Include="..\Python\getplatform.c" />
+ <ClCompile Include="..\Python\getversion.c" />
+ <ClCompile Include="..\Python\hamt.c" />
+ <ClCompile Include="..\Python\hashtable.c" />
+ <ClCompile Include="..\Python\import.c" />
+ <ClCompile Include="..\Python\importdl.c" />
+ <ClCompile Include="..\Python\initconfig.c" />
+ <ClCompile Include="..\Python\marshal.c" />
+ <ClCompile Include="..\Python\modsupport.c" />
+ <ClCompile Include="..\Python\mysnprintf.c" />
+ <ClCompile Include="..\Python\mystrtoul.c" />
+ <ClCompile Include="..\Python\pathconfig.c" />
+ <ClCompile Include="..\Python\preconfig.c" />
+ <ClCompile Include="..\Python\pyarena.c" />
+ <ClCompile Include="..\Python\pyctype.c" />
+ <ClCompile Include="..\Python\pyfpe.c" />
+ <ClCompile Include="..\Python\pyhash.c" />
+ <ClCompile Include="..\Python\pylifecycle.c" />
+ <ClCompile Include="..\Python\pymath.c" />
+ <ClCompile Include="..\Python\pystate.c" />
+ <ClCompile Include="..\Python\pystrcmp.c" />
+ <ClCompile Include="..\Python\pystrhex.c" />
+ <ClCompile Include="..\Python\pystrtod.c" />
+ <ClCompile Include="..\Python\Python-ast.c" />
+ <ClCompile Include="..\Python\pythonrun.c" />
+ <ClCompile Include="..\Python\Python-tokenize.c" />
+ <ClCompile Include="..\Python\pytime.c" />
+ <ClCompile Include="..\Python\specialize.c" />
+ <ClCompile Include="..\Python\structmember.c" />
+ <ClCompile Include="..\Python\suggestions.c" />
+ <ClCompile Include="..\Python\symtable.c" />
+ <ClCompile Include="..\Python\sysmodule.c" />
+ <ClCompile Include="..\Python\thread.c" />
+ <ClCompile Include="..\Python\traceback.c" />
</ItemGroup>
<ItemGroup>
<!-- BEGIN frozen modules -->
@@ -126,7 +247,7 @@
</None>
<None Include="..\Tools\freeze\flag.py">
<ModName>hello</ModName>
- <IntFile>$(IntDir)ello.g.h</IntFile>
+ <IntFile>$(IntDir)hello.g.h</IntFile>
<OutFile>$(PySourcePath)Python\frozen_modules\hello.h</OutFile>
</None>
<!-- END frozen modules -->
@@ -134,9 +255,9 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
- <Target Name="_RebuildFrozen">
+ <Target Name="_RebuildFrozen" AfterTargets="AfterBuild" Condition="$(Configuration) != 'PGUpdate'">
<Exec Command='"$(TargetPath)" "%(None.ModName)" "%(None.FullPath)" "%(None.IntFile)"' />
-
+
<Copy SourceFiles="%(None.IntFile)"
DestinationFiles="%(None.OutFile)"
Condition="!Exists(%(None.OutFile)) or (Exists(%(None.IntFile)) and '$([System.IO.File]::ReadAllText(%(None.OutFile)).Replace(`&#x0D;&#x0A;`, `&#x0A;`))' != '$([System.IO.File]::ReadAllText(%(None.IntFile)).Replace(`&#x0D;&#x0A;`, `&#x0A;`))')">
@@ -145,18 +266,8 @@
<Message Text="Updated files: @(_Updated->'%(Filename)%(Extension)',', ')"
Condition="'@(_Updated)' != ''" Importance="high" />
- <Warning Text="Frozen modules (e.g. importlib) were updated. Please rebuild to pick up the changes.%0D%0A%0D%0AIf you are not developing on Windows but you see this error on a continuous integration build, please run 'make regen-all' and commit anything that changes."
- Condition="'@(_Updated)' != '' and $(Configuration) == 'Debug'" />
- <Error Text="Frozen (e.g. importlib) files were updated. Please rebuild to pick up the changes.%0D%0A%0D%0AIf you are not developing on Windows but you see this error on a continuous integration build, please run 'make regen-all' and commit anything that changes."
- Condition="'@(_Updated)' != '' and $(Configuration) == 'Release'" />
- </Target>
- <Target Name="RebuildFrozen" AfterTargets="AfterBuild" Condition="$(Configuration) == 'Debug' or $(Configuration) == 'Release'"
- DependsOnTargets="_RebuildFrozen">
- </Target>
- <Target Name="RebuildImportLib" AfterTargets="AfterBuild" Condition="$(Configuration) == 'Debug' or $(Configuration) == 'Release'"
- DependsOnTargets="_RebuildFrozen">
</Target>
- <Target Name="_CleanFrozen" BeforeTargets="CoreClean">
+ <Target Name="_CleanFrozen" BeforeTargets="CoreClean" Condition="$(Configuration) != 'PGUpdate'">
<ItemGroup>
<Clean Include="%(None.IntFile)" />
</ItemGroup>
diff --git a/PCbuild/pcbuild.proj b/PCbuild/pcbuild.proj
index f464ad3b18..b3cbd471c6 100644
--- a/PCbuild/pcbuild.proj
+++ b/PCbuild/pcbuild.proj
@@ -14,6 +14,18 @@
</PropertyGroup>
<ItemDefinitionGroup>
+ <FreezeProjects>
+ <Platform>$(Platform)</Platform>
+ <Platform Condition="$(Platform) == 'ARM'">Win32</Platform>
+ <Platform Condition="$(Platform) == 'ARM64'">x64</Platform>
+ <Configuration>$(Configuration)</Configuration>
+ <Configuration Condition="$(Configuration) == 'PGInstrument'">Release</Configuration>
+ <Properties></Properties>
+ <BuildTarget>Build</BuildTarget>
+ <CleanTarget>Clean</CleanTarget>
+ <CleanAllTarget>CleanAll</CleanAllTarget>
+ <BuildInParallel>false</BuildInParallel>
+ </FreezeProjects>
<Projects>
<Platform>$(Platform)</Platform>
<Configuration>$(Configuration)</Configuration>
@@ -73,7 +85,7 @@
</Projects>
<!-- _freeze_module -->
- <Projects2 Condition="$(Platform) != 'ARM' and $(Platform) != 'ARM64'" Include="_freeze_module.vcxproj" />
+ <FreezeProjects Include="_freeze_module.vcxproj" />
<!-- python[w].exe -->
<Projects2 Include="python.vcxproj;pythonw.vcxproj" />
<Projects2 Include="python_uwp.vcxproj;pythonw_uwp.vcxproj" Condition="$(IncludeUwp)" />
@@ -82,6 +94,11 @@
</ItemGroup>
<Target Name="Build">
+ <MSBuild Projects="@(FreezeProjects)"
+ Properties="Configuration=%(Configuration);Platform=%(Platform);%(Properties)"
+ BuildInParallel="%(BuildInParallel)"
+ StopOnFirstFailure="true"
+ Targets="%(BuildTarget)" />
<MSBuild Projects="@(Projects)"
Properties="Configuration=%(Configuration);Platform=%(Platform);%(Properties)"
BuildInParallel="%(BuildInParallel)"
diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln
index c774e04971..3629a8508a 100644
--- a/PCbuild/pcbuild.sln
+++ b/PCbuild/pcbuild.sln
@@ -14,6 +14,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcxproj",
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcxproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}"
+ ProjectSection(ProjectDependencies) = postProject
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC} = {19C0C13F-47CA-4432-AFF3-799A296A4DDC}
+ EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcxproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}"
EndProject
@@ -793,22 +796,6 @@ Global
{D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.Build.0 = Release|Win32
{D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.ActiveCfg = Release|x64
{D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.Build.0 = Release|x64
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|ARM.ActiveCfg = Debug|ARM
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|ARM64.ActiveCfg = Debug|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.ActiveCfg = Debug|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|x64.ActiveCfg = Release|x64
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|ARM.ActiveCfg = PGInstrument|ARM
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|ARM64.ActiveCfg = PGInstrument|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|Win32.ActiveCfg = Release|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|x64.ActiveCfg = Release|x64
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|ARM.ActiveCfg = PGUpdate|ARM
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|ARM64.ActiveCfg = PGUpdate|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|Win32.ActiveCfg = Release|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|x64.ActiveCfg = Release|x64
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|ARM.ActiveCfg = Release|ARM
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|ARM64.ActiveCfg = Release|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32
- {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|x64
{447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|ARM.ActiveCfg = Debug|ARM
{447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|ARM.Build.0 = Debug|ARM
{447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|ARM64.ActiveCfg = Debug|ARM64
@@ -1059,20 +1046,30 @@ Global
{1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.Build.0 = Release|Win32
{1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.ActiveCfg = Release|x64
{1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.Build.0 = Release|x64
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM.ActiveCfg = Debug|ARM
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM.ActiveCfg = Debug|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM.Build.0 = Debug|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM64.ActiveCfg = Debug|x64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|ARM64.Build.0 = Debug|x64
{19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|Win32.ActiveCfg = Debug|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|Win32.Build.0 = Debug|Win32
{19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|x64.ActiveCfg = Debug|x64
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|ARM.ActiveCfg = PGInstrument|ARM
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|ARM64.ActiveCfg = PGInstrument|ARM64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|x64.Build.0 = Debug|x64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|ARM.ActiveCfg = Release|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|ARM.Build.0 = Release|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|ARM64.ActiveCfg = Release|x64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|ARM64.Build.0 = Release|x64
{19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|Win32.ActiveCfg = Release|Win32
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|x64.ActiveCfg = Release|Win32
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|ARM.ActiveCfg = PGUpdate|ARM
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|ARM64.ActiveCfg = PGUpdate|ARM64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|Win32.Build.0 = Release|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|x64.ActiveCfg = Release|x64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|x64.Build.0 = Release|x64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|ARM.ActiveCfg = Release|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|ARM64.ActiveCfg = Release|x64
{19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|Win32.ActiveCfg = Release|Win32
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|x64.ActiveCfg = Release|Win32
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|ARM.ActiveCfg = Release|ARM
- {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|ARM64.ActiveCfg = Release|ARM64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|x64.ActiveCfg = Release|x64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|ARM.ActiveCfg = Release|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|ARM.Build.0 = Release|Win32
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|ARM64.ActiveCfg = Release|x64
+ {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|ARM64.Build.0 = Release|x64
{19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.ActiveCfg = Release|Win32
{19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.Build.0 = Release|Win32
{19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|x64.ActiveCfg = Release|x64