Failing build on Windows 8.1 - Visual Studio 2013 Update 4
I recently installed VS 2013 Update4 (Community edition) and synced to TIP. I have been unable to get a successful build at all. The output is below.
C:\inferno>mk all
@{builtin cd lib9 ; mk $MKFLAGS $stem}
mk: 'all' is up to date
@{builtin cd libbio ; mk $MKFLAGS $stem}
mk: 'all' is up to date
@{builtin cd libmp ; mk $MKFLAGS $stem}
@{builtin cd port ; mk SYSTARG=Nt OBJTYPE=386 all}
mk: 'all' is up to date
@{builtin cd libsec ; mk $MKFLAGS $stem}
@{builtin cd port ; mk SYSTARG=Nt OBJTYPE=386 all}
mk: 'all' is up to date
@{builtin cd libmath ; mk $MKFLAGS $stem}
mk: 'all' is up to date
@{builtin cd utils/iyacc ; mk $MKFLAGS $stem}
mk: 'all' is up to date
@{builtin cd limbo ; mk $MKFLAGS $stem}
mk: 'all' is up to date
@{builtin cd libinterp ; mk $MKFLAGS $stem}
c:/inferno/Nt/386/lib/libinterp.a doesn't exist: assuming it will be an archive
cl -c -nologo -W3 -Zi -MT -D_WIN32_WINNT=0x0400 -Ic:/inferno/Nt/386/include -Ic:/inferno/include crypt.c
crypt.c
crypt.c(440) : error C2065: 'Cryptmodtab' : undeclared identifier
crypt.c(440) : warning C4022: 'builtinmod' : pointer mismatch for actual parameter 2
crypt.c(440) : error C2065: 'Cryptmodlen' : undeclared identifier
mk: cl -c -nologo ... : exit status=exit(1)
mk: for (j in ... : exit status=exit(1)
C:\inferno>cl
Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86
Copyright (C) Microsoft Corporation. All rights reserved.
usage: cl [ option... ] filename... [ /link linkoption... ]
C:\inferno>hg log -l 3
changeset: 764:185709ebf9fc
tag: tip
user: Charles Forsyth <charles.forsyth@gmail.com>
date: Fri Jul 24 21:49:12 2015 +0100
summary: define environ
changeset: 763:f00da382b073
user: Charles Forsyth <charles.forsyth@gmail.com>
date: Fri Jul 24 21:24:21 2015 +0100
summary: change bool -> boolx
changeset: 762:914543b41919
user: Charles Forsyth <charles.forsyth@gmail.com>
date: Fri Jul 24 16:01:08 2015 +0100
summary: more pollution of name space by MS. issue 339
Comments (5)
-
reporter -
I just ran into the "crypt.c(440) : error C2065: 'Cryptmodtab' : undeclared identifier" error. It's a result of the mk system getting wedged. If you try to mk without having the MS compilers set up properly for your environment, the mkfiles will end up generating a bunch of empty header files, which will look up to date to mk, making the error persist even when you try it with a proper environment. You can fix it by doing this:
cd libinterp mk -a
After that, the build works as normal.
-
reporter I was able to follow your instructions and get unblocked. Thanks!
-
reporter - changed status to resolved
-
rc would be the correct shell type, since it uses a port of rc on Windows, but you're right that it's then over-ridden by mkhost-Nt to be nt. I'm not sure how the rc setting shows through, if it really did.
- Log in to comment
I think I got the the bottom of this, but I am unsure why this is all of a sudden an issue. Looking through the mkfiles/ directory I opened mkfile-Nt-386 which seems to be what my configuration would use. I noticed that the target shell type is set to be 'rc'. This seemed odd so I changed it to 'nt' and I am now getting a lot farther. Still unable to resolve some symbols, but they at least seem manageable.
Is the shell supposed to be 'rc' for Nt-386?