Make "make variables" config attributes for overridable flags
With the support of "make variables" comes the possibility for the user to override them. However, we need to make a difference between defaults that we use (and that should be overridable by the user) and flags that are crucial for building OpenSSL (should not be overridable). Typically, overridable flags are those setting optimization levels, warnings levels, that kind of thing, while non-overridable flags are, for example, macros that indicate aspects of how the config target should be treated, such as L_ENDIAN and B_ENDIAN. We do that differentiation by allowing upper case attributes in the config targets, named exactly like the "make variables" we support, and reserving the lower case attributes for non-overridable project flags. Reviewed-by: Andy Polyakov <appro@openssl.org> (Merged from https://github.com/openssl/openssl/pull/5534)
This commit is contained in:
parent
48dcca265c
commit
abe256e795
15 changed files with 788 additions and 460 deletions
|
@ -46,16 +46,16 @@ my %targets=(
|
|||
build_scheme => [ "unified", "unix" ],
|
||||
build_file => "Makefile",
|
||||
|
||||
ar => "ar",
|
||||
arflags => "r",
|
||||
cc => "cc",
|
||||
hashbangperl => "/usr/bin/env perl",
|
||||
ranlib => sub { which("$config{cross_compile_prefix}ranlib")
|
||||
AR => "ar",
|
||||
ARFLAGS => "r",
|
||||
CC => "cc",
|
||||
HASHBANGPERL => "/usr/bin/env perl",
|
||||
RANLIB => sub { which("$config{cross_compile_prefix}ranlib")
|
||||
? "ranlib" : "" },
|
||||
rc => "windres",
|
||||
RC => "windres",
|
||||
|
||||
#### THESE WILL BE ENABLED IN OpenSSL 1.2
|
||||
#hashbangperl => "PERL", # Only Unix actually cares
|
||||
#HASHBANGPERL => "PERL", # Only Unix actually cares
|
||||
},
|
||||
|
||||
BASE_common => {
|
||||
|
@ -84,19 +84,19 @@ my %targets=(
|
|||
inherit_from => [ "BASE_common" ],
|
||||
template => 1,
|
||||
|
||||
ar => "ar",
|
||||
arflags => "r",
|
||||
cc => "cc",
|
||||
AR => "ar",
|
||||
ARFLAGS => "r",
|
||||
CC => "cc",
|
||||
lflags =>
|
||||
sub { $withargs{zlib_lib} ? "-L".$withargs{zlib_lib} : () },
|
||||
ex_libs =>
|
||||
sub { !defined($disabled{zlib})
|
||||
&& defined($disabled{"zlib-dynamic"})
|
||||
? "-lz" : () },
|
||||
hashbangperl => "/usr/bin/env perl", # Only Unix actually cares
|
||||
ranlib => sub { which("$config{cross_compile_prefix}ranlib")
|
||||
HASHBANGPERL => "/usr/bin/env perl", # Only Unix actually cares
|
||||
RANLIB => sub { which("$config{cross_compile_prefix}ranlib")
|
||||
? "ranlib" : "" },
|
||||
rc => "windres",
|
||||
RC => "windres",
|
||||
|
||||
build_scheme => [ "unified", "unix" ],
|
||||
build_file => "Makefile",
|
||||
|
@ -116,16 +116,16 @@ my %targets=(
|
|||
return ();
|
||||
},
|
||||
|
||||
ld => "link",
|
||||
lflags => "/nologo",
|
||||
loutflag => "/out:",
|
||||
ar => "lib",
|
||||
arflags => "/nologo",
|
||||
LD => "link",
|
||||
LDFLAGS => "/nologo",
|
||||
ldoutflag => "/out:",
|
||||
AR => "lib",
|
||||
ARFLAGS => "/nologo",
|
||||
aroutflag => "/out:",
|
||||
rc => "rc",
|
||||
RC => "rc",
|
||||
rcoutflag => "/fo",
|
||||
mt => "mt",
|
||||
mtflags => "-nologo",
|
||||
MT => "mt",
|
||||
MTFLAGS => "-nologo",
|
||||
mtinflag => "-manifest ",
|
||||
mtoutflag => "-outputresource:",
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -5,8 +5,9 @@
|
|||
my %targets = (
|
||||
"DJGPP" => {
|
||||
inherit_from => [ asm("x86_asm") ],
|
||||
cc => "gcc",
|
||||
cflags => "-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN -fomit-frame-pointer -O2 -Wall",
|
||||
CC => "gcc",
|
||||
CFLAGS => "-fomit-frame-pointer -O2 -Wall",
|
||||
cflags => "-I/dev/env/WATT_ROOT/inc -DTERMIOS -DL_ENDIAN",
|
||||
sys_id => "MSDOS",
|
||||
lflags => add("-L/dev/env/WATT_ROOT/lib"),
|
||||
ex_libs => add("-lwatt"),
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
my %targets = (
|
||||
"haiku-common" => {
|
||||
template => 1,
|
||||
cc => "cc",
|
||||
cflags => add_before(picker(default => "-DL_ENDIAN -Wall -include \$(SRCDIR)/os-dep/haiku.h",
|
||||
CC => "cc",
|
||||
CFLAGS => add_before(picker(default => "-Wall",
|
||||
debug => "-g -O0",
|
||||
release => "-O2"),
|
||||
release => "-O2")),
|
||||
cflags => add_before("-DL_ENDIAN -include \$(SRCDIR)/os-dep/haiku.h",
|
||||
threads("-D_REENTRANT")),
|
||||
sys_id => "HAIKU",
|
||||
ex_libs => "-lnetwork",
|
||||
|
@ -18,7 +19,7 @@ my %targets = (
|
|||
},
|
||||
"haiku-x86" => {
|
||||
inherit_from => [ "haiku-common", asm("x86_elf_asm") ],
|
||||
cflags => add(picker(release => "-fomit-frame-pointer")),
|
||||
CFLAGS => add(picker(release => "-fomit-frame-pointer")),
|
||||
bn_ops => "BN_LLONG",
|
||||
},
|
||||
"haiku-x86_64" => {
|
||||
|
|
|
@ -11,9 +11,10 @@ my %targets = (
|
|||
"VC-WIN64A-masm" => {
|
||||
inherit_from => [ "VC-WIN64-common", asm("x86_64_asm"),
|
||||
sub { $disabled{shared} ? () : "x86_64_uplink" } ],
|
||||
as => "ml64",
|
||||
asflags => "/nologo /c /Cp /Cx /Zi",
|
||||
AS => "ml64",
|
||||
ASFLAGS => "/nologo /Zi",
|
||||
asoutflag => "/Fo",
|
||||
asflags => "/c /Cp /Cx",
|
||||
sys_id => "WIN64A",
|
||||
bn_asm_src => sub { return undef unless @_;
|
||||
my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
|
||||
|
|
|
@ -5,7 +5,7 @@ my %targets = (
|
|||
"purify" => {
|
||||
inherit_from => [ 'BASE_unix' ],
|
||||
cc => "purify gcc",
|
||||
cflags => "-g -Wall",
|
||||
CFLAGS => "-g -Wall",
|
||||
thread_scheme => "(unknown)",
|
||||
ex_libs => add(" ","-lsocket -lnsl"),
|
||||
},
|
||||
|
@ -81,8 +81,8 @@ my %targets = (
|
|||
},
|
||||
"dist" => {
|
||||
inherit_from => [ 'BASE_unix' ],
|
||||
cc => "cc",
|
||||
cflags => "-O",
|
||||
CC => "cc",
|
||||
CFLAGS => "-O",
|
||||
thread_scheme => "(unknown)",
|
||||
},
|
||||
"debug-test-64-clang" => {
|
||||
|
|
|
@ -171,51 +171,168 @@ OPENSSLDIR_C={- $osslprefix -}DATAROOT:[000000]
|
|||
# Where installed engines reside, for C
|
||||
ENGINESDIR_C={- $osslprefix -}ENGINES{- $sover_dirname.$target{pointer_size} -}:
|
||||
|
||||
CC= {- $config{cc} -}
|
||||
CPP= {- $config{cpp} -}
|
||||
DEFINES={- our $defines = join(",",
|
||||
'__dummy', # To make comma processing easier
|
||||
@{$config{defines}}) -}
|
||||
INCLUDES={- our $includes = join(',', @{$config{includes}}) -}
|
||||
CPPFLAGS='qual_includes'{- our $cppflags = join('', @{$config{cppflags}}) -}
|
||||
CPPFLAGS_Q={- (my $x = $cppflags) =~ s|"|""|g;
|
||||
(my $d = $defines) =~ s|"|""|g;
|
||||
$x .= "/INCLUDE=($includes)" if $includes;
|
||||
$x .= "/DEFINE=($d)";
|
||||
$x; -}
|
||||
CFLAGS={- join('', @{$config{cflags}}) -}
|
||||
LDFLAGS= {- join('', @{$config{lflags}}) -}
|
||||
EX_LIBS= {- join('', map { ','.$_ } @{$config{ex_libs}}) -}
|
||||
##### User defined commands and flags ################################
|
||||
|
||||
LIB_DEFINES=$(DEFINES){- join("", (map { ",$_" }
|
||||
@{$target{shared_defines}},
|
||||
'OPENSSLDIR="""$(OPENSSLDIR_C)"""',
|
||||
'ENGINESDIR="""$(ENGINESDIR_C)"""')) -}
|
||||
LIB_CPPFLAGS=$(CPPFLAGS)/DEFINE=($(LIB_DEFINES))
|
||||
LIB_CFLAGS=$(CFLAGS){- $target{lib_cflags} // "" -}
|
||||
DSO_DEFINES=$(DEFINES){- join("", (map { ",$_" } @{$target{dso_defines}})) -}
|
||||
DSO_CPPFLAGS=$(CPPFLAGS)/DEFINE=($(DSO_DEFINES))
|
||||
DSO_CFLAGS=$(CFLAGS){- $target{dso_cflags} // "" -}
|
||||
BIN_DEFINES=$(DEFINES){- join("", (map { ",$_" } @{$target{bin_defines}})) -}
|
||||
BIN_CPPFLAGS=$(CPPFLAGS)/DEFINE=($(BIN_DEFINES))
|
||||
BIN_CFLAGS=$(CFLAGS){- $target{bin_cflags} // "" -}
|
||||
NO_INST_LIB_CFLAGS=$(CFLAGS){- $target{no_inst_lib_cflags}
|
||||
// $target{lib_cflags}
|
||||
// "" -}
|
||||
NO_INST_DSO_CFLAGS=$(CFLAGS){- $target{no_inst_dso_cflags}
|
||||
// $target{dso_cflags}
|
||||
// "" -}
|
||||
NO_INST_BIN_CFLAGS=$(CFLAGS){- $target{no_inst_bin_cflags}
|
||||
// $target{bin_cflags}
|
||||
// "" -}
|
||||
CC={- $config{CC} -}
|
||||
CPP={- $config{CPP} -}
|
||||
DEFINES={- our $defines1 = join('', map { ",$_" } @{$config{CPPDEFINES}}) -}
|
||||
INCLUDES={- our $includes1 = join('', map { ",$_" } @{$config{CPPINCLUDES}}) -}
|
||||
CPPFLAGS={- our $cppflags1 = join('', @{$config{CPPFLAGS}}) -}
|
||||
CFLAGS={- join('', @{$config{CFLAGS}}) -}
|
||||
LDFLAGS={- join('', @{$config{LFLAGS}}) -}
|
||||
EX_LIBS={- join('', map { ",$_" } @{$config{LDLIBS}}) -}
|
||||
|
||||
PERL={- $config{perl} -}
|
||||
|
||||
AS={- $config{as} -}
|
||||
ASFLAGS={- join(' ', @{$config{asflags}}) -}
|
||||
AS={- $config{AS} -}
|
||||
ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}
|
||||
|
||||
##### Special command flags ##########################################
|
||||
|
||||
ASOUTFLAG={- $target{asoutflag} -}$(OSSL_EMPTY)
|
||||
|
||||
##### Project flags ##################################################
|
||||
|
||||
# Variables starting with CNF_ are common variables for all product types
|
||||
|
||||
CNF_ASFLAGS={- join('', $target{asflags} || (),
|
||||
@{$config{asflags}}) -}
|
||||
CNF_DEFINES={- our $defines2 = join('', map { ",$_" } @{$target{defines}},
|
||||
@{$config{defines}}) -}
|
||||
CNF_INCLUDES={- our $includes2 = join(',', @{$target{includes}},
|
||||
@{$config{includes}}) -}
|
||||
CNF_CPPFLAGS={- our $cppflags2 = join('', $target{cppflags} || (),
|
||||
@{$config{cppflags}}) -}
|
||||
CNF_CFLAGS={- join('', $target{cflags} || (),
|
||||
@{$config{cflags}}) -}
|
||||
CNF_CXXFLAGS={- join('', $target{cxxflags} || (),
|
||||
@{$config{cxxflags}}) -}
|
||||
CNF_LDFLAGS={- join('', $target{lflags} || (),
|
||||
@{$config{lflags}}) -}
|
||||
CNF_EX_LIBS={- join('', map{ ",$_" } @{$target{ex_libs}},
|
||||
@{$config{ex_libs}}) -}
|
||||
|
||||
# Variables starting with LIB_ are used to build library object files
|
||||
# and shared libraries.
|
||||
# Variables starting with DSO_ are used to build DSOs and their object files.
|
||||
# Variables starting with BIN_ are used to build programs and their object
|
||||
# files.
|
||||
|
||||
LIB_ASFLAGS={- join(' ', $target{lib_asflags} || (),
|
||||
@{$config{lib_asflags}},
|
||||
'$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
|
||||
LIB_DEFINES={- join('', (map { ",$_" } @{$target{lib_defines}},
|
||||
@{$target{shared_defines}},
|
||||
@{$config{lib_defines}},
|
||||
@{$config{shared_defines}},
|
||||
'OPENSSLDIR="""$(OPENSSLDIR_C)"""',
|
||||
'ENGINESDIR="""$(ENGINESDIR_C)"""'),
|
||||
'$(CNF_DEFINES)', '$(DEFINES)') -}
|
||||
LIB_INCLUDES={- join(',', @{$target{lib_includes}},
|
||||
@{$target{shared_includes}},
|
||||
@{$config{lib_includes}},
|
||||
@{$config{shared_includes}}) -}
|
||||
LIB_CPPFLAGS={- join('', "'qual_includes'",
|
||||
'/DEFINE=(__dummy$(LIB_DEFINES))',
|
||||
$target{lib_cppflags} || (),
|
||||
$target{shared_cppflags} || (),
|
||||
@{$config{lib_cppflags}},
|
||||
@{$config{shared_cppflag}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
LIB_CFLAGS={- join('', $target{lib_cflags} || (),
|
||||
$target{shared_cflag} || (),
|
||||
@{$config{lib_cflags}},
|
||||
@{$config{shared_cflag}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
LIB_LDFLAGS={- join('', $target{lib_lflags} || (),
|
||||
$target{shared_ldflag} || (),
|
||||
@{$config{lib_lflags}},
|
||||
@{$config{shared_ldflag}},
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
LIB_EX_LIBS=$(CNF_EX_LIBS)$(EX_LIBS)
|
||||
DSO_ASFLAGS={- join(' ', $target{dso_asflags} || (),
|
||||
$target{module_asflags} || (),
|
||||
@{$config{dso_asflags}},
|
||||
@{$config{module_asflags}},
|
||||
'$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
|
||||
DSO_DEFINES={- join('', (map { ",$_" } @{$target{dso_defines}},
|
||||
@{$target{module_defines}},
|
||||
@{$config{dso_defines}},
|
||||
@{$config{module_defines}}),
|
||||
'$(CNF_DEFINES)', '$(DEFINES)') -}
|
||||
DSO_INCLUDES={- join(',', @{$target{dso_includes}},
|
||||
@{$target{module_includes}},
|
||||
@{$config{dso_includes}},
|
||||
@{$config{module_includes}}) -}
|
||||
DSO_CPPFLAGS={- join('', "'qual_includes'",
|
||||
'/DEFINE=(__dummy$(DSO_DEFINES))',
|
||||
$target{dso_cppflags} || (),
|
||||
$target{module_cppflags} || (),
|
||||
@{$config{dso_cppflags}},
|
||||
@{$config{module_cppflags}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
DSO_CFLAGS={- join('', $target{dso_cflags} || (),
|
||||
$target{module_cflags} || (),
|
||||
@{$config{dso_cflags}},
|
||||
@{$config{module_cflags}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
DSO_LDFLAGS={- join('', $target{dso_lflags} || (),
|
||||
$target{module_ldflags} || (),
|
||||
@{$config{dso_lflags}},
|
||||
@{$config{module_ldflags}},
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
BIN_ASFLAGS={- join(' ', $target{bin_asflags} || (),
|
||||
@{$config{bin_asflags}},
|
||||
'$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
|
||||
BIN_DEFINES={- join('', (map { ",$_" } @{$target{bin_defines}},
|
||||
@{$config{bin_defines}}),
|
||||
'$(CNF_DEFINES)', '$(DEFINES)') -}
|
||||
BIN_INCLUDES={- join(',', @{$target{bin_includes}},
|
||||
@{$config{bin_includes}}) -}
|
||||
BIN_CPPFLAGS={- join('', "'qual_includes'",
|
||||
'/DEFINE=(__dummy$(DSO_DEFINES))',
|
||||
$target{bin_cppflags} || (),
|
||||
@{$config{bin_cppflag}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
BIN_CFLAGS={- join('', $target{bin_cflag} || (),
|
||||
@{$config{bin_cflag}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
BIN_LDFLAGS={- join('', $target{bin_lflags} || (),
|
||||
@{$config{bin_lflags}} || (),
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
NO_INST_LIB_CFLAGS={- join('', $target{no_inst_lib_cflags}
|
||||
// $target{lib_cflags}
|
||||
// (),
|
||||
$target{shared_cflag} || (),
|
||||
@{$config{lib_cflags}},
|
||||
@{$config{shared_cflag}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
NO_INST_DSO_CFLAGS={- join('', $target{no_inst_lib_cflags}
|
||||
// $target{lib_cflags}
|
||||
// (),
|
||||
$target{dso_cflags} || (),
|
||||
@{$config{lib_cflags}},
|
||||
@{$config{dso_cflags}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
NO_INST_BIN_CFLAGS={- join('', $target{no_inst_bin_cflags}
|
||||
// $target{bin_cflags}
|
||||
// (),
|
||||
@{$config{bin_cflags}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
|
||||
PERLASM_SCHEME={- $target{perlasm_scheme} -}
|
||||
|
||||
# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
|
||||
CPPFLAGS_Q={- (my $c = $cppflags1.$cppflags2) =~ s|"|""|g;
|
||||
(my $d = $defines1.$defines2) =~ s|"|""|g;
|
||||
my $i = join(',', $includes1 || (), $includes2 || ());
|
||||
my $x = $c;
|
||||
$x .= "/INCLUDE=($i)" if $i;
|
||||
$x .= "/DEFINE=($d)" if $d;
|
||||
$x; -}
|
||||
|
||||
# .FIRST and .LAST are special targets with MMS and MMK.
|
||||
# The defines in there are for C. includes that look like
|
||||
# this:
|
||||
|
@ -666,6 +783,7 @@ EOF
|
|||
my @incs_cmds = includes({ lib => '$(LIB_INCLUDES)',
|
||||
dso => '$(DSO_INCLUDES)',
|
||||
bin => '$(BIN_INCLUDES)' } -> {$args{intent}},
|
||||
'$(CNF_INCLUDES)',
|
||||
'$(INCLUDES)',
|
||||
@{$args{incs}});
|
||||
my $incs_on = join("\n\t\@ ", @{$incs_cmds[0]}) || '!';
|
||||
|
@ -725,11 +843,14 @@ EOF
|
|||
my $after = $unified_info{after}->{$obj.".OBJ"} || "\@ !";
|
||||
|
||||
if ($srcs[0] =~ /\.asm$/) {
|
||||
my $asflags = { lib => ' $(LIB_ASFLAGS)',
|
||||
dso => ' $(DSO_ASFLAGS)',
|
||||
bin => ' $(BIN_ASFLAGS)' } -> {$args{intent}};
|
||||
return <<"EOF";
|
||||
$obj.OBJ : $deps
|
||||
${before}
|
||||
SET DEFAULT $forward
|
||||
\$(AS) \$(ASFLAGS) \$(ASOUTFLAG)${objd}${objn}.OBJ $srcs
|
||||
\$(AS) $asflags \$(ASOUTFLAG)${objd}${objn}.OBJ $srcs
|
||||
SET DEFAULT $backward
|
||||
EOF
|
||||
}
|
||||
|
@ -817,8 +938,8 @@ $shlib.EXE : $lib.OLB $deps
|
|||
$write_opt1
|
||||
$write_opt2
|
||||
CLOSE OPT_FILE
|
||||
LINK \$(LDFLAGS)/SHARE=\$\@ $defs[0]-translated/OPT,-
|
||||
$lib-components.OPT/OPT \$(EX_LIBS)
|
||||
LINK \$(LIB_LDFLAGS)/SHARE=\$\@ $defs[0]-translated/OPT,-
|
||||
$lib-components.OPT/OPT \$(LIB_EX_LIBS)
|
||||
DELETE $defs[0]-translated;*,$lib-components.OPT;*
|
||||
PURGE $shlib.EXE,$shlib.MAP
|
||||
EOF
|
||||
|
@ -861,7 +982,7 @@ $lib.EXE : $deps
|
|||
$write_opt1
|
||||
$write_opt2
|
||||
CLOSE OPT_FILE
|
||||
LINK \$(LDFLAGS)/SHARE=\$\@ $lib.OPT/OPT \$(EX_LIBS)
|
||||
LINK \$(DSO_LDFLAGS)/SHARE=\$\@ $lib.OPT/OPT \$(DSO_EX_LIBS)
|
||||
- PURGE $lib.EXE,$lib.OPT,$lib.MAP
|
||||
EOF
|
||||
. ($config{target} =~ m|alpha| ? "" : <<"EOF"
|
||||
|
@ -949,7 +1070,7 @@ $bin.EXE : $deps
|
|||
@ CLOSE OPT_FILE
|
||||
TYPE $bin.opt ! For debugging
|
||||
- pipe SPAWN/WAIT/NOLOG/OUT=$bin.LINKLOG -
|
||||
LINK \$(LDFLAGS)/EXEC=\$\@ $bin.OPT/OPT \$(EX_LIBS) ; -
|
||||
LINK \$(BIN_LDFLAGS)/EXEC=\$\@ $bin.OPT/OPT \$(BIN_EX_LIBS) ; -
|
||||
link_status = \$status ; link_severity = link_status .AND. 7
|
||||
@ search_severity = 1
|
||||
-@ IF link_severity .EQ. 0 THEN -
|
||||
|
|
|
@ -13,12 +13,12 @@
|
|||
|
||||
sub detect_gnu_ld {
|
||||
my @lines =
|
||||
`$config{cross_compile_prefix}$config{cc} -Wl,-V /dev/null 2>&1`;
|
||||
`$config{CROSS_COMPILE}$config{CC} -Wl,-V /dev/null 2>&1`;
|
||||
return grep /^GNU ld/, @lines;
|
||||
}
|
||||
sub detect_gnu_cc {
|
||||
my @lines =
|
||||
`$config{cross_compile_prefix}$config{cc} -v 2>&1`;
|
||||
`$config{CROSS_COMPILE}$config{CC} -v 2>&1`;
|
||||
return grep /gcc/, @lines;
|
||||
}
|
||||
|
||||
|
|
|
@ -188,53 +188,7 @@ HTMLSUFFIX=html
|
|||
# For "optional" echo messages, to get "real" silence
|
||||
ECHO = echo
|
||||
|
||||
CROSS_COMPILE= {- $config{cross_compile_prefix} -}
|
||||
CPPFLAGS={- our $cppflags = join(" ",
|
||||
(map { "-D".$_} @{$config{defines}}),
|
||||
(map { "-I".$_} @{$config{includes}}),
|
||||
@{$config{cppflags}}) -}
|
||||
CPPFLAGS_Q={- $cppflags =~ s|([\\"])|\\$1|g; $cppflags -}
|
||||
CC= $(CROSS_COMPILE){- $config{cc} -}
|
||||
CFLAGS={- join(' ', @{$config{cflags}}) -}
|
||||
CXX={- $config{cxx} ? "\$(CROSS_COMPILE)$config{cxx}" : '' -}
|
||||
CXXFLAGS={- join(' ', @{$config{cxxflags}}) -}
|
||||
LDFLAGS= {- join(' ', @{$config{lflags}}) -}
|
||||
PLIB_LDFLAGS= {- join(' ', @{$config{plib_lflags}}) -}
|
||||
EX_LIBS= {- join(' ', @{$config{ex_libs}}) -}
|
||||
|
||||
LIB_CPPFLAGS={- join(' ', '$(CPPFLAGS)',
|
||||
$target{shared_cppflag} || (),
|
||||
(map { '-D'.$_ }
|
||||
('OPENSSLDIR="\"$(OPENSSLDIR)\""',
|
||||
'ENGINESDIR="\"$(ENGINESDIR)\""'))) -}
|
||||
LIB_CFLAGS={- join(' ', '$(CFLAGS)', $target{shared_cflag} || ()) -}
|
||||
LIB_CXXFLAGS={- join(' ', '$(CXXFLAGS)', $target{shared_cxxflag} || ()) -}
|
||||
LIB_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{shared_ldflag} || (), $config{shared_ldflag} || ()) -}
|
||||
DSO_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{dso_cppflags} || ()) -}
|
||||
DSO_CFLAGS={- join(' ', '$(CFLAGS)', $target{dso_cflags} || ()) -}
|
||||
DSO_CXXFLAGS={- join(' ', '$(CXXFLAGS)', $target{dso_cxxflags} || ()) -}
|
||||
DSO_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{dso_lflags} || ()) -}
|
||||
BIN_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{bin_cppflags} || ()) -}
|
||||
BIN_CFLAGS={- join(' ', '$(CFLAGS)', $target{bin_cflags} || ()) -}
|
||||
BIN_CXXFLAGS={- join(' ', '$(CXXFLAGS)', $target{bin_cxxflags} || ()) -}
|
||||
BIN_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{bin_lflags} || ()) -}
|
||||
|
||||
PERL={- $config{perl} -}
|
||||
|
||||
AR=$(CROSS_COMPILE){- $config{ar} -}
|
||||
ARFLAGS= {- join(' ', @{$config{arflags}}) -}
|
||||
RANLIB={- $config{ranlib} ? "\$(CROSS_COMPILE)$config{ranlib}" : "true"; -}
|
||||
RC= $(CROSS_COMPILE){- $target{rc} || "windres" -}
|
||||
RCFLAGS={- join(' ', @{$config{rcflags}}) -} {- $target{shared_rcflag} -}
|
||||
RM= rm -f
|
||||
RMDIR= rmdir
|
||||
TAR= {- $target{tar} || "tar" -}
|
||||
TARFLAGS= {- $target{tarflags} -}
|
||||
MAKEDEPEND={- $config{makedepprog} -}
|
||||
|
||||
BASENAME= openssl
|
||||
NAME= $(BASENAME)-$(VERSION)
|
||||
TARFILE= ../$(NAME).tar
|
||||
##### User defined commands and flags ################################
|
||||
|
||||
# We let the C compiler driver to take care of .s files. This is done in
|
||||
# order to be excused from maintaining a separate set of architecture
|
||||
|
@ -242,6 +196,128 @@ TARFILE= ../$(NAME).tar
|
|||
# gcc, then the driver will automatically translate it to -xarch=v8plus
|
||||
# and pass it down to assembler. In any case, we do not define AS or
|
||||
# ASFLAGS for this reason.
|
||||
|
||||
CROSS_COMPILE={- $config{CROSS_COMPILE} -}
|
||||
CC=$(CROSS_COMPILE){- $config{CC} -}
|
||||
CXX={- $config{CXX} ? "\$(CROSS_COMPILE)$config{CXX}" : '' -}
|
||||
CPPFLAGS={- our $cppflags1 = join(" ",
|
||||
(map { "-D".$_} @{$config{CPPDEFINES}}),
|
||||
(map { "-I".$_} @{$config{CPPINCLUDES}}),
|
||||
@{$config{CPPFLAGS}}) -}
|
||||
CFLAGS={- join(' ', @{$config{CFLAGS}}) -}
|
||||
CXXFLAGS={- join(' ', @{$config{CXXFLAGS}}) -}
|
||||
LDFLAGS= {- join(' ', @{$config{LDFLAGS}}) -}
|
||||
EX_LIBS= {- join(' ', @{$config{LDLIBS}}) -}
|
||||
|
||||
MAKEDEPEND={- $config{makedepprog} -}
|
||||
|
||||
PERL={- $config{perl} -}
|
||||
|
||||
AR=$(CROSS_COMPILE){- $config{AR} -}
|
||||
ARFLAGS= {- join(' ', @{$config{ARFLAGS}}) -}
|
||||
RANLIB={- $config{RANLIB} ? "\$(CROSS_COMPILE)$config{RANLIB}" : "true"; -}
|
||||
RC= $(CROSS_COMPILE){- $config{RC} -}
|
||||
RCFLAGS={- join(' ', @{$config{RCFLAGS}}) -} {- $target{shared_rcflag} -}
|
||||
|
||||
RM= rm -f
|
||||
RMDIR= rmdir
|
||||
TAR= {- $target{TAR} || "tar" -}
|
||||
TARFLAGS= {- $target{TARFLAGS} -}
|
||||
|
||||
BASENAME= openssl
|
||||
NAME= $(BASENAME)-$(VERSION)
|
||||
TARFILE= ../$(NAME).tar
|
||||
|
||||
##### Project flags ##################################################
|
||||
|
||||
# Variables starting with CNF_ are common variables for all product types
|
||||
|
||||
CNF_CPPFLAGS={- our $cppflags2 =
|
||||
join(' ', $target{cppflags} || (),
|
||||
(map { "-D".$_} @{$target{defines}},
|
||||
@{$config{defines}}),
|
||||
(map { "-I".$_} @{$target{includes}},
|
||||
@{$config{includes}}),
|
||||
@{$config{cppflags}}) -}
|
||||
CNF_CFLAGS={- join(' ', $target{cflags} || (),
|
||||
@{$config{cflags}}) -}
|
||||
CNF_CXXFLAGS={- join(' ', $target{cxxflags} || (),
|
||||
@{$config{cxxflags}}) -}
|
||||
CNF_LDFLAGS={- join(' ', $target{lflags} || (),
|
||||
@{$config{lflags}}) -}
|
||||
CNF_EX_LIBS={- join(' ', $target{ex_libs} || (),
|
||||
@{$config{ex_libs}}) -}
|
||||
|
||||
# Variables starting with LIB_ are used to build library object files
|
||||
# and shared libraries.
|
||||
# Variables starting with DSO_ are used to build DSOs and their object files.
|
||||
# Variables starting with BIN_ are used to build programs and their object
|
||||
# files.
|
||||
|
||||
LIB_CPPFLAGS={- join(' ', $target{lib_cppflags} || (),
|
||||
$target{shared_cppflag} || (),
|
||||
(map { '-D'.$_ }
|
||||
@{$config{lib_defines}},
|
||||
@{$config{shared_defines}},
|
||||
'OPENSSLDIR="\"$(OPENSSLDIR)\""',
|
||||
'ENGINESDIR="\"$(ENGINESDIR)\""'),
|
||||
@{$config{lib_cppflags}},
|
||||
@{$config{shared_cppflag}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
LIB_CFLAGS={- join(' ', $target{lib_cflags} || (),
|
||||
$target{shared_cflag} || (),
|
||||
@{$config{lib_cflags}},
|
||||
@{$config{shared_cflag}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
LIB_CXXFLAGS={- join(' ', $target{lib_cxxflags} || (),
|
||||
$target{shared_cxxflag} || (),
|
||||
@{$config{lib_cxxflags}},
|
||||
@{$config{shared_cxxflag}},
|
||||
'$(CNF_CXXFLAGS)', '$(CXXFLAGS)') -}
|
||||
LIB_LDFLAGS={- join(' ', $target{shared_ldflag} || (),
|
||||
$config{shared_ldflag} || (),
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
LIB_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (),
|
||||
$target{module_cppflags} || (),
|
||||
@{$config{dso_cppflags}},
|
||||
@{$config{module_cppflags}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
DSO_CFLAGS={- join(' ', $target{dso_cflags} || (),
|
||||
$target{module_cflags} || (),
|
||||
@{$config{dso_cflags}},
|
||||
@{$config{module_cflags}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
DSO_CXXFLAGS={- join(' ', $target{dso_cxxflags} || (),
|
||||
$target{module_cxxflags} || (),
|
||||
@{$config{dso_cxxflags}},
|
||||
@{$config{module_cxxflag}},
|
||||
'$(CNF_CXXFLAGS)', '$(CXXFLAGS)') -}
|
||||
DSO_LDFLAGS={- join(' ', $target{dso_ldflags} || (),
|
||||
$target{module_ldflags} || (),
|
||||
@{$config{dso_ldflags}},
|
||||
@{$config{module_ldflags}},
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
BIN_CPPFLAGS={- join(' ', $target{bin_cppflags} || (),
|
||||
@{$config{bin_cppflags}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
BIN_CFLAGS={- join(' ', $target{bin_cflags} || (),
|
||||
@{$config{bin_cflags}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
BIN_CXXFLAGS={- join(' ', $target{bin_cxxflags} || (),
|
||||
@{$config{bin_cxxflags}},
|
||||
'$(CNF_CXXFLAGS)', '$(CXXFLAGS)') -}
|
||||
BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
|
||||
@{$config{bin_lflags}},
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
|
||||
# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
|
||||
CPPFLAGS_Q={- $cppflags1 =~ s|([\\"])|\\$1|g;
|
||||
$cppflags2 =~ s|([\\"])|\\$1|g;
|
||||
join(' ', $cppflags1 || (), $cppflags2 || ()) -}
|
||||
|
||||
PERLASM_SCHEME= {- $target{perlasm_scheme} -}
|
||||
|
||||
# For x86 assembler: Set PROCESSOR to 386 if you want to support
|
||||
|
@ -771,7 +847,7 @@ libcrypto.pc:
|
|||
echo 'Description: OpenSSL cryptography library'; \
|
||||
echo 'Version: '$(VERSION); \
|
||||
echo 'Libs: -L$${libdir} -lcrypto'; \
|
||||
echo 'Libs.private: $(EX_LIBS)'; \
|
||||
echo 'Libs.private: $(LIB_EX_LIBS)'; \
|
||||
echo 'Cflags: -I$${includedir}' ) > libcrypto.pc
|
||||
|
||||
libssl.pc:
|
||||
|
@ -1024,7 +1100,7 @@ EOF
|
|||
$target: $deps
|
||||
\$(CC) \$(LIB_CFLAGS) $linkflags\$(LIB_LDFLAGS)$shared_soname$shared_imp \\
|
||||
-o $target_full$shared_def $objs \\
|
||||
\$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)
|
||||
\$(PLIB_LDFLAGS) $linklibs \$(LIB_EX_LIBS)
|
||||
EOF
|
||||
if (windowsdll()) {
|
||||
$recipe .= <<"EOF";
|
||||
|
@ -1067,7 +1143,7 @@ EOF
|
|||
$target: $objs $deps
|
||||
\$(CC) \$(DSO_CFLAGS) $linkflags\$(DSO_LDFLAGS) \\
|
||||
-o $target $objs \\
|
||||
\$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)
|
||||
\$(PLIB_LDFLAGS) $linklibs \$(DSO_EX_LIBS)
|
||||
EOF
|
||||
}
|
||||
sub obj2lib {
|
||||
|
@ -1115,7 +1191,7 @@ $bin$exeext: $objs $deps
|
|||
rm -f $bin$exeext
|
||||
\$\${LDCMD:-$cmd} $cmdflags $linkflags\$(BIN_LDFLAGS) \\
|
||||
-o $bin$exeext $objs \\
|
||||
\$(PLIB_LDFLAGS) $linklibs \$(EX_LIBS)
|
||||
\$(PLIB_LDFLAGS) $linklibs \$(BIN_EX_LIBS)
|
||||
EOF
|
||||
}
|
||||
sub in2script {
|
||||
|
|
|
@ -163,50 +163,139 @@ ENGINESDIR=$(ENGINESDIR_dev)$(ENGINESDIR_dir)
|
|||
libdir={- file_name_is_absolute($libdir)
|
||||
? $libdir : '$(INSTALLTOP)\$(LIBDIR)' -}
|
||||
|
||||
CC={- $config{cc} -}
|
||||
CPP={- $config{cpp} -}
|
||||
CPPFLAGS={- our $cppflags = join(" ",
|
||||
(map { "-D".$_} @{$config{defines}}),
|
||||
(map { " /I ".$_} @{$config{includes}}),
|
||||
@{$config{cppflags}}) -}
|
||||
CPPFLAGS_Q={- $cppflags =~ s|([\\"])|\\$1|g; $cppflags -}
|
||||
CFLAGS={- join(' ', @{$config{cflags}}) -}
|
||||
COUTFLAG={- $target{coutflag} || "/Fo" -}$(OSSL_EMPTY)
|
||||
RC={- $config{rc} -}
|
||||
RCOUTFLAG={- $target{rcoutflag} || "/fo" -}$(OSSL_EMPTY)
|
||||
LD={- $config{ld} -}
|
||||
LDFLAGS={- join(' ', @{$config{lflags}}) -}
|
||||
LDOUTFLAG={- $target{loutflag} || "/out:" -}$(OSSL_EMPTY)
|
||||
EX_LIBS={- join(' ', @{$config{ex_libs}}) -}
|
||||
##### User defined commands and flags ################################
|
||||
|
||||
LIB_CPPFLAGS={- join(' ', '$(CPPFLAGS)',
|
||||
$target{shared_cppflag} || (),
|
||||
(map { quotify_l("-D".$_) }
|
||||
"OPENSSLDIR=\"$openssldir\"",
|
||||
"ENGINESDIR=\"$enginesdir\"")) -}
|
||||
LIB_CFLAGS={- join(' ', '$(CFLAGS)', $target{lib_cflags} || (), $target{shared_cflag} || ()) -}
|
||||
LIB_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{shared_ldflag} || (), $config{shared_ldflag} || ()) -}
|
||||
DSO_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{dso_cppflags} || ()) -}
|
||||
DSO_CFLAGS={- join(' ', '$(CFLAGS)', $target{dso_cflags} || ()) -}
|
||||
DSO_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{dso_ldflag} || ()) -}
|
||||
BIN_CPPFLAGS={- join(' ', '$(CPPFLAGS)', $target{dso_cppflags} || ()) -}
|
||||
BIN_CFLAGS={- join(' ', '$(CFLAGS)', $target{bin_cflags} || ()) -}
|
||||
BIN_LDFLAGS={- join(' ', '$(LDFLAGS)', $target{bin_lflags} || ()) -}
|
||||
CC={- $config{CC} -}
|
||||
CPP={- $config{CPP} -}
|
||||
CPPFLAGS={- our $cppflags1 = join(" ",
|
||||
(map { "-D".$_} @{$config{CPPDEFINES}}),
|
||||
(map { " /I ".$_} @{$config{CPPINCLUDES}}),
|
||||
@{$config{CPPFLAGS}}) -}
|
||||
CFLAGS={- join(' ', @{$config{CFLAGS}}) -}
|
||||
LD={- $config{LD} -}
|
||||
LDFLAGS={- join(' ', @{$config{LDFLAGS}}) -}
|
||||
EX_LIBS={- join(' ', @{$config{LDLIBS}}) -}
|
||||
|
||||
PERL={- $config{perl} -}
|
||||
|
||||
AR={- $config{ar} -}
|
||||
ARFLAGS= {- join(' ', @{$config{arflags}}) -}
|
||||
AROUTFLAG={- $target{aroutflag} || "/out:" -}$(OSSL_EMPTY)
|
||||
AR={- $config{AR} -}
|
||||
ARFLAGS= {- join(' ', @{$config{ARFLAGS}}) -}
|
||||
|
||||
MT={- $config{mt} -}
|
||||
MTFLAGS= {- join(' ', @{$config{mtflags}}) -}
|
||||
MTINFLAG={- $target{mtinflag} || "-manifest " -}$(OSSL_EMPTY)
|
||||
MTOUTFLAG={- $target{mtoutflag} || "-outputresource:" -}$(OSSL_EMPTY)
|
||||
MT={- $config{MT} -}
|
||||
MTFLAGS= {- join(' ', @{$config{MTFLAGS}}) -}
|
||||
|
||||
AS={- $config{as} -}
|
||||
ASFLAGS={- join(' ', @{$config{asflags}}) -}
|
||||
AS={- $config{AS} -}
|
||||
ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -}
|
||||
|
||||
RC={- $config{RC} -}
|
||||
|
||||
##### Special command flags ##########################################
|
||||
|
||||
COUTFLAG={- $target{coutflag} -}$(OSSL_EMPTY)
|
||||
LDOUTFLAG={- $target{ldoutflag} -}$(OSSL_EMPTY)
|
||||
AROUTFLAG={- $target{aroutflag} -}$(OSSL_EMPTY)
|
||||
MTINFLAG={- $target{mtinflag} -}$(OSSL_EMPTY)
|
||||
MTOUTFLAG={- $target{mtoutflag} -}$(OSSL_EMPTY)
|
||||
ASOUTFLAG={- $target{asoutflag} -}$(OSSL_EMPTY)
|
||||
RCOUTFLAG={- $target{rcoutflag} -}$(OSSL_EMPTY)
|
||||
|
||||
##### Project flags ##################################################
|
||||
|
||||
# Variables starting with CNF_ are common variables for all product types
|
||||
|
||||
CNF_ASFLAGS={- join(' ', $target{asflags} || (),
|
||||
@{$config{asflags}}) -}
|
||||
CNF_CPPFLAGS={- our $cppfags2 =
|
||||
join(' ', $target{cppflags} || (),
|
||||
(map { quotify_l("-D".$_) } @{$target{defines}},
|
||||
@{$config{defines}}),
|
||||
(map { quotify_l("-I".$_) } @{$target{includes}},
|
||||
@{$config{includes}}),
|
||||
@{$config{cppflags}}) -}
|
||||
CNF_CFLAGS={- join(' ', $target{cflags} || (),
|
||||
@{$config{cflags}}) -}
|
||||
CNF_CXXFLAGS={- join(' ', $target{cxxflags} || (),
|
||||
@{$config{cxxflags}}) -}
|
||||
CNF_LDFLAGS={- join(' ', $target{lflags} || (),
|
||||
@{$config{lflags}}) -}
|
||||
CNF_EX_LIBS={- join(' ', $target{ex_libs} || (),
|
||||
@{$config{ex_libs}}) -}
|
||||
|
||||
# Variables starting with LIB_ are used to build library object files
|
||||
# and shared libraries.
|
||||
# Variables starting with DSO_ are used to build DSOs and their object files.
|
||||
# Variables starting with BIN_ are used to build programs and their object
|
||||
# files.
|
||||
|
||||
LIB_ASFLAGS={- join(' ', $target{lib_asflags} || (),
|
||||
@{$config{lib_asflags}},
|
||||
'$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
|
||||
LIB_CPPFLAGS={- join(' ', $target{lib_cppflags} || (),
|
||||
$target{shared_cppflag} || (),
|
||||
(map { quotify_l("-D".$_) }
|
||||
@{$target{lib_defines}},
|
||||
@{$target{shared_defines}},
|
||||
@{$config{lib_defines}},
|
||||
@{$config{shared_defines}},
|
||||
"OPENSSLDIR=\"$openssldir\"",
|
||||
"ENGINESDIR=\"$enginesdir\""),
|
||||
(map { quotify_l("-I".$_) }
|
||||
@{$target{lib_includes}},
|
||||
@{$target{shared_includes}},
|
||||
@{$config{lib_includes}},
|
||||
@{$config{shared_includes}}),
|
||||
@{$config{lib_cppflags}},
|
||||
@{$config{shared_cppflag}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
LIB_CFLAGS={- join(' ', $target{lib_cflags} || (),
|
||||
$target{shared_cflag} || (),
|
||||
@{$config{lib_cflags}},
|
||||
@{$config{shared_cflag}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
LIB_LDFLAGS={- join(' ', $target{shared_ldflag} || (),
|
||||
$config{shared_ldflag} || (),
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
LIB_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
DSO_ASFLAGS={- join(' ', $target{dso_asflags} || (),
|
||||
$target{module_asflags} || (),
|
||||
@{$config{dso_asflags}},
|
||||
@{$config{module_asflags}},
|
||||
'$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
|
||||
DSO_CPPFLAGS={- join(' ', $target{dso_cppflags} || (),
|
||||
$target{module_cppflags} || (),
|
||||
@{$config{dso_cppflags}},
|
||||
@{$config{module_cppflags}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
DSO_CFLAGS={- join(' ', $target{dso_cflags} || (),
|
||||
$target{module_cflags} || (),
|
||||
@{$config{dso_cflags}},
|
||||
@{$config{module_cflags}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
DSO_LDFLAGS={- join(' ', $target{dso_lflags} || (),
|
||||
$target{module_ldflags} || (),
|
||||
@{$config{dso_lflags}},
|
||||
@{$config{module_ldflags}},
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
DSO_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
BIN_ASFLAGS={- join(' ', $target{bin_asflags} || (),
|
||||
@{$config{bin_asflags}},
|
||||
'$(CNF_ASFLAGS)', '$(ASFLAGS)') -}
|
||||
BIN_CPPFLAGS={- join(' ', $target{bin_cppflags} || (),
|
||||
@{$config{bin_cppflags}},
|
||||
'$(CNF_CPPFLAGS)', '$(CPPFLAGS)') -}
|
||||
BIN_CFLAGS={- join(' ', $target{bin_cflags} || (),
|
||||
@{$config{bin_cflags}},
|
||||
'$(CNF_CFLAGS)', '$(CFLAGS)') -}
|
||||
BIN_LDFLAGS={- join(' ', $target{bin_lflags} || (),
|
||||
@{$config{bin_lflags}},
|
||||
'$(CNF_LDFLAGS)', '$(LDFLAGS)') -}
|
||||
BIN_EX_LIBS=$(CNF_EX_LIBS) $(EX_LIBS)
|
||||
|
||||
# CPPFLAGS_Q is used for one thing only: to build up buildinf.h
|
||||
CPPFLAGS_Q={- $cppflags1 =~ s|([\\"])|\\$1|g;
|
||||
$cppflags2 =~ s|([\\"])|\\$1|g;
|
||||
join(' ', $cppflags1 || (), $cppflags2 || ()) -}
|
||||
|
||||
PERLASM_SCHEME= {- $target{perlasm_scheme} -}
|
||||
|
||||
PROCESSOR= {- $config{processor} -}
|
||||
|
@ -484,6 +573,9 @@ EOF
|
|||
$cflags .= { lib => ' $(LIB_CPPFLAGS)',
|
||||
dso => ' $(DSO_CPPFLAGS)',
|
||||
bin => ' $(BIN_CPPFLAGS)' } -> {$args{intent}};
|
||||
my $asflags = { lib => ' $(LIB_ASFLAGS)',
|
||||
dso => ' $(DSO_ASFLAGS)',
|
||||
bin => ' $(BIN_ASFLAGS)' } -> {$args{intent}};
|
||||
my $makedepprog = $config{makedepprog};
|
||||
if ($srcs[0] =~ /\.rc$/) {
|
||||
return <<"EOF";
|
||||
|
@ -495,7 +587,7 @@ EOF
|
|||
if ($srcs[0] =~ /\.asm$/) {
|
||||
return <<"EOF";
|
||||
$obj$objext: $deps
|
||||
\$(AS) \$(ASFLAGS) \$(ASOUTFLAG)\$\@ $srcs
|
||||
\$(AS) $asflags \$(ASOUTFLAG)\$\@ $srcs
|
||||
EOF
|
||||
}
|
||||
return <<"EOF" if (!$disabled{makedepend});
|
||||
|
@ -542,7 +634,7 @@ $target: $deps
|
|||
\$(LD) \$(LDFLAGS) \$(LIB_LDFLAGS) \\
|
||||
/implib:\$@ \$(LDOUTFLAG)$shlib$shlibext$shared_def @<< || (DEL /Q \$(\@B).* $shlib.* && EXIT 1)
|
||||
$objs
|
||||
$linklibs\$(EX_LIBS)
|
||||
$linklibs\$(LIB_EX_LIBS)
|
||||
<<
|
||||
IF EXIST $shlib$shlibext.manifest \\
|
||||
\$(MT) \$(MTFLAGS) \$(MTINFLAG)$shlib$shlibext.manifest \$(MTOUTFLAG)$shlib$shlibext
|
||||
|
@ -573,7 +665,7 @@ EXPORTS
|
|||
v_check @2
|
||||
<<
|
||||
$objs
|
||||
$linklibs \$(EX_LIBS)
|
||||
$linklibs \$(DSO_EX_LIBS)
|
||||
<<
|
||||
IF EXIST $dso$dsoext.manifest \\
|
||||
\$(MT) \$(MTFLAGS) \$(MTINFLAG)$dso$dsoext.manifest \$(MTOUTFLAG)$dso$dsoext
|
||||
|
@ -613,7 +705,7 @@ $bin$exeext: $deps
|
|||
\$(LD) \$(LDFLAGS) \$(BIN_LDFLAGS) \$(LDOUTFLAG)$bin$exeext @<<
|
||||
$objs
|
||||
setargv.obj
|
||||
$linklibs\$(EX_LIBS)
|
||||
$linklibs\$(BIN_EX_LIBS)
|
||||
<<
|
||||
IF EXIST $bin$exeext.manifest \\
|
||||
\$(MT) \$(MTFLAGS) \$(MTINFLAG)$bin$exeext.manifest \$(MTOUTFLAG)$bin$exeext
|
||||
|
|
96
Configure
96
Configure
|
@ -568,13 +568,20 @@ my %user_synonyms = (
|
|||
HASHBANGPERL=> 'PERL',
|
||||
RC => 'WINDRES',
|
||||
);
|
||||
my %user_to_target = (
|
||||
# If not given here, the value is the lc of the key
|
||||
CPPDEFINES => 'defines',
|
||||
CPPINCLUDES => 'includes',
|
||||
CROSS_COMPILE => 'cross_compile_prefix',
|
||||
LDFLAGS => 'lflags',
|
||||
LDLIBS => 'ex_libs',
|
||||
|
||||
# Some target attributes have been renamed, this is the translation table
|
||||
my %target_attr_translate =(
|
||||
ar => 'AR',
|
||||
as => 'AS',
|
||||
cc => 'CC',
|
||||
cxx => 'CXX',
|
||||
cpp => 'CPP',
|
||||
hashbangperl => 'HASHBANGPERL',
|
||||
ld => 'LD',
|
||||
mt => 'MT',
|
||||
ranlib => 'RANLIB',
|
||||
rc => 'RC',
|
||||
rm => 'RM',
|
||||
);
|
||||
|
||||
$config{openssl_api_defines}=[];
|
||||
|
@ -969,6 +976,12 @@ my %target = resolve_config($target);
|
|||
|
||||
&usage if (!%target || $target{template});
|
||||
|
||||
foreach (keys %target_attr_translate) {
|
||||
$target{$target_attr_translate{$_}} = $target{$_}
|
||||
if $target{$_};
|
||||
delete $target{$_};
|
||||
}
|
||||
|
||||
%target = ( %{$table{DEFAULTS}}, %target );
|
||||
|
||||
# Make the flags to build DSOs the same as for shared libraries unless they
|
||||
|
@ -1031,7 +1044,8 @@ foreach my $feature (@{$target{enable}}) {
|
|||
}
|
||||
}
|
||||
|
||||
$target{cxxflags}//=$target{cflags} if $target{cxx};
|
||||
$target{CXXFLAGS}//=$target{CFLAGS} if $target{CXX};
|
||||
$target{cxxflags}//=$target{cflags} if $target{CXX};
|
||||
$target{exe_extension}="";
|
||||
$target{exe_extension}=".exe" if ($config{target} eq "DJGPP"
|
||||
|| $config{target} =~ /^(?:Cygwin|mingw)/);
|
||||
|
@ -1048,7 +1062,6 @@ $target{dso_extension}=$target{shared_extension_simple};
|
|||
# the default string.
|
||||
$config{perl} = ($^O ne "VMS" ? $^X : "perl");
|
||||
foreach (keys %user) {
|
||||
my $target_key = $user_to_target{$_} // lc $_;
|
||||
my $ref_type = ref $user{$_};
|
||||
|
||||
# Temporary function. Takes an intended ref type (empty string or "ARRAY")
|
||||
|
@ -1074,10 +1087,10 @@ foreach (keys %user) {
|
|||
return $value;
|
||||
};
|
||||
|
||||
$config{$target_key} =
|
||||
$config{$_} =
|
||||
$mkvalue->($ref_type, $user{$_})
|
||||
|| $mkvalue->($ref_type, $target{$target_key});
|
||||
delete $config{$target_key} unless defined $config{$target_key};
|
||||
|| $mkvalue->($ref_type, $target{$_});
|
||||
delete $config{$_} unless defined $config{$_};
|
||||
}
|
||||
$config{plib_lflags} = [ $target{plib_lflags} ];
|
||||
|
||||
|
@ -1149,10 +1162,10 @@ foreach my $checker (($builder_platform."-".$target{build_file}."-checker.pm",
|
|||
|
||||
push @{$config{defines}}, "NDEBUG" if $config{build_type} eq "release";
|
||||
|
||||
if ($target =~ /^mingw/ && `$config{cc} --target-help 2>&1` =~ m/-mno-cygwin/m)
|
||||
if ($target =~ /^mingw/ && `$config{CC} --target-help 2>&1` =~ m/-mno-cygwin/m)
|
||||
{
|
||||
push @{$config{cflags}}, "-mno-cygwin";
|
||||
push @{$config{cxxflags}}, "-mno-cygwin" if $config{cxx};
|
||||
push @{$config{cxxflags}}, "-mno-cygwin" if $config{CXX};
|
||||
push @{$config{shared_ldflag}}, "-mno-cygwin";
|
||||
}
|
||||
|
||||
|
@ -1164,7 +1177,7 @@ if ($target =~ /linux.*-mips/ && !$disabled{asm}
|
|||
$value = '-mips2' if ($target =~ /mips32/);
|
||||
$value = '-mips3' if ($target =~ /mips64/);
|
||||
unshift @{$config{cflags}}, $value;
|
||||
unshift @{$config{cxxflags}}, $value if $config{cxx};
|
||||
unshift @{$config{cxxflags}}, $value if $config{CXX};
|
||||
}
|
||||
|
||||
# The DSO code currently always implements all functions so that no
|
||||
|
@ -1246,7 +1259,7 @@ if ($disabled{"dynamic-engine"}) {
|
|||
|
||||
unless ($disabled{asan}) {
|
||||
push @{$config{cflags}}, "-fsanitize=address";
|
||||
push @{$config{cxxflags}}, "-fsanitize=address" if $config{cxx};
|
||||
push @{$config{cxxflags}}, "-fsanitize=address" if $config{CXX};
|
||||
}
|
||||
|
||||
unless ($disabled{ubsan}) {
|
||||
|
@ -1254,18 +1267,18 @@ unless ($disabled{ubsan}) {
|
|||
# platforms.
|
||||
push @{$config{cflags}}, "-fsanitize=undefined", "-fno-sanitize-recover=all";
|
||||
push @{$config{cxxflags}}, "-fsanitize=undefined", "-fno-sanitize-recover=all"
|
||||
if $config{cxx};
|
||||
if $config{CXX};
|
||||
}
|
||||
|
||||
unless ($disabled{msan}) {
|
||||
push @{$config{cflags}}, "-fsanitize=memory";
|
||||
push @{$config{cxxflags}}, "-fsanitize=memory" if $config{cxx};
|
||||
push @{$config{cxxflags}}, "-fsanitize=memory" if $config{CXX};
|
||||
}
|
||||
|
||||
unless ($disabled{"fuzz-libfuzzer"} && $disabled{"fuzz-afl"}
|
||||
&& $disabled{asan} && $disabled{ubsan} && $disabled{msan}) {
|
||||
push @{$config{cflags}}, "-fno-omit-frame-pointer", "-g";
|
||||
push @{$config{cxxflags}}, "-fno-omit-frame-pointer", "-g" if $config{cxx};
|
||||
push @{$config{cxxflags}}, "-fno-omit-frame-pointer", "-g" if $config{CXX};
|
||||
}
|
||||
#
|
||||
# Platform fix-ups
|
||||
|
@ -1357,7 +1370,7 @@ unless ($disabled{asm}) {
|
|||
}
|
||||
}
|
||||
|
||||
my %predefined = compiler_predefined($config{cc});
|
||||
my %predefined = compiler_predefined($config{CC});
|
||||
|
||||
# Check for makedepend capabilities.
|
||||
if (!$disabled{makedepend}) {
|
||||
|
@ -1368,7 +1381,7 @@ if (!$disabled{makedepend}) {
|
|||
} elsif ($predefined{__GNUC__} >= 3) {
|
||||
# We know that GNU C version 3 and up as well as all clang
|
||||
# versions support dependency generation
|
||||
$config{makedepprog} = "\$(CROSS_COMPILE)$config{cc}";
|
||||
$config{makedepprog} = "\$(CROSS_COMPILE)$config{CC}";
|
||||
} else {
|
||||
# In all other cases, we look for 'makedepend', and disable the
|
||||
# capability if not found.
|
||||
|
@ -1410,7 +1423,7 @@ die "Exactly one of SIXTY_FOUR_BIT|SIXTY_FOUR_BIT_LONG|THIRTY_TWO_BIT can be set
|
|||
$config{cflags} = [ map { (my $x = $_) =~ s/([\\\"])/\\$1/g; $x }
|
||||
@{$config{cflags}} ];
|
||||
$config{cxxflags} = [ map { (my $x = $_) =~ s/([\\\"])/\\$1/g; $x }
|
||||
@{$config{cxxflags}} ] if $config{cxx};
|
||||
@{$config{cxxflags}} ] if $config{CXX};
|
||||
|
||||
if (defined($config{api})) {
|
||||
$config{openssl_api_defines} = [ "OPENSSL_MIN_API=".$apitable->{$config{api}} ];
|
||||
|
@ -1420,7 +1433,7 @@ if (defined($config{api})) {
|
|||
|
||||
if (defined($predefined{__clang__}) && !$disabled{asm}) {
|
||||
push @{$config{cflags}}, "-Qunused-arguments";
|
||||
push @{$config{cxxflags}}, "-Qunused-arguments" if $config{cxx};
|
||||
push @{$config{cxxflags}}, "-Qunused-arguments" if $config{CXX};
|
||||
}
|
||||
|
||||
if ($strict_warnings)
|
||||
|
@ -1436,7 +1449,7 @@ if ($strict_warnings)
|
|||
push @{$config{cflags}}, $wopt
|
||||
unless grep { $_ eq $wopt } @{$config{cflags}};
|
||||
push @{$config{cxxflags}}, $wopt
|
||||
if ($config{cxx}
|
||||
if ($config{CXX}
|
||||
&& !grep { $_ eq $wopt } @{$config{cxxflags}});
|
||||
}
|
||||
if (defined($predefined{__clang__}))
|
||||
|
@ -1446,7 +1459,7 @@ if ($strict_warnings)
|
|||
push @{$config{cflags}}, $wopt
|
||||
unless grep { $_ eq $wopt } @{$config{cflags}};
|
||||
push @{$config{cxxflags}}, $wopt
|
||||
if ($config{cxx}
|
||||
if ($config{CXX}
|
||||
&& !grep { $_ eq $wopt } @{$config{cxxflags}});
|
||||
}
|
||||
}
|
||||
|
@ -1459,7 +1472,7 @@ unless ($disabled{"crypto-mdebug-backtrace"})
|
|||
push @{$config{cflags}}, $wopt
|
||||
unless grep { $_ eq $wopt } @{$config{cflags}};
|
||||
push @{$config{cxxflags}}, $wopt
|
||||
if ($config{cxx}
|
||||
if ($config{CXX}
|
||||
&& !grep { $_ eq $wopt } @{$config{cxxflags}});
|
||||
}
|
||||
if ($target =~ /^BSD-/)
|
||||
|
@ -1472,7 +1485,7 @@ unless ($disabled{afalgeng}) {
|
|||
$config{afalgeng}="";
|
||||
if ($target =~ m/^linux/) {
|
||||
my $minver = 4*10000 + 1*100 + 0;
|
||||
if ($config{cross_compile_prefix} eq "") {
|
||||
if ($config{CROSS_COMPILE} eq "") {
|
||||
my $verstr = `uname -r`;
|
||||
my ($ma, $mi1, $mi2) = split("\\.", $verstr);
|
||||
($mi2) = $mi2 =~ /(\d+)/;
|
||||
|
@ -1499,12 +1512,10 @@ foreach (keys %useradd) {
|
|||
die "internal error: \$useradd{$_} isn't an ARRAY\n"
|
||||
unless ref $useradd{$_} eq 'ARRAY';
|
||||
|
||||
my $target_key = $user_to_target{$_} // lc $_;
|
||||
|
||||
if (defined $config{$target_key}) {
|
||||
push @{$config{$target_key}}, @{$useradd{$_}};
|
||||
if (defined $config{$_}) {
|
||||
push @{$config{$_}}, @{$useradd{$_}};
|
||||
} else {
|
||||
$config{$target_key} = [ @{$useradd{$_}} ];
|
||||
$config{$_} = [ @{$useradd{$_}} ];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2168,7 +2179,7 @@ foreach (grep /_(asm|aux)_src$/, keys %target) {
|
|||
print "Creating configdata.pm\n";
|
||||
open(OUT,">configdata.pm") || die "unable to create configdata.pm: $!\n";
|
||||
print OUT <<"EOF";
|
||||
#! $config{hashbangperl}
|
||||
#! $config{HASHBANGPERL}
|
||||
|
||||
package configdata;
|
||||
|
||||
|
@ -2306,10 +2317,9 @@ EOF
|
|||
}
|
||||
print OUT
|
||||
"# The following data is only used when this files is use as a script\n";
|
||||
print OUT "my \%makevars = (\n";
|
||||
print OUT "my \@makevars = (\n";
|
||||
foreach (sort keys %user) {
|
||||
print OUT ' ',$_,' ' x (20 - length $_),'=> ',
|
||||
"'",$user_to_target{$_} || lc $_,"',\n";
|
||||
print OUT " '",$_,"',\n";
|
||||
}
|
||||
print OUT ");\n";
|
||||
print OUT "my \%disabled_info = (\n";
|
||||
|
@ -2440,17 +2450,17 @@ _____
|
|||
}
|
||||
if ($dump || $makevars) {
|
||||
print "\nMakevars:\n\n";
|
||||
foreach my $var (sort keys %makevars) {
|
||||
foreach my $var (@makevars) {
|
||||
my $prefix = '';
|
||||
$prefix = $config{cross_compile_prefix}
|
||||
$prefix = $config{CROSS_COMPILE}
|
||||
if grep { $var eq $_ } @user_crossable;
|
||||
$prefix //= '';
|
||||
print ' ',$var,' ' x (16 - length $var),'= ',
|
||||
(ref $config{$makevars{$var}} eq 'ARRAY'
|
||||
? join(' ', @{$config{$makevars{$var}}})
|
||||
: $prefix.$config{$makevars{$var}}),
|
||||
(ref $config{$var} eq 'ARRAY'
|
||||
? join(' ', @{$config{$var}})
|
||||
: $prefix.$config{$var}),
|
||||
"\n"
|
||||
if defined $config{$makevars{$var}};
|
||||
if defined $config{$var};
|
||||
}
|
||||
|
||||
my @buildfile = ($config{builddir}, $config{build_file});
|
||||
|
@ -3012,7 +3022,7 @@ sub compiler_predefined {
|
|||
unless $default_compiler;
|
||||
|
||||
if (! $predefined{$default_compiler}) {
|
||||
my $cc = "$config{cross_compile_prefix}$default_compiler";
|
||||
my $cc = "$config{CROSS_COMPILE}$default_compiler";
|
||||
|
||||
$predefined{$default_compiler} = {};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!{- $config{hashbangperl} -}
|
||||
#!{- $config{HASHBANGPERL} -}
|
||||
# Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
#
|
||||
# Licensed under the OpenSSL license (the "License"). You may not use
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!{- $config{hashbangperl} -}
|
||||
#!{- $config{HASHBANGPERL} -}
|
||||
# Copyright 2002-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
# Copyright (c) 2002 The OpenTSA Project. All rights reserved.
|
||||
#
|
||||
|
|
|
@ -11,7 +11,7 @@ EXTRA= ../ms/uplink-x86.pl ../ms/uplink.c ../ms/applink.c \
|
|||
ppccpuid.pl pariscid.pl alphacpuid.pl arm64cpuid.pl armv4cpuid.pl
|
||||
|
||||
DEPEND[cversion.o]=buildinf.h
|
||||
GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)"
|
||||
GENERATE[buildinf.h]=../util/mkbuildinf.pl "$(CC) $(CNF_CFLAGS) $(CFLAGS) $(CPPFLAGS_Q)" "$(PLATFORM)"
|
||||
DEPEND[buildinf.h]=../configdata.pm
|
||||
|
||||
GENERATE[uplink-x86.s]=../ms/uplink-x86.pl $(PERLASM_SCHEME)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
#!{- $config{hashbangperl} -}
|
||||
#!{- $config{HASHBANGPERL} -}
|
||||
|
||||
# {- join("\n# ", @autowarntext) -}
|
||||
# Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved.
|
||||
|
|
Loading…
Reference in a new issue