2015-10-4 (Sun) 23:23:51 UTC+9 Bram Moolenaar:
> Masatoshi Sugiura wrote:
>
> > I tried to build vim on Windows,
> > but the build is failed with DYNAMIC_PYTHON=yes and DYNAMIC_PYTHON3=no.
> >
> > I tested like below (with Visual Studio 2010):
> >
> > > set BASEDIR=%CD%
> > > set VS2012_64_VCVARS="c:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat"
> > > call %VS2012_64_VCVARS% amd64
> > > cd %BASEDIR%\src
> > > nmake -f make_mvc.mak PYTHON="C:\Python27" PYTHON_VER=27 DYNAMIC_PYTHON=yes PYTHON3="C:\Python34" PYTHON3_VER=34 DYNAMIC_PYTHON3=no
> >
> > and it failes:
> >
> > > cl -c /W3 /nologo -I. -Iproto -DHAVE_PATHDEF -DWIN32 -DFEAT_CSCOPE -DWINVER=0x0400 -D_WIN32_WINNT=0x0400 /Fo.\ObjCYHAMD64/ /Ox /GL -DNDEBUG /Zl /MT -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT -DFEAT_PYTHON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DFEAT_PYTHON3 -DFEAT_BIG /Fd.\ObjCYHAMD64/ /Zi /I "C:\Python34\Include" /I "C:\Python34\PC" if_python3.c
> > > if_python3.c
> > > if_python3.c(835) : error C2065: 'hinstPy3' : undeclared identifier
> > > NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\BIN\amd64\cl.EXE"' : return code '0x2'
> > > Stop.
> >
> > As far as I found out, build is only failed with the pattern is
> > DYNAMIC_PYTHON=yes and DYNAMIC_PYTHON3=no and other pattern is OK.
> >
> > I think this problem fixed with the attached diff.
> > Could check that?
>
> This function is only called once from if_python.c, when both python and
> python3 are compiled in. And only for Unix. So the #if should use an
> AND between DYNAMIC_PYTHON and DYNAMIC_PYTHON3 and UNIX.
Not only Unix.
I think Masatoshi's patch is right.
And patch 7.4.890 is wrong.
Look for combination of DYNAMIC_PYTHON and DYNAMIC_PYTHON result on build.
enable DYNAMIC_PYTHON enable DYNAMIC_PYTHON3 Build result
yes yes OK
yes no NG <---- *1
no yes OK
no no OK
His patch fixes *1.
--
Best regards,
Hirohito Higashi (a.k.a h_east)
2015-10-7 (Wed) 21:37:46 UTC+9 Bram Moolenaar:
Yes, I understood.
But in the case of Windows requires his patch.