}
unless (%$vms_info) {
- $vms_info->{disable_warns} = [ ];
+ $vms_info->{disable_warns} = [
+ "CXXPRAGMANA", # Shut up about unknown / unsupported pragmas
+ ];
$vms_info->{pointer_size} = $pointer_size_str;
if ($pointer_size_str eq "64") {
`PIPE CC /NOCROSS_REFERENCE /NOLIST /NOOBJECT /WARNINGS = DISABLE = ( MAYLOSEDATA3, EMPTYFILE ) NL: 2> NL:`;
####
# *-generic* is endian-neutral target, but ./config is free to
# throw in -D[BL]_ENDIAN, whichever appropriate...
- "linux-generic32" => {
+ "linux-generic" => {
inherit_from => [ "BASE_unix" ],
CC => "gcc",
CXX => "g++",
shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
enable => [ "afalgeng" ],
},
+ "linux-generic32" => {
+ inherit_from => [ "linux-generic" ],
+ ex_libs => add(threads("-latomic")),
+ bn_ops => "BN_LLONG RC4_CHAR",
+ },
"linux-generic64" => {
- inherit_from => [ "linux-generic32" ],
+ inherit_from => [ "linux-generic" ],
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
},
inherit_from => [ "linux-generic32" ],
asm_arch => 'ppc32',
perlasm_scheme => "linux32",
+ lib_cppflags => add("-DB_ENDIAN"),
},
"linux-ppc64" => {
inherit_from => [ "linux-generic64" ],
multilib => "64",
},
+ # riscv64 below refers to contemporary RISCV Architecture
+ # specifications,
+ "linux64-riscv64" => {
+ inherit_from => [ "linux-generic64"],
+ perlasm_scheme => "linux64",
+ },
+
#### IA-32 targets...
#### These two targets are a bit aged and are to be used on older Linux
#### machines where gcc doesn't understand -m32 and -m64
cflags => add("-m64 -mcpu=ultrasparc"),
cxxflags => add("-m64 -mcpu=ultrasparc"),
lib_cppflags => add("-DB_ENDIAN"),
+ ex_libs => add(threads("-latomic")),
bn_ops => "BN_LLONG RC4_CHAR",
asm_arch => 'sparcv9',
perlasm_scheme => 'void',
inherit_from => [ "BASE_Windows" ],
template => 1,
CC => "cl",
- CPP => '$(CC) /EP /C',
+ CPP => '"$(CC)" /EP /C',
CFLAGS => "/W3 /wd4090 /nologo",
- LDFLAGS => add("/debug"),
coutflag => "/Fo",
+ LD => "link",
+ LDFLAGS => "/nologo /debug",
+ ldoutflag => "/out:",
+ ldpostoutflag => "",
+ ld_resp_delim => "\n",
+ bin_lflags => "setargv.obj",
+ makedepcmd => '"$(CC)" /Zs /showIncludes',
+ makedep_scheme => 'VC',
+ AR => "lib",
+ ARFLAGS => "/nologo",
+ aroutflag => "/out:",
+ ar_resp_delim => "\n",
+ RC => "rc",
+ rcoutflag => "/fo",
defines => add("OPENSSL_SYS_WIN32", "WIN32_LEAN_AND_MEAN",
"UNICODE", "_UNICODE",
"_CRT_SECURE_NO_DEPRECATE",
shared_defflag => '',
shared_ldflag => "/dll",
shared_target => "win-shared", # meaningless except it gives Configure a hint
+ lddefflag => "/def:",
+ ldresflag => " ",
+ ld_implib_flag => "/implib:",
thread_scheme => "winthreads",
dso_scheme => "win32",
perl_platform => 'Windows::MSVC',
}
push @ex_libs, '$(PORTSDK_LIBPATH)/portlib.lib'
if (defined(env('PORTSDK_LIBPATH')));
- push @ex_libs, ' /nodefaultlib coredll.lib corelibc.lib'
- if (env('TARGETCPU') eq "X86");
- return @ex_libs;
+ push @ex_libs, '/nodefaultlib coredll.lib corelibc.lib'
+ if (env('TARGETCPU') =~ /^X86|^ARMV4[IT]/);
+ return join(" ", @ex_libs);
}),
},
CFLAGS => picker(debug => "-g -O0",
release => "-O3"),
cppflags => threads("-D_REENTRANT"),
- lflags => "-Wl,-search_paths_first",
+ lflags => add("-Wl,-search_paths_first"),
sys_id => "MACOSX",
bn_ops => "BN_LLONG RC4_CHAR",
thread_scheme => "pthreads",
asm_arch => 'x86_64',
perlasm_scheme => "macosx",
},
+ "darwin64-arm64-cc" => { inherit_from => [ "darwin64-arm64" ] }, # "Historic" alias
+ "darwin64-arm64" => {
+ inherit_from => [ "darwin-common" ],
+ CFLAGS => add("-Wall"),
+ cflags => add("-arch arm64"),
+ lib_cppflags => add("-DL_ENDIAN"),
+ bn_ops => "SIXTY_FOUR_BIT_LONG",
+ asm_arch => 'aarch64',
+ perlasm_scheme => "ios64",
+ },
##### GNU Hurd
"hurd-x86" => {
@{vms_info()->{disable_warns}};
@warnings
? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
+ cflag_incfirst => '/FIRST_INCLUDE=',
lib_defines =>
add("OPENSSL_USE_NODELETE",
sub {
# and binaries instead.
bin_cflags => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"),
lib_cflags => add("/NAMES=(AS_IS,SHORTENED)/EXTERN_MODEL=STRICT_REFDEF"),
- # For modules specifically, we assume that they only use public
- # OpenSSL symbols, and therefore don't need to mangle names on
- # their own.
- dso_cflags => "",
+ # Strictly speaking, DSOs should not need to have name shortening,
+ # as all their exported symbols should be short enough to fit the
+ # linker's 31 character per symbol name limit. However, providers
+ # may be composed of more than one object file, and internal symbols
+ # may and do surpass the 31 character limit.
+ dso_cflags => add("/NAMES=(SHORTENED)"),
ex_libs => add(sub { return vms_info()->{zlib} || (); }),
shared_target => "vms-shared",
# def_flag made to empty string so a .opt file gets generated
dso_scheme => "vms",
thread_scheme => "pthreads",
+ makedep_scheme => 'VMS C',
AS => sub { vms_info()->{AS} },
ASFLAGS => sub { vms_info()->{ASFLAGS} },
asoutflag => sub { vms_info()->{asoutflag} },