From e6f98ae404344e4aff55c209dc0f91d76e69fb27 Mon Sep 17 00:00:00 2001 From: Richard Levitte Date: Sun, 16 Jun 2019 13:32:58 +0200 Subject: [PATCH] Configure: add mechanism to specify asm target architecture As preparation for moving asm file specs to build.info files, we must make sure there is still some base information to help select the correct files. Reviewed-by: Matt Caswell (Merged from https://github.com/openssl/openssl/pull/9166) --- Configurations/00-base-templates.conf | 8 --- Configurations/10-main.conf | 100 ++++++++++++++++++++++++++ Configurations/15-android.conf | 7 ++ Configurations/15-ios.conf | 2 + Configurations/50-djgpp.conf | 1 + Configurations/50-haiku.conf | 2 + Configurations/50-masm.conf | 1 + Configurations/90-team.norelease.conf | 7 ++ Configurations/README | 2 + Configure | 2 + 10 files changed, 124 insertions(+), 8 deletions(-) diff --git a/Configurations/00-base-templates.conf b/Configurations/00-base-templates.conf index a6856d5ed5..08782c6842 100644 --- a/Configurations/00-base-templates.conf +++ b/Configurations/00-base-templates.conf @@ -190,7 +190,6 @@ my %targets=( x86_elf_asm => { template => 1, inherit_from => [ "x86_asm" ], - perlasm_scheme => "elf" }, x86_64_asm => { template => 1, @@ -218,7 +217,6 @@ my %targets=( modes_asm_src => "ghash-ia64.s", chacha_asm_src => "chacha-ia64.S", poly1305_asm_src=> "asm/poly1305-ia64.S", - perlasm_scheme => "void" }, sparcv9_asm => { template => 1, @@ -232,14 +230,12 @@ my %targets=( cmll_asm_src => "camellia.c cmll_misc.c cmll_cbc.c cmllt4-sparcv9.S", modes_asm_src => "ghash-sparcv9.S", poly1305_asm_src=> "poly1305-sparcv9.S", - perlasm_scheme => "void" }, sparcv8_asm => { template => 1, cpuid_asm_src => "", bn_asm_src => "asm/sparcv8.S", des_asm_src => "des_enc-sparc.S fcrypt_b.c", - perlasm_scheme => "void" }, alpha_asm => { template => 1, @@ -247,7 +243,6 @@ my %targets=( bn_asm_src => "bn_asm.c alpha-mont.S", sha1_asm_src => "sha1-alpha.S", modes_asm_src => "ghash-alpha.S", - perlasm_scheme => "void" }, mips32_asm => { template => 1, @@ -284,7 +279,6 @@ my %targets=( chacha_asm_src => "chacha-armv4.S", poly1305_asm_src=> "poly1305-armv4.S", keccak1600_asm_src => "keccak1600-armv4.S", - perlasm_scheme => "void" }, aarch64_asm => { template => 1, @@ -306,12 +300,10 @@ my %targets=( sha1_asm_src => "sha1-parisc.s sha256-parisc.s sha512-parisc.s", rc4_asm_src => "rc4-parisc.s", modes_asm_src => "ghash-parisc.s", - perlasm_scheme => "32" }, parisc20_64_asm => { template => 1, inherit_from => [ "parisc11_asm" ], - perlasm_scheme => "64", }, ppc32_asm => { template => 1, diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index 8d52aa1650..27d02e24b5 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -232,6 +232,8 @@ my %targets = ( bn_ops => "BN_LLONG", shared_cflag => "-fPIC", shared_ldflag => add_before("-shared -static-libgcc"), + asm_arch => 'x86', + perlasm_scheme => 'elf', }, "solaris64-x86_64-gcc" => { # -shared -static-libgcc might appear controversial, but modules @@ -251,6 +253,7 @@ my %targets = ( lib_cppflags => add("-DL_ENDIAN"), ex_libs => add(threads("-pthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'x86_64', perlasm_scheme => "elf", shared_cflag => "-fPIC", shared_ldflag => add_before("-shared -static-libgcc"), @@ -282,6 +285,7 @@ my %targets = ( lflags => add(threads("-mt")), ex_libs => add(threads("-lpthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'x86_64', perlasm_scheme => "elf", shared_cflag => "-KPIC", shared_ldflag => add_before("-G -dy -z text"), @@ -305,12 +309,16 @@ my %targets = ( "solaris-sparcv8-gcc" => { inherit_from => [ "solaris-sparcv7-gcc", asm("sparcv8_asm") ], cflags => add_before("-mcpu=v8"), + asm_arch => 'sparcv8', + perlasm_scheme => 'void', }, "solaris-sparcv9-gcc" => { # -m32 should be safe to add as long as driver recognizes # -mcpu=ultrasparc inherit_from => [ "solaris-sparcv7-gcc", asm("sparcv9_asm") ], cflags => add_before("-m32 -mcpu=ultrasparc"), + asm_arch => 'sparcv9', + perlasm_scheme => 'void', }, "solaris64-sparcv9-gcc" => { inherit_from => [ "solaris-sparcv9-gcc" ], @@ -341,15 +349,21 @@ my %targets = ( "solaris-sparcv8-cc" => { inherit_from => [ "solaris-sparcv7-cc", asm("sparcv8_asm") ], cflags => add_before("-xarch=v8"), + asm_arch => 'sparcv8', + perlasm_scheme => 'void', }, "solaris-sparcv9-cc" => { inherit_from => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ], cflags => add_before("-xarch=v8plus"), + asm_arch => 'sparcv9', + perlasm_scheme => 'void', }, "solaris64-sparcv9-cc" => { inherit_from => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ], cflags => add_before("-xarch=v9"), bn_ops => "BN_LLONG RC4_CHAR", + asm_arch => 'sparcv9', + perlasm_scheme => 'void', multilib => "/64", }, @@ -375,6 +389,7 @@ my %targets = ( LDFLAGS => "-static-libgcc", cflags => "-mabi=n32", bn_ops => "RC4_CHAR SIXTY_FOUR_BIT", + asm_arch => 'mips64', perlasm_scheme => "n32", multilib => "32", }, @@ -385,6 +400,7 @@ my %targets = ( release => "-O2"), cflags => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared", bn_ops => "RC4_CHAR SIXTY_FOUR_BIT", + asm_arch => 'mips64', perlasm_scheme => "n32", multilib => "32", }, @@ -397,6 +413,7 @@ my %targets = ( LDFLAGS => "-static-libgcc", cflags => "-mabi=64 -mips4", bn_ops => "RC4_CHAR SIXTY_FOUR_BIT_LONG", + asm_arch => 'mips64', perlasm_scheme => "64", multilib => "64", }, @@ -407,6 +424,7 @@ my %targets = ( release => "-O2"), cflags => "-64 -mips4 -use_readonly_const -G0 -rdata_shared", bn_ops => "RC4_CHAR SIXTY_FOUR_BIT_LONG", + asm_arch => 'mips64', perlasm_scheme => "64", multilib => "64", }, @@ -467,6 +485,8 @@ my %targets = ( }, "hpux-parisc1_1-gcc" => { inherit_from => [ "hpux-parisc-gcc", asm("parisc11_asm") ], + asm_arch => 'parisc11', + perlasm_scheme => "32", multilib => "/pa1.1", }, "hpux64-parisc2-gcc" => { @@ -477,6 +497,8 @@ my %targets = ( cflags => add(threads("-pthread")), ex_libs => add("-ldl", threads("-pthread")), bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + asm_arch => 'parisc20_64', + perlasm_scheme => "64", shared_cflag => "-fpic", shared_ldflag => add_before("-shared"), shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)", @@ -502,6 +524,8 @@ my %targets = ( "hpux-parisc1_1-cc" => { inherit_from => [ "hpux-parisc-cc", asm("parisc11_asm") ], cflags => add_before("+DA1.1"), + asm_arch => 'parisc11', + perlasm_scheme => "32", multilib => "/pa1.1", }, "hpux64-parisc2-cc" => { @@ -514,6 +538,8 @@ my %targets = ( lib_cppflags => add("-DMD32_XARRAY"), ex_libs => add("-ldl", threads("-lpthread")), bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + asm_arch => 'parisc20_64', + perlasm_scheme => "64", shared_cflag => "+Z", shared_ldflag => add_before("-b"), shared_extension => ".sl.\$(SHLIB_VERSION_NUMBER)", @@ -530,6 +556,8 @@ my %targets = ( cppflags => add(threads("-D_REENTRANT")), ex_libs => add("-ldl", threads("-lpthread")), bn_ops => "SIXTY_FOUR_BIT", + asm_arch => 'ia64', + perlasm_scheme => 'void', shared_cflag => "+Z", shared_ldflag => add_before("-b"), multilib => "/hpux32", @@ -543,6 +571,8 @@ my %targets = ( cppflags => threads("-D_REENTRANT"), ex_libs => add("-ldl", threads("-lpthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'ia64', + perlasm_scheme => 'void', shared_cflag => "+Z", shared_ldflag => add_before("-b"), multilib => "/hpux64", @@ -556,6 +586,8 @@ my %targets = ( cflags => add(threads("-pthread")), ex_libs => add("-ldl", threads("-pthread")), bn_ops => "SIXTY_FOUR_BIT", + asm_arch => 'ia64', + perlasm_scheme => 'void', shared_cflag => "-fpic", shared_ldflag => add_before("-shared"), multilib => "/hpux32", @@ -568,6 +600,8 @@ my %targets = ( cflags => combine("-mlp64", threads("-pthread")), ex_libs => add("-ldl", threads("-pthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'ia64', + perlasm_scheme => 'void', shared_cflag => "-fpic", shared_ldflag => add_before("-shared"), multilib => "/hpux64", @@ -600,6 +634,8 @@ my %targets = ( cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE", ex_libs => add("-lrt", threads("-pthread")), # for mlock(2) bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'alpha', + perlasm_scheme => "void", thread_scheme => "pthreads", dso_scheme => "dlfcn", shared_target => "alpha-osf1-shared", @@ -614,6 +650,8 @@ my %targets = ( cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE", ex_libs => add("-lrt", threads("-pthread")), # for mlock(2) bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'alpha', + perlasm_scheme => "void", thread_scheme => "pthreads", dso_scheme => "dlfcn", shared_target => "alpha-osf1-shared", @@ -655,6 +693,7 @@ my %targets = ( "linux-ppc" => { inherit_from => [ "linux-generic32", asm("ppc32_asm") ], + asm_arch => 'ppc32', perlasm_scheme => "linux32", }, "linux-ppc64" => { @@ -662,6 +701,7 @@ my %targets = ( cflags => add("-m64"), cxxflags => add("-m64"), lib_cppflags => add("-DB_ENDIAN"), + asm_arch => 'ppc64', perlasm_scheme => "linux64", multilib => "64", }, @@ -670,6 +710,7 @@ my %targets = ( cflags => add("-m64"), cxxflags => add("-m64"), lib_cppflags => add("-DL_ENDIAN"), + asm_arch => 'ppc64', perlasm_scheme => "linux64le", }, @@ -706,10 +747,12 @@ my %targets = ( # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8 # inherit_from => [ "linux-generic32", asm("armv4_asm") ], + asm_arch => 'armv4', perlasm_scheme => "linux32", }, "linux-aarch64" => { inherit_from => [ "linux-generic64", asm("aarch64_asm") ], + asm_arch => 'aarch64', perlasm_scheme => "linux64", }, "linux-arm64ilp32" => { # https://wiki.linaro.org/Platform/arm64-ilp32 @@ -717,6 +760,7 @@ my %targets = ( cflags => add("-mabi=ilp32"), cxxflags => add("-mabi=ilp32"), bn_ops => "SIXTY_FOUR_BIT RC4_CHAR", + asm_arch => 'aarch64', perlasm_scheme => "linux64", }, @@ -726,6 +770,7 @@ my %targets = ( inherit_from => [ "linux-generic32", asm("mips32_asm") ], cflags => add("-mabi=32"), cxxflags => add("-mabi=32"), + asm_arch => 'mips32', perlasm_scheme => "o32", }, # mips32 and mips64 below refer to contemporary MIPS Architecture @@ -735,6 +780,7 @@ my %targets = ( cflags => add("-mabi=n32"), cxxflags => add("-mabi=n32"), bn_ops => "SIXTY_FOUR_BIT RC4_CHAR", + asm_arch => 'mips64', perlasm_scheme => "n32", multilib => "32", }, @@ -742,6 +788,7 @@ my %targets = ( inherit_from => [ "linux-generic64", asm("mips64_asm") ], cflags => add("-mabi=64"), cxxflags => add("-mabi=64"), + asm_arch => 'mips64', perlasm_scheme => "64", multilib => "64", }, @@ -754,6 +801,8 @@ my %targets = ( CFLAGS => add(picker(release => "-fomit-frame-pointer")), lib_cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG", + asm_arch => 'x86', + perlasm_scheme => "elf", }, "linux-aout" => { inherit_from => [ "BASE_unix", asm("x86_asm") ], @@ -764,6 +813,7 @@ my %targets = ( lib_cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG", thread_scheme => "(unknown)", + asm_arch => 'x86', perlasm_scheme => "a.out", }, @@ -775,6 +825,7 @@ my %targets = ( cxxflags => add("-m32"), lib_cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG", + asm_arch => 'x86', perlasm_scheme => "elf", }, "linux-x86-clang" => { @@ -788,6 +839,7 @@ my %targets = ( cxxflags => add("-m64"), lib_cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'x86_64', perlasm_scheme => "elf", multilib => "64", }, @@ -802,6 +854,7 @@ my %targets = ( cxxflags => add("-mx32"), lib_cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT", + asm_arch => 'x86_64', perlasm_scheme => "elf32", multilib => "x32", }, @@ -809,6 +862,8 @@ my %targets = ( "linux-ia64" => { inherit_from => [ "linux-generic64", asm("ia64_asm") ], bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'ia64', + perlasm_scheme => 'void', }, "linux64-s390x" => { @@ -816,6 +871,7 @@ my %targets = ( cflags => add("-m64"), cxxflags => add("-m64"), lib_cppflags => add("-DB_ENDIAN"), + asm_arch => 's390x', perlasm_scheme => "64", multilib => "64", }, @@ -841,6 +897,7 @@ my %targets = ( cxxflags => add("-m31 -Wa,-mzarch"), lib_cppflags => add("-DB_ENDIAN"), bn_asm_src => sub { my $r=join(" ",@_); $r=~s|asm/s390x\.S|bn_asm.c|; $r; }, + asm_arch => 's390x', perlasm_scheme => "31", multilib => "/highgprs", }, @@ -851,6 +908,8 @@ my %targets = ( cflags => add("-mcpu=v8"), cxxflags => add("-mcpu=v8"), lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"), + asm_arch => 'sparcv8', + perlasm_scheme => 'void', }, "linux-sparcv9" => { # it's a real mess with -mcpu=ultrasparc option under Linux, @@ -859,6 +918,8 @@ my %targets = ( cflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"), cxxflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"), lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"), + asm_arch => 'sparcv9', + perlasm_scheme => 'void', }, "linux64-sparcv9" => { # GCC 3.1 is a requirement @@ -867,6 +928,8 @@ my %targets = ( cxxflags => add("-m64 -mcpu=ultrasparc"), lib_cppflags => add("-DB_ENDIAN"), bn_ops => "BN_LLONG RC4_CHAR", + asm_arch => 'sparcv9', + perlasm_scheme => 'void', multilib => "64", }, @@ -874,6 +937,8 @@ my %targets = ( inherit_from => [ "linux-generic64", asm("alpha_asm") ], lib_cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'alpha', + perlasm_scheme => "void", }, "linux-c64xplus" => { inherit_from => [ "BASE_unix" ], @@ -894,6 +959,7 @@ my %targets = ( chacha_asm_src => "chacha-c64xplus.s", poly1305_asm_src => "poly1305-c64xplus.s", thread_scheme => "pthreads", + asm_arch => 'c64xplus', perlasm_scheme => "void", dso_scheme => "dlfcn", shared_target => "linux-shared", @@ -937,6 +1003,7 @@ my %targets = ( lib_cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG", shared_target => "bsd-shared", + asm_arch => 'x86', perlasm_scheme => "a.out", }, "BSD-x86-elf" => { @@ -948,6 +1015,8 @@ my %targets = ( inherit_from => [ "BSD-generic32", asm("sparcv8_asm") ], cflags => add("-mcpu=v8"), lib_cppflags => add("-DB_ENDIAN"), + asm_arch => 'sparcv8', + perlasm_scheme => 'void', }, "BSD-sparc64" => { # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it @@ -956,18 +1025,23 @@ my %targets = ( inherit_from => [ "BSD-generic64", asm("sparcv9_asm") ], lib_cppflags => add("-DB_ENDIAN -DMD32_REG_T=int"), bn_ops => "BN_LLONG", + asm_arch => 'sparcv9', + perlasm_scheme => 'void', }, "BSD-ia64" => { inherit_from => [ "BSD-generic64", asm("ia64_asm") ], lib_cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'ia64', + perlasm_scheme => 'void', }, "BSD-x86_64" => { inherit_from => [ "BSD-generic64", asm("x86_64_asm") ], lib_cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'x86_64', perlasm_scheme => "elf", }, @@ -978,6 +1052,8 @@ my %targets = ( lib_cppflags => "-DPERL5 -DL_ENDIAN", ex_libs => add("-ldl"), bn_ops => "BN_LLONG", + asm_arch => 'x86', + perlasm_scheme => "elf", thread_scheme => "(unknown)", dso_scheme => "dlfcn", shared_target => "bsd-gcc-shared", @@ -1038,6 +1114,7 @@ my %targets = ( ex_libs => add("-lsocket -lnsl"), thread_scheme => "uithreads", bn_ops => "BN_LLONG", + asm_arch => 'x86', perlasm_scheme => "elf-1", dso_scheme => "dlfcn", shared_target => "svr5-shared", @@ -1052,6 +1129,7 @@ my %targets = ( ex_libs => add("-lsocket -lnsl"), bn_ops => "BN_LLONG", thread_scheme => "pthreads", + asm_arch => 'x86', perlasm_scheme => "elf-1", dso_scheme => "dlfcn", shared_target => "gnu-shared", @@ -1064,6 +1142,7 @@ my %targets = ( cflags => "-belf", ex_libs => add("-lsocket -lnsl"), thread_scheme => "(unknown)", + asm_arch => 'x86', perlasm_scheme => "elf-1", dso_scheme => "dlfcn", shared_target => "svr3-shared", @@ -1076,6 +1155,7 @@ my %targets = ( ex_libs => add("-lsocket -lnsl"), bn_ops => "BN_LLONG", thread_scheme => "(unknown)", + asm_arch => 'x86', perlasm_scheme => "elf-1", dso_scheme => "dlfcn", shared_target => "svr3-shared", @@ -1110,6 +1190,7 @@ my %targets = ( cflags => add(threads("-pthread")), ex_libs => threads("-pthread"), bn_ops => "BN_LLONG RC4_CHAR", + asm_arch => 'ppc32', perlasm_scheme => "aix32", shared_ldflag => add_before("-shared -static-libgcc"), AR => add("-X32"), @@ -1123,6 +1204,7 @@ my %targets = ( cflags => combine("-maix64", threads("-pthread")), ex_libs => threads("-pthread"), bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + asm_arch => 'ppc64', perlasm_scheme => "aix64", shared_ldflag => add_before("-shared -static-libgcc"), shared_extension => "64.so.\$(SHLIB_VERSION_NUMBER)", @@ -1139,6 +1221,7 @@ my %targets = ( cppflags => threads("-D_THREAD_SAFE"), ex_libs => threads("-lpthreads"), bn_ops => "BN_LLONG RC4_CHAR", + asm_arch => 'ppc32', perlasm_scheme => "aix32", shared_cflag => "-qpic", AR => add("-X32"), @@ -1154,6 +1237,7 @@ my %targets = ( cppflags => threads("-D_THREAD_SAFE"), ex_libs => threads("-lpthreads"), bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + asm_arch => 'ppc64', perlasm_scheme => "aix64", dso_scheme => "dlfcn", shared_cflag => "-qpic", @@ -1279,6 +1363,7 @@ my %targets = ( bn_asm_src => sub { return undef unless @_; my $r=join(" ",@_); $r=~s|bn-ia64.s|bn_asm.c|; $r; }, uplink_arch => 'ia64', + asm_arch => 'ia64', perlasm_scheme => "ias", multilib => "-ia64", }, @@ -1292,6 +1377,7 @@ my %targets = ( bn_asm_src => sub { return undef unless @_; my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; }, uplink_arch => 'x86_64', + asm_arch => 'x86_64', perlasm_scheme => "auto", multilib => "-x64", }, @@ -1305,6 +1391,7 @@ my %targets = ( sys_id => "WIN32", bn_ops => add("BN_LLONG"), uplink_arch => 'common', + asm_arch => 'x86', perlasm_scheme => sub { vc_win32_info()->{perlasm_scheme} }, # "WOW" stands for "Windows on Windows", and "VC-WOW" engages # some installation path heuristics in windows-makefile.tmpl... @@ -1384,6 +1471,7 @@ my %targets = ( cflags => "-m32", sys_id => "MINGW32", bn_ops => add("BN_LLONG"), + asm_arch => 'x86', uplink_arch => 'x86', perlasm_scheme => "coff", shared_rcflag => "--target=pe-i386", @@ -1402,6 +1490,7 @@ my %targets = ( cflags => "-m64", sys_id => "MINGW64", bn_ops => add("SIXTY_FOUR_BIT"), + asm_arch => 'x86_64', uplink_arch => undef, perlasm_scheme => "mingw64", shared_rcflag => "--target=pe-x86-64", @@ -1450,12 +1539,14 @@ my %targets = ( inherit_from => [ "Cygwin-common", asm("x86_asm") ], CFLAGS => add(picker(release => "-O3 -fomit-frame-pointer")), bn_ops => "BN_LLONG", + asm_arch => 'x86', perlasm_scheme => "coff", }, "Cygwin-x86_64" => { inherit_from => [ "Cygwin-common", asm("x86_64_asm") ], CC => "gcc", bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'x86_64', perlasm_scheme => "mingw64", }, # Backward compatibility for those using this target @@ -1503,6 +1594,7 @@ my %targets = ( cflags => add("-arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL"), lib_cppflags => add("-DB_ENDIAN"), shared_cflag => add("-fno-common"), + asm_arch => 'ppc32', perlasm_scheme => "osx32", }, "darwin64-ppc-cc" => { @@ -1510,6 +1602,7 @@ my %targets = ( cflags => add("-arch ppc64 -std=gnu9x"), lib_cppflags => add("-DB_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + asm_arch => 'ppc64', perlasm_scheme => "osx64", }, "darwin-i386-cc" => { @@ -1518,6 +1611,7 @@ my %targets = ( cflags => add("-arch i386"), lib_cppflags => add("-DL_ENDIAN"), bn_ops => "BN_LLONG RC4_INT", + asm_arch => 'x86', perlasm_scheme => "macosx", }, "darwin64-x86_64-cc" => { @@ -1526,6 +1620,7 @@ my %targets = ( cflags => add("-arch x86_64"), lib_cppflags => add("-DL_ENDIAN"), bn_ops => "SIXTY_FOUR_BIT_LONG", + asm_arch => 'x86_64', perlasm_scheme => "macosx", }, @@ -1539,6 +1634,8 @@ my %targets = ( lib_cppflags => "-DL_ENDIAN", ex_libs => add("-ldl", threads("-pthread")), bn_ops => "BN_LLONG", + asm_arch => 'x86', + perlasm_scheme => 'elf', thread_scheme => "pthreads", dso_scheme => "dlfcn", shared_target => "linux-shared", @@ -1643,6 +1740,7 @@ my %targets = ( lflags => add("-L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon"), ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"), thread_scheme => "pthreads", + asm_arch => 'mips32', perlasm_scheme => "o32", ranlib => "ranlibmips", }, @@ -1760,6 +1858,8 @@ my %targets = ( sub { vms_info()->{AS} ? asm("ia64_asm")->() : () } ], bn_ops => "SIXTY_FOUR_BIT RC4_INT", + asm_arch => sub { vms_info()->{AS} ? 'ia64' : undef }, + perlasm_scheme => 'ias', pointer_size => "", modes_asm_src => "", # Because ghash-ia64.s doesn't work on VMS diff --git a/Configurations/15-android.conf b/Configurations/15-android.conf index 7b496a4529..62111a64d7 100644 --- a/Configurations/15-android.conf +++ b/Configurations/15-android.conf @@ -201,16 +201,20 @@ my %targets = ( # inherit_from => [ "android", asm("armv4_asm") ], bn_ops => add("RC4_CHAR"), + asm_arch => 'armv4', + perlasm_scheme => "void", }, "android-arm64" => { inherit_from => [ "android", asm("aarch64_asm") ], bn_ops => add("RC4_CHAR"), + asm_arch => 'aarch64', perlasm_scheme => "linux64", }, "android-mips" => { inherit_from => [ "android", asm("mips32_asm") ], bn_ops => add("RC4_CHAR"), + asm_arch => 'mips32', perlasm_scheme => "o32", }, "android-mips64" => { @@ -225,6 +229,7 @@ my %targets = ( # inherit_from => [ "android", asm("mips64_asm") ], bn_ops => add("RC4_CHAR"), + asm_arch => 'mips64', perlasm_scheme => "64", }, @@ -232,11 +237,13 @@ my %targets = ( inherit_from => [ "android", asm("x86_asm") ], CFLAGS => add(picker(release => "-fomit-frame-pointer")), bn_ops => add("RC4_INT"), + asm_arch => 'x86', perlasm_scheme => "android", }, "android-x86_64" => { inherit_from => [ "android", asm("x86_64_asm") ], bn_ops => add("RC4_INT"), + asm_arch => 'x86_64', perlasm_scheme => "elf", }, diff --git a/Configurations/15-ios.conf b/Configurations/15-ios.conf index 1bb9f48d06..1e3bd9cdcb 100644 --- a/Configurations/15-ios.conf +++ b/Configurations/15-ios.conf @@ -19,6 +19,7 @@ my %targets = ( # at this point. CC => "xcrun -sdk iphoneos cc", cflags => add("-arch armv7 -mios-version-min=6.0.0 -fno-common"), + asm_arch => 'armv4', perlasm_scheme => "ios32", }, "ios64-xcrun" => { @@ -26,6 +27,7 @@ my %targets = ( CC => "xcrun -sdk iphoneos cc", cflags => add("-arch arm64 -mios-version-min=7.0.0 -fno-common"), bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", + asm_arch => 'aarch64', perlasm_scheme => "ios64", }, "iossimulator-xcrun" => { diff --git a/Configurations/50-djgpp.conf b/Configurations/50-djgpp.conf index a8853a81a1..72c8d481fb 100644 --- a/Configurations/50-djgpp.conf +++ b/Configurations/50-djgpp.conf @@ -12,6 +12,7 @@ my %targets = ( lflags => add("-L/dev/env/WATT_ROOT/lib"), ex_libs => add("-lwatt"), bn_ops => "BN_LLONG", + asm_arch => 'x86', perlasm_scheme => "a.out", }, ); diff --git a/Configurations/50-haiku.conf b/Configurations/50-haiku.conf index 5bc4db5f6e..5543e777cb 100644 --- a/Configurations/50-haiku.conf +++ b/Configurations/50-haiku.conf @@ -21,6 +21,8 @@ my %targets = ( inherit_from => [ "haiku-common", asm("x86_elf_asm") ], CFLAGS => add(picker(release => "-fomit-frame-pointer")), bn_ops => "BN_LLONG", + asm_arch => 'x86', + perlasm_scheme => 'elf', }, "haiku-x86_64" => { inherit_from => [ "haiku-common" ], diff --git a/Configurations/50-masm.conf b/Configurations/50-masm.conf index ae7a9b7fc4..9120d53741 100644 --- a/Configurations/50-masm.conf +++ b/Configurations/50-masm.conf @@ -18,6 +18,7 @@ my %targets = ( bn_asm_src => sub { return undef unless @_; my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; }, uplink_arch => 'x86_64', + asm_arch => 'x86_64', perlasm_scheme => "masm", }, ); diff --git a/Configurations/90-team.norelease.conf b/Configurations/90-team.norelease.conf index 7f738e4965..6d1cbfcfef 100644 --- a/Configurations/90-team.norelease.conf +++ b/Configurations/90-team.norelease.conf @@ -24,6 +24,7 @@ my %targets = ( ex_libs => add(" ","-ldl"), bn_ops => "SIXTY_FOUR_BIT_LONG", thread_scheme => "pthreads", + asm_arch => 'x86_64', perlasm_scheme => "elf", dso_scheme => "dlfcn", shared_target => "linux-shared", @@ -38,6 +39,8 @@ my %targets = ( threads("-D_REENTRANT")), ex_libs => add(" ","-ldl"), bn_ops => "BN_LLONG", + asm_arch => 'x86', + perlasm_scheme => 'elf', thread_scheme => "pthreads", dso_scheme => "dlfcn", }, @@ -48,6 +51,8 @@ my %targets = ( threads("-D_REENTRANT")), ex_libs => add(" ","-ldl"), bn_ops => "BN_LLONG", + asm_arch => 'x86', + perlasm_scheme => 'elf', thread_scheme => "pthreads", dso_scheme => "dlfcn", }, @@ -86,6 +91,7 @@ my %targets = ( threads("${BSDthreads}")), bn_ops => "SIXTY_FOUR_BIT_LONG", thread_scheme => "pthreads", + asm_arch => 'x86_64', perlasm_scheme => "elf", dso_scheme => "dlfcn", shared_target => "bsd-gcc-shared", @@ -101,6 +107,7 @@ my %targets = ( sys_id => "MACOSX", bn_ops => "SIXTY_FOUR_BIT_LONG", thread_scheme => "pthreads", + asm_arch => 'x86_64', perlasm_scheme => "macosx", dso_scheme => "dlfcn", shared_target => "darwin-shared", diff --git a/Configurations/README b/Configurations/README index 72eb2b3215..eaf5164829 100644 --- a/Configurations/README +++ b/Configurations/README @@ -165,6 +165,8 @@ In each table entry, the following keys are significant: that use dlopen() et al but do not have fcntl.h), "DL" (shl_load() et al), "WIN32" and "VMS". + asm_arch => The architecture to be used for compiling assembly + source. This acts as a selector in build.info files. uplink_arch => The architecture to be used for compiling uplink source. This acts as a selector in build.info files. This is separate from asm_arch because it's compiled diff --git a/Configure b/Configure index 54c42a2aa3..4cb331ffeb 100755 --- a/Configure +++ b/Configure @@ -1138,6 +1138,8 @@ foreach my $feature (@{$target{enable}}) { # If uplink_arch isn't defined, disable uplink $disabled{uplink} = 'no uplink_arch' unless (defined $target{uplink_arch}); +# If asm_arch isn't defined, disable asm +$disabled{asm} = 'no asm_arch' unless (defined $target{asm_arch}); disable(); # Run a cascade now -- 2.25.1