[openssl-dev] Upcoming build system change
Richard Levitte
levitte at openssl.org
Thu Jan 14 20:59:03 UTC 2016
Hi,
there's an effort going on to revamp the build system for future
OpenSSL, coining it as "unified". The intention is to have one and
the same base of information for all platforms, instead of having to
maintain one set of files for Unixly platforms, one makefile generator
for Windowsy platforms, and one pile of scripts with a serious case of
bit rot for VMS.
In particular, this is of interest for the VMS folks, as it's the only
currently workable build system for upcoming version 1.1.
Finding it
==========
For now, this change is available on here:
https://github.com/levitte/openssl/tree/refactor-build
which is git repo https://github.com/levitte/openssl.git, branch
refactor-build.
Using it
========
Requirements
------------
On all platforms, it requires
- Perl! Reports tell me that version 5.10.1 works fine but might need
some extra perl modules (Test::More and possibly others. Feedback
welcome!). Unix usually has it installed or easy to find. For VMS,
there's an install kit on sourceforge
(https://sourceforge.net/projects/vmsperlkit/files/Archive/), and
Windows, we've always recommended ActiveState Perl
(http://www.activestate.com/ActivePerl).
- The Perl module Text::Template, which is the driver behind the
generation Makefile and other files. This branch relies quite
heavily on templates.
On Unix, it requires
- the usual developmemt stuff. cc, as and make would be the really
bare minimum, and maybe I'm forgetting something, but what is
usually considered the normal tool chain should work out.
On VMS, it requires
- DEC C... It's called HP C these days and might be called something
else again when VSI starts shipping. It needs to be recent enough
to support the qualifiers /NAMES=(AS_IS,SHORTENED) and /REPOSITORY
(I welcome feedback on which the minimum version for this is!)
- DECset, at the very least MMS. Alternatively, MMK can be used if
you can find it (if anyone knows of a place that has it for sure,
feedback is welcome!)
- Of course, the rest of the tool chain, but that comes with the
operating system, no worries there.
[I certainly hope I didn't forget anything, but if I did, feedback is
welcome!]
Config and build
----------------
For Unix users, who are used to the usual generation of a top Makefile
from Makefile.org... that is, Makefile.in since recently, this it
still the default, but you can always use the unified build as an
alternative by adding the flag --unified, like so:
./config --unified
make
make test
# There is no install target yet, it's coming up!
You will get One Top Makefile that does everything. It will not touch
any other Makefile.
For VMS users, the unified build is the only one available in this
branch, the old scripts are simply gone. Instead, you configure just
like you would on any other platform (well, almost, there isn't any
config.com yet, so you'll have to jump directly to the Configure
script), and that will generate a descrip.mms:
perl Configure vms-alpha ! or vms-ia64
mms
mms test
! There is no install target yet.
! As a matter of fact, I'd like to talk about exactly where it
! should install. Let's talk!
Features
========
There are a few features in the unified build that are worth testing:
1. Out of source tree builds! It's perfectly possible to do this:
mkdir ../build
cd ../build
perl ../openssl-src/config
make
make test
(and yes, on VMS as well)
2. The generated Makefile supports parallell make:
make -j9
(carefull, though, don't try the silliness I tried: make -j9 clean all)
Future
======
I plan on making the generated Makefile / descrip.mms full featured,
which means at least adding install targets. Then, on to a template
for a Windows makefile.
=================
Feedback welcome!
=================
Cheers,
Richard
--
Richard Levitte levitte at openssl.org
OpenSSL Project http://www.openssl.org/~levitte/
More information about the openssl-dev
mailing list