Hi On Wednesday, 18 March 2020 11:01:22 UTC, Dominique Pelle wrote: > > Mike Williams wrote: > > > Hi, > > > > I am trying to build a terminal version of VIM that includes terminal > > support. My build line run in the src directory are: > > > > nmake -nologo -f make_mvc.mak TERMINAL=yes FEATURES=BIG > > > > The final link fails with: > > > > vterm_unicode.obj : error LNK2001: unresolved external symbol > utf_uint2cells > > vterm_unicode.obj : error LNK2001: unresolved external symbol > > utf_iscomposing_uint > > vim.exe : fatal error LNK1120: 2 unresolved externals > > > > The invoked compilation command is: > > > > cl -c /W3 /nologo -I. -Iproto -DHAVE_PATHDEF -DWIN32 -DFEAT_CSCOPE > > -DFEAT_TERMINAL -DFEAT_SOUND -DWINVER=0x0501 > > -D_WIN32_WINNT=0x0501 /source-charset:utf-8 /MP -DHAVE_STDINT_H /Ox > > /GL -DNDEBUG /Zl /MT /D_CRT_SECURE_NO_DEPRECATE > > /D_CRT_NONSTDC_NO_DEPRECATE -DFEAT_MBYTE_IME -DDYNAMIC_IME > > -DDYNAMIC_ICONV -DDYNAMIC_GETTEXT -DFEAT_PYTHON -DDYNAMIC_PYTHON > > -DDYNAMIC_PYTHON_DLL=\"python27.dll\" -DFEAT_BIG /Fd.\ObjCYAMD64/ /Zi > > /Fo.\ObjCYAMD64/ ... > > > > The missing symbols are from mbyte.c and checking there I can see they > > are compiled in if FEAT_TERMINAL is defined, which it appears to be. > > And yes mbyte.c appears in the list of files to compile and compiled. > > Strange, it can't see why it happens. > Maybe make_mvc.mak is missing a dependency and it's > linking with an old object file as a result? > Can you do do a clean build to make sure that this is not the issue? > > Regards > Dominique >
Yeah, I should have said I thought of that and made sure there were no unexpected .obj files lying around. I have done a clean debug build so I can dumpbin the symbols in mbyte.obj, and sure enough the symbols do not appear in it. Ah, full disclosure. I normall build gui followed by terminal versions. Using #error to check the functions were being built did fail with the gui build, indicating that FEAT_TERMINAL was defined - I just assumed the same with the terminal version. I then simplified the build script to just build the terminal version which continued to fail. Retrying the #error trick now shows the functions are not being compiled in even though FEAT_TERMINAL is in the cl command. So, the issue is that FEAT_TERMINAL is being undefined for windows terminal builds by features.h because FEAT_JOB_CHANNEL is not being defined. I guess the vterm code is not picking up feature.h and missing the redefinition of flags from the compile command. I don't define this for gui builds so dont do it for terminal builds - should I? Or is this an issue in the MSVC makefile being inconsistent? TIA - TTFN Mike -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/b257b636-6674-48eb-94f1-5cb93ba13e8d%40googlegroups.com.
