[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