[krbdev.mit.edu #8910] Building with --enable-static fails when Yasm is available

Nikhil Benesch via RT rt-comment at krbdev.mit.edu
Sat May 23 22:41:20 EDT 2020


Sat May 23 22:41:20 2020: Request 8910 was acted upon.
 Transaction: Ticket created by nikhil.benesch at gmail.com
       Queue: krb5
     Subject: Building with --enable-static fails when Yasm is available
       Owner: Nobody
  Requestors: nikhil.benesch at gmail.com
      Status: new
 Ticket <URL: https://krbdev.mit.edu/rt/Ticket/Display.html?id=8910 >


Building krb5 statically is broken if autoconf is able to find Yasm on the
build system.

    $ ../configure --enable-static --disable-shared
    ...
    checking for yasm... yasm
    ....
    $ make
    make[4]: Entering directory
'/home/benesch/Sites/krb5/src/build/lib/crypto/builtin/aes'
    as   -o iaesx64.o ../../../../../lib/crypto/builtin/aes/iaesx64.s
    ../../../../../lib/crypto/builtin/aes/iaesx64.s: Assembler messages:
    ../../../../../lib/crypto/builtin/aes/iaesx64.s:1: Error: junk at
end of line, first unrecognized character is `['
    ../../../../../lib/crypto/builtin/aes/iaesx64.s:2: Error: junk at
end of line, first unrecognized character is `['

Similar errors continue for many lines.

The error appears to be a missing rule for building iaesx64.o statically using
Yasm. Make falls back to its default rule that uses the system assembler, which
of course is not capable of processing this file.

The following patch fixes the issue for me.

--- a/src/lib/crypto/builtin/aes/Makefile.in
+++ b/src/lib/crypto/builtin/aes/Makefile.in
@@ -34,10 +34,10 @@ GEN_OBJS=\

 all-unix: all-libobjs # aes-gen

-iaesx64 at SHOBJEXT@: $(srcdir)/iaesx64.s
+iaesx64 at STOBJEXT@ iaesx64 at SHOBJEXT@: $(srcdir)/iaesx64.s
        $(YASM) $(AESNI_FLAGS) -o $@ $(srcdir)/iaesx64.s

-iaesx86 at SHOBJEXT@: $(srcdir)/iaesx86.s
+iaesx86 at STOBJEXT@ iaesx86 at SHOBJEXT@: $(srcdir)/iaesx86.s
        $(YASM) $(AESNI_FLAGS) -o $@ $(srcdir)/iaesx86.s

 includes: depend



More information about the krb5-bugs mailing list