[openssl-dev] Upcoming build system change

Richard Levitte levitte at openssl.org
Mon Jan 18 22:50:12 UTC 2016


FYI,

The branch has been updated, the Makfile template now has install
targets as well, and I did the mods I could see would be necessary for
Cygwin and Mingw.  I would appreciate it if someone could help me try
those out.

Remember to configure with --unified.

Next thing coming up is install targets on VMS.  And with that, I have
to rethink the defaults for the installation directories.

Cheers,
Richard

In message <20160114.215903.813205413779228431.levitte at openssl.org> on Thu, 14 Jan 2016 21:59:03 +0100 (CET), Richard Levitte <levitte at openssl.org> said:

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


More information about the openssl-dev mailing list