Hi Everyone,

The GNUmakefile has become more complex over time, especially since we 
improved support for other platforms like ARM32 and ARM64. However, the 
makefile has gaps and its hard to close them using GNU make's facilitates. 
For example, its difficult to determine ARM's -march and -mtune options. We 
do it in cryptest.sh, but avoid it completely in GNUmakefile (see 
PLATFORM_CXXFLAGS in cryptest.sh).

I've been thinking about a default GNUmakefile that mostly "just works" for 
most platforms. It will provide standard recipes and targets, and running 
it will look similar to "g++ -DNDEBUG -g2 -O2 -fPIC -march=native -pipe -c 
cryptlib.cpp...".

For a more advanced makefile tuned for the platform with compiler bug 
workarounds, I was thinking we could provide a configure.py. configure.py 
would do the heavy lifting that's currently happening in the GNUmakefile. 
configure.py would overwrite config.h and GNUmakefile, and then users would 
do the same thing they have always done.

I want to avoid other general purpose build systems, like Autoconf and 
Cmake. They don't exactly meet requirements and they are hard to work with 
at times. They also require their own set of workarounds as we move among 
platforms. For example, Cmake on CentOS 5 can't provide the same makefile 
as Cmake on Ubuntu 12. And Ubuntu 12 makefiles are different from Ubuntu 16 
makefiles.

Based on my experiences with cryptest.sh, I think we should avoid shell 
scripting because it requires Bash and a handful of Unix & Linux utilities. 
The behavior of the tools on BSDs & Unix & Linux & Solaris vary, so its not 
much different than trying to get Cmake to act the same way everywhere.

I don't want to use PERL because I don't know it well enough. I've found 
also building PERL on different platforms due to system requirements 
produces different behaviors, so I want to avoid it because its the Cmake 
problem again. I also have not acquired a taste for PERL (i really dislike 
the leaning toothpicks, and trying to figure out when I need to single 
quote or double quote).

I think Python would be a good choice because Python offers standard 
behavior on the platforms we attempt to support. Its available for Windows, 
Unixes and Linuxes. I've also have some experience with cross-platform 
support because another library I am familiar with provides a configure.py.

My questions are:

  1. Is there opposition to a simplified GNUmakefile that mostly works 
everywhere?
  2. Is there opposition to a configure.py that writes a specialized 
config.h and GNUmakefile?

Jeff

-- 
-- 
You received this message because you are subscribed to the "Crypto++ Users" 
Google Group.
To unsubscribe, send an email to cryptopp-users-unsubscr...@googlegroups.com.
More information about Crypto++ and this group is available at 
http://www.cryptopp.com.
--- 
You received this message because you are subscribed to the Google Groups 
"Crypto++ Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cryptopp-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to