| Commit message (Collapse) | Author | Files | Lines |
|
|
|
My previous PR (#16) deliberately set the install name at install time
instead of at build time, since this is the correct time to determine
the library's install name.
However, if you prefer to do this during build time instead, then there
is no need to call `install_name_tool`. We can pass the appropriate
flags to the linker instead.
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
On macOS, libraries have "install names" which the linker records in a
binary that links against the library. At runtime, the dynamic loader
uses this install name to work out where to find the linked library.
Currently, the Makefile passes no information about the install name to
the linker, and so the DSO has an install name of `libkeccak.dylib`.
This is a problem when you link something against `libkeccak` but
install it outside the default linker search path, because the dynamic
loader won't be able to find it.
This change fixes that by making sure the dynamic loader will always be
able to find `libkeccak.dylib` regardless of where it's been installed.
We use `LIBMAJOREXT` since this is the typical convention for library
install names. For example, the system libc++ has an install name of
`libc++.1.dylib`, in the same way that `SONAME` also typically includes
the library major version on Linux.
|
|
Currently, the Makefile provides no version information about library to
the macOS linker. This makes the linker fill in zeroes for
`compatibility_version` and `current_version` by default.
This is a problem for when you make breaking changes to the library that
require re-compilation of linked software. The new library will still
have a `compatibility_version` of `0.0.0`, which misleads the linker
into believing the new library is a drop-in replacement for the old one.
Let's fix that by making sure we pass version information correctly to
the linker on macOS.
NOTE: Since this increments the `compatibility_version` of the DSO from
`0.0.0` to `1.0.0`, this change will require re-compilation of any macOS
software that dynamically link against `libkeccak`. If you'd like to
avoid this inconvenience for your users, you may wish to wait until you
decide to increment `LIB_MAJOR` or otherwise make breaking changes to
`libkeccak` before merging this change.
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
The coreutil `rm` will by default exit with failure if it is instructed
to remove a file that doesn't exist. Using `rm -f` will suppress this
behavior, so `rm` will exit with success whether or not the file had
existed before invoking `rm -f`.
|
|
If libkeccak is not already installed in the system, then
test.c and benchmark.c will fail to compile. This is because
they previously used `#include <libkeccak.h>` with angled brackets,
which doesn't search `.` by default. Using `#include "libkeccak.h"`
will search `.` so these will compile.
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|
|
Signed-off-by: Mattias Andrée <maandree@kth.se>
|