Make picker, thread and combine standard config helper functions

Document them as well

Reviewed-by: Andy Polyakov <appro@openssl.org>
This commit is contained in:
Richard Levitte 2016-03-17 09:09:31 +01:00
parent 1fbab1dc6f
commit 1f2e1cd5e8
4 changed files with 52 additions and 32 deletions

View file

@ -1,22 +1,6 @@
## -*- mode: perl; -*- ## -*- mode: perl; -*-
## Standard openssl configuration targets. ## Standard openssl configuration targets.
sub picker {
my %opts = @_;
return sub { add($opts{default} || (),
$opts{$config{build_type}} || ())->(); }
}
sub threads {
my @flags = @_;
return sub { add($disabled{threads} ? () : @flags)->(); }
}
sub combine {
my @stuff = @_;
return sub { add(@stuff)->(); }
}
# Helper functions for the Windows configs # Helper functions for the Windows configs
my $vc_win64a_info = {}; my $vc_win64a_info = {};
sub vc_win64a_info { sub vc_win64a_info {

View file

@ -1,16 +1,6 @@
## -*- mode: perl; -*- ## -*- mode: perl; -*-
## Build configuration targets for openssl-team members ## Build configuration targets for openssl-team members
sub threads {
my @flags = @_;
return sub { add($disabled{threads} ? () : @flags)->(); }
}
sub combine {
my @stuff = @_;
return sub { add(@stuff)->(); }
}
%targets = ( %targets = (
"purify" => { "purify" => {
cc => "purify gcc", cc => "purify gcc",

View file

@ -1,12 +1,6 @@
## -*- mode: perl; -*- ## -*- mode: perl; -*-
## Personal configuration targets ## Personal configuration targets
sub picker {
my %opts = @_;
return sub { add($opts{default} || (),
$opts{$config{build_type}} || ())->(); }
}
%targets = ( %targets = (
"levitte-linux-elf" => { "levitte-linux-elf" => {
inherit_from => [ "linux-elf" ], inherit_from => [ "linux-elf" ],

View file

@ -1961,6 +1961,11 @@ exit(0);
# Configuration file reading ######################################### # Configuration file reading #########################################
# Note: All of the helper functions are for lazy evaluation. They all
# return a CODE ref, which will return the intended value when evaluated.
# Thus, whenever there's mention of a returned value, it's about that
# intended value.
# Helper function to implement conditional inheritance depending on the # Helper function to implement conditional inheritance depending on the
# value of $disabled{asm}. Used in inherit_from values as follows: # value of $disabled{asm}. Used in inherit_from values as follows:
# #
@ -1973,6 +1978,53 @@ sub asm {
} }
} }
# Helper function to implement conditional value variants, with a default
# plus additional values based on the value of $config{build_type}.
# Arguments are given in hash table form:
#
# picker(default => "Basic string: ",
# debug => "debug",
# release => "release")
#
# When configuring with --debug, the resulting string will be
# "Basic string: debug", and when not, it will be "Basic string: release"
#
# This can be used to create variants of sets of flags according to the
# build type:
#
# cflags => picker(default => "-Wall",
# debug => "-g -O0",
# release => "-O3")
#
sub picker {
my %opts = @_;
return sub { add($opts{default} || (),
$opts{$config{build_type}} || ())->(); }
}
# Helper function to combine several values of different types into one.
# This is useful if you want to combine a string with the result of a
# lazy function, such as:
#
# cflags => combine("-Wall", sub { $disabled{zlib} ? () : "-DZLIB" })
#
sub combine {
my @stuff = @_;
return sub { add(@stuff)->(); }
}
# Helper function to implement conditional values depending on the value
# of $disabled{threads}. Can be used as follows:
#
# cflags => combine("-Wall", threads("-pthread"))
#
sub threads {
my @flags = @_;
return sub { add($disabled{threads} ? () : @flags)->(); }
}
our $add_called = 0; our $add_called = 0;
# Helper function to implement adding values to already existing configuration # Helper function to implement adding values to already existing configuration
# values. It handles elements that are ARRAYs, CODEs and scalars # values. It handles elements that are ARRAYs, CODEs and scalars