Nikos Mavrogiannopoulos n.mavrogiannopoulos@gmail.com writes:
It seems --disable-assembler doesn't work for memxor.
Maybe you forgot to run make distclean? You should do that whenever you change any interesting configure options.
I usually don't build in the source directory, and than I can have multiple build directories configured with different options. Currently I have build trees with plain ./configure, ./configure --disable-assembler, ./configure --enable-shared, and ./configure CC="gcc -m32" CXX="g++ -m32".
To be honest I've not understood how the assembler thing works so I am not able to disable it even manually.
I'll try to explain. It's not very complicated.
./configure looks for certain files in the appropriate machine-specific directory, and creates symlinks in the top-level nettle build directory. Then if make needs to build foo.o, and it can find both foo.c and foo.asm, by the order of the suffix list, it will use the foo.asm file.
The rule to build foo.o from foo.asm first runs m4 to produce foo.s, and then invokes the compiler $(CC) -c ... on foo.s.
The symlinks are created by config.status (which is also run at the end of ./configure), and deleted by make distclean. If you create or delete any links by hand, make will follow.
The setup is inspired by gmp. If you look at what gmp does, there are two main differences:
1. There's hierarchy of machine specific directories for different flavors of the same architecture, and configure searches in multiple directories.
2. It doesn't rely on make ordering the suffix list. Instead, it puts all C files in the "mpn/generic" subdirectory, and creates symlinks also for the portable C files.
And then gmp also has the possibility of creating a fat binary, including optimized code for all different flavors of the given architecture.
Regards, /Niels