Failing build on Windows 8.1 - Visual Studio 2013 Update 4

Issue #341 resolved
Aaron R Robinson created an issue

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)

  1. Aaron R Robinson reporter

    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?

  2. Pete

    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.

  3. Charles Forsyth

    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.

  4. Log in to comment