From abe256e7951e6d57f8f6b4364ea696eb4ead3852 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Tue, 6 Mar 2018 20:35:30 +0100 Subject: [PATCH] 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 (Merged from https://github.com/openssl/openssl/pull/5534) --- Configurations/00-base-templates.conf | 42 +-- Configurations/10-main.conf | 514 ++++++++++++++------------ Configurations/50-djgpp.conf | 5 +- Configurations/50-haiku.conf | 9 +- Configurations/50-masm.conf | 5 +- Configurations/90-team.conf | 6 +- Configurations/descrip.mms.tmpl | 209 ++++++++--- Configurations/shared-info.pl | 4 +- Configurations/unix-Makefile.tmpl | 172 ++++++--- Configurations/windows-makefile.tmpl | 176 ++++++--- Configure | 96 ++--- apps/CA.pl.in | 2 +- apps/tsget.in | 2 +- crypto/build.info | 2 +- tools/c_rehash.in | 2 +- 15 files changed, 787 insertions(+), 459 deletions(-) diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf index 0350997ff7..310a37091e 100644 --- a/Configurations/00-base-templates.conf +++ b/Configurations/00-base-templates.conf @@ -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:", diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 7f07752511..277ec26625 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -6,16 +6,19 @@ my $vc_win64a_info = {}; sub vc_win64a_info { unless (%$vc_win64a_info) { if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) { - $vc_win64a_info = { as => "nasm", - asflags => "-f win64 -DNEAR -Ox -g", + $vc_win64a_info = { AS => "nasm", + ASFLAGS => "-g", + asflags => "-Ox -f win64 -DNEAR", asoutflag => "-o" }; } elsif ($disabled{asm}) { - $vc_win64a_info = { as => "ml64", - asflags => "/c /Cp /Cx /Zi", + $vc_win64a_info = { AS => "ml64", + ASFLAGS => "/Zi", + asflags => "/c /Cp /Cx", asoutflag => "/Fo" }; } else { $die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n"); - $vc_win64a_info = { as => "{unknown}", + $vc_win64a_info = { AS => "{unknown}", + ASFLAGS => "", asflags => "", asoutflag => "" }; } @@ -29,18 +32,21 @@ sub vc_win32_info { my $ver=`nasm -v 2>NUL`; my $vew=`nasmw -v 2>NUL`; if ($ver ne "" || $vew ne "") { - $vc_win32_info = { as => $ver ge $vew ? "nasm" : "nasmw", + $vc_win32_info = { AS => $ver ge $vew ? "nasm" : "nasmw", + ASFLAGS => "", asflags => "-f win32", asoutflag => "-o", perlasm_scheme => "win32n" }; } elsif ($disabled{asm}) { - $vc_win32_info = { as => "ml", - asflags => "/nologo /Cp /coff /c /Cx /Zi", + $vc_win32_info = { AS => "ml", + ASFLAGS => "/nologo /Zi", + asflags => "/Cp /coff /c /Cx", asoutflag => "/Fo", perlasm_scheme => "win32" }; } else { $die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n"); - $vc_win32_info = { as => "{unknown}", + $vc_win32_info = { AS => "{unknown}", + ASFLAGS => "", asflags => "", asoutflag => "", perlasm_scheme => "win32" }; @@ -150,8 +156,9 @@ sub vms_info { if ($config{target} =~ /-ia64/) { `PIPE ias -H 2> NL:`; if ($? == 0) { - $vms_info->{as} = "ias"; - $vms_info->{asflags} = '-d debug "-N" vms_upcase'; + $vms_info->{AS} = "ias"; + $vms_info->{ASFLAGS} = '-d debug'; + $vms_info->{asflags} = '"-N" vms_upcase'; $vms_info->{asoutflag} = "-o"; $vms_info->{perlasm_scheme} = "ias"; } @@ -165,24 +172,24 @@ my %targets = ( #### Basic configs that should work on any 32-bit box "gcc" => { inherit_from => [ "BASE_unix" ], - cc => "gcc", - cflags => picker(debug => "-O0 -g", + CC => "gcc", + CFLAGS => picker(debug => "-O0 -g", release => "-O3"), thread_scheme => "(unknown)", bn_ops => "BN_LLONG", }, "cc" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => "-O", + CC => "cc", + CFLAGS => "-O", thread_scheme => "(unknown)", }, #### VOS Configurations "vos-gcc" => { inherit_from => [ "BASE_unix" ], - cc => "gcc", - cflags => picker(default => "-Wall", + CC => "gcc", + CFLAGS => picker(default => "-Wall", debug => "-O0 -g", release => "-O3"), cppflags => "-D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN", @@ -210,11 +217,11 @@ my %targets = ( # /usr/ccs/bin/as. Failure to comply will result in compile # failures [at least] in 32-bit build. inherit_from => [ "solaris-common", asm("x86_elf_asm") ], - cc => "gcc", - cflags => add_before(picker(default => "-Wall", + CC => "gcc", + CFLAGS => add_before(picker(default => "-Wall", debug => "-O0 -g", - release => "-O3 -fomit-frame-pointer"), - threads("-pthread")), + release => "-O3 -fomit-frame-pointer")), + cflags => add(threads("-pthread")), cppflags => add("-DL_ENDIAN"), ex_libs => add(threads("-pthread")), bn_ops => "BN_LLONG", @@ -231,11 +238,11 @@ my %targets = ( # to consider using gcc shared build even with vendor compiler:-) # -- inherit_from => [ "solaris-common", asm("x86_64_asm") ], - cc => "gcc", - cflags => add_before(picker(default => "-m64 -Wall", + CC => "gcc", + CFLAGS => add_before(picker(default => "-Wall", debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), + release => "-O3")), + cflags => add_before("-m64", threads("-pthread")), cppflags => add("-DL_ENDIAN"), ex_libs => add(threads("-pthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -260,10 +267,10 @@ my %targets = ( # "solaris64-x86_64-cc" => { inherit_from => [ "solaris-common", asm("x86_64_asm") ], - cc => "cc", - cflags => add_before(picker(default => "-xarch=generic64 -xstrconst -Xa", - debug => "-g", + CC => "cc", + CFLAGS => add_before(picker(debug => "-g", release => "-xO5 -xdepend -xbuiltin")), + cflags => add_before("-xarch=generic64 -xstrconst -Xa"), cppflags => add("-DL_ENDIAN", threads("-D_REENTRANT")), thread_scheme => "pthreads", lflags => add(threads("-mt")), @@ -278,11 +285,11 @@ my %targets = ( #### SPARC Solaris with GNU C setups "solaris-sparcv7-gcc" => { inherit_from => [ "solaris-common" ], - cc => "gcc", - cflags => add_before(picker(default => "-Wall", + CC => "gcc", + CFLAGS => add_before(picker(default => "-Wall", debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), + release => "-O3")), + cflags => add(threads("-pthread")), cppflags => add("-DB_ENDIAN -DBN_DIV2W"), ex_libs => add(threads("-pthread")), bn_ops => "BN_LLONG RC4_CHAR", @@ -312,10 +319,10 @@ my %targets = ( # SC5.0 note: Compiler common patch 107357-01 or later is required! "solaris-sparcv7-cc" => { inherit_from => [ "solaris-common" ], - cc => "cc", - cflags => add_before(picker(default => "-xstrconst -Xa", - debug => "-g", + CC => "cc", + CFLAGS => add_before(picker(debug => "-g", release => "-xO5 -xdepend")), + cflags => add_before("-xstrconst -Xa"), cppflags => add("-DB_ENDIAN -DBN_DIV2W", threads("-D_REENTRANT")), lflags => add(threads("-mt")), @@ -344,10 +351,10 @@ my %targets = ( # Only N32 and N64 ABIs are supported. "irix-mips3-gcc" => { inherit_from => [ "BASE_unix", asm("mips64_asm") ], - cc => "gcc", - cflags => combine(picker(default => "-mabi=n32", - debug => "-g -O0", - release => "-O3")), + CC => "gcc", + CFLAGS => picker(debug => "-g -O0", + release => "-O3"), + cflags => "-mabi=n32", cppflags => combine("-DB_ENDIAN -DBN_DIV3W", threads("-D_SGI_MP_SOURCE")), ex_libs => add(threads("-lpthread")), @@ -361,10 +368,10 @@ my %targets = ( }, "irix-mips3-cc" => { inherit_from => [ "BASE_unix", asm("mips64_asm") ], - cc => "cc", - cflags => combine(picker(default => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared", - debug => "-g -O0", - release => "-O2")), + CC => "cc", + CFLAGS => picker(debug => "-g -O0", + release => "-O2"), + cflags => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared", cppflags => combine("-DB_ENDIAN -DBN_DIV3W", threads("-D_SGI_MP_SOURCE")), ex_libs => add(threads("-lpthread")), @@ -379,10 +386,10 @@ my %targets = ( # N64 ABI builds. "irix64-mips4-gcc" => { inherit_from => [ "BASE_unix", asm("mips64_asm") ], - cc => "gcc", - cflags => combine(picker(default => "-mabi=64 -mips4", - debug => "-g -O0", - release => "-O3")), + CC => "gcc", + CFLAGS => picker(debug => "-g -O0", + release => "-O3"), + cflags => "-mabi=64 -mips4", cppflags => combine("-DB_ENDIAN -DBN_DIV3W", threads("-D_SGI_MP_SOURCE")), ex_libs => add(threads("-lpthread")), @@ -396,13 +403,14 @@ my %targets = ( }, "irix64-mips4-cc" => { inherit_from => [ "BASE_unix", asm("mips64_asm") ], - cc => "cc", - cflags => combine(picker(default => "-64 -mips4 -use_readonly_const -G0 -rdata_shared", - debug => "-g -O0", - release => "-O2")), + CC => "cc", + CFLAGS => picker(debug => "-g -O0", + release => "-O2"), + cppflags => threads("-D_SGI_MP_SOURCE"), + cflags => "-64 -mips4 -use_readonly_const -G0 -rdata_shared", cppflags => combine("-DB_ENDIAN -DBN_DIV3W", threads("-D_SGI_MP_SOURCE")), - ex_libs => add(threads("-lpthread")), + ex_libs => threads("-lpthread"), bn_ops => "RC4_CHAR SIXTY_FOUR_BIT_LONG", thread_scheme => "pthreads", perlasm_scheme => "64", @@ -441,10 +449,10 @@ my %targets = ( # thus adequate performance is provided even with PA-RISC 1.1 build. "hpux-parisc-gcc" => { inherit_from => [ "BASE_unix" ], - cc => "gcc", - cflags => combine(picker(debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), + CC => "gcc", + CFLAGS => picker(debug => "-O0 -g", + release => "-O3"), + cflags => add(threads("-pthread")), cppflags => "-DB_ENDIAN -DBN_DIV2W", ex_libs => add("-Wl,+s -ldld", threads("-pthread")), bn_ops => "BN_LLONG", @@ -461,8 +469,8 @@ my %targets = ( }, "hpux64-parisc2-gcc" => { inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ], - cc => "gcc", - cflags => combine(picker(debug => "-O0 -g", + CC => "gcc", + CFLAGS => combine(picker(debug => "-O0 -g", release => "-O3")), cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")), ex_libs => add("-ldl"), @@ -479,10 +487,10 @@ my %targets = ( # More attempts at unified 10.X and 11.X targets for HP C compiler. "hpux-parisc-cc" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => combine(picker(default => "+Optrs_strongly_typed -Ae +ESlit", - debug => "+O0 +d -g", - release => "+O3")), + CC => "cc", + CFLAGS => picker(debug => "+O0 +d -g", + release => "+O3"), + cflags => "+Optrs_strongly_typed -Ae +ESlit", cppflags => combine("-DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY", threads("-D_REENTRANT")), ex_libs => add("-Wl,+s -ldld",threads("-lpthread")), @@ -501,10 +509,10 @@ my %targets = ( }, "hpux64-parisc2-cc" => { inherit_from => [ "BASE_unix", asm("parisc20_64_asm") ], - cc => "cc", - cflags => combine(picker(default => "+DD64 +Optrs_strongly_typed -Ae +ESlit", - debug => "+O0 +d -g", - release => "+O3")), + CC => "cc", + CFLAGS => picker(debug => "+O0 +d -g", + release => "+O3") , + cflags => "+DD64 +Optrs_strongly_typed -Ae +ESlit", cppflags => combine("-DB_ENDIAN -DMD32_XARRAY", threads("-D_REENTRANT")), ex_libs => add("-ldl",threads("-lpthread")), @@ -521,10 +529,10 @@ my %targets = ( # HP/UX IA-64 targets "hpux-ia64-cc" => { inherit_from => [ "BASE_unix", asm("ia64_asm") ], - cc => "cc", - cflags => combine(picker(default => "-Ae +DD32 +Olit=all -z", - debug => "+O0 +d -g", - release => "+O2")), + CC => "cc", + CFLAGS => picker(debug => "+O0 +d -g", + release => "+O2"), + cflags => "-Ae +DD32 +Olit=all -z", cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")), ex_libs => add("-ldl",threads("-lpthread")), bn_ops => "SIXTY_FOUR_BIT", @@ -538,10 +546,10 @@ my %targets = ( }, "hpux64-ia64-cc" => { inherit_from => [ "BASE_unix", asm("ia64_asm") ], - cc => "cc", - cflags => combine(picker(default => "-Ae +DD64 +Olit=all -z", - debug => "+O0 +d -g", - release => "+O3")), + CC => "cc", + CFLAGS => picker(debug => "+O0 +d -g", + release => "+O3"), + cflags => "-Ae +DD64 +Olit=all -z", cppflags => combine("-DB_ENDIAN", threads("-D_REENTRANT")), ex_libs => add("-ldl", threads("-lpthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -556,10 +564,10 @@ my %targets = ( # GCC builds... "hpux-ia64-gcc" => { inherit_from => [ "BASE_unix", asm("ia64_asm") ], - cc => "gcc", - cflags => combine(picker(debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), + CC => "gcc", + CFLAGS => picker(debug => "-O0 -g", + release => "-O3"), + cflags => add(threads("-pthread")), cppflags => "-DB_ENDIAN", ex_libs => add("-ldl", threads("-pthread")), bn_ops => "SIXTY_FOUR_BIT", @@ -573,11 +581,10 @@ my %targets = ( }, "hpux64-ia64-gcc" => { inherit_from => [ "BASE_unix", asm("ia64_asm") ], - cc => "gcc", - cflags => combine(picker(default => "-mlp64", - debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), + CC => "gcc", + CFLAGS => picker(debug => "-O0 -g", + release => "-O3"), + cflags => combine("-mlp64", threads("-pthread")), cppflags => "-DB_ENDIAN", ex_libs => add("-ldl", threads("-pthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -593,8 +600,8 @@ my %targets = ( #### HP MPE/iX http://jazz.external.hp.com/src/openssl/ "MPE/iX-gcc" => { inherit_from => [ "BASE_unix" ], - cc => "gcc", - cflags => "-O3", + CC => "gcc", + CFLAGS => "-O3", cppflags => "-D_ENDIAN -DBN_DIV2W -D_POSIX_SOURCE -D_SOCKET_SOURCE", includes => add("/SYSLOG/PUB"), sys_id => "MPE", @@ -610,8 +617,9 @@ my %targets = ( #### but not anymore... "tru64-alpha-gcc" => { inherit_from => [ "BASE_unix", asm("alpha_asm") ], - cc => "gcc", - cflags => combine("-std=c9x -O3", threads("-pthread")), + CC => "gcc", + CFLAGS => "-O3", + cflags => add("-std=c9x", threads("-pthread")), cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE", ex_libs => add("-lrt", threads("-pthread")), # for mlock(2) bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -622,9 +630,10 @@ my %targets = ( }, "tru64-alpha-cc" => { inherit_from => [ "BASE_unix", asm("alpha_asm") ], - cc => "cc", - cflags => combine("-std1 -tune host -fast -readonly_strings", - threads("-pthread")), + CC => "cc", + CFLAGS => "-tune host -fast", + cflags => add("-std1 -readonly_strings", + threads("-pthread")), cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE", ex_libs => add("-lrt", threads("-pthread")), # for mlock(2) bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -642,16 +651,16 @@ my %targets = ( # throw in -D[BL]_ENDIAN, whichever appropriate... "linux-generic32" => { inherit_from => [ "BASE_unix" ], - cc => "gcc", - cxx => "g++", - cflags => combine(picker(default => "-Wall", - debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), - cxxflags => combine(picker(default => "-std=c++11 -Wall", - debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), + CC => "gcc", + CXX => "g++", + CFLAGS => picker(default => "-Wall", + debug => "-O0 -g", + release => "-O3"), + CXXFLAGS => picker(default => "-Wall", + debug => "-O0 -g", + release => "-O3"), + cflags => threads("-pthread"), + cxxflags => combine("-std=c++11", threads("-pthread")), cppflags => "-DOPENSSL_USE_NODELETE", ex_libs => add("-ldl", threads("-pthread")), bn_ops => "BN_LLONG RC4_CHAR", @@ -762,14 +771,14 @@ my %targets = ( #### machines where gcc doesn't understand -m32 and -m64 "linux-elf" => { inherit_from => [ "linux-generic32", asm("x86_elf_asm") ], - cflags => add(picker(release => "-fomit-frame-pointer")), + CFLAGS => add(picker(release => "-fomit-frame-pointer")), cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG", }, "linux-aout" => { inherit_from => [ "BASE_unix", asm("x86_asm") ], - cc => "gcc", - cflags => add(picker(default => "-Wall", + CC => "gcc", + CFLAGS => add(picker(default => "-Wall", debug => "-O0 -g", release => "-O3 -fomit-frame-pointer")), cppflags => add("-DL_ENDIAN"), @@ -781,17 +790,17 @@ my %targets = ( #### X86 / X86_64 targets "linux-x86" => { inherit_from => [ "linux-generic32", asm("x86_asm") ], - cflags => add(picker(default => "-m32", - release => "-fomit-frame-pointer")), + CFLAGS => add(picker(release => "-fomit-frame-pointer")), + cflags => add("-m32"), cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG", perlasm_scheme => "elf", }, "linux-x86-clang" => { inherit_from => [ "linux-x86" ], - cc => "clang", - cxx => "clang++", - cflags => add("-Wextra"), + CC => "clang", + CXX => "clang++", + CFLAGS => add("-Wextra"), }, "linux-x86_64" => { inherit_from => [ "linux-generic64", asm("x86_64_asm") ], @@ -803,9 +812,9 @@ my %targets = ( }, "linux-x86_64-clang" => { inherit_from => [ "linux-x86_64" ], - cc => "clang", - cxx => "clang++", - cflags => add("-Wextra"), + CC => "clang", + CXX => "clang++", + CFLAGS => add("-Wextra"), }, "linux-x32" => { inherit_from => [ "linux-generic32", asm("x86_64_asm") ], @@ -857,34 +866,35 @@ my %targets = ( "linux-sparcv8" => { inherit_from => [ "linux-generic32", asm("sparcv8_asm") ], cflags => add("-mcpu=v8"), - cppflags => add("-DB_ENDIAN -DBN_DIV2W"), + lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"), }, "linux-sparcv9" => { # it's a real mess with -mcpu=ultrasparc option under Linux, # but -Wa,-Av8plus should do the trick no matter what. inherit_from => [ "linux-generic32", asm("sparcv9_asm") ], cflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"), - cppflags => add("-DB_ENDIAN -DBN_DIV2W"), + lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"), }, "linux64-sparcv9" => { # GCC 3.1 is a requirement inherit_from => [ "linux-generic64", asm("sparcv9_asm") ], cflags => add("-m64 -mcpu=ultrasparc"), - cppflags => add("-DB_ENDIAN"), + lib_cppflags => add("-DB_ENDIAN"), bn_ops => "BN_LLONG RC4_CHAR", multilib => "64", }, "linux-alpha-gcc" => { inherit_from => [ "linux-generic64", asm("alpha_asm") ], - cppflags => add("-DL_ENDIAN"), + lib_cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG", }, "linux-c64xplus" => { inherit_from => [ "BASE_unix" ], # TI_CGT_C6000_7.3.x is a requirement - cc => "cl6x", - cflags => "--linux -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden", + CC => "cl6x", + CFLAGS => "-o2 -ox -ms", + cflags => "--linux -ea=.s -eo=.o -mv6400+ -pden", cppflags => combine("-DOPENSSL_SMALL_FOOTPRINT", threads("-D_REENTRANT")), bn_ops => "BN_LLONG", @@ -937,7 +947,7 @@ my %targets = ( }, "android-x86" => { inherit_from => [ "android", asm("x86_asm") ], - cflags => add(picker(release => "-fomit-frame-pointer")), + CFLAGS => add(picker(release => "-fomit-frame-pointer")), bn_ops => "BN_LLONG", perlasm_scheme => "android", }, @@ -1007,11 +1017,11 @@ my %targets = ( # -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x # expands it as -lc_r, which seems to be sufficient? inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => combine(picker(default => "-Wall", - debug => "-O0 -g", - release => "-O3"), - threads("-pthread")), + CC => "cc", + CFLAGS => picker(default => "-Wall", + debug => "-O0 -g", + release => "-O3"), + cflags => threads("-pthread"), cppflags => threads("-D_THREAD_SAFE -D_REENTRANT"), ex_libs => add(threads("-pthread")), enable => add("devcryptoeng"), @@ -1029,7 +1039,7 @@ my %targets = ( "BSD-x86" => { inherit_from => [ "BSD-generic32", asm("x86_asm") ], - cflags => add(picker(release => "-fomit-frame-pointer")), + CFLAGS => add(picker(release => "-fomit-frame-pointer")), cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG", shared_target => "bsd-shared", @@ -1069,8 +1079,8 @@ my %targets = ( "bsdi-elf-gcc" => { inherit_from => [ "BASE_unix", asm("x86_elf_asm") ], - cc => "gcc", - cflags => "-fomit-frame-pointer -O3 -Wall", + CC => "gcc", + CFLAGS => "-fomit-frame-pointer -O3 -Wall", cppflags => "-DPERL5 -DL_ENDIAN", ex_libs => add("-ldl"), bn_ops => "BN_LLONG", @@ -1083,16 +1093,16 @@ my %targets = ( "nextstep" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => "-O -Wall", + CC => "cc", + CFLAGS => "-O -Wall", unistd => "", bn_ops => "BN_LLONG", thread_scheme => "(unknown)", }, "nextstep3.3" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => "-O3 -Wall", + CC => "cc", + CFLAGS => "-O3 -Wall", unistd => "", bn_ops => "BN_LLONG", thread_scheme => "(unknown)", @@ -1101,14 +1111,14 @@ my %targets = ( # QNX "qnx4" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => "", + CC => "cc", + CFLAGS => "", cppflags => "-DL_ENDIAN -DTERMIO", thread_scheme => "(unknown)", }, "QNX6" => { inherit_from => [ "BASE_unix" ], - cc => "gcc", + CC => "gcc", ex_libs => add("-lsocket"), dso_scheme => "dlfcn", shared_target => "bsd-gcc-shared", @@ -1117,8 +1127,8 @@ my %targets = ( }, "QNX6-i386" => { inherit_from => [ "BASE_unix", asm("x86_elf_asm") ], - cc => "gcc", - cflags => "-O2 -Wall", + CC => "gcc", + CFLAGS => "-O2 -Wall", cppflags => "-DL_ENDIAN", ex_libs => add("-lsocket"), dso_scheme => "dlfcn", @@ -1140,24 +1150,26 @@ my %targets = ( # UnixWare 2.0x fails destest with -O. "unixware-2.0" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => combine(threads("-Kthread")), + CC => "cc", + cflags => threads("-Kthread"), cppflags => "-DFILIO_H -DNO_STRINGS_H", ex_libs => add("-lsocket -lnsl -lresolv -lx"), thread_scheme => "uithreads", }, "unixware-2.1" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => combine("-O", threads("-Kthread")), + CC => "cc", + CFLAGS => "-O", + cflags => threads("-Kthread"), cppflags => "-DFILIO_H", ex_libs => add("-lsocket -lnsl -lresolv -lx"), thread_scheme => "uithreads", }, "unixware-7" => { inherit_from => [ "BASE_unix", asm("x86_elf_asm") ], - cc => "cc", - cflags => combine("-O -Kalloca", threads("-Kthread")), + CC => "cc", + CFLAGS => "-O", + cflags => combine("-Kalloca", threads("-Kthread")), cppflags => "-DFILIO_H", ex_libs => add("-lsocket -lnsl"), thread_scheme => "uithreads", @@ -1170,8 +1182,8 @@ my %targets = ( }, "unixware-7-gcc" => { inherit_from => [ "BASE_unix", asm("x86_elf_asm") ], - cc => "gcc", - cflags => combine("-O3 -fomit-frame-pointer -Wall"), + CC => "gcc", + CFLAGS => "-O3 -fomit-frame-pointer -Wall", cppflags => add("-DL_ENDIAN -DFILIO_H", threads("-D_REENTRANT")), ex_libs => add("-lsocket -lnsl"), @@ -1218,10 +1230,10 @@ my %targets = ( # current value of $OBJECT_MODE. "aix-gcc" => { inherit_from => [ "BASE_unix", asm("ppc32_asm") ], - cc => "gcc", - cflags => combine(picker(debug => "-O0 -g", - release => "-O"), - threads("-pthread")), + CC => "gcc", + CFLAGS => picker(debug => "-O0 -g", + release => "-O"), + cflags => add(threads("-pthread")), cppflags => "-DB_ENDIAN", ex_libs => add(threads("-pthread")), sys_id => "AIX", @@ -1236,11 +1248,10 @@ my %targets = ( }, "aix64-gcc" => { inherit_from => [ "BASE_unix", asm("ppc64_asm") ], - cc => "gcc", - cflags => combine(picker(default => "-maix64", - debug => "-O0 -g", - release => "-O"), - threads("-pthread")), + CC => "gcc", + CFLAGS => picker(debug => "-O0 -g", + release => "-O"), + cflags => combine("-maix64", threads("-pthread")), cppflags => "-DB_ENDIAN", ex_libs => add(threads("-pthread")), sys_id => "AIX", @@ -1255,10 +1266,10 @@ my %targets = ( }, "aix-cc" => { inherit_from => [ "BASE_unix", asm("ppc32_asm") ], - cc => "cc", - cflags => combine(picker(default => "-q32 -qmaxmem=16384 -qro -qroconst", - debug => "-O0 -g", - release => "-O"), + CC => "cc", + CFLAGS => picker(debug => "-O0 -g", + release => "-O"), + cflags => combine("-q32 -qmaxmem=16384 -qro -qroconst", threads("-qthreaded")), cppflags => combine("-DB_ENDIAN", threads("-D_THREAD_SAFE")), sys_id => "AIX", @@ -1274,10 +1285,10 @@ my %targets = ( }, "aix64-cc" => { inherit_from => [ "BASE_unix", asm("ppc64_asm") ], - cc => "cc", - cflags => combine(picker(default => "-q64 -qmaxmem=16384 -qro -qroconst", - debug => "-O0 -g", - release => "-O"), + CC => "cc", + CFLAGS => picker(debug => "-O0 -g", + release => "-O"), + cflags => combine("-q64 -qmaxmem=16384 -qro -qroconst", threads("-qthreaded")), cppflags => combine("-DB_ENDIAN", threads("-D_THREAD_SAFE")), sys_id => "AIX", @@ -1295,8 +1306,9 @@ my %targets = ( # SIEMENS BS2000/OSD: an EBCDIC-based mainframe "BS2000-OSD" => { inherit_from => [ "BASE_unix" ], - cc => "c89", - cflags => "-O -XLLML -XLLMK -XL", + CC => "c89", + CFLAGS => "-O", + cflags => "-XLLML -XLLMK -XL", cppflags => "-DB_ENDIAN -DCHARSET_EBCDIC", ex_libs => add("-lsocket -lnsl"), bn_ops => "THIRTY_TWO_BIT RC4_CHAR", @@ -1317,9 +1329,12 @@ my %targets = ( "VC-common" => { inherit_from => [ "BASE_Windows" ], template => 1, - cc => "cl", - cpp => '$(CC) /EP /C', - cflags => "-W3 -wd4090 -Gs0 -GF -Gy -nologo", + CC => "cl", + CPP => '$(CC) /EP /C', + CFLAGS => "-W3 -wd4090 -nologo", + LDFLAGS => add("/debug"), + coutflag => "/Fo", + cflags => '-Gs0 -GF -Gy', defines => add("OPENSSL_SYS_WIN32", "WIN32_LEAN_AND_MEAN", "L_ENDIAN", "_CRT_SECURE_NO_DEPRECATE", "_WINSOCK_DEPRECATED_NO_WARNINGS", @@ -1333,11 +1348,9 @@ my %targets = ( } return [ @defs ]; }), - coutflag => "/Fo", lib_cflags => add("/Zi /Fdossl_static"), dso_cflags => "/Zi /Fddso", bin_cflags => "/Zi /Fdapp", - lflags => add("/debug"), shared_ldflag => "/dll", shared_target => "win-shared", # meaningless except it gives Configure a hint thread_scheme => "winthreads", @@ -1347,15 +1360,15 @@ my %targets = ( "VC-noCE-common" => { inherit_from => [ "VC-common" ], template => 1, + CFLAGS => add(picker(debug => '/Od', + release => '/O2')), cflags => add(picker(debug => sub { - ($disabled{shared} ? "" : "/MDd") - ." /Od"; + ($disabled{shared} ? "" : "/MDd"); }, release => sub { - ($disabled{shared} ? "" : "/MD") - ." /O2"; + ($disabled{shared} ? "" : "/MD"); })), defines => add(picker(default => [ "UNICODE", "_UNICODE" ], debug => [ "DEBUG", "_DEBUG" ])), @@ -1396,8 +1409,8 @@ my %targets = ( "VC-WIN64I" => { inherit_from => [ "VC-WIN64-common", asm("ia64_asm"), sub { $disabled{shared} ? () : "ia64_uplink" } ], - as => "ias", - asflags => "-d debug", + AS => "ias", + ASFLAGS => "-d debug", asoutflag => "-o", sys_id => "WIN64I", bn_asm_src => sub { return undef unless @_; @@ -1408,9 +1421,10 @@ my %targets = ( "VC-WIN64A" => { inherit_from => [ "VC-WIN64-common", asm("x86_64_asm"), sub { $disabled{shared} ? () : "x86_64_uplink" } ], - as => sub { vc_win64a_info()->{as} }, - asflags => sub { vc_win64a_info()->{asflags} }, + AS => sub { vc_win64a_info()->{AS} }, + ASFLAGS => sub { vc_win64a_info()->{ASFLAGS} }, asoutflag => sub { vc_win64a_info()->{asoutflag} }, + asflags => sub { vc_win64a_info()->{asflags} }, sys_id => "WIN64A", bn_asm_src => sub { return undef unless @_; my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; }, @@ -1422,10 +1436,11 @@ my %targets = ( # configure with 'perl Configure VC-WIN32 -DUNICODE -D_UNICODE' inherit_from => [ "VC-noCE-common", asm("x86_asm"), sub { $disabled{shared} ? () : "uplink_common" } ], - cflags => add("-WX"), - as => sub { vc_win32_info()->{as} }, - asflags => sub { vc_win32_info()->{asflags} }, + CFLAGS => add("-WX"), + AS => sub { vc_win32_info()->{AS} }, + ASFLAGS => sub { vc_win32_info()->{ASFLAGS} }, asoutflag => sub { vc_win32_info()->{asoutflag} }, + asflags => sub { vc_win32_info()->{asflags} }, ex_libs => add(sub { my @ex_libs = (); # WIN32 UNICODE build gets linked with unicows.lib for @@ -1441,33 +1456,33 @@ my %targets = ( }, "VC-CE" => { inherit_from => [ "VC-common" ], - as => "ml", - asflags => "/nologo /Cp /coff /c /Cx /Zi", + AS => "ml", + ASFLAGS => "/nologo", asoutflag => "/Fo", - cc => "cl", + asflags => "/Cp /coff /c /Cx /Zi", + CC => "cl", + CFLAGS => picker(default => '/W3 /WX /nologo', + debug => "/Od", + release => "/O1i"), + CPPDEFINES => picker(debug => [ "DEBUG", "_DEBUG" ]), + LDFLAGS => add("/nologo /opt:ref"), cflags => - picker(default => - combine('/W3 /WX /GF /Gy /nologo', - sub { vc_wince_info()->{cflags}; }, - sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14 - ? ($disabled{shared} ? " /MT" : " /MD") - : " /MC"; }), - debug => "/Od", - release => "/O1i"), + combine('/GF /Gy', + sub { vc_wince_info()->{cflags}; }, + sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14 + ? ($disabled{shared} ? " /MT" : " /MD") + : " /MC"; }), cppflags => sub { vc_wince_info()->{cppflags}; }, - defines => - picker(default => [ "UNICODE", "_UNICODE", "OPENSSL_SYS_WINCE", - "WIN32_LEAN_AND_MEAN", "L_ENDIAN", "DSO_WIN32", - "NO_CHMOD", "OPENSSL_SMALL_FOOTPRINT" ], - debug => [ "DEBUG", "_DEBUG" ]), + defines => [ "UNICODE", "_UNICODE", "L_ENDIAN", "DSO_WIN32", + "NO_CHMOD", "OPENSSL_SMALL_FOOTPRINT", + "WIN32_LEAN_AND_MEAN" ], includes => add(combine(sub { defined(env('WCECOMPAT')) ? '$(WCECOMPAT)/include' : (); }, sub { defined(env('PORTSDK_LIBPATH')) ? '$(PORTSDK_LIBPATH)/../../include' : (); })), - lflags => add(combine("/nologo /opt:ref", - sub { vc_wince_info()->{lflags}; }, + lflags => add(combine(sub { vc_wince_info()->{lflags}; }, sub { defined(env('PORTSDK_LIBPATH')) ? "/entry:mainCRTstartup" : (); })), sys_id => "WINCE", @@ -1498,12 +1513,14 @@ my %targets = ( "mingw" => { inherit_from => [ "BASE_unix", asm("x86_asm"), sub { $disabled{shared} ? () : "x86_uplink" } ], - cc => "gcc", - cflags => picker(default => "-m32 -Wall", + CC => "gcc", + CFLAGS => picker(default => "-Wall", debug => "-g -O0", release => "-O3 -fomit-frame-pointer"), - cppflags => combine("-DL_ENDIAN -DWIN32_LEAN_AND_MEAN", - "-DUNICODE -D_UNICODE", threads("-D_MT")), + cflags => "-m32", + cppflags => combine("-DL_ENDIAN -DUNICODE -D_UNICODE", + "-DWIN32_LEAN_AND_MEAN", + threads("-D_MT")), sys_id => "MINGW32", ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"), bn_ops => "BN_LLONG EXPORT_VAR_AS_FN", @@ -1528,12 +1545,14 @@ my %targets = ( # environment. And as mingw64 is always consistent with itself, # Applink is never engaged and can as well be omitted. inherit_from => [ "BASE_unix", asm("x86_64_asm") ], - cc => "gcc", - cflags => picker(default => "-m64 -Wall", + CC => "gcc", + CFLAGS => picker(default => "-Wall", debug => "-g -O0", release => "-O3"), - cppflags => combine("-DL_ENDIAN -DWIN32_LEAN_AND_MEAN", - "-DUNICODE -D_UNICODE", threads("-D_MT")), + cflags => "-m64", + cppflags => combine("-DL_ENDIAN -DUNICODE -D_UNICODE", + "-DWIN32_LEAN_AND_MEAN", + threads("-D_MT")), sys_id => "MINGW64", ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"), bn_ops => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN", @@ -1552,8 +1571,8 @@ my %targets = ( #### UEFI "UEFI" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => "-O", + CC => "cc", + CFLAGS => "-O", cppflags => "-DL_ENDIAN", sys_id => "UEFI", }, @@ -1561,9 +1580,9 @@ my %targets = ( #### UWIN "UWIN" => { inherit_from => [ "BASE_unix" ], - cc => "cc", - cflags => "-O -Wall", - cppflags => "-DTERMIOS -DL_ENDIAN", + CC => "cc", + CFLAGS => "-O -Wall", + lib_cppflags => "-DTERMIOS -DL_ENDIAN", sys_id => "UWIN", bn_ops => "BN_LLONG", dso_scheme => "win32", @@ -1572,8 +1591,8 @@ my %targets = ( #### Cygwin "Cygwin-x86" => { inherit_from => [ "BASE_unix", asm("x86_asm") ], - cc => "gcc", - cflags => picker(default => "-Wall", + CC => "gcc", + CFLAGS => picker(default => "-Wall", debug => "-g -O0", release => "-O3 -fomit-frame-pointer"), cppflags => "-DTERMIOS -DL_ENDIAN", @@ -1588,8 +1607,8 @@ my %targets = ( }, "Cygwin-x86_64" => { inherit_from => [ "BASE_unix", asm("x86_64_asm") ], - cc => "gcc", - cflags => picker(default => "-Wall", + CC => "gcc", + CFLAGS => picker(default => "-Wall", debug => "-g -O0", release => "-O3"), cppflags => "-DTERMIOS -DL_ENDIAN", @@ -1624,13 +1643,12 @@ my %targets = ( "darwin-common" => { inherit_from => [ "BASE_unix" ], template => 1, - cc => "cc", - cflags => picker(default => "", - debug => "-g -O0", + CC => "cc", + CFLAGS => picker(debug => "-g -O0", release => "-O3"), cppflags => threads("-D_REENTRANT"), + lflags => "-Wl,-search_paths_first", sys_id => "MACOSX", - plib_lflags => "-Wl,-search_paths_first", bn_ops => "BN_LLONG RC4_CHAR", thread_scheme => "pthreads", perlasm_scheme => "osx32", @@ -1659,15 +1677,16 @@ my %targets = ( }, "darwin-i386-cc" => { inherit_from => [ "darwin-common", asm("x86_asm") ], - cflags => add(picker(default => "-arch i386", - release => "-fomit-frame-pointer")), + CFLAGS => add(picker(release => "-fomit-frame-pointer")), + cflags => add("-arch i386"), cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG RC4_INT", perlasm_scheme => "macosx", }, "darwin64-x86_64-cc" => { inherit_from => [ "darwin-common", asm("x86_64_asm") ], - cflags => add("-arch x86_64 -Wall"), + CFLAGS => add("-Wall"), + cflags => add("-arch x86_64"), cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG", perlasm_scheme => "macosx", @@ -1714,9 +1733,9 @@ my %targets = ( "hurd-x86" => { inherit_from => [ "BASE_unix" ], inherit_from => [ asm("x86_elf_asm") ], - cc => "gcc", - cflags => combine("-O3 -fomit-frame-pointer -Wall", - threads("-pthread")), + CC => "gcc", + CFLAGS => "-O3 -fomit-frame-pointer -Wall", + cflags => threads("-pthread"), cppflags => "-DL_ENDIAN", ex_libs => add("-ldl", threads("-pthread")), bn_ops => "BN_LLONG", @@ -1730,8 +1749,9 @@ my %targets = ( ##### VxWorks for various targets "vxworks-ppc60x" => { inherit_from => [ "BASE_unix" ], - cc => "ccppc", - cflags => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall", + CC => "ccppc", + CFLAGS => "-O2 -Wall -fstrength-reduce", + cflags => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -fno-builtin -fno-strict-aliasing", cppflags => combine("-D_REENTRANT -DPPC32_fp60x -DCPU=PPC32", "_DTOOL_FAMILY=gnu -DTOOL=gnu", "-I\$(WIND_BASE)/target/usr/h", @@ -1742,8 +1762,9 @@ my %targets = ( }, "vxworks-ppcgen" => { inherit_from => [ "BASE_unix" ], - cc => "ccppc", - cflags => "-mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall", + CC => "ccppc", + CFLAGS => "-O1 -Wall", + cflags => "-mrtp -msoft-float -mstrict-align -fno-builtin -fno-strict-aliasing", cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC32", "-DTOOL_FAMILY=gnu -DTOOL=gnu", "-I\$(WIND_BASE)/target/usr/h", @@ -1754,8 +1775,9 @@ my %targets = ( }, "vxworks-ppc405" => { inherit_from => [ "BASE_unix" ], - cc => "ccppc", - cflags => "-g -msoft-float -mlongcall", + CC => "ccppc", + CFLAGS => "-g", + cflags => "-msoft-float -mlongcall", cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC405", "-DTOOL_FAMILY=gnu -DTOOL=gnu", "-I\$(WIND_BASE)/target/h"), @@ -1764,8 +1786,9 @@ my %targets = ( }, "vxworks-ppc750" => { inherit_from => [ "BASE_unix" ], - cc => "ccppc", - cflags => "-ansi -nostdinc -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall \$(DEBUG_FLAG)", + CC => "ccppc", + CFLAGS => "-ansi -fvolatile -Wall \$(DEBUG_FLAG)", + cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall", cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604", "-I\$(WIND_BASE)/target/h"), sys_id => "VXWORKS", @@ -1773,8 +1796,9 @@ my %targets = ( }, "vxworks-ppc750-debug" => { inherit_from => [ "BASE_unix" ], - cc => "ccppc", - cflags => "-ansi -nostdinc -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -g", + CC => "ccppc", + CFLAGS => "-ansi -fvolatile -Wall -g", + cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall", cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604", "-DPEDANTIC -DDEBUG", "-I\$(WIND_BASE)/target/h"), @@ -1783,7 +1807,7 @@ my %targets = ( }, "vxworks-ppc860" => { inherit_from => [ "BASE_unix" ], - cc => "ccppc", + CC => "ccppc", cflags => "-nostdinc -msoft-float", cppflags => combine("-DCPU=PPC860 -DNO_STRINGS_H", "-I\$(WIND_BASE)/target/h"), @@ -1792,7 +1816,7 @@ my %targets = ( }, "vxworks-simlinux" => { inherit_from => [ "BASE_unix" ], - cc => "ccpentium", + CC => "ccpentium", cflags => "-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -fno-builtin -fno-defer-pop", cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"", "-DL_ENDIAN -DCPU=SIMLINUX -DNO_STRINGS_H", @@ -1806,8 +1830,9 @@ my %targets = ( }, "vxworks-mips" => { inherit_from => [ "BASE_unix", asm("mips32_asm") ], - cc => "ccmips", - cflags => "-mrtp -mips2 -O -G 0 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno-branch-likely -fno-builtin -fno-defer-pop", + CC => "ccmips", + CFLAGS => "-O -G 0", + cflags => "-mrtp -mips2 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno-branch-likely -fno-builtin -fno-defer-pop", cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"", "-DCPU=MIPS32 -DNO_STRINGS_H", "-DTOOL_FAMILY=gnu -DTOOL=gnu", @@ -1826,7 +1851,7 @@ my %targets = ( #### uClinux "uClinux-dist" => { inherit_from => [ "BASE_unix" ], - cc => sub { env('CC') }, + CC => sub { env('CC') }, cppflags => threads("-D_REENTRANT"), ex_libs => add("\$(LDLIBS)"), bn_ops => "BN_LLONG", @@ -1839,7 +1864,7 @@ my %targets = ( }, "uClinux-dist64" => { inherit_from => [ "BASE_unix" ], - cc => sub { env('CC') }, + CC => sub { env('CC') }, cppflags => threads("-D_REENTRANT"), ex_libs => add("\$(LDLIBS)"), bn_ops => "SIXTY_FOUR_BIT_LONG", @@ -1859,9 +1884,9 @@ my %targets = ( "vms-generic" => { inherit_from => [ "BASE_VMS" ], template => 1, - cc => "CC/DECC", - cpp => '$(CC)/PREPROCESS_ONLY=SYS$OUTPUT:', - cflags => + CC => "CC/DECC", + CPP => '$(CC)/PREPROCESS_ONLY=SYS$OUTPUT:', + CFLAGS => combine(picker(default => "/STANDARD=(ISOC94,RELAXED)/NOLIST/PREFIX=ALL", debug => "/NOOPTIMIZE/DEBUG", release => "/OPTIMIZE/NODEBUG"), @@ -1887,9 +1912,10 @@ my %targets = ( dso_scheme => "vms", thread_scheme => "pthreads", - as => sub { vms_info()->{as} }, - asflags => sub { vms_info()->{asflags} }, + AS => sub { vms_info()->{AS} }, + ASFLAGS => sub { vms_info()->{ASFLAGS} }, asoutflag => sub { vms_info()->{asoutflag} }, + asflags => sub { vms_info()->{asflags} }, perlasm_scheme => sub { vms_info()->{perlasm_scheme} }, apps_aux_src => "vms_term_sock.c", diff --git a/Configurations/50-djgpp.conf b/Configurations/50-djgpp.conf index b4d19e20ac..a8853a81a1 100644 --- a/Configurations/50-djgpp.conf +++ b/Configurations/50-djgpp.conf @@ -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"), diff --git a/Configurations/50-haiku.conf b/Configurations/50-haiku.conf index b57e148710..cd6d10e5f0 100644 --- a/Configurations/50-haiku.conf +++ b/Configurations/50-haiku.conf @@ -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" => { diff --git a/Configurations/50-masm.conf b/Configurations/50-masm.conf index e2b54e345c..2c55dddc2a 100644 --- a/Configurations/50-masm.conf +++ b/Configurations/50-masm.conf @@ -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; }, diff --git a/Configurations/90-team.conf b/Configurations/90-team.conf index 31382182f0..a5cc6da449 100644 --- a/Configurations/90-team.conf +++ b/Configurations/90-team.conf @@ -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" => { diff --git a/Configurations/descrip.mms.tmpl b/Configurations/descrip.mms.tmpl index 2364644bbc..e8780e42d8 100644 --- a/Configurations/descrip.mms.tmpl +++ b/Configurations/descrip.mms.tmpl @@ -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}}) -} - -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} - // "" -} +##### User defined commands and flags ################################ + +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 - diff --git a/Configurations/shared-info.pl b/Configurations/shared-info.pl index 49b9cc9589..f3c4cb6f48 100644 --- a/Configurations/shared-info.pl +++ b/Configurations/shared-info.pl @@ -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; } diff --git a/Configurations/unix-Makefile.tmpl b/Configurations/unix-Makefile.tmpl index fd1f10948a..5d30fae927 100644 --- a/Configurations/unix-Makefile.tmpl +++ b/Configurations/unix-Makefile.tmpl @@ -188,60 +188,136 @@ 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} || ()) -} +##### 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 +# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC +# 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){- $target{rc} || "windres" -} -RCFLAGS={- join(' ', @{$config{rcflags}}) -} {- $target{shared_rcflag} -} +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} -} -MAKEDEPEND={- $config{makedepprog} -} +TAR= {- $target{TAR} || "tar" -} +TARFLAGS= {- $target{TARFLAGS} -} BASENAME= openssl NAME= $(BASENAME)-$(VERSION) TARFILE= ../$(NAME).tar -# 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 -# dependent assembler flags. E.g. if you throw -mcpu=ultrasparc at SPARC -# 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. +##### 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 { diff --git a/Configurations/windows-makefile.tmpl b/Configurations/windows-makefile.tmpl index dd0c84946b..83f893d6a8 100644 --- a/Configurations/windows-makefile.tmpl +++ b/Configurations/windows-makefile.tmpl @@ -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}}) -} - -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} || ()) -} +##### User defined commands and flags ################################ + +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}}) -} + +AS={- $config{AS} -} +ASFLAGS={- join(' ', @{$config{ASFLAGS}}) -} -MT={- $config{mt} -} -MTFLAGS= {- join(' ', @{$config{mtflags}}) -} -MTINFLAG={- $target{mtinflag} || "-manifest " -}$(OSSL_EMPTY) -MTOUTFLAG={- $target{mtoutflag} || "-outputresource:" -}$(OSSL_EMPTY) +RC={- $config{RC} -} -AS={- $config{as} -} -ASFLAGS={- join(' ', @{$config{asflags}}) -} +##### 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 diff --git a/Configure b/Configure index 93e7c0b751..368b8991cc 100755 --- a/Configure +++ b/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} = {}; diff --git a/apps/CA.pl.in b/apps/CA.pl.in index 784c22f6e1..bbaf6a9ab7 100644 --- a/apps/CA.pl.in +++ b/apps/CA.pl.in @@ -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 diff --git a/apps/tsget.in b/apps/tsget.in index 71bcc24525..c3420db608 100644 --- a/apps/tsget.in +++ b/apps/tsget.in @@ -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. # diff --git a/crypto/build.info b/crypto/build.info index 0a8f6e22aa..c406a11211 100644 --- a/crypto/build.info +++ b/crypto/build.info @@ -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) diff --git a/tools/c_rehash.in b/tools/c_rehash.in index e65822203d..3a9e44a5e0 100644 --- a/tools/c_rehash.in +++ b/tools/c_rehash.in @@ -1,4 +1,4 @@ -#!{- $config{hashbangperl} -} +#!{- $config{HASHBANGPERL} -} # {- join("\n# ", @autowarntext) -} # Copyright 1999-2016 The OpenSSL Project Authors. All Rights Reserved. -- 2.25.1