[openssl-dev] OpenSSL version 1.1.0 pre release 2 published
Richard Levitte
levitte at openssl.org
Sun Jan 17 16:30:54 UTC 2016
In message <20160117153235.GB9897 at calimero.vinschen.de> on Sun, 17 Jan 2016 16:32:35 +0100, Corinna Vinschen <vinschen at redhat.com> said:
vinschen> On Jan 17 14:56, Richard Levitte wrote:
vinschen> > In message <20160117131603.GA10909 at roeckx.be> on Sun, 17 Jan 2016 14:16:04 +0100, Kurt Roeckx <kurt at roeckx.be> said:
vinschen> >
vinschen> > kurt> On Sun, Jan 17, 2016 at 01:14:14AM +0100, Richard Levitte wrote:
vinschen> > kurt> > OPT_FLAGS would be for optimizing, do I get that right? I suggest you
vinschen> > kurt> > have a look at Configurations/10-main.conf, you might notice
vinschen> > kurt> > configuration items like debug_cflags, release_cflags, debug_lflags
vinschen> > kurt> > and release_lflags. If you have a look at my refactor-build branch,
vinschen> > kurt> > you will see a fairly thorough Configurations/README. If you look the
vinschen> > kurt> > commit titled "Refactor config - move templates docs asm templates to
vinschen> > kurt> > Configurations", you'll find the documentation that's applicable to
vinschen> > kurt> > what Configure in the master branch supports... later editions are
vinschen> > kurt> > currently only supported in my branch.
vinschen> > kurt>
vinschen> > kurt> In Debian we have a system that where you can override things like
vinschen> > kurt> the CFLAGS, and I wonder how easy it will be to integrate that
vinschen> > kurt> with your new system.
vinschen> > kurt> [...]
vinschen> > kurt> Is there an easy way to I can override the flags with
vinschen> > kurt> dpkg-buildflags?
vinschen> >
vinschen> > I see where you're going with this.
vinschen> >
vinschen> > As it is right now, there is no way to affect Configure via the
vinschen> > environment, except for the names of certain commands. Personally,
vinschen> > I'd say that using those should be done carefully. I have no plans to
vinschen> > expand on the use of environment variables...
vinschen> >
vinschen> > However, there is always the possibility to quickly write up a small
vinschen> > config target for yourself in Configurations, and have them inherit
vinschen> > the items for an already existing target. For example:
vinschen> >
vinschen> > cflags=` ... dpkg-buildflags --get CFLAGS`; \
vinschen> > cat <<EOF > Configurations/01-debian-tmp.conf
vinschen> > %targets = (
vinschen> > "debian-linux-x86_64" => {
vinschen> > inherit_from => [ "linux-x86_64" ],
vinschen> > cflags => "$cflags",
vinschen> > }
vinschen> > );
vinschen> > 1;
vinschen> > EOF
vinschen> >
vinschen> > If you want to just append or prepend your flags, you do this with the
vinschen> > cflags item:
vinschen> >
vinschen> > cflags => sub { join(" ", $@, "$cflags"); },
vinschen> >
vinschen> > In my refactor-build branch, I've added some lazy functions to do the
vinschen> > same:
vinschen> >
vinschen> > cflags => add("$cflags"),
vinschen> >
vinschen> > or
vinschen> >
vinschen> > cflags => add_before("$cflags"), # to prepend
vinschen> >
vinschen> > Did that help?
vinschen>
vinschen> This is pretty non-standard. By not allowing to extend CFLAGS from the
vinschen> environment, you require all distros to patch the OpenSSL package to fit
vinschen> their needs in terms of the build flags.
Actually, I forgot another possibility, to just pass them on the
Configure / config command line, like so:
./config -ggdb -O2 -pipe -Wimplicit-function-declaration \
-fdebug-prefix-map=${BUILDDIR}=/usr/src/debug/openssl-1.1.0-pre2-1 \
-fdebug-prefix-map=${SOURCEDIR}=/usr/src/debug/openssl-1.1.0-pre2-1
Basically, anything start with a dash or plus that Configure doesn't
recognise as its own, it will pass down:
* if it starts with -l. -L or -Wl, into EX_LIBS, which is
essentially flags to the linker.
* otherwise, into CFLAG / CFLAGS.
Can't believe I forgot to mention that, considering I use it all the
time...
vinschen> Why is that necessary? It's no problem at all with autotool
vinschen> or cmake-based configurations, and it's really *needed* by
vinschen> distros.
Before we all go off on a tangent, I'd like to point out that I'm only
stating how it works as it is right now. We're not strangers to
making changes, even though carefully most of the times ;-)
vinschen> CFLAGS+=$(OPENSSL_CFLAGS)
+= is a GNU make extension, and therefore a no can do. We need to
stay with generic make.
vinschen> OPENSSL_CFLAGS= -D_WINDLL -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS[...etc...]
vinschen> CFLAGS="${BUILD_CFLAGS) $(OPENSSL_CFLAGS)"
vinschen>
vinschen> and the package build system has to set $BUILD_CFLAGS. That would
vinschen> be sufficient as well.
If my info about the Configure command line above wasn't good enough,
I do have a fairly simple idea on how to allow for using environment
variables to expand the diverse flag items, more or less directly into
the target structure.
Cheers,
Richard
--
Richard Levitte levitte at openssl.org
OpenSSL Project http://www.openssl.org/~levitte/
More information about the openssl-dev
mailing list