Dennis Clarke dclarke@blastwave.org writes:
Looks like nettle 2.5 should build pretty much out of the box but the Makefiles seem to have a few issues.
Thanks for testing.
First thing wrong there is that libgmp does exist just fine.
To figure out why that configure check failed, you'll have to look in config.log.
... and then link goes boom because of the totally missing options to the compiler/linker :
/opt/solarisstudio12.3/bin/cc -I. -I/usr/local/include:/usr/sfw/include -DHAVE_CONFIG_H -errfmt=error -erroff=%none -errshort=full -xstrconst -xildoff -m64 -xmemalign=8s -xnolibmil -Xa -xcode=pic32 -xregs=no%appl -xlibmieee -mc -g -xs -ftrap=%none -Qy -xbuiltin=%none -xdebugformat=dwarf -xunroll=1 -xtarget=ultraT2 -xcache=8/16/4:4096/64/16 -D_TS_ERRNO -D_POSIX_PTHREAD_SEMANTICS -D_LARGEFILE64_SOURCE -KPIC -Bdynamic -KPIC -Bdynamic -c memxor.c -o memxor.po \ && true /opt/solarisstudio12.3/bin/cc -G -h libnettle.so.4 aes-decrypt-internal.po aes-decrypt.po aes-encrypt-internal.po aes-encrypt.po aes-encrypt-table.po aes-set-encrypt-key.po aes-set-decrypt-key.po aes-meta.po arcfour.po arcfour-crypt.po arcfour-meta.po arctwo.po arctwo-meta.po base16-encode.po base16-decode.po base16-meta.po base64-encode.po base64-decode.po base64-meta.po camellia-crypt.po camellia-crypt-internal.po camellia-set-encrypt-key.po camellia-set-decrypt-key.po camellia-table.po camellia-meta.po cast128.po cast128-meta.po blowfish.po cbc.po ctr.po gcm.po gcm-aes.po des.po des3.po des-compat.po hmac.po hmac-md5.po hmac-ripemd160.po hmac-sha1.po hmac-sha224.po hmac-sha256.po hmac-sha384.po hmac-sha512.po knuth-lfib.po md2.po md2-meta.po md4.po md4-meta.po md5.po md5-compress.po md5-compat.po md5-meta.po ripemd160.po ripemd160-compress.po ripemd160-meta.po salsa20-crypt.po salsa20-set-key.po sha1.po sha1-compress.po sha1-meta.po sha256.po sha256-compress.po sha224-!
me
ta.po sha256-meta.po sha512.po sha512-compress.po sha384-meta.po sha512-meta.po serpent-set-key.po serpent-encrypt.po serpent-decrypt.po serpent-meta.po twofish.po twofish-meta.po yarrow256.po yarrow_key_event.po buffer.po buffer-init.po realloc.po nettle-meta-hashes.po nettle-meta-ciphers.po nettle-meta-armors.po write-be32.po write-le32.po memxor.po -o libnettle.so ld: fatal: file aes-decrypt-internal.po: wrong ELF class: ELFCLASS64 ld: fatal: file processing errors. No output written to libnettle.so gmake[1]: *** [libnettle.so] Error 2 gmake[1]: Leaving directory `/usr/local/build/nettle-2.5_sparcv9_001' gmake: *** [all] Error 2
If I understand you correctly, the main problem is the linker command line, with -m64 being the most important missing option.
And indeed, $(CFLAGS) seems not to be included when building shared libraries. IF you look in configure.in, and the definitions on LIBNETTLE_LINK and LIBHOGWEED_LINK (a couple of different variants), one would need to add $(CFLAGS) there. (Or of you want to workaround it without touching configure.in, the definitions are substituted into config.make).
what the heck is a po file ?
Here, it's an object file compiled with compiler flags for position independent code, suitable for a shared library.
Anyways ... makefiles seem a bit off and a autoreconf --verbose --install may be needed after a tweak to Makefile.am or similar.
The intention is that there should be make rules for recreating anything (assuming you ran configure before you started hacking). To generate autoconf-related files from scrath, e.g., for a fresh checkout, you run the small ./.bootstrap script, and then rerun configure.
There is no Makefile.am ;-).
Regards, /Niels