Lines Matching +full:x86_64 +full:- +full:linux +full:- +full:gnu
1 ## -*- mode: perl; -*-
8 if (`nasm -v 2>NUL` =~ /NASM version ([0-9]+\.[0-9]+)/ && $1 >= 2.0) {
10 ASFLAGS => "-g",
11 asflags => "-Ox -f win64 -DNEAR",
12 asoutflag => "-o ",
22 $die->("NASM not found - make sure it's installed and available on %PATH%\n");
36 my $ver=`nasm -v 2>NUL`;
37 my $vew=`nasmw -v 2>NUL`;
41 asflags => "-f win32",
42 asoutflag => "-o ",
52 $die->("NASM not found - make sure it's installed and available on %PATH%\n");
67 $die->('%OSVERSION% is not defined') if (!defined(env('OSVERSION')));
68 $die->('%PLATFORM% is not defined') if (!defined(env('PLATFORM')));
69 $die->('%TARGETCPU% is not defined') if (!defined(env('TARGETCPU')));
77 if ($wcevers =~ /^WCE([1-9])([0-9]{2})$/) {
81 $die->('%OSVERSION% value is insane');
85 my $wcecdefs = "-D_WIN32_WCE=$wcevernum -DUNDER_CE=$wcevernum"; # -D_WIN32_WCE=NNN
90 $wceplatf =~ tr/a-z0-9 /A-Z0-9_/;
91 $wcecdefs .= " -DWCE_PLATFORM_$wceplatf";
95 /^X86/ && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_";
97 /^ARMV4[IT]/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
98 $wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/);
99 $wcecdefs.=" -QRarch4T -QRinterwork-return";
101 /^ARM/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
103 /^MIPSIV/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
104 $wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32";
106 /^MIPS16/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
107 $wcecdefs.=" -DMIPSII -QMmips16";
109 /^MIPSII/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
110 $wcecdefs.=" -QMmips2";
112 /^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000";
114 /^SH[0-9]/ && do { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_ -DSHx";
115 $wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/);
117 { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_";
130 my $pointer_size_str = $config{target} =~ m|-p(\d+)$| ? $1 : "";
135 if (%$vms_info && $vms_info->{pointer_size} ne $pointer_size_str) {
140 $vms_info->{disable_warns} = [
143 $vms_info->{pointer_size} = $pointer_size_str;
147 push @{$vms_info->{disable_warns}}, "MAYLOSEDATA3";
153 if (defined($disabled{"zlib-dynamic"})) {
154 $vms_info->{zlib} = $withargs{zlib_lib} || "$default_zlib/SHARE";
156 $vms_info->{def_zlib} = $withargs{zlib_lib} || $default_zlib;
157 # In case the --with-zlib-lib value contains something like
159 $vms_info->{def_zlib} =~ s|/.*$||g;
163 if ($config{target} =~ /-ia64/) {
164 `PIPE ias -H 2> NL:`;
166 $vms_info->{AS} = "ias";
167 $vms_info->{ASFLAGS} = '-d debug';
168 $vms_info->{asflags} = '"-N" vms_upcase';
169 $vms_info->{asoutflag} = "-o ";
170 $vms_info->{perlasm_scheme} = "ias";
179 #### Basic configs that should work on any 32-bit box
183 CFLAGS => picker(debug => "-O0 -g",
184 release => "-O3"),
191 CFLAGS => "-O",
196 "vos-gcc" => {
199 CFLAGS => picker(default => "-Wall",
200 debug => "-O0 -g",
201 release => "-O3"),
202 cppflags => "-D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES",
203 lib_cppflags => "-DB_ENDIAN",
206 lflags => add("-Wl,-map"),
212 "solaris-common" => {
215 lib_cppflags => "-DFILIO_H",
216 ex_libs => add("-lsocket -lnsl -ldl"),
221 "solaris-common-cc" => {
222 inherit_from => [ "solaris-common" ],
225 shared_ldflag => "-Wl,-Bsymbolic",
226 shared_defflag => "-Wl,-M,",
227 shared_sonameflag=> "-Wl,-h,",
229 #### Solaris common with GNU C setups
230 "solaris-common-gcc" => {
231 inherit_from => [ "solaris-common" ],
233 shared_target => "solaris-gcc-shared", # The rest is on shared_info.pl
235 #### Solaris x86 with GNU C setups
236 "solaris-x86-gcc" => {
237 # NB. GNU C has to be configured to use GNU assembler, and not
239 # failures [at least] in 32-bit build.
240 inherit_from => [ "solaris-common-gcc" ],
242 CFLAGS => add_before(picker(default => "-Wall",
243 debug => "-O0 -g",
244 release => "-O3 -fomit-frame-pointer")),
245 lib_cppflags => add("-DL_ENDIAN"),
247 shared_cflag => "-fPIC",
248 shared_ldflag => add_before("-shared -static-libgcc"),
252 "solaris64-x86_64-gcc" => {
253 # -shared -static-libgcc might appear controversial, but modules
259 # to consider using gcc shared build even with vendor compiler:-)
260 # -- <appro@openssl.org>
261 inherit_from => [ "solaris-common-gcc" ],
263 CFLAGS => add_before(picker(default => "-Wall",
264 debug => "-O0 -g",
265 release => "-O3")),
266 cflags => add("-m64"),
267 lib_cppflags => add("-DL_ENDIAN"),
269 asm_arch => 'x86_64',
271 shared_cflag => "-fPIC",
272 shared_ldflag => add_before("-shared -static-libgcc"),
277 # There used to be solaris-x86-cc target, but it was removed,
279 # with -KPIC flag. As result it, assembly support, was not even
280 # available as option. But its lack means lack of side-channel
285 # On related note, solaris64-x86_64-cc target won't compile code
286 # paths utilizing AVX and post-Haswell instruction extensions.
287 # Consider switching to solaris64-x86_64-gcc even here...
289 "solaris64-x86_64-cc" => {
290 inherit_from => [ "solaris-common-cc" ],
292 CFLAGS => add_before(picker(debug => "-g",
293 release => "-xO5 -xdepend -xbuiltin")),
294 cflags => add_before("-xarch=generic64 -xstrconst -Xa"),
295 cppflags => add(threads("-D_REENTRANT")),
296 lib_cppflags => add("-DL_ENDIAN"),
298 lflags => add(threads("-mt")),
300 asm_arch => 'x86_64',
302 shared_cflag => "-KPIC",
303 shared_ldflag => add_before("-G -dy -z text"),
307 #### SPARC Solaris with GNU C setups
308 "solaris-sparcv7-gcc" => {
309 inherit_from => [ "solaris-common-gcc" ],
311 CFLAGS => add_before(picker(default => "-Wall",
312 debug => "-O0 -g",
313 release => "-O3")),
314 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
316 shared_cflag => "-fPIC",
317 shared_ldflag => add_before("-shared -static-libgcc"),
319 "solaris-sparcv8-gcc" => {
320 inherit_from => [ "solaris-sparcv7-gcc" ],
321 cflags => add_before("-mcpu=v8"),
325 "solaris-sparcv9-gcc" => {
326 # -m32 should be safe to add as long as driver recognizes
327 # -mcpu=ultrasparc
328 inherit_from => [ "solaris-sparcv7-gcc" ],
329 cflags => add_before("-m32 -mcpu=ultrasparc"),
333 "solaris64-sparcv9-gcc" => {
334 inherit_from => [ "solaris-sparcv9-gcc" ],
335 cflags => sub { my $f=join(" ",@_); $f =~ s/\-m32/-m64/; $f; },
342 # SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
343 # SC5.0 note: Compiler common patch 107357-01 or later is required!
344 "solaris-sparcv7-cc" => {
345 inherit_from => [ "solaris-common-cc" ],
347 CFLAGS => add_before(picker(debug => "-g",
348 release => "-xO5 -xdepend")),
349 cflags => add_before("-xstrconst -Xa"),
350 cppflags => add(threads("-D_REENTRANT")),
351 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
352 lflags => add(threads("-mt")),
354 shared_cflag => "-KPIC",
355 shared_ldflag => add_before("-G -dy -z text"),
358 "solaris-sparcv8-cc" => {
359 inherit_from => [ "solaris-sparcv7-cc" ],
360 cflags => add_before("-xarch=v8"),
364 "solaris-sparcv9-cc" => {
365 inherit_from => [ "solaris-sparcv7-cc" ],
366 cflags => add_before("-xarch=v8plus"),
370 "solaris64-sparcv9-cc" => {
371 inherit_from => [ "solaris-sparcv7-cc" ],
372 cflags => add_before("-m64 -xarch=sparc"),
381 "irix-common" => {
384 cppflags => threads("-D_SGI_MP_SOURCE"),
385 lib_cppflags => "-DB_ENDIAN",
386 ex_libs => add(threads("-lpthread")),
390 shared_ldflag => "-shared -Wl,-Bsymbolic",
391 shared_sonameflag=> "-Wl,-soname,",
393 "irix-mips3-gcc" => {
394 inherit_from => [ "irix-common" ],
396 CFLAGS => picker(debug => "-g -O0",
397 release => "-O3"),
398 LDFLAGS => "-static-libgcc",
399 cflags => "-mabi=n32",
405 "irix-mips3-cc" => {
406 inherit_from => [ "irix-common" ],
408 CFLAGS => picker(debug => "-g -O0",
409 release => "-O2"),
410 cflags => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared",
417 "irix64-mips4-gcc" => {
418 inherit_from => [ "irix-common" ],
420 CFLAGS => picker(debug => "-g -O0",
421 release => "-O3"),
422 LDFLAGS => "-static-libgcc",
423 cflags => "-mabi=64 -mips4",
429 "irix64-mips4-cc" => {
430 inherit_from => [ "irix-common" ],
432 CFLAGS => picker(debug => "-g -O0",
433 release => "-O2"),
434 cflags => "-64 -mips4 -use_readonly_const -G0 -rdata_shared",
441 #### Unified HP-UX ANSI C configs.
443 # - Originally we were optimizing at +O4 level. It should be noted
444 # that the only difference between +O3 and +O4 is global inter-
446 # stage the compiler leaves behind certain pseudo-code in lib*.a
451 # HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
454 # - Keep in mind that the HP compiler by default generates code
456 # If the toolkit is meant to be used on various PA-RISC processors
457 # consider './Configure hpux-parisc-[g]cc +DAportable'.
458 # - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
459 # 32-bit message digests. (For the moment of this writing) HP C
461 # chew forever:-). For more details look-up MD32_XARRAY comment in
463 # - originally there were 32-bit hpux-parisc2-* targets. They were
464 # scrapped, because a) they were not interchangeable with other 32-bit
465 # targets; b) performance-critical 32-bit assembly modules implement
466 # even PA-RISC 2.0-specific code paths, which are chosen at run-time,
467 # thus adequate performance is provided even with PA-RISC 1.1 build.
468 "hpux-common" => {
473 lib_cppflags => "-DB_ENDIAN",
475 dso_scheme => "dlfcn", # overridden in 32-bit PA-RISC builds
477 bin_lflags => "-Wl,+s,+cdp,../:,+cdp,./:",
478 shared_ldflag => "-Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+cdp,../:,+cdp,./:",
479 shared_sonameflag=> "-Wl,+h,",
481 "hpux-parisc-gcc" => {
482 inherit_from => [ "hpux-common" ],
484 CFLAGS => picker(debug => "-O0 -g",
485 release => "-O3"),
486 cflags => add(threads("-pthread")),
487 lib_cppflags => add("-DBN_DIV2W"),
488 ex_libs => add("-ldld", threads("-pthread")),
491 shared_cflag => "-fPIC",
492 shared_ldflag => add_before("-shared"),
495 "hpux-parisc1_1-gcc" => {
496 inherit_from => [ "hpux-parisc-gcc" ],
501 "hpux64-parisc2-gcc" => {
502 inherit_from => [ "hpux-common" ],
504 CFLAGS => combine(picker(debug => "-O0 -g",
505 release => "-O3")),
506 cflags => add(threads("-pthread")),
507 ex_libs => add("-ldl", threads("-pthread")),
511 shared_cflag => "-fpic",
512 shared_ldflag => add_before("-shared"),
518 "hpux-parisc-cc" => {
519 inherit_from => [ "hpux-common" ],
521 CFLAGS => picker(debug => "+O0 +d -g",
523 cflags => "+Optrs_strongly_typed -Ae +ESlit",
524 cppflags => threads("-D_REENTRANT"),
525 lib_cppflags => add("-DBN_DIV2W -DMD32_XARRAY"),
526 ex_libs => add("-ldld", threads("-lpthread")),
530 shared_ldflag => add_before("-b"),
533 "hpux-parisc1_1-cc" => {
534 inherit_from => [ "hpux-parisc-cc" ],
540 "hpux64-parisc2-cc" => {
541 inherit_from => [ "hpux-common" ],
543 CFLAGS => picker(debug => "+O0 +d -g",
545 cflags => "+DD64 +Optrs_strongly_typed -Ae +ESlit",
546 cppflags => threads("-D_REENTRANT") ,
547 lib_cppflags => add("-DMD32_XARRAY"),
548 ex_libs => add("-ldl", threads("-lpthread")),
553 shared_ldflag => add_before("-b"),
558 # HP/UX IA-64 targets
559 "hpux-ia64-cc" => {
560 inherit_from => [ "hpux-common" ],
562 CFLAGS => picker(debug => "+O0 +d -g",
564 cflags => "-Ae +DD32 +Olit=all -z",
565 cppflags => add(threads("-D_REENTRANT")),
566 ex_libs => add("-ldl", threads("-lpthread")),
571 shared_ldflag => add_before("-b"),
574 "hpux64-ia64-cc" => {
575 inherit_from => [ "hpux-common" ],
577 CFLAGS => picker(debug => "+O0 +d -g",
579 cflags => "-Ae +DD64 +Olit=all -z",
580 cppflags => threads("-D_REENTRANT"),
581 ex_libs => add("-ldl", threads("-lpthread")),
586 shared_ldflag => add_before("-b"),
590 "hpux-ia64-gcc" => {
591 inherit_from => [ "hpux-common" ],
593 CFLAGS => picker(debug => "-O0 -g",
594 release => "-O3"),
595 cflags => add(threads("-pthread")),
596 ex_libs => add("-ldl", threads("-pthread")),
600 shared_cflag => "-fpic",
601 shared_ldflag => add_before("-shared"),
604 "hpux64-ia64-gcc" => {
605 inherit_from => [ "hpux-common" ],
607 CFLAGS => picker(debug => "-O0 -g",
608 release => "-O3"),
609 cflags => combine("-mlp64", threads("-pthread")),
610 ex_libs => add("-ldl", threads("-pthread")),
614 shared_cflag => "-fpic",
615 shared_ldflag => add_before("-shared"),
620 "MPE/iX-gcc" => {
623 CFLAGS => "-O3",
624 cppflags => "-D_POSIX_SOURCE -D_SOCKET_SOURCE",
626 lib_cppflags => "-DBN_DIV2W",
628 lflags => add("-L/SYSLOG/PUB"),
629 ex_libs => add("-lsyslog -lsocket -lcurses"),
635 #### and forward. In reality 'uname -s' still returns "OSF1". Originally
636 #### there were even osf1-* configs targeting prior versions provided,
638 "tru64-alpha-gcc" => {
641 CFLAGS => "-O3",
642 cflags => add("-std=c9x", threads("-pthread")),
643 cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
644 ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
650 shared_target => "alpha-osf1-shared",
653 "tru64-alpha-cc" => {
656 CFLAGS => "-tune host -fast",
657 cflags => add("-std1 -readonly_strings",
658 threads("-pthread")),
659 cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
660 ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
666 shared_target => "alpha-osf1-shared",
667 shared_ldflag => "-msym",
672 #### Variety of LINUX:-)
674 # *-generic* is endian-neutral target, but ./config is free to
675 # throw in -D[BL]_ENDIAN, whichever appropriate...
676 "linux-generic32" => {
680 CFLAGS => picker(default => "-Wall",
681 debug => "-O0 -g",
682 release => "-O3"),
683 CXXFLAGS => picker(default => "-Wall",
684 debug => "-O0 -g",
685 release => "-O3"),
686 cflags => threads("-pthread"),
687 cxxflags => combine("-std=c++11", threads("-pthread")),
688 lib_cppflags => "-DOPENSSL_USE_NODELETE",
689 ex_libs => add("-ldl", threads("-pthread")),
693 shared_target => "linux-shared",
694 shared_cflag => "-fPIC",
695 shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
698 "linux-latomic" => {
699 inherit_from => [ "linux-generic32" ],
700 ex_libs => add(threads("-latomic")),
702 "linux-generic64" => {
703 inherit_from => [ "linux-generic32" ],
707 "linux-ppc" => {
708 inherit_from => [ "linux-latomic" ],
711 lib_cppflags => add("-DB_ENDIAN"),
713 "linux-ppc64" => {
714 inherit_from => [ "linux-generic64" ],
715 cflags => add("-m64"),
716 cxxflags => add("-m64"),
717 lib_cppflags => add("-DB_ENDIAN"),
722 "linux-ppc64le" => {
723 inherit_from => [ "linux-generic64" ],
724 cflags => add("-m64"),
725 cxxflags => add("-m64"),
726 lib_cppflags => add("-DL_ENDIAN"),
731 "linux-armv4" => {
733 # Note that -march is not among compiler options in linux-armv4
739 # performance, e.g. -march=armv6 or -march=armv7-a;
745 # requirement for run-time switch between platform-specific
746 # code paths. And without run-time switch performance would be
750 # big-endian platform. This is because ARMv7 processor always
751 # picks instructions in little-endian order. Another similar
752 # limitation is that -mthumb can't "cross" -march=armv6t2
753 # boundary, because that's where it became Thumb-2. Well, this
761 # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
763 inherit_from => [ "linux-latomic" ],
767 "linux-aarch64" => {
768 inherit_from => [ "linux-generic64" ],
772 "linux-arm64ilp32" => { # https://wiki.linaro.org/Platform/arm64-ilp32
773 inherit_from => [ "linux-generic32" ],
774 cflags => add("-mabi=ilp32"),
775 cxxflags => add("-mabi=ilp32"),
780 "linux-arm64ilp32-clang" => { # clang config abi by --target
781 inherit_from => [ "linux-generic32" ],
788 "linux-mips32" => {
789 # Configure script adds minimally required -march for assembly
790 # support, if no -march was specified at command line.
791 inherit_from => [ "linux-latomic" ],
792 cflags => add("-mabi=32"),
793 cxxflags => add("-mabi=32"),
799 "linux-mips64" => {
800 inherit_from => [ "linux-latomic" ],
801 cflags => add("-mabi=n32"),
802 cxxflags => add("-mabi=n32"),
808 "linux64-mips64" => {
809 inherit_from => [ "linux-generic64" ],
810 cflags => add("-mabi=64"),
811 cxxflags => add("-mabi=64"),
819 "linux64-riscv64" => {
820 inherit_from => [ "linux-generic64"],
825 "linux32-riscv32" => {
826 inherit_from => [ "linux-latomic" ],
833 "linux64-loongarch64" => {
834 inherit_from => [ "linux-generic64"],
837 lib_cppflags => add("-DL_ENDIAN"),
840 #### IA-32 targets...
841 #### These two targets are a bit aged and are to be used on older Linux
842 #### machines where gcc doesn't understand -m32 and -m64
843 "linux-elf" => {
844 inherit_from => [ "linux-generic32" ],
845 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
846 lib_cppflags => add("-DL_ENDIAN"),
851 "linux-aout" => {
854 CFLAGS => add(picker(default => "-Wall",
855 debug => "-O0 -g",
856 release => "-O3 -fomit-frame-pointer")),
857 lib_cppflags => add("-DL_ENDIAN"),
864 #### X86 / X86_64 targets
865 "linux-x86" => {
866 inherit_from => [ "linux-generic32" ],
867 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
868 cflags => add("-m32"),
869 cxxflags => add("-m32"),
870 lib_cppflags => add("-DL_ENDIAN"),
875 "linux-x86-latomic" => {
876 inherit_from => [ "linux-x86" ],
877 ex_libs => add(threads("-latomic")),
879 "linux-x86-clang" => {
880 inherit_from => [ "linux-x86" ],
883 ex_libs => add(threads("-latomic")),
885 "linux-x86_64" => {
886 inherit_from => [ "linux-generic64" ],
887 cflags => add("-m64"),
888 cxxflags => add("-m64"),
889 lib_cppflags => add("-DL_ENDIAN"),
891 asm_arch => 'x86_64',
895 "linux-x86_64-clang" => {
896 inherit_from => [ "linux-x86_64" ],
900 "linux-x32" => {
901 inherit_from => [ "linux-generic32" ],
902 cflags => add("-mx32"),
903 cxxflags => add("-mx32"),
904 lib_cppflags => add("-DL_ENDIAN"),
906 asm_arch => 'x86_64',
911 "linux-ia64" => {
912 inherit_from => [ "linux-generic64" ],
918 "linux64-s390x" => {
919 inherit_from => [ "linux-generic64" ],
920 cflags => add("-m64"),
921 cxxflags => add("-m64"),
922 lib_cppflags => add("-DB_ENDIAN"),
927 "linux32-s390x" => {
929 # "Highgprs" is kernel feature first implemented in Linux
932 # upon 32-bit process context switch, but even on
934 # it possible to deploy 64-bit instructions even in legacy
937 # linux-generic32, and the idea is to be able to install the
939 # /lib/highgprs/libcrypto.so.x.y, for ldconfig and run-time
942 # sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
944 inherit_from => [ "linux-generic32" ],
945 cflags => add("-m31 -Wa,-mzarch"),
946 cxxflags => add("-m31 -Wa,-mzarch"),
947 lib_cppflags => add("-DB_ENDIAN"),
953 #### SPARC Linux setups
954 "linux-sparcv8" => {
955 inherit_from => [ "linux-latomic" ],
956 cflags => add("-mcpu=v8"),
957 cxxflags => add("-mcpu=v8"),
958 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
962 "linux-sparcv9" => {
963 # it's a real mess with -mcpu=ultrasparc option under Linux,
964 # but -Wa,-Av8plus should do the trick no matter what.
965 inherit_from => [ "linux-latomic" ],
966 cflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
967 cxxflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
968 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
972 "linux64-sparcv9" => {
974 inherit_from => [ "linux-generic64" ],
975 cflags => add("-m64 -mcpu=ultrasparc"),
976 cxxflags => add("-m64 -mcpu=ultrasparc"),
977 lib_cppflags => add("-DB_ENDIAN"),
978 ex_libs => add(threads("-latomic")),
985 "linux-alpha-gcc" => {
986 inherit_from => [ "linux-generic64" ],
987 lib_cppflags => add("-DL_ENDIAN"),
992 "linux-c64xplus" => {
996 CFLAGS => "-o2 -ox -ms",
997 cflags => "--linux -ea=.s -eo=.o -mv6400+ -pden",
998 cxxflags => "--linux -ea=.s -eo=.o -mv6400+ -pden",
999 cppflags => combine("-DOPENSSL_SMALL_FOOTPRINT",
1000 threads("-D_REENTRANT")),
1006 shared_target => "linux-shared",
1007 shared_cflag => "--pic",
1008 shared_ldflag => add("-z --sysv --shared"),
1013 "BSD-generic32" => {
1015 # flags, which would cover all BSD flavors. -pthread applies
1017 # as -D_POSIX_THREAD -lc_r, which is sufficient. FreeBSD 4.x
1018 # expands it as -lc_r, which has to be accompanied by explicit
1019 # -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x
1020 # expands it as -lc_r, which seems to be sufficient?
1023 CFLAGS => picker(default => "-Wall",
1024 debug => "-O0 -g",
1025 release => "-O3"),
1026 cflags => threads("-pthread"),
1027 cppflags => threads("-D_THREAD_SAFE -D_REENTRANT"),
1028 ex_libs => add(threads("-pthread")),
1033 shared_target => "bsd-gcc-shared",
1034 shared_cflag => "-fPIC",
1036 "BSD-generic64" => {
1037 inherit_from => [ "BSD-generic32" ],
1041 "BSD-x86" => {
1042 inherit_from => [ "BSD-generic32" ],
1043 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1044 lib_cppflags => add("-DL_ENDIAN"),
1049 "BSD-x86-elf" => {
1050 inherit_from => [ "BSD-x86" ],
1054 "BSD-sparcv8" => {
1055 inherit_from => [ "BSD-generic32" ],
1056 cflags => add("-mcpu=v8"),
1057 lib_cppflags => add("-DB_ENDIAN"),
1061 "BSD-sparc64" => {
1062 # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
1065 inherit_from => [ "BSD-generic64" ],
1066 lib_cppflags => add("-DB_ENDIAN -DMD32_REG_T=int"),
1072 "BSD-ia64" => {
1073 inherit_from => [ "BSD-generic64" ],
1074 lib_cppflags => add("-DL_ENDIAN"),
1080 "BSD-x86_64" => {
1081 inherit_from => [ "BSD-generic64" ],
1082 lib_cppflags => add("-DL_ENDIAN"),
1084 asm_arch => 'x86_64',
1088 "BSD-aarch64" => {
1089 inherit_from => [ "BSD-generic64" ],
1090 lib_cppflags => add("-DL_ENDIAN"),
1096 "BSD-ppc" => {
1097 inherit_from => [ "BSD-generic32" ],
1100 lib_cppflags => add("-DB_ENDIAN"),
1103 "BSD-ppc64" => {
1104 inherit_from => [ "BSD-generic64" ],
1105 cflags => add("-m64"),
1106 cxxflags => add("-m64"),
1107 lib_cppflags => add("-DB_ENDIAN"),
1112 "BSD-ppc64le" => {
1113 inherit_from => [ "BSD-generic64" ],
1114 cflags => add("-m64"),
1115 cxxflags => add("-m64"),
1116 lib_cppflags => add("-DL_ENDIAN"),
1123 "BSD-riscv64" => {
1124 inherit_from => [ "BSD-generic64"],
1129 "BSD-riscv32" => {
1130 inherit_from => [ "BSD-generic32"],
1135 "BSD-armv4" => {
1137 # Note that -march is not among compiler options in linux-armv4
1143 # performance, e.g. -march=armv6 or -march=armv7-a;
1149 # requirement for run-time switch between platform-specific
1150 # code paths. And without run-time switch performance would be
1154 # big-endian platform. This is because ARMv7 processor always
1155 # picks instructions in little-endian order. Another similar
1156 # limitation is that -mthumb can't "cross" -march=armv6t2
1157 # boundary, because that's where it became Thumb-2. Well, this
1165 # ./Configure BSD-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
1167 inherit_from => [ "BSD-generic32" ],
1172 "bsdi-elf-gcc" => {
1175 CFLAGS => "-fomit-frame-pointer -O3 -Wall",
1176 lib_cppflags => "-DPERL5 -DL_ENDIAN",
1177 ex_libs => add("-ldl"),
1183 shared_target => "bsd-gcc-shared",
1184 shared_cflag => "-fPIC",
1186 #### *BSD-nodef
1187 "BSD-nodef-generic32" => {
1189 # flags, which would cover all BSD flavors. -pthread applies
1191 # as -D_POSIX_THREAD -lc_r, which is sufficient. FreeBSD 4.x
1192 # expands it as -lc_r, which has to be accompanied by explicit
1193 # -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x
1194 # expands it as -lc_r, which seems to be sufficient?
1197 CFLAGS => picker(default => "-Wall",
1198 debug => "-O0 -g",
1199 release => "-O3"),
1200 cflags => threads("-pthread"),
1201 cppflags => threads("-D_THREAD_SAFE -D_REENTRANT"),
1202 ex_libs => add(threads("-pthread")),
1207 shared_target => "bsd-gcc-nodef-shared",
1208 shared_cflag => "-fPIC",
1210 "BSD-nodef-generic64" => {
1211 inherit_from => [ "BSD-nodef-generic32" ],
1215 "BSD-nodef-x86" => {
1216 inherit_from => [ "BSD-nodef-generic32" ],
1217 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1218 lib_cppflags => add("-DL_ENDIAN"),
1223 "BSD-nodef-x86-elf" => {
1224 inherit_from => [ "BSD-nodef-x86" ],
1228 "BSD-nodef-sparcv8" => {
1229 inherit_from => [ "BSD-nodef-generic32" ],
1230 cflags => add("-mcpu=v8"),
1231 lib_cppflags => add("-DB_ENDIAN"),
1235 "BSD-nodef-sparc64" => {
1236 # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
1239 inherit_from => [ "BSD-nodef-generic64" ],
1240 lib_cppflags => add("-DB_ENDIAN -DMD32_REG_T=int"),
1246 "BSD-nodef-ia64" => {
1247 inherit_from => [ "BSD-nodef-generic64" ],
1248 lib_cppflags => add("-DL_ENDIAN"),
1254 "BSD-nodef-x86_64" => {
1255 inherit_from => [ "BSD-nodef-generic64" ],
1256 lib_cppflags => add("-DL_ENDIAN"),
1258 asm_arch => 'x86_64',
1264 # Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
1265 # Now we only have blended unixware-* as it's the only one used by ./config.
1267 # and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
1269 # lack of motivation to support out-of-date platforms with out-of-date
1272 # UnixWare 2.0x fails destest with -O.
1273 "unixware-2.0" => {
1276 cflags => threads("-Kthread"),
1277 lib_cppflags => "-DFILIO_H -DNO_STRINGS_H",
1278 ex_libs => add("-lsocket -lnsl -lresolv -lx"),
1281 "unixware-2.1" => {
1284 CFLAGS => "-O",
1285 cflags => threads("-Kthread"),
1286 lib_cppflags => "-DFILIO_H",
1287 ex_libs => add("-lsocket -lnsl -lresolv -lx"),
1290 "unixware-7" => {
1293 CFLAGS => "-O",
1294 cflags => combine("-Kalloca", threads("-Kthread")),
1295 lib_cppflags => "-DFILIO_H",
1296 ex_libs => add("-lsocket -lnsl"),
1300 perlasm_scheme => "elf-1",
1302 shared_target => "svr5-shared",
1303 shared_cflag => "-Kpic",
1305 "unixware-7-gcc" => {
1308 CFLAGS => "-O3 -fomit-frame-pointer -Wall",
1309 cppflags => add(threads("-D_REENTRANT")),
1310 lib_cppflags => add("-DL_ENDIAN -DFILIO_H"),
1311 ex_libs => add("-lsocket -lnsl"),
1315 perlasm_scheme => "elf-1",
1317 shared_target => "gnu-shared",
1318 shared_cflag => "-fPIC",
1320 # SCO 5 - Ben Laurie says the -O breaks the SCO cc.
1321 "sco5-cc" => {
1324 cflags => "-belf",
1325 ex_libs => add("-lsocket -lnsl"),
1328 perlasm_scheme => "elf-1",
1330 shared_target => "svr3-shared",
1331 shared_cflag => "-Kpic",
1333 "sco5-gcc" => {
1336 cflags => "-O3 -fomit-frame-pointer",
1337 ex_libs => add("-lsocket -lnsl"),
1341 perlasm_scheme => "elf-1",
1343 shared_target => "svr3-shared",
1344 shared_cflag => "-fPIC",
1353 "aix-common" => {
1357 lib_cppflags => "-DB_ENDIAN",
1358 lflags => "-Wl,-bsvr4",
1362 module_ldflags => "-Wl,-G,-bsymbolic,-bnoentry",
1363 shared_ldflag => "-Wl,-G,-bsymbolic,-bnoentry",
1364 shared_defflag => "-Wl,-bE:",
1365 shared_fipsflag => "-Wl,-binitfini:_init:_cleanup",
1368 "aix-gcc" => {
1369 inherit_from => [ "aix-common" ],
1371 CFLAGS => picker(debug => "-O0 -g",
1372 release => "-O"),
1373 cflags => add(threads("-pthread")),
1374 ex_libs => add(threads("-pthread")),
1378 shared_ldflag => add_before("-shared -static-libgcc"),
1379 AR => add("-X32"),
1380 RANLIB => add("-X32"),
1382 "aix64-gcc" => {
1383 inherit_from => [ "aix-common" ],
1385 CFLAGS => picker(debug => "-O0 -g",
1386 release => "-O"),
1387 cflags => combine("-maix64", threads("-pthread")),
1388 ex_libs => add(threads("-pthread")),
1392 shared_ldflag => add_before("-shared -static-libgcc"),
1394 AR => add("-X64"),
1395 RANLIB => add("-X64"),
1397 "aix64-gcc-as" => {
1398 inherit_from => [ "aix64-gcc" ],
1399 perlasm_scheme => "aix64-as",
1401 "aix-cc" => {
1402 inherit_from => [ "aix-common" ],
1404 CFLAGS => picker(debug => "-O0 -g",
1405 release => "-O"),
1406 cflags => combine("-q32 -qmaxmem=16384 -qro -qroconst",
1407 threads("-qthreaded")),
1408 cppflags => threads("-D_THREAD_SAFE"),
1409 ex_libs => add(threads("-lpthreads")),
1413 shared_cflag => "-qpic",
1414 AR => add("-X32"),
1415 RANLIB => add("-X32"),
1418 # If 17.1 openxl runtime is available, -latomic can be used
1419 # instead of -DBROKEN_CLANG_ATOMICS
1420 "aix-clang" => {
1421 inherit_from => [ "aix-common" ],
1422 CC => "ibm-clang",
1423 CFLAGS => picker(debug => "-O0 -g",
1424 release => "-O"),
1425 …cflags => combine("-Wno-implicit-function-declaration -mcmodel=large -DBROKEN_CLANG_ATOM…
1426 threads("-pthread")),
1427 ex_libs => add(threads("-pthread")),
1431 shared_cflag => "-fpic",
1432 shared_ldflag => add("-shared"),
1433 AR => add("-X32"),
1434 RANLIB => add("-X32"),
1436 # shared_target of "aix-solib" builds shared libraries packaged
1437 # without archives. This improves the behavior of inter-library
1445 "aix-cc-solib" => {
1446 inherit_from => [ "aix-cc" ],
1447 shared_target => "aix-solib",
1449 "aix64-cc" => {
1450 inherit_from => [ "aix-common" ],
1452 CFLAGS => picker(debug => "-O0 -g",
1453 release => "-O"),
1454 cflags => combine("-q64 -qmaxmem=16384 -qro -qroconst",
1455 threads("-qthreaded")),
1456 cppflags => threads("-D_THREAD_SAFE"),
1457 ex_libs => add(threads("-lpthreads")),
1462 shared_cflag => "-qpic",
1464 AR => add("-X64"),
1465 RANLIB => add("-X64"),
1467 "aix64-clang" => {
1468 inherit_from => [ "aix-common" ],
1469 CC => "ibm-clang",
1470 CFLAGS => picker(debug => "-O0 -g",
1471 release => "-O"),
1472 cflags => combine("-maix64 -Wno-implicit-function-declaration -mcmodel=large",
1473 threads("-pthread")),
1474 ex_libs => add(threads("-pthread")),
1478 shared_cflag => "-fpic",
1479 shared_ldflag => add("-shared"),
1481 AR => add("-X64"),
1482 RANLIB => add("-X64"),
1484 "aix64-cc-solib" => {
1485 inherit_from => [ "aix64-cc" ],
1486 shared_target => "aix-solib",
1489 # SIEMENS BS2000/OSD: an EBCDIC-based mainframe
1490 "BS2000-OSD" => {
1493 CFLAGS => "-O",
1494 cflags => "-XLLML -XLLMK -XL",
1495 cppflags => "-DCHARSET_EBCDIC",
1496 lib_cppflags => "-DB_ENDIAN",
1497 ex_libs => add("-lsocket -lnsl"),
1504 # Win64 targets, WIN64I denotes IA-64/Itanium and WIN64A - AMD64
1511 # Also note that we force threads no matter what. Configuring "no-threads"
1514 # UNICODE is defined in VC-common and applies to all targets. It used to
1515 # be an opt-in option for VC-WIN32, but not anymore. The original reason
1521 "VC-common" => {
1553 shared_target => "win-shared", # meaningless except it gives Configure a hint
1560 # additional parameter to build_scheme denotes install-path "flavour"
1561 build_scheme => add("VC-common", { separator => undef }),
1563 "VC-noCE-common" => {
1564 inherit_from => [ "VC-common" ],
1582 # non-shared build because static library is compiled with /Zl
1589 # prefer [non-debug] openssl.exe to be free from Micorosoft RTL
1602 "VC-WIN64-common" => {
1603 inherit_from => [ "VC-noCE-common" ],
1607 push @ex_libs, 'bufferoverflowu.lib' if (`cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
1612 "VC-WIN64I" => {
1613 inherit_from => [ "VC-WIN64-common" ],
1615 ASFLAGS => "-d debug",
1616 asoutflag => "-o ",
1621 multilib => "-ia64",
1623 "VC-WIN64A" => {
1624 inherit_from => [ "VC-WIN64-common" ],
1625 AS => sub { vc_win64a_info()->{AS} },
1626 ASFLAGS => sub { vc_win64a_info()->{ASFLAGS} },
1627 asoutflag => sub { vc_win64a_info()->{asoutflag} },
1628 asflags => sub { vc_win64a_info()->{asflags} },
1630 uplink_arch => 'x86_64',
1631 asm_arch => 'x86_64',
1632 perlasm_scheme => sub { vc_win64a_info()->{perlasm_scheme} },
1633 multilib => "-x64",
1635 "VC-WIN32" => {
1636 inherit_from => [ "VC-noCE-common" ],
1637 AS => sub { vc_win32_info()->{AS} },
1638 ASFLAGS => sub { vc_win32_info()->{ASFLAGS} },
1639 asoutflag => sub { vc_win32_info()->{asoutflag} },
1640 asflags => sub { vc_win32_info()->{asflags} },
1645 perlasm_scheme => sub { vc_win32_info()->{perlasm_scheme} },
1646 # "WOW" stands for "Windows on Windows", and "VC-WOW" engages
1647 # some installation path heuristics in windows-makefile.tmpl...
1648 build_scheme => add("VC-WOW", { separator => undef }),
1650 "VC-CE" => {
1651 inherit_from => [ "VC-common" ],
1658 sub { vc_wince_info()->{cflags}; },
1659 sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
1662 cppflags => sub { vc_wince_info()->{cppflags}; },
1664 lib_cppflags => sub { vc_wince_info()->{cppflags}; },
1671 lflags => add(combine(sub { vc_wince_info()->{lflags}; },
1682 if (-f "$x/env('TARGETCPU')/wcecompatex.lib") {
1698 "mingw-common" => {
1702 CFLAGS => picker(default => "-Wall",
1703 debug => "-g -O0",
1704 release => "-O3"),
1705 cppflags => combine("-DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN",
1706 threads("-D_MT")),
1707 lib_cppflags => "-DL_ENDIAN",
1708 ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"),
1711 shared_target => "mingw-shared",
1713 shared_ldflag => "-static-libgcc",
1718 inherit_from => [ "mingw-common" ],
1719 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1720 cflags => "-m32",
1726 shared_rcflag => "--target=pe-i386",
1735 # consider its binaries for using with non-mingw64 run-time
1738 inherit_from => [ "mingw-common" ],
1739 cflags => "-m64",
1742 asm_arch => 'x86_64',
1745 shared_rcflag => "--target=pe-x86-64",
1753 CFLAGS => "-O",
1754 lib_cppflags => "-DL_ENDIAN",
1757 "UEFI-x86" => {
1762 "UEFI-x86_64" => {
1764 asm_arch => 'x86_64',
1772 CFLAGS => "-O -Wall",
1773 lib_cppflags => "-DTERMIOS -DL_ENDIAN",
1780 "Cygwin-common" => {
1785 CFLAGS => picker(default => "-Wall",
1786 debug => "-g -O0",
1787 release => "-O3"),
1788 ex_libs => add("-lcrypt32"),
1789 lib_cppflags => "-DTERMIOS -DL_ENDIAN",
1793 shared_target => "cygwin-shared",
1794 shared_cppflags => "-D_WINDLL",
1798 "Cygwin-x86" => {
1799 inherit_from => [ "Cygwin-common" ],
1800 CFLAGS => add(picker(release => "-O3 -fomit-frame-pointer")),
1805 "Cygwin-x86_64" => {
1806 inherit_from => [ "Cygwin-common" ],
1809 asm_arch => 'x86_64',
1814 inherit_from => [ "Cygwin-x86" ]
1817 "Cygwin-i386" => {
1818 inherit_from => [ "Cygwin-x86" ]
1820 "Cygwin-i486" => {
1821 inherit_from => [ "Cygwin-x86" ]
1823 "Cygwin-i586" => {
1824 inherit_from => [ "Cygwin-x86" ]
1826 "Cygwin-i686" => {
1827 inherit_from => [ "Cygwin-x86" ]
1831 "darwin-common" => {
1835 CFLAGS => picker(debug => "-g -O0",
1836 release => "-O3"),
1837 cppflags => threads("-D_REENTRANT"),
1838 lflags => add("-Wl,-search_paths_first"),
1844 ranlib => "ranlib -c",
1845 shared_target => "darwin-shared",
1846 shared_cflag => "-fPIC",
1849 # Option "freeze" such as -std=gnu9x can't negatively interfere
1852 "darwin-ppc-cc" => { inherit_from => [ "darwin-ppc" ] }, # Historic alias
1853 "darwin-ppc" => {
1854 inherit_from => [ "darwin-common" ],
1855 cflags => add("-arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL"),
1856 lib_cppflags => add("-DB_ENDIAN"),
1857 shared_cflag => add("-fno-common"),
1861 "darwin64-ppc-cc" => { inherit_from => [ "darwin64-ppc" ] }, # Historic alias
1862 "darwin64-ppc" => {
1863 inherit_from => [ "darwin-common" ],
1864 cflags => add("-arch ppc64 -std=gnu9x"),
1865 lib_cppflags => add("-DB_ENDIAN"),
1870 "darwin-i386-cc" => { inherit_from => [ "darwin-i386" ] }, # Historic alias
1871 "darwin-i386" => {
1872 inherit_from => [ "darwin-common" ],
1873 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1874 cflags => add("-arch i386"),
1875 lib_cppflags => add("-DL_ENDIAN"),
1880 "darwin64-x86_64-cc" => { inherit_from => [ "darwin64-x86_64" ] }, # Historic alias
1881 "darwin64-x86_64" => {
1882 inherit_from => [ "darwin-common" ],
1883 CFLAGS => add("-Wall"),
1884 cflags => add("-arch x86_64"),
1885 lib_cppflags => add("-DL_ENDIAN"),
1887 asm_arch => 'x86_64',
1890 "darwin64-arm64-cc" => { inherit_from => [ "darwin64-arm64" ] }, # "Historic" alias
1891 "darwin64-arm64" => {
1892 inherit_from => [ "darwin-common" ],
1893 CFLAGS => add("-Wall"),
1894 cflags => add("-arch arm64"),
1895 lib_cppflags => add("-DL_ENDIAN"),
1901 ##### GNU Hurd
1902 "hurd-generic32" => {
1906 CFLAGS => picker(default => "-Wall",
1907 debug => "-O0 -g",
1908 release => "-O3"),
1909 CXXFLAGS => picker(default => "-Wall",
1910 debug => "-O0 -g",
1911 release => "-O3"),
1912 cflags => threads("-pthread"),
1913 cxxflags => combine("-std=c++11", threads("-pthread")),
1914 ex_libs => add("-ldl", threads("-pthread")),
1918 shared_target => "linux-shared",
1919 shared_cflag => "-fPIC",
1920 shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
1923 "hurd-generic64" => {
1924 inherit_from => [ "hurd-generic32" ],
1928 #### X86 / X86_64 targets
1929 "hurd-x86" => {
1930 inherit_from => [ "hurd-generic32" ],
1931 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1932 cflags => add("-m32"),
1933 cxxflags => add("-m32"),
1934 lib_cppflags => add("-DL_ENDIAN"),
1940 "hurd-x86_64" => {
1941 inherit_from => [ "hurd-generic64" ],
1942 cflags => add("-m64"),
1943 cxxflags => add("-m64"),
1944 lib_cppflags => add("-DL_ENDIAN"),
1946 asm_arch => 'x86_64',
1952 "vxworks-ppc60x" => {
1955 CFLAGS => "-O2 -Wall -fstrength-reduce",
1956 …cflags => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -fno-builtin -fno-strict-a…
1957 cppflags => combine("-D_REENTRANT -DPPC32_fp60x -DCPU=PPC32",
1958 "_DTOOL_FAMILY=gnu -DTOOL=gnu",
1959 "-I\$(WIND_BASE)/target/usr/h",
1960 "-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
1962 lflags => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common"),
1963 ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
1965 "vxworks-ppcgen" => {
1968 CFLAGS => "-O1 -Wall",
1969 cflags => "-mrtp -msoft-float -mstrict-align -fno-builtin -fno-strict-aliasing",
1970 cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC32",
1971 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
1972 "-I\$(WIND_BASE)/target/usr/h",
1973 "-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
1975 lflags => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon"),
1976 ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
1978 "vxworks-ppc405" => {
1981 CFLAGS => "-g",
1982 cflags => "-msoft-float -mlongcall",
1983 cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC405",
1984 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
1985 "-I\$(WIND_BASE)/target/h"),
1987 lflags => add("-r"),
1989 "vxworks-ppc750" => {
1992 CFLAGS => "-ansi -fvolatile -Wall \$(DEBUG_FLAG)",
1993 … cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
1994 cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
1995 "-I\$(WIND_BASE)/target/h"),
1997 lflags => add("-r"),
1999 "vxworks-ppc750-debug" => {
2002 CFLAGS => "-ansi -fvolatile -Wall -g",
2003 … cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
2004 cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
2005 "-DPEDANTIC -DDEBUG",
2006 "-I\$(WIND_BASE)/target/h"),
2008 lflags => add("-r"),
2010 "vxworks-ppc860" => {
2013 cflags => "-nostdinc -msoft-float",
2014 cppflags => combine("-DCPU=PPC860 -DNO_STRINGS_H",
2015 "-I\$(WIND_BASE)/target/h"),
2017 lflags => add("-r"),
2019 "vxworks-simlinux" => {
2022 …cflags => "-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -fno-builtin -fno-defer-…
2023 …cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
2024 "-DL_ENDIAN -DCPU=SIMLINUX -DNO_STRINGS_H",
2025 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
2026 "-DOPENSSL_NO_HW_PADLOCK",
2027 "-I\$(WIND_BASE)/target/h",
2028 "-I\$(WIND_BASE)/target/h/wrn/coreip"),
2030 lflags => add("-r"),
2033 "vxworks-mips" => {
2036 CFLAGS => "-O -G 0",
2037 … => "-mrtp -mips2 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno…
2038 …cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
2039 "-DCPU=MIPS32 -DNO_STRINGS_H",
2040 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
2041 "-DOPENSSL_NO_HW_PADLOCK",
2042 threads("-D_REENTRANT"),
2043 "-I\$(WIND_BASE)/target/h",
2044 "-I\$(WIND_BASE)/target/h/wrn/coreip"),
2046 lflags => add("-L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon"),
2047 ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
2055 "uClinux-dist" => {
2058 cppflags => threads("-D_REENTRANT"),
2063 shared_target => "linux-shared",
2064 shared_cflag => "-fPIC",
2067 "uClinux-dist64" => {
2070 cppflags => threads("-D_REENTRANT"),
2075 shared_target => "linux-shared",
2076 shared_cflag => "-fPIC",
2081 # Most things happen in vms-generic.
2083 # the target name, and will assume that anything matching /-p\d+$/
2085 "vms-generic" => {
2095 @{vms_info()->{disable_warns}};
2103 return vms_info()->{def_zlib}
2104 ? "LIBZ=\"\"\"".vms_info()->{def_zlib}."\"\"\"" : ();
2120 ex_libs => add(sub { return vms_info()->{zlib} || (); }),
2121 shared_target => "vms-shared",
2128 AS => sub { vms_info()->{AS} },
2129 ASFLAGS => sub { vms_info()->{ASFLAGS} },
2130 asoutflag => sub { vms_info()->{asoutflag} },
2131 asflags => sub { vms_info()->{asflags} },
2132 perlasm_scheme => sub { vms_info()->{perlasm_scheme} },
2140 # ----------
2141 # LONG[=ARGV] The compiler assumes 64-bit pointers. If the ARGV option to
2146 # ----------
2148 # We don't want the hassle of dealing with 32-bit pointers with argv, so
2149 # we force it to have 64-bit pointers, see the added cflags in the -p64
2152 "vms-alpha" => {
2153 inherit_from => [ "vms-generic" ],
2157 "vms-alpha-p32" => {
2158 inherit_from => [ "vms-alpha" ],
2162 "vms-alpha-p64" => {
2163 inherit_from => [ "vms-alpha" ],
2167 "vms-ia64" => {
2168 inherit_from => [ "vms-generic" ],
2170 asm_arch => sub { vms_info()->{AS} ? 'ia64' : undef },
2175 "vms-ia64-p32" => {
2176 inherit_from => [ "vms-ia64" ],
2180 "vms-ia64-p64" => {
2181 inherit_from => [ "vms-ia64" ],
2185 "vms-x86_64" => {
2186 inherit_from => [ "vms-generic" ],
2190 "vms-x86_64-p32" => {
2191 inherit_from => [ "vms-x86_64" ],
2195 "vms-x86_64-p64" => {
2196 inherit_from => [ "vms-x86_64" ],