[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