From: Piotr Kubaj Date: Fri, 29 Jul 2022 10:47:29 +0000 (+0200) Subject: Add BSD-armv4 target based on linux-armv4 X-Git-Tag: openssl-3.2.0-alpha1~2187 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a9389c0b75e69ebaf74fdc8fee0c983809e45931;p=thirdparty%2Fopenssl.git Add BSD-armv4 target based on linux-armv4 Reviewed-by: Matt Caswell Reviewed-by: Hugo Landau Reviewed-by: Todd Short Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/18910) --- diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 2c53f56bfff..036f0bbbc97 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -1111,6 +1111,43 @@ my %targets = ( asm_arch => 'riscv64', }, + "BSD-armv4" => { + ################################################################ + # Note that -march is not among compiler options in linux-armv4 + # target description. Not specifying one is intentional to give + # you choice to: + # + # a) rely on your compiler default by not specifying one; + # b) specify your target platform explicitly for optimal + # performance, e.g. -march=armv6 or -march=armv7-a; + # c) build "universal" binary that targets *range* of platforms + # by specifying minimum and maximum supported architecture; + # + # As for c) option. It actually makes no sense to specify + # maximum to be less than ARMv7, because it's the least + # requirement for run-time switch between platform-specific + # code paths. And without run-time switch performance would be + # equivalent to one for minimum. Secondly, there are some + # natural limitations that you'd have to accept and respect. + # Most notably you can *not* build "universal" binary for + # big-endian platform. This is because ARMv7 processor always + # picks instructions in little-endian order. Another similar + # limitation is that -mthumb can't "cross" -march=armv6t2 + # boundary, because that's where it became Thumb-2. Well, this + # limitation is a bit artificial, because it's not really + # impossible, but it's deemed too tricky to support. And of + # course you have to be sure that your binutils are actually + # up to the task of handling maximum target platform. With all + # this in mind here is an example of how to configure + # "universal" build: + # + # ./Configure BSD-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8 + # + inherit_from => [ "BSD-generic32" ], + asm_arch => 'armv4', + perlasm_scheme => "linux32", + }, + "bsdi-elf-gcc" => { inherit_from => [ "BASE_unix" ], CC => "gcc", diff --git a/util/perl/OpenSSL/config.pm b/util/perl/OpenSSL/config.pm index 380696d818c..874e6e6a52f 100755 --- a/util/perl/OpenSSL/config.pm +++ b/util/perl/OpenSSL/config.pm @@ -756,6 +756,8 @@ EOF [ 'x86_64-.*-dragonfly.*', { target => "BSD-x86_64" } ], [ 'amd64-.*-.*bsd.*', { target => "BSD-x86_64" } ], [ 'arm64-.*-.*bsd.*', { target => "BSD-aarch64" } ], + [ 'armv6-.*-.*bsd.*', { target => "BSD-armv4" } ], + [ 'armv7-.*-.*bsd.*', { target => "BSD-armv4" } ], [ '.*86.*-.*-.*bsd.*', sub { # mimic ld behaviour when it's looking for libc...