## -*- mode: perl; -*-
## Standard openssl configuration targets.
-sub picker {
- my %opts = @_;
- return sub { add($opts{default} || (),
- $opts{$config{build_type}} || ())->(); }
+# Helper functions for the Windows configs
+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",
+ asoutflag => "-o" };
+ } else {
+ $vc_win64a_info = { as => "ml64",
+ asflags => "/c /Cp /Cx /Zi",
+ asoutflag => "/Fo" };
+ }
+ }
+ return $vc_win64a_info;
}
-sub threads {
- my @flags = @_;
- return sub { add($disabled{threads} ? () : @flags)->(); }
+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'}));
+
+ #
+ # 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 $wceplatf = $ENV{'PLATFORM'};
+
+ $wceplatf =~ tr/a-z0-9 /A-Z0-9_/;
+ $wcecdefs .= " -DWCE_PLATFORM_$wceplatf";
+
+ my $wcetgt = $ENV{'TARGETCPU'}; # just shorter name...
+ SWITCH: for($wcetgt) {
+ /^X86/ && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_";
+ $wcelflag.=" /machine:X86"; last; };
+ /^ARMV4[IT]/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
+ $wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/);
+ $wcecdefs.=" -QRarch4T -QRinterwork-return";
+ $wcelflag.=" /machine:THUMB"; last; };
+ /^ARM/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
+ $wcelflag.=" /machine:ARM"; last; };
+ /^MIPSIV/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
+ $wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32";
+ $wcelflag.=" /machine:MIPSFPU"; last; };
+ /^MIPS16/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
+ $wcecdefs.=" -DMIPSII -QMmips16";
+ $wcelflag.=" /machine:MIPS16"; last; };
+ /^MIPSII/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
+ $wcecdefs.=" -QMmips2";
+ $wcelflag.=" /machine:MIPS"; last; };
+ /^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000";
+ $wcelflag.=" /machine:MIPS"; last; };
+ /^SH[0-9]/ && do { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_ -DSHx";
+ $wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/);
+ $wcelflag.=" /machine:$wcetgt"; last; };
+ { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_";
+ $wcelflag.=" /machine:$wcetgt"; last; };
+ }
+
+ $vc_wince_info = { cflags => $wcecdefs,
+ lflags => $wcelflag };
+ }
+ return $vc_wince_info;
}
-sub combine {
- my @stuff = @_;
- return sub { add(@stuff)->(); }
+# Helper functions for the VMS configs
+my $vms_info = {};
+sub vms_info {
+ unless (%$vms_info) {
+ $vms_info->{disable_warns} = [ ];
+ $vms_info->{disable_warns_p32} = [ ];
+ $vms_info->{disable_warns_p64} = [ ];
+ `PIPE CC /NOCROSS_REFERENCE /NOLIST /NOOBJECT /WARNINGS = DISABLE = ( MAYLOSEDATA3, EMPTYFILE ) NL: 2> NL:`;
+ if ($? == 0) {
+ push @{$vms_info->{disable_warns_p64}}, "MAYLOSEDATA3";
+ }
+ }
+ return $vms_info;
}
%targets = (
"hpux64-ia64-gcc" => {
inherit_from => [ "BASE_unix", asm("ia64_asm") ],
cc => "gcc",
- cflags => picker(default => "-mlp64 -DB_ENDIAN",
- debug => "-O0 -g",
- release => "-O3",
- threads("-pthread")),
+ cflags => combine(picker(default => "-mlp64 -DB_ENDIAN",
+ debug => "-O0 -g",
+ release => "-O3"),
+ threads("-pthread")),
ex_libs => add("-ldl"),
bn_ops => "SIXTY_FOUR_BIT_LONG",
thread_scheme => "pthreads",
inherit_from => [ "linux-generic32", asm("x86_64_asm") ],
cflags => add("-mx32 -DL_ENDIAN"),
bn_ops => "SIXTY_FOUR_BIT",
- perlasm_scheme => "elf",
+ perlasm_scheme => "elf32",
shared_ldflag => "-mx32",
multilib => "x32",
},
#
inherit_from => [ "linux-generic32", asm("s390x_asm") ],
cflags => add("-m31 -Wa,-mzarch -DB_ENDIAN"),
- bn_obj => sub { my $r=join(" ",@_); $r=~s/bn\-s390x/bn_asm/; $r; },
+ bn_asm_src => sub { my $r=join(" ",@_); $r=~s|asm/s390x\.S|bn_asm.c|; $r; },
perlasm_scheme => "31",
shared_ldflag => "-m31",
multilib => "/highgprs",
# positives in some situations. Disabling it altogether masks both
# legitimate and false cases, but as we compile on multiple platforms,
# we rely on other compilers to catch legitimate cases.
+#
+# Also note that we force threads no matter what. Configuring "no-threads"
+# is ignored.
"VC-common" => {
inherit_from => [ "BASE_Windows" ],
template => 1,
cc => "cl",
cflags => "-W3 -wd4090 -Gs0 -GF -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE",
+ coutflag => "/Fo",
+ rc => "rc",
+ rcoutflag => "/fo",
+ lib_cflags => sub { join(" ",
+ ($disabled{shared} ? "/Zl" : ()),
+ "/Zi /Fdlib") },
+ dso_cflags => "/Zi",
+ bin_cflags => "/Zi /Fdapp",
+ lflags => add("/debug"),
+ shared_cflag => "-D_WINDLL",
+ shared_ldflag => "/dll",
shared_target => "win-shared", # meaningless except it gives Configure a hint
+ thread_scheme => "winthreads",
dso_scheme => "win32",
},
+ "VC-noCE-common" => {
+ inherit_from => [ "VC-common" ],
+ cflags => add(picker(default => "-DUNICODE -D_UNICODE",
+ debug =>
+ sub {
+ ($disabled{shared} ? "/MT" : "/MD")
+ ."d /Od -DDEBUG -D_DEBUG";
+ },
+ release =>
+ sub {
+ ($disabled{shared} ? "/MT" : "/MD")
+ ." /Ox /O2 /Ob2";
+ })),
+ bin_lflags => add("/subsystem:console /opt:ref"),
+ ex_libs => sub {
+ my @ex_libs = ();
+ push @ex_libs, 'ws2_32.lib' unless $disabled{sock};
+ push @ex_libs, 'gdi32.lib advapi32.lib crypt32.lib user32.lib';
+ return join(" ", @ex_libs);
+ },
+ },
+ "VC-WIN64-common" => {
+ inherit_from => [ "VC-noCE-common" ],
+ ex_libs => sub {
+ my @ex_libs = ();
+ push @ex_libs, 'bufferoverflowu.lib' if (`cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
+ return join(" ", @_, @ex_libs);
+ },
+ bn_ops => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
+ build_scheme => add("VC-W64", { separator => undef }),
+ },
"VC-WIN64I" => {
- inherit_from => [ "VC-common", asm("ia64_asm") ],
- cflags => add("-DUNICODE -D_UNICODE"),
+ inherit_from => [ "VC-WIN64-common", asm("ia64_asm"),
+ sub { $disabled{shared} ? () : "ia64_uplink" } ],
+ as => "ias",
+ asflags => "-d debug",
+ asoutflag => "-o",
sys_id => "WIN64I",
- bn_ops => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
- bn_obj => sub { my $r=join(" ",@_); $r=~s/bn\-//; $r; },
- rc4_obj => "",
+ bn_asm_src => sub { return undef unless @_;
+ my $r=join(" ",@_); $r=~s|bn-ia64.s|bn_asm.c|; $r; },
perlasm_scheme => "ias",
- build_scheme => add("VC-W64", { separator => undef }),
+ multilib => "-ia64",
},
"VC-WIN64A" => {
- inherit_from => [ "VC-common", asm("x86_64_asm") ],
- cflags => add("-DUNICODE -D_UNICODE"),
+ 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} },
+ asoutflag => sub { vc_win64a_info()->{asoutflag} },
sys_id => "WIN64A",
- bn_ops => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
- bn_obj => sub { my $r=join(" ",@_); $r=~s/x86_64\-gcc/bn_asm/; $r; },
+ bn_asm_src => sub { return undef unless @_;
+ my $r=join(" ",@_); $r=~s|asm/x86_64-gcc|bn_asm|; $r; },
perlasm_scheme => "auto",
- build_scheme => add("VC-W64", { separator => undef }),
+ multilib => "-x64",
},
"VC-WIN32" => {
# x86 Win32 target defaults to ANSI API, if you want UNICODE,
# configure with 'perl Configure VC-WIN32 -DUNICODE -D_UNICODE'
- inherit_from => [ "VC-common", asm("x86_asm") ],
+ inherit_from => [ "VC-noCE-common", asm("x86_asm"),
+ sub { $disabled{shared} ? () : "uplink_common" } ],
+ as => sub { my $ver=`nasm -v 2>NUL`;
+ my $vew=`nasmw -v 2>NUL`;
+ return $ver ge $vew ? "nasm" : "nasmw" },
+ asflags => "-f win32",
+ asoutflag => "-o",
+ ex_libs => sub {
+ my @ex_libs = ();
+ # WIN32 UNICODE build gets linked with unicows.lib for
+ # backward compatibility with Win9x.
+ push @ex_libs, 'unicows.lib'
+ if (grep { $_ eq "UNICODE" } @user_defines);
+ return join(" ", @ex_libs, @_);
+ },
sys_id => "WIN32",
bn_ops => "BN_LLONG EXPORT_VAR_AS_FN",
perlasm_scheme => "win32n",
build_scheme => add("VC-W32", { separator => undef }),
},
"VC-CE" => {
- inherit_from => [ "BASE_Windows" ],
+ inherit_from => [ "VC-common" ],
+ as => "ml",
+ asflags => "/nologo /Cp /coff /c /Cx /Zi",
+ asoutflag => "/Fo",
cc => "cl",
+ cflags =>
+ picker(default =>
+ combine('/W3 /WX /GF /Gy /nologo -DUNICODE -D_UNICODE -DOPENSSL_SYS_WINCE -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -DDSO_WIN32 -DNO_CHMOD -DOPENSSL_SMALL_FOOTPRINT',
+ sub { vc_wince_info()->{cflags}; },
+ sub { defined($ENV{'WCECOMPAT'})
+ ? '-I$(WCECOMPAT)/include' : (); },
+ sub { defined($ENV{'PORTSDK_LIBPATH'})
+ ? '-I$(PORTSDK_LIBPATH)/../../include' : (); },
+ sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
+ ? ($disabled{shared} ? " /MT" : " /MD")
+ : " /MC"; }),
+ debug => "/Od -DDEBUG -D_DEBUG",
+ release => "/O1i"),
+ lflags => combine("/nologo /opt:ref",
+ sub { vc_wince_info()->{lflags}; },
+ sub { defined($ENV{PORTSDK_LIBPATH})
+ ? "/entry:mainCRTstartup" : (); }),
sys_id => "WINCE",
bn_ops => "BN_LLONG EXPORT_VAR_AS_FN",
- dso_scheme => "win32",
+ ex_libs => sub {
+ my @ex_libs = ();
+ push @ex_libs, 'ws2.lib' unless $disabled{sock};
+ push @ex_libs, 'crypt32.lib';
+ if (defined($ENV{WCECOMPAT})) {
+ my $x = '$(WCECOMPAT)/lib';
+ if (-f "$x/$ENV{TARGETCPU}/wcecompatex.lib") {
+ $x .= '/$(TARGETCPU)/wcecompatex.lib';
+ } else {
+ $x .= '/wcecompatex.lib';
+ }
+ push @ex_libs, $x;
+ }
+ 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;
+ },
build_scheme => add("VC-WCE", { separator => undef }),
},
-#### Borland C++ 4.5
- "BC-32" => {
- inherit_from => [ "BASE_Windows" ],
- cc => "bcc32",
- sys_id => "WIN32",
- bn_ops => "BN_LLONG EXPORT_VAR_AS_FN",
- dso_scheme => "win32",
- build_scheme => add("BC", { separator => undef }),
- },
-
#### MinGW
"mingw" => {
inherit_from => [ "BASE_unix", asm("x86_asm"),
release => "-O3 -fomit-frame-pointer"),
sys_id => "CYGWIN",
bn_ops => "BN_LLONG",
+ thread_scheme => "pthread",
perlasm_scheme => "coff",
dso_scheme => "dlfcn",
shared_target => "cygwin-shared",
release => "-O3"),
sys_id => "CYGWIN",
bn_ops => "SIXTY_FOUR_BIT_LONG",
+ thread_scheme => "pthread",
perlasm_scheme => "mingw64",
dso_scheme => "dlfcn",
shared_target => "cygwin-shared",
inherit_from => [ "Cygwin-x86" ]
},
-#### NetWare from David Ward (dsward@novell.com)
-# requires either MetroWerks NLM development tools, or gcc / nlmconv
-# NetWare defaults socket bio to WinSock sockets. However,
-# the builds can be configured to use BSD sockets instead.
-# netware-clib => legacy CLib c-runtime support
- "netware-clib" => {
- inherit_from => [ "BASE_Windows" ],
- cc => "mwccnlm",
- build_scheme => add("netware", { separator => undef }),
- },
- "netware-clib-bsdsock" => {
- inherit_from => [ "BASE_Windows" ],
- cc => "mwccnlm",
- build_scheme => add("netware", { separator => undef }),
- },
- "netware-clib-gcc" => {
- inherit_from => [ "BASE_unix" ],
- cc => "i586-netware-gcc",
- cflags => "-nostdinc -I/ndk/nwsdk/include/nlm -I/ndk/ws295sdk/include -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall",
- },
- "netware-clib-bsdsock-gcc" => {
- inherit_from => [ "BASE_unix" ],
- cc => "i586-netware-gcc",
- cflags => "-nostdinc -I/ndk/nwsdk/include/nlm -DNETWARE_BSDSOCK -DNETDB_USE_INTERNET -DL_ENDIAN -DNETWARE_CLIB -DOPENSSL_SYS_NETWARE -O2 -Wall",
- },
- # netware-libc => LibC/NKS support
- "netware-libc" => {
- inherit_from => [ "BASE_Windows" ],
- cc => "mwccnlm",
- bn_ops => "BN_LLONG",
- build_scheme => add("netware", { separator => undef }),
- },
- "netware-libc-bsdsock" => {
- inherit_from => [ "BASE_Windows" ],
- cc => "mwccnlm",
- bn_ops => "BN_LLONG",
- build_scheme => add("netware", { separator => undef }),
- },
- "netware-libc-gcc" => {
- inherit_from => [ "BASE_unix" ],
- cc => "i586-netware-gcc",
- cflags => "-nostdinc -I/ndk/libc/include -I/ndk/libc/include/winsock -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall",
- bn_ops => "BN_LLONG",
- },
- "netware-libc-bsdsock-gcc" => {
- inherit_from => [ "BASE_unix" ],
- cc => "i586-netware-gcc",
- cflags => "-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall",
- bn_ops => "BN_LLONG",
- },
-
#### DJGPP
"DJGPP" => {
inherit_from => [ asm("x86_asm") ],
perlasm_scheme => "a.out",
},
-#### Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
- "ultrix-cc" => {
- inherit_from => [ "BASE_unix" ],
- cc => "cc",
- cflags => "-std1 -O -Olimit 2500 -DL_ENDIAN",
- thread_scheme => "(unknown)",
- },
- "ultrix-gcc" => {
- inherit_from => [ "BASE_unix" ],
- cc => "gcc",
- cflags => "-O3 -DL_ENDIAN",
- bn_ops => "BN_LLONG",
- thread_scheme => "(unknown)",
- },
-# K&R C is no longer supported; you need gcc on old Ultrix installations
-##"ultrix","cc:-O2 -DNOPROTO -DNOCONST -DL_ENDIAN::(unknown):::::::",
-
##### MacOS X (a.k.a. Darwin) setup
"darwin-common" => {
inherit_from => [ "BASE_unix" ],
shared_ldflag => "-dynamiclib",
shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
},
+ # Option "freeze" such as -std=gnu9x can't negatively interfere
+ # with future defaults for below two targets, because MacOS X
+ # for PPC has no future, it was discontinued by vendor in 2009.
"darwin-ppc-cc" => {
inherit_from => [ "darwin-common", asm("ppc32_asm") ],
- cflags => add("-arch ppc -DB_ENDIAN -Wa,-force_cpusubtype_ALL"),
+ cflags => add("-arch ppc -std=gnu9x -DB_ENDIAN -Wa,-force_cpusubtype_ALL"),
perlasm_scheme => "osx32",
shared_ldflag => "-arch ppc -dynamiclib",
},
"darwin64-ppc-cc" => {
inherit_from => [ "darwin-common", asm("ppc64_asm") ],
- cflags => add("-arch ppc64 -DB_ENDIAN"),
+ cflags => add("-arch ppc64 -std=gnu9x -DB_ENDIAN"),
bn_ops => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
perlasm_scheme => "osx64",
shared_ldflag => "-arch ppc64 -dynamiclib",
shared_cflag => "-fPIC",
},
-##### OS/2 EMX
- "OS2-EMX" => {
- inherit_from => [ "BASE_unix" ],
- cc => "gcc",
- },
-
##### VxWorks for various targets
"vxworks-ppc60x" => {
inherit_from => [ "BASE_unix" ],
debug => "/DEBUG/TRACEBACK",
release => "/NODEBUG/NOTRACEBACK"),
shared_target => "vms-shared",
+ dso_scheme => "vms",
thread_scheme => "pthreads",
apps_aux_src => "vms_decc_init.c",
#},
"vms-alpha" => {
inherit_from => [ "vms-generic" ],
+ cflags => add(sub { my @warnings =
+ @{vms_info()->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
#as => "???",
#debug_aflags => "/NOOPTIMIZE/DEBUG",
#release_aflags => "/OPTIMIZE/NODEBUG",
bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR",
},
- "vms-alpha-P32" => {
- inherit_from => [ "vms-alpha" ],
- cflags => add("/POINTER_SIZE=32"),
- ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
- },
- "vms-alpha-P64" => {
- inherit_from => [ "vms-alpha" ],
- cflags => add("/POINTER_SIZE=64"),
- ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
+ "vms-alpha-p32" => {
+ inherit_from => [ "vms-alpha" ],
+ cflags =>
+ add("/POINTER_SIZE=32",
+ sub { my @warnings =
+ @{vms_info()->{disable_warns_p32}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
+ },
+ "vms-alpha-p64" => {
+ inherit_from => [ "vms-alpha" ],
+ cflags =>
+ add("/POINTER_SIZE=64=ARGV",
+ sub { my @warnings =
+ @{vms_info()->{disable_warns_p64}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
},
"vms-ia64" => {
inherit_from => [ "vms-generic" ],
+ cflags => add(sub { my @warnings =
+ @{vms_info()->{disable_warns}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : (); }),
#as => "I4S",
#debug_aflags => "/NOOPTIMIZE/DEBUG",
#release_aflags => "/OPTIMIZE/NODEBUG",
bn_opts => "SIXTY_FOUR_BIT RC4_INT RC4_CHUNK_LL DES_PTR BF_PTR",
},
- "vms-ia64-P32" => {
- inherit_from => [ "vms-ia64" ],
- cflags => add("/POINTER_SIZE=32"),
- ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
- },
- "vms-ia64-P64" => {
- inherit_from => [ "vms-ia64" ],
- cflags => add("/POINTER_SIZE=64"),
- ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
+ "vms-ia64-p32" => {
+ inherit_from => [ "vms-ia64" ],
+ cflags =>
+ add("/POINTER_SIZE=32",
+ sub { my @warnings =
+ @{vms_info()->{disable_warns_p32}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ ex_libs => sub { join(",", map { s|SHR([\./])|SHR32$1|g; $_ } @_) },
+ },
+ "vms-ia64-p64" => {
+ inherit_from => [ "vms-ia64" ],
+ cflags =>
+ add("/POINTER_SIZE=64=ARGV",
+ sub { my @warnings =
+ @{vms_info()->{disable_warns_p64}};
+ @warnings
+ ? "/WARNINGS=DISABLE=(".join(",",@warnings).")" : ();
+ } ),
+ ex_libs => sub { join(",", map { s|SHR([\./])|SHR64$1|g; $_ } @_) },
},
);