X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=Configurations%2F10-main.conf;h=fc673a1db3b22f543686b251af1536fd60b16abc;hp=cc1a207ea8ce58c66fc2d5a0e4a5f53fff16342d;hb=7763472fe8fe42a1c830fcc9d35ca11fd9e6fcab;hpb=2b58c83e6271cd9ca4cde02d58cb428c351908f9 diff --git a/Configurations/10-main.conf b/Configurations/10-main.conf index cc1a207ea8..fc673a1db3 100644 --- a/Configurations/10-main.conf +++ b/Configurations/10-main.conf @@ -14,7 +14,10 @@ sub vc_win64a_info { asflags => "/c /Cp /Cx /Zi", asoutflag => "/Fo" }; } else { - die "NASM not found - please read INSTALL and NOTES.WIN for further details\n"; + $die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n"); + $vc_win64a_info = { as => "{unknown}", + asflags => "", + asoutflag => "" }; } } return $vc_win64a_info; @@ -36,7 +39,11 @@ sub vc_win32_info { asoutflag => "/Fo", perlasm_scheme => "win32" }; } else { - die "NASM not found - please read INSTALL and NOTES.WIN for further details\n"; + $die->("NASM not found - please read INSTALL and NOTES.WIN for further details\n"); + $vc_win32_info = { as => "{unknown}", + asflags => "", + asoutflag => "", + perlasm_scheme => "win32" }; } } return $vc_win32_info; @@ -46,18 +53,26 @@ my $vc_wince_info = {}; sub vc_wince_info { unless (%$vc_wince_info) { # sanity check - die '%OSVERSION% is not defined' if (!defined($ENV{'OSVERSION'})); - die '%PLATFORM% is not defined' if (!defined($ENV{'PLATFORM'})); - die '%TARGETCPU% is not defined' if (!defined($ENV{'TARGETCPU'})); + $die->('%OSVERSION% is not defined') if (!defined($ENV{'OSVERSION'})); + $die->('%PLATFORM% is not defined') if (!defined($ENV{'PLATFORM'})); + $die->('%TARGETCPU% is not defined') if (!defined($ENV{'TARGETCPU'})); # # Idea behind this is to mimic flags set by eVC++ IDE... # my $wcevers = $ENV{'OSVERSION'}; # WCENNN - die '%OSVERSION% value is insane' - if ($wcevers !~ /^WCE([1-9])([0-9]{2})$/); - my $wcecdefs = "-D_WIN32_WCE=$1$2 -DUNDER_CE=$1$2"; # -D_WIN32_WCE=NNN - my $wcelflag = "/subsystem:windowsce,$1.$2"; # ...,N.NN + my $wcevernum; + my $wceverdotnum; + if ($wcevers =~ /^WCE([1-9])([0-9]{2})$/) { + $wcevernum = "$1$2"; + $wceverdotnum = "$1.$2"; + } else { + $die->('%OSVERSION% value is insane'); + $wcevernum = "{unknown}"; + $wceverdotnum = "{unknown}"; + } + my $wcecdefs = "-D_WIN32_WCE=$wcevernum -DUNDER_CE=$wcevernum"; # -D_WIN32_WCE=NNN + my $wcelflag = "/subsystem:windowsce,$wceverdotnum"; # ...,N.NN my $wceplatf = $ENV{'PLATFORM'}; @@ -185,7 +200,7 @@ sub vms_info { threads("-pthread")), bn_ops => "BN_LLONG", shared_cflag => "-fPIC", - shared_ldflag => "-shared", + shared_ldflag => "-shared -static-libgcc", }, "solaris64-x86_64-gcc" => { # -shared -static-libgcc might appear controversial, but modules @@ -210,19 +225,18 @@ sub vms_info { }, #### Solaris x86 with Sun C setups - "solaris-x86-cc" => { - inherit_from => [ "solaris-common" ], - cc => "cc", - cflags => add_before(picker(default => "-xarch=generic -xstrconst -Xa -DL_ENDIAN", - debug => "-g", - release => "-xO5 -xregs=frameptr -xdepend -xbuiltin"), - threads("-D_REENTRANT")), - lflags => add(threads("-mt")), - ex_libs => add(threads("-lpthread")), - bn_ops => "BN_LLONG RC4_CHAR", - shared_cflag => "-KPIC", - shared_ldflag => "-G -dy -z text", - }, + # There used to be solaris-x86-cc target, but it was removed, + # primarily because vendor assembler can't assemble our modules + # with -KPIC flag. As result it, assembly support, was not even + # available as option. But its lack means lack of side-channel + # resistant code, which is incompatible with security by todays + # standards. Fortunately gcc is readily available prepackaged + # option, which we can firmly point at... + # + # On related note, solaris64-x86_64-cc target won't compile code + # paths utilizing AVX and post-Haswell instruction extensions. + # Consider switching to solaris64-x86_64-gcc even here... + # "solaris64-x86_64-cc" => { inherit_from => [ "solaris-common", asm("x86_64_asm") ], cc => "cc", @@ -231,7 +245,7 @@ sub vms_info { release => "-xO5 -xdepend -xbuiltin"), threads("-D_REENTRANT")), thread_scheme => "pthreads", - lflags => add(threads("-mt")), + lflags => add("-xarch=generic64",threads("-mt")), ex_libs => add(threads("-lpthread")), bn_ops => "SIXTY_FOUR_BIT_LONG", perlasm_scheme => "elf", @@ -294,11 +308,12 @@ sub vms_info { }, "solaris-sparcv9-cc" => { inherit_from => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ], - cflags => add_before("-xarch=v8plus -xtarget=ultra"), + cflags => add_before("-xarch=v8plus"), }, "solaris64-sparcv9-cc" => { inherit_from => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ], - cflags => add_before("-xarch=v9 -xtarget=ultra"), + cflags => add_before("-xarch=v9"), + lflags => add_before("-xarch=v9"), bn_ops => "BN_LLONG RC4_CHAR", shared_ldflag => "-xarch=v9 -G -dy -z text", multilib => "/64", @@ -850,7 +865,7 @@ sub vms_info { # # It takes pair of prior-set environment variables to make it work: # - # CROSS_SYSROOT=/some/where/android-ndk-/platforms/android-/arch-< + # CROSS_SYSROOT=/some/where/android-ndk-/platforms/android-/arch- # CROSS_COMPILE= # # As well as PATH adjusted to cover ${CROSS_COMPILE}gcc and company. @@ -859,7 +874,7 @@ sub vms_info { # ANDROID_NDK=/some/where/android-ndk-10d # CROSS_SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm # CROSS_COMPILE=arm-linux-adroideabi- - # PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuild/linux-x86_64/ + # PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuild/linux-x86_64/bin # "android" => { inherit_from => [ "linux-generic32" ], @@ -919,6 +934,23 @@ sub vms_info { inherit_from => [ "android64", asm("aarch64_asm") ], perlasm_scheme => "linux64", }, + "android64-x86_64" => { + inherit_from => [ "android64", asm("x86_64_asm") ], + perlasm_scheme => "elf", + }, + "android64-mips64" => { + ############################################################ + # You are more than likely have to specify target processor + # on ./Configure command line. Trouble is that toolchain's + # default is MIPS64r6 (at least in r10d), but there are no + # such processors around (or they are too rare to spot one). + # Actual problem is that MIPS64r6 is binary incompatible + # with previous MIPS ISA versions, in sense that unlike + # prior versions original MIPS binary code will fail. + # + inherit_from => [ "android64", asm("mips64_asm") ], + perlasm_scheme => "64", + }, #### *BSD "BSD-generic32" => { @@ -1127,6 +1159,11 @@ sub vms_info { }, #### IBM's AIX. + # Below targets assume AIX >=5. Caveat lector. If you are accustomed + # to control compilation "bitness" by setting $OBJECT_MODE environment + # variable, then you should know that in OpenSSL case it's considered + # only in ./config. Once configured, build procedure remains "deaf" to + # current value of $OBJECT_MODE. "aix-gcc" => { inherit_from => [ "BASE_unix", asm("ppc32_asm") ], cc => "gcc", @@ -1140,7 +1177,7 @@ sub vms_info { perlasm_scheme => "aix32", dso_scheme => "dlfcn", shared_target => "aix-shared", - shared_ldflag => "-shared -Wl,-G", + shared_ldflag => "-shared -static-libgcc -Wl,-G", shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", arflags => "-X32", }, @@ -1157,13 +1194,10 @@ sub vms_info { perlasm_scheme => "aix64", dso_scheme => "dlfcn", shared_target => "aix-shared", - shared_ldflag => "-maix64 -shared -Wl,-G", + shared_ldflag => "-maix64 -shared -static-libgcc -Wl,-G", shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)", arflags => "-X64", }, - # Below targets assume AIX 5. Idea is to effectively disregard - # $OBJECT_MODE at build time. $OBJECT_MODE is respected at - # ./config stage! "aix-cc" => { inherit_from => [ "BASE_unix", asm("ppc32_asm") ], cc => "cc", @@ -1174,6 +1208,7 @@ sub vms_info { sys_id => "AIX", bn_ops => "BN_LLONG RC4_CHAR", thread_scheme => "pthreads", + ex_libs => threads("-lpthreads"), perlasm_scheme => "aix32", dso_scheme => "dlfcn", shared_target => "aix-shared", @@ -1191,6 +1226,7 @@ sub vms_info { sys_id => "AIX", bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR", thread_scheme => "pthreads", + ex_libs => threads("-lpthreads"), perlasm_scheme => "aix64", dso_scheme => "dlfcn", shared_target => "aix-shared", @@ -1730,13 +1766,15 @@ sub vms_info { lflags => picker(default => "/MAP", debug => "/DEBUG/TRACEBACK", release => "/NODEBUG/NOTRACEBACK"), - lib_cflags => add("/NAMES=(AS_IS,SHORTENED)"), - dso_cflags => add("/NAMES=(AS_IS,SHORTENED)"), + lib_cflags => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"), + # no_inst_bin_cflags is used instead of bin_cflags by descrip.mms.tmpl + # for object files belonging to selected internal programs + no_inst_bin_cflags => "/NAMES=(AS_IS,SHORTENED)", shared_target => "vms-shared", dso_scheme => "vms", thread_scheme => "pthreads", - apps_aux_src => "vms_decc_init.c", + apps_aux_src => "vms_decc_init.c vms_term_sock.c", }, "vms-alpha" => {