Lines Matching +full:aarch64 +full:- +full:unknown +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 " };
20 $die->("NASM not found - make sure it's installed and available on %PATH%\n");
21 $vc_win64a_info = { AS => "{unknown}",
33 my $ver=`nasm -v 2>NUL`;
34 my $vew=`nasmw -v 2>NUL`;
38 asflags => "-f win32",
39 asoutflag => "-o ",
49 $die->("NASM not found - make sure it's installed and available on %PATH%\n");
50 $vc_win32_info = { AS => "{unknown}",
64 $die->('%OSVERSION% is not defined') if (!defined(env('OSVERSION')));
65 $die->('%PLATFORM% is not defined') if (!defined(env('PLATFORM')));
66 $die->('%TARGETCPU% is not defined') if (!defined(env('TARGETCPU')));
74 if ($wcevers =~ /^WCE([1-9])([0-9]{2})$/) {
78 $die->('%OSVERSION% value is insane');
79 $wcevernum = "{unknown}";
80 $wceverdotnum = "{unknown}";
82 my $wcecdefs = "-D_WIN32_WCE=$wcevernum -DUNDER_CE=$wcevernum"; # -D_WIN32_WCE=NNN
87 $wceplatf =~ tr/a-z0-9 /A-Z0-9_/;
88 $wcecdefs .= " -DWCE_PLATFORM_$wceplatf";
92 /^X86/ && do { $wcecdefs.=" -Dx86 -D_X86_ -D_i386_ -Di_386_";
94 /^ARMV4[IT]/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
95 $wcecdefs.=" -DTHUMB -D_THUMB_" if($wcetgt=~/T$/);
96 $wcecdefs.=" -QRarch4T -QRinterwork-return";
98 /^ARM/ && do { $wcecdefs.=" -DARM -D_ARM_ -D$wcetgt";
100 /^MIPSIV/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
101 $wcecdefs.=" -D_MIPS64 -QMmips4 -QMn32";
103 /^MIPS16/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
104 $wcecdefs.=" -DMIPSII -QMmips16";
106 /^MIPSII/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000 -D$wcetgt";
107 $wcecdefs.=" -QMmips2";
109 /^R4[0-9]{3}/ && do { $wcecdefs.=" -DMIPS -D_MIPS_ -DR4000";
111 /^SH[0-9]/ && do { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_ -DSHx";
112 $wcecdefs.=" -Qsh4" if ($wcetgt =~ /^SH4/);
114 { $wcecdefs.=" -D$wcetgt -D_${wcetgt}_";
127 my $pointer_size_str = $config{target} =~ m|-p(\d+)$| ? $1 : "";
132 if (%$vms_info && $vms_info->{pointer_size} ne $pointer_size_str) {
137 $vms_info->{disable_warns} = [
138 "CXXPRAGMANA", # Shut up about unknown / unsupported pragmas
140 $vms_info->{pointer_size} = $pointer_size_str;
144 push @{$vms_info->{disable_warns}}, "MAYLOSEDATA3";
150 if (defined($disabled{"zlib-dynamic"})) {
151 $vms_info->{zlib} = $withargs{zlib_lib} || "$default_zlib/SHARE";
153 $vms_info->{def_zlib} = $withargs{zlib_lib} || $default_zlib;
154 # In case the --with-zlib-lib value contains something like
156 $vms_info->{def_zlib} =~ s|/.*$||g;
160 if ($config{target} =~ /-ia64/) {
161 `PIPE ias -H 2> NL:`;
163 $vms_info->{AS} = "ias";
164 $vms_info->{ASFLAGS} = '-d debug';
165 $vms_info->{asflags} = '"-N" vms_upcase';
166 $vms_info->{asoutflag} = "-o ";
167 $vms_info->{perlasm_scheme} = "ias";
176 #### Basic configs that should work on any 32-bit box
180 CFLAGS => picker(debug => "-O0 -g",
181 release => "-O3"),
182 thread_scheme => "(unknown)",
188 CFLAGS => "-O",
189 thread_scheme => "(unknown)",
193 "vos-gcc" => {
196 CFLAGS => picker(default => "-Wall",
197 debug => "-O0 -g",
198 release => "-O3"),
199 cppflags => "-D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES",
200 lib_cppflags => "-DB_ENDIAN",
201 thread_scheme => "(unknown)",
203 lflags => add("-Wl,-map"),
209 "solaris-common" => {
212 lib_cppflags => "-DFILIO_H",
213 ex_libs => add("-lsocket -lnsl -ldl"),
218 "solaris-common-cc" => {
219 inherit_from => [ "solaris-common" ],
222 shared_ldflag => "-Wl,-Bsymbolic",
223 shared_defflag => "-Wl,-M,",
224 shared_sonameflag=> "-Wl,-h,",
226 #### Solaris common with GNU C setups
227 "solaris-common-gcc" => {
228 inherit_from => [ "solaris-common" ],
230 shared_target => "solaris-gcc-shared", # The rest is on shared_info.pl
232 #### Solaris x86 with GNU C setups
233 "solaris-x86-gcc" => {
234 # NB. GNU C has to be configured to use GNU assembler, and not
236 # failures [at least] in 32-bit build.
237 inherit_from => [ "solaris-common-gcc" ],
239 CFLAGS => add_before(picker(default => "-Wall",
240 debug => "-O0 -g",
241 release => "-O3 -fomit-frame-pointer")),
242 cflags => add(threads("-pthread")),
243 lib_cppflags => add("-DL_ENDIAN"),
244 ex_libs => add(threads("-pthread")),
246 shared_cflag => "-fPIC",
247 shared_ldflag => add_before("-shared -static-libgcc"),
251 "solaris64-x86_64-gcc" => {
252 # -shared -static-libgcc might appear controversial, but modules
258 # to consider using gcc shared build even with vendor compiler:-)
259 # -- <appro@openssl.org>
260 inherit_from => [ "solaris-common-gcc" ],
262 CFLAGS => add_before(picker(default => "-Wall",
263 debug => "-O0 -g",
264 release => "-O3")),
265 cflags => add_before("-m64", threads("-pthread")),
266 lib_cppflags => add("-DL_ENDIAN"),
267 ex_libs => add(threads("-pthread")),
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")),
299 ex_libs => add(threads("-lpthread")),
303 shared_cflag => "-KPIC",
304 shared_ldflag => add_before("-G -dy -z text"),
308 #### SPARC Solaris with GNU C setups
309 "solaris-sparcv7-gcc" => {
310 inherit_from => [ "solaris-common-gcc" ],
312 CFLAGS => add_before(picker(default => "-Wall",
313 debug => "-O0 -g",
314 release => "-O3")),
315 cflags => add(threads("-pthread")),
316 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
317 ex_libs => add(threads("-pthread")),
319 shared_cflag => "-fPIC",
320 shared_ldflag => add_before("-shared"),
322 "solaris-sparcv8-gcc" => {
323 inherit_from => [ "solaris-sparcv7-gcc" ],
324 cflags => add_before("-mcpu=v8"),
328 "solaris-sparcv9-gcc" => {
329 # -m32 should be safe to add as long as driver recognizes
330 # -mcpu=ultrasparc
331 inherit_from => [ "solaris-sparcv7-gcc" ],
332 cflags => add_before("-m32 -mcpu=ultrasparc"),
336 "solaris64-sparcv9-gcc" => {
337 inherit_from => [ "solaris-sparcv9-gcc" ],
338 cflags => sub { my $f=join(" ",@_); $f =~ s/\-m32/-m64/; $f; },
345 # SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
346 # SC5.0 note: Compiler common patch 107357-01 or later is required!
347 "solaris-sparcv7-cc" => {
348 inherit_from => [ "solaris-common-cc" ],
350 CFLAGS => add_before(picker(debug => "-g",
351 release => "-xO5 -xdepend")),
352 cflags => add_before("-xstrconst -Xa"),
353 cppflags => add(threads("-D_REENTRANT")),
354 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
355 lflags => add(threads("-mt")),
356 ex_libs => add(threads("-lpthread")),
358 shared_cflag => "-KPIC",
359 shared_ldflag => add_before("-G -dy -z text"),
362 "solaris-sparcv8-cc" => {
363 inherit_from => [ "solaris-sparcv7-cc" ],
364 cflags => add_before("-xarch=v8"),
368 "solaris-sparcv9-cc" => {
369 inherit_from => [ "solaris-sparcv7-cc" ],
370 cflags => add_before("-xarch=v8plus"),
374 "solaris64-sparcv9-cc" => {
375 inherit_from => [ "solaris-sparcv7-cc" ],
376 cflags => add_before("-m64 -xarch=sparc"),
385 "irix-common" => {
388 cppflags => threads("-D_SGI_MP_SOURCE"),
389 lib_cppflags => "-DB_ENDIAN",
390 ex_libs => add(threads("-lpthread")),
394 shared_ldflag => "-shared -Wl,-Bsymbolic",
395 shared_sonameflag=> "-Wl,-soname,",
397 "irix-mips3-gcc" => {
398 inherit_from => [ "irix-common" ],
400 CFLAGS => picker(debug => "-g -O0",
401 release => "-O3"),
402 LDFLAGS => "-static-libgcc",
403 cflags => "-mabi=n32",
409 "irix-mips3-cc" => {
410 inherit_from => [ "irix-common" ],
412 CFLAGS => picker(debug => "-g -O0",
413 release => "-O2"),
414 cflags => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared",
421 "irix64-mips4-gcc" => {
422 inherit_from => [ "irix-common" ],
424 CFLAGS => picker(debug => "-g -O0",
425 release => "-O3"),
426 LDFLAGS => "-static-libgcc",
427 cflags => "-mabi=64 -mips4",
433 "irix64-mips4-cc" => {
434 inherit_from => [ "irix-common" ],
436 CFLAGS => picker(debug => "-g -O0",
437 release => "-O2"),
438 cflags => "-64 -mips4 -use_readonly_const -G0 -rdata_shared",
445 #### Unified HP-UX ANSI C configs.
447 # - Originally we were optimizing at +O4 level. It should be noted
448 # that the only difference between +O3 and +O4 is global inter-
450 # stage the compiler leaves behind certain pseudo-code in lib*.a
455 # HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
458 # - Keep in mind that the HP compiler by default generates code
460 # If the toolkit is meant to be used on various PA-RISC processors
461 # consider './Configure hpux-parisc-[g]cc +DAportable'.
462 # - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
463 # 32-bit message digests. (For the moment of this writing) HP C
465 # chew forever:-). For more details look-up MD32_XARRAY comment in
467 # - originally there were 32-bit hpux-parisc2-* targets. They were
468 # scrapped, because a) they were not interchangeable with other 32-bit
469 # targets; b) performance-critical 32-bit assembly modules implement
470 # even PA-RISC 2.0-specific code paths, which are chosen at run-time,
471 # thus adequate performance is provided even with PA-RISC 1.1 build.
472 "hpux-common" => {
477 lib_cppflags => "-DB_ENDIAN",
479 dso_scheme => "dlfcn", # overridden in 32-bit PA-RISC builds
481 bin_lflags => "-Wl,+s,+cdp,../:,+cdp,./:",
482 shared_ldflag => "-Wl,-B,symbolic,+vnocompatwarnings,-z,+s,+cdp,../:,+cdp,./:",
483 shared_sonameflag=> "-Wl,+h,",
485 "hpux-parisc-gcc" => {
486 inherit_from => [ "hpux-common" ],
488 CFLAGS => picker(debug => "-O0 -g",
489 release => "-O3"),
490 cflags => add(threads("-pthread")),
491 lib_cppflags => add("-DBN_DIV2W"),
492 ex_libs => add("-ldld", threads("-pthread")),
495 shared_cflag => "-fPIC",
496 shared_ldflag => add_before("-shared"),
499 "hpux-parisc1_1-gcc" => {
500 inherit_from => [ "hpux-parisc-gcc" ],
505 "hpux64-parisc2-gcc" => {
506 inherit_from => [ "hpux-common" ],
508 CFLAGS => combine(picker(debug => "-O0 -g",
509 release => "-O3")),
510 cflags => add(threads("-pthread")),
511 ex_libs => add("-ldl", threads("-pthread")),
515 shared_cflag => "-fpic",
516 shared_ldflag => add_before("-shared"),
522 "hpux-parisc-cc" => {
523 inherit_from => [ "hpux-common" ],
525 CFLAGS => picker(debug => "+O0 +d -g",
527 cflags => "+Optrs_strongly_typed -Ae +ESlit",
528 cppflags => threads("-D_REENTRANT"),
529 lib_cppflags => add("-DBN_DIV2W -DMD32_XARRAY"),
530 ex_libs => add("-ldld", threads("-lpthread")),
534 shared_ldflag => add_before("-b"),
537 "hpux-parisc1_1-cc" => {
538 inherit_from => [ "hpux-parisc-cc" ],
544 "hpux64-parisc2-cc" => {
545 inherit_from => [ "hpux-common" ],
547 CFLAGS => picker(debug => "+O0 +d -g",
549 cflags => "+DD64 +Optrs_strongly_typed -Ae +ESlit",
550 cppflags => threads("-D_REENTRANT") ,
551 lib_cppflags => add("-DMD32_XARRAY"),
552 ex_libs => add("-ldl", threads("-lpthread")),
557 shared_ldflag => add_before("-b"),
562 # HP/UX IA-64 targets
563 "hpux-ia64-cc" => {
564 inherit_from => [ "hpux-common" ],
566 CFLAGS => picker(debug => "+O0 +d -g",
568 cflags => "-Ae +DD32 +Olit=all -z",
569 cppflags => add(threads("-D_REENTRANT")),
570 ex_libs => add("-ldl", threads("-lpthread")),
575 shared_ldflag => add_before("-b"),
578 "hpux64-ia64-cc" => {
579 inherit_from => [ "hpux-common" ],
581 CFLAGS => picker(debug => "+O0 +d -g",
583 cflags => "-Ae +DD64 +Olit=all -z",
584 cppflags => threads("-D_REENTRANT"),
585 ex_libs => add("-ldl", threads("-lpthread")),
590 shared_ldflag => add_before("-b"),
594 "hpux-ia64-gcc" => {
595 inherit_from => [ "hpux-common" ],
597 CFLAGS => picker(debug => "-O0 -g",
598 release => "-O3"),
599 cflags => add(threads("-pthread")),
600 ex_libs => add("-ldl", threads("-pthread")),
604 shared_cflag => "-fpic",
605 shared_ldflag => add_before("-shared"),
608 "hpux64-ia64-gcc" => {
609 inherit_from => [ "hpux-common" ],
611 CFLAGS => picker(debug => "-O0 -g",
612 release => "-O3"),
613 cflags => combine("-mlp64", threads("-pthread")),
614 ex_libs => add("-ldl", threads("-pthread")),
618 shared_cflag => "-fpic",
619 shared_ldflag => add_before("-shared"),
624 "MPE/iX-gcc" => {
627 CFLAGS => "-O3",
628 cppflags => "-D_POSIX_SOURCE -D_SOCKET_SOURCE",
630 lib_cppflags => "-DBN_DIV2W",
632 lflags => add("-L/SYSLOG/PUB"),
633 ex_libs => add("-lsyslog -lsocket -lcurses"),
634 thread_scheme => "(unknown)",
639 #### and forward. In reality 'uname -s' still returns "OSF1". Originally
640 #### there were even osf1-* configs targeting prior versions provided,
642 "tru64-alpha-gcc" => {
645 CFLAGS => "-O3",
646 cflags => add("-std=c9x", threads("-pthread")),
647 cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
648 ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
654 shared_target => "alpha-osf1-shared",
657 "tru64-alpha-cc" => {
660 CFLAGS => "-tune host -fast",
661 cflags => add("-std1 -readonly_strings",
662 threads("-pthread")),
663 cppflags => "-D_XOPEN_SOURCE=500 -D_OSF_SOURCE",
664 ex_libs => add("-lrt", threads("-pthread")), # for mlock(2)
670 shared_target => "alpha-osf1-shared",
671 shared_ldflag => "-msym",
676 #### Variety of LINUX:-)
678 # *-generic* is endian-neutral target, but ./config is free to
679 # throw in -D[BL]_ENDIAN, whichever appropriate...
680 "linux-generic32" => {
684 CFLAGS => picker(default => "-Wall",
685 debug => "-O0 -g",
686 release => "-O3"),
687 CXXFLAGS => picker(default => "-Wall",
688 debug => "-O0 -g",
689 release => "-O3"),
690 cflags => threads("-pthread"),
691 cxxflags => combine("-std=c++11", threads("-pthread")),
692 lib_cppflags => "-DOPENSSL_USE_NODELETE",
693 ex_libs => add("-ldl", threads("-pthread")),
697 shared_target => "linux-shared",
698 shared_cflag => "-fPIC",
699 shared_ldflag => sub { $disabled{pinshared} ? () : "-Wl,-znodelete" },
702 "linux-latomic" => {
703 inherit_from => [ "linux-generic32" ],
704 ex_libs => add(threads("-latomic")),
706 "linux-generic64" => {
707 inherit_from => [ "linux-generic32" ],
711 "linux-ppc" => {
712 inherit_from => [ "linux-latomic" ],
715 lib_cppflags => add("-DB_ENDIAN"),
717 "linux-ppc64" => {
718 inherit_from => [ "linux-generic64" ],
719 cflags => add("-m64"),
720 cxxflags => add("-m64"),
721 lib_cppflags => add("-DB_ENDIAN"),
726 "linux-ppc64le" => {
727 inherit_from => [ "linux-generic64" ],
728 cflags => add("-m64"),
729 cxxflags => add("-m64"),
730 lib_cppflags => add("-DL_ENDIAN"),
735 "linux-armv4" => {
737 # Note that -march is not among compiler options in linux-armv4
743 # performance, e.g. -march=armv6 or -march=armv7-a;
749 # requirement for run-time switch between platform-specific
750 # code paths. And without run-time switch performance would be
754 # big-endian platform. This is because ARMv7 processor always
755 # picks instructions in little-endian order. Another similar
756 # limitation is that -mthumb can't "cross" -march=armv6t2
757 # boundary, because that's where it became Thumb-2. Well, this
765 # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
767 inherit_from => [ "linux-latomic" ],
771 "linux-aarch64" => {
772 inherit_from => [ "linux-generic64" ],
773 asm_arch => 'aarch64',
776 "linux-arm64ilp32" => { # https://wiki.linaro.org/Platform/arm64-ilp32
777 inherit_from => [ "linux-generic32" ],
778 cflags => add("-mabi=ilp32"),
779 cxxflags => add("-mabi=ilp32"),
781 asm_arch => 'aarch64',
785 "linux-mips32" => {
786 # Configure script adds minimally required -march for assembly
787 # support, if no -march was specified at command line.
788 inherit_from => [ "linux-latomic" ],
789 cflags => add("-mabi=32"),
790 cxxflags => add("-mabi=32"),
796 "linux-mips64" => {
797 inherit_from => [ "linux-latomic" ],
798 cflags => add("-mabi=n32"),
799 cxxflags => add("-mabi=n32"),
805 "linux64-mips64" => {
806 inherit_from => [ "linux-generic64" ],
807 cflags => add("-mabi=64"),
808 cxxflags => add("-mabi=64"),
816 "linux64-riscv64" => {
817 inherit_from => [ "linux-generic64"],
823 "linux64-loongarch64" => {
824 inherit_from => [ "linux-generic64"],
828 #### IA-32 targets...
829 #### These two targets are a bit aged and are to be used on older Linux
830 #### machines where gcc doesn't understand -m32 and -m64
831 "linux-elf" => {
832 inherit_from => [ "linux-generic32" ],
833 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
834 lib_cppflags => add("-DL_ENDIAN"),
839 "linux-aout" => {
842 CFLAGS => add(picker(default => "-Wall",
843 debug => "-O0 -g",
844 release => "-O3 -fomit-frame-pointer")),
845 lib_cppflags => add("-DL_ENDIAN"),
847 thread_scheme => "(unknown)",
853 "linux-x86" => {
854 inherit_from => [ "linux-generic32" ],
855 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
856 cflags => add("-m32"),
857 cxxflags => add("-m32"),
858 lib_cppflags => add("-DL_ENDIAN"),
863 "linux-x86-clang" => {
864 inherit_from => [ "linux-x86" ],
867 ex_libs => add(threads("-latomic")),
869 "linux-x86_64" => {
870 inherit_from => [ "linux-generic64" ],
871 cflags => add("-m64"),
872 cxxflags => add("-m64"),
873 lib_cppflags => add("-DL_ENDIAN"),
879 "linux-x86_64-clang" => {
880 inherit_from => [ "linux-x86_64" ],
884 "linux-x32" => {
885 inherit_from => [ "linux-generic32" ],
886 cflags => add("-mx32"),
887 cxxflags => add("-mx32"),
888 lib_cppflags => add("-DL_ENDIAN"),
895 "linux-ia64" => {
896 inherit_from => [ "linux-generic64" ],
902 "linux64-s390x" => {
903 inherit_from => [ "linux-generic64" ],
904 cflags => add("-m64"),
905 cxxflags => add("-m64"),
906 lib_cppflags => add("-DB_ENDIAN"),
911 "linux32-s390x" => {
913 # "Highgprs" is kernel feature first implemented in Linux
916 # upon 32-bit process context switch, but even on
918 # it possible to deploy 64-bit instructions even in legacy
921 # linux-generic32, and the idea is to be able to install the
923 # /lib/highgprs/libcrypto.so.x.y, for ldconfig and run-time
926 # sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
928 inherit_from => [ "linux-generic32" ],
929 cflags => add("-m31 -Wa,-mzarch"),
930 cxxflags => add("-m31 -Wa,-mzarch"),
931 lib_cppflags => add("-DB_ENDIAN"),
937 #### SPARC Linux setups
938 "linux-sparcv8" => {
939 inherit_from => [ "linux-latomic" ],
940 cflags => add("-mcpu=v8"),
941 cxxflags => add("-mcpu=v8"),
942 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
946 "linux-sparcv9" => {
947 # it's a real mess with -mcpu=ultrasparc option under Linux,
948 # but -Wa,-Av8plus should do the trick no matter what.
949 inherit_from => [ "linux-latomic" ],
950 cflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
951 cxxflags => add("-m32 -mcpu=ultrasparc -Wa,-Av8plus"),
952 lib_cppflags => add("-DB_ENDIAN -DBN_DIV2W"),
956 "linux64-sparcv9" => {
958 inherit_from => [ "linux-generic64" ],
959 cflags => add("-m64 -mcpu=ultrasparc"),
960 cxxflags => add("-m64 -mcpu=ultrasparc"),
961 lib_cppflags => add("-DB_ENDIAN"),
962 ex_libs => add(threads("-latomic")),
969 "linux-alpha-gcc" => {
970 inherit_from => [ "linux-generic64" ],
971 lib_cppflags => add("-DL_ENDIAN"),
976 "linux-c64xplus" => {
980 CFLAGS => "-o2 -ox -ms",
981 cflags => "--linux -ea=.s -eo=.o -mv6400+ -pden",
982 cxxflags => "--linux -ea=.s -eo=.o -mv6400+ -pden",
983 cppflags => combine("-DOPENSSL_SMALL_FOOTPRINT",
984 threads("-D_REENTRANT")),
990 shared_target => "linux-shared",
991 shared_cflag => "--pic",
992 shared_ldflag => add("-z --sysv --shared"),
997 "BSD-generic32" => {
999 # flags, which would cover all BSD flavors. -pthread applies
1001 # as -D_POSIX_THREAD -lc_r, which is sufficient. FreeBSD 4.x
1002 # expands it as -lc_r, which has to be accompanied by explicit
1003 # -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x
1004 # expands it as -lc_r, which seems to be sufficient?
1007 CFLAGS => picker(default => "-Wall",
1008 debug => "-O0 -g",
1009 release => "-O3"),
1010 cflags => threads("-pthread"),
1011 cppflags => threads("-D_THREAD_SAFE -D_REENTRANT"),
1012 ex_libs => add(threads("-pthread")),
1017 shared_target => "bsd-gcc-shared",
1018 shared_cflag => "-fPIC",
1020 "BSD-generic64" => {
1021 inherit_from => [ "BSD-generic32" ],
1025 "BSD-x86" => {
1026 inherit_from => [ "BSD-generic32" ],
1027 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1028 lib_cppflags => add("-DL_ENDIAN"),
1033 "BSD-x86-elf" => {
1034 inherit_from => [ "BSD-x86" ],
1038 "BSD-sparcv8" => {
1039 inherit_from => [ "BSD-generic32" ],
1040 cflags => add("-mcpu=v8"),
1041 lib_cppflags => add("-DB_ENDIAN"),
1045 "BSD-sparc64" => {
1046 # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
1049 inherit_from => [ "BSD-generic64" ],
1050 lib_cppflags => add("-DB_ENDIAN -DMD32_REG_T=int"),
1056 "BSD-ia64" => {
1057 inherit_from => [ "BSD-generic64" ],
1058 lib_cppflags => add("-DL_ENDIAN"),
1064 "BSD-x86_64" => {
1065 inherit_from => [ "BSD-generic64" ],
1066 lib_cppflags => add("-DL_ENDIAN"),
1072 "BSD-aarch64" => {
1073 inherit_from => [ "BSD-generic64" ],
1074 lib_cppflags => add("-DL_ENDIAN"),
1076 asm_arch => 'aarch64',
1082 "BSD-riscv64" => {
1083 inherit_from => [ "BSD-generic64"],
1087 "bsdi-elf-gcc" => {
1090 CFLAGS => "-fomit-frame-pointer -O3 -Wall",
1091 lib_cppflags => "-DPERL5 -DL_ENDIAN",
1092 ex_libs => add("-ldl"),
1096 thread_scheme => "(unknown)",
1098 shared_target => "bsd-gcc-shared",
1099 shared_cflag => "-fPIC",
1104 # Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
1105 # Now we only have blended unixware-* as it's the only one used by ./config.
1107 # and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
1109 # lack of motivation to support out-of-date platforms with out-of-date
1112 # UnixWare 2.0x fails destest with -O.
1113 "unixware-2.0" => {
1116 cflags => threads("-Kthread"),
1117 lib_cppflags => "-DFILIO_H -DNO_STRINGS_H",
1118 ex_libs => add("-lsocket -lnsl -lresolv -lx"),
1121 "unixware-2.1" => {
1124 CFLAGS => "-O",
1125 cflags => threads("-Kthread"),
1126 lib_cppflags => "-DFILIO_H",
1127 ex_libs => add("-lsocket -lnsl -lresolv -lx"),
1130 "unixware-7" => {
1133 CFLAGS => "-O",
1134 cflags => combine("-Kalloca", threads("-Kthread")),
1135 lib_cppflags => "-DFILIO_H",
1136 ex_libs => add("-lsocket -lnsl"),
1140 perlasm_scheme => "elf-1",
1142 shared_target => "svr5-shared",
1143 shared_cflag => "-Kpic",
1145 "unixware-7-gcc" => {
1148 CFLAGS => "-O3 -fomit-frame-pointer -Wall",
1149 cppflags => add(threads("-D_REENTRANT")),
1150 lib_cppflags => add("-DL_ENDIAN -DFILIO_H"),
1151 ex_libs => add("-lsocket -lnsl"),
1155 perlasm_scheme => "elf-1",
1157 shared_target => "gnu-shared",
1158 shared_cflag => "-fPIC",
1160 # SCO 5 - Ben Laurie says the -O breaks the SCO cc.
1161 "sco5-cc" => {
1164 cflags => "-belf",
1165 ex_libs => add("-lsocket -lnsl"),
1166 thread_scheme => "(unknown)",
1168 perlasm_scheme => "elf-1",
1170 shared_target => "svr3-shared",
1171 shared_cflag => "-Kpic",
1173 "sco5-gcc" => {
1176 cflags => "-O3 -fomit-frame-pointer",
1177 ex_libs => add("-lsocket -lnsl"),
1179 thread_scheme => "(unknown)",
1181 perlasm_scheme => "elf-1",
1183 shared_target => "svr3-shared",
1184 shared_cflag => "-fPIC",
1193 "aix-common" => {
1197 lib_cppflags => "-DB_ENDIAN",
1198 lflags => "-Wl,-bsvr4",
1202 module_ldflags => "-Wl,-G,-bsymbolic,-bnoentry",
1203 shared_ldflag => "-Wl,-G,-bsymbolic,-bnoentry",
1204 shared_defflag => "-Wl,-bE:",
1205 shared_fipsflag => "-Wl,-binitfini:_init:_cleanup",
1208 "aix-gcc" => {
1209 inherit_from => [ "aix-common" ],
1211 CFLAGS => picker(debug => "-O0 -g",
1212 release => "-O"),
1213 cflags => add(threads("-pthread")),
1214 ex_libs => add(threads("-pthread")),
1218 shared_ldflag => add_before("-shared -static-libgcc"),
1219 AR => add("-X32"),
1220 RANLIB => add("-X32"),
1222 "aix64-gcc" => {
1223 inherit_from => [ "aix-common" ],
1225 CFLAGS => picker(debug => "-O0 -g",
1226 release => "-O"),
1227 cflags => combine("-maix64", threads("-pthread")),
1228 ex_libs => add(threads("-pthread")),
1232 shared_ldflag => add_before("-shared -static-libgcc"),
1234 AR => add("-X64"),
1235 RANLIB => add("-X64"),
1237 "aix64-gcc-as" => {
1238 inherit_from => [ "aix64-gcc" ],
1239 perlasm_scheme => "aix64-as",
1241 "aix-cc" => {
1242 inherit_from => [ "aix-common" ],
1244 CFLAGS => picker(debug => "-O0 -g",
1245 release => "-O"),
1246 cflags => combine("-q32 -qmaxmem=16384 -qro -qroconst",
1247 threads("-qthreaded")),
1248 cppflags => threads("-D_THREAD_SAFE"),
1249 ex_libs => add(threads("-lpthreads")),
1253 shared_cflag => "-qpic",
1254 AR => add("-X32"),
1255 RANLIB => add("-X32"),
1257 "aix64-cc" => {
1258 inherit_from => [ "aix-common" ],
1260 CFLAGS => picker(debug => "-O0 -g",
1261 release => "-O"),
1262 cflags => combine("-q64 -qmaxmem=16384 -qro -qroconst",
1263 threads("-qthreaded")),
1264 cppflags => threads("-D_THREAD_SAFE"),
1265 ex_libs => add(threads("-lpthreads")),
1270 shared_cflag => "-qpic",
1272 AR => add("-X64"),
1273 RANLIB => add("-X64"),
1276 # SIEMENS BS2000/OSD: an EBCDIC-based mainframe
1277 "BS2000-OSD" => {
1280 CFLAGS => "-O",
1281 cflags => "-XLLML -XLLMK -XL",
1282 cppflags => "-DCHARSET_EBCDIC",
1283 lib_cppflags => "-DB_ENDIAN",
1284 ex_libs => add("-lsocket -lnsl"),
1286 thread_scheme => "(unknown)",
1291 # Win64 targets, WIN64I denotes IA-64/Itanium and WIN64A - AMD64
1298 # Also note that we force threads no matter what. Configuring "no-threads"
1301 # UNICODE is defined in VC-common and applies to all targets. It used to
1302 # be an opt-in option for VC-WIN32, but not anymore. The original reason
1308 "VC-common" => {
1340 shared_target => "win-shared", # meaningless except it gives Configure a hint
1347 # additional parameter to build_scheme denotes install-path "flavour"
1348 build_scheme => add("VC-common", { separator => undef }),
1350 "VC-noCE-common" => {
1351 inherit_from => [ "VC-common" ],
1369 # non-shared build because static library is compiled with /Zl
1376 # prefer [non-debug] openssl.exe to be free from Micorosoft RTL
1389 "VC-WIN64-common" => {
1390 inherit_from => [ "VC-noCE-common" ],
1394 push @ex_libs, 'bufferoverflowu.lib' if (`cl 2>&1` =~ /14\.00\.4[0-9]{4}\./);
1399 "VC-WIN64I" => {
1400 inherit_from => [ "VC-WIN64-common" ],
1402 ASFLAGS => "-d debug",
1403 asoutflag => "-o ",
1408 multilib => "-ia64",
1410 "VC-WIN64A" => {
1411 inherit_from => [ "VC-WIN64-common" ],
1412 AS => sub { vc_win64a_info()->{AS} },
1413 ASFLAGS => sub { vc_win64a_info()->{ASFLAGS} },
1414 asoutflag => sub { vc_win64a_info()->{asoutflag} },
1415 asflags => sub { vc_win64a_info()->{asflags} },
1420 multilib => "-x64",
1422 "VC-WIN32" => {
1423 inherit_from => [ "VC-noCE-common" ],
1424 AS => sub { vc_win32_info()->{AS} },
1425 ASFLAGS => sub { vc_win32_info()->{ASFLAGS} },
1426 asoutflag => sub { vc_win32_info()->{asoutflag} },
1427 asflags => sub { vc_win32_info()->{asflags} },
1432 perlasm_scheme => sub { vc_win32_info()->{perlasm_scheme} },
1433 # "WOW" stands for "Windows on Windows", and "VC-WOW" engages
1434 # some installation path heuristics in windows-makefile.tmpl...
1435 build_scheme => add("VC-WOW", { separator => undef }),
1437 "VC-CE" => {
1438 inherit_from => [ "VC-common" ],
1445 sub { vc_wince_info()->{cflags}; },
1446 sub { `cl 2>&1` =~ /Version ([0-9]+)\./ && $1>=14
1449 cppflags => sub { vc_wince_info()->{cppflags}; },
1451 lib_cppflags => sub { vc_wince_info()->{cppflags}; },
1458 lflags => add(combine(sub { vc_wince_info()->{lflags}; },
1469 if (-f "$x/env('TARGETCPU')/wcecompatex.lib") {
1485 "mingw-common" => {
1489 CFLAGS => picker(default => "-Wall",
1490 debug => "-g -O0",
1491 release => "-O3"),
1492 cppflags => combine("-DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN",
1493 threads("-D_MT")),
1494 lib_cppflags => "-DL_ENDIAN",
1495 ex_libs => add("-lws2_32 -lgdi32 -lcrypt32"),
1498 shared_target => "mingw-shared",
1500 shared_ldflag => "-static-libgcc",
1505 inherit_from => [ "mingw-common" ],
1506 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1507 cflags => "-m32",
1513 shared_rcflag => "--target=pe-i386",
1522 # consider its binaries for using with non-mingw64 run-time
1525 inherit_from => [ "mingw-common" ],
1526 cflags => "-m64",
1532 shared_rcflag => "--target=pe-x86-64",
1540 CFLAGS => "-O",
1541 lib_cppflags => "-DL_ENDIAN",
1544 "UEFI-x86" => {
1549 "UEFI-x86_64" => {
1559 CFLAGS => "-O -Wall",
1560 lib_cppflags => "-DTERMIOS -DL_ENDIAN",
1567 "Cygwin-common" => {
1572 CFLAGS => picker(default => "-Wall",
1573 debug => "-g -O0",
1574 release => "-O3"),
1575 lib_cppflags => "-DTERMIOS -DL_ENDIAN",
1579 shared_target => "cygwin-shared",
1580 shared_cppflags => "-D_WINDLL",
1584 "Cygwin-x86" => {
1585 inherit_from => [ "Cygwin-common" ],
1586 CFLAGS => add(picker(release => "-O3 -fomit-frame-pointer")),
1591 "Cygwin-x86_64" => {
1592 inherit_from => [ "Cygwin-common" ],
1600 inherit_from => [ "Cygwin-x86" ]
1603 "Cygwin-i386" => {
1604 inherit_from => [ "Cygwin-x86" ]
1606 "Cygwin-i486" => {
1607 inherit_from => [ "Cygwin-x86" ]
1609 "Cygwin-i586" => {
1610 inherit_from => [ "Cygwin-x86" ]
1612 "Cygwin-i686" => {
1613 inherit_from => [ "Cygwin-x86" ]
1617 "darwin-common" => {
1621 CFLAGS => picker(debug => "-g -O0",
1622 release => "-O3"),
1623 cppflags => threads("-D_REENTRANT"),
1624 lflags => add("-Wl,-search_paths_first"),
1630 ranlib => "ranlib -c",
1631 shared_target => "darwin-shared",
1632 shared_cflag => "-fPIC",
1635 # Option "freeze" such as -std=gnu9x can't negatively interfere
1638 "darwin-ppc-cc" => { inherit_from => [ "darwin-ppc" ] }, # Historic alias
1639 "darwin-ppc" => {
1640 inherit_from => [ "darwin-common" ],
1641 cflags => add("-arch ppc -std=gnu9x -Wa,-force_cpusubtype_ALL"),
1642 lib_cppflags => add("-DB_ENDIAN"),
1643 shared_cflag => add("-fno-common"),
1647 "darwin64-ppc-cc" => { inherit_from => [ "darwin64-ppc" ] }, # Historic alias
1648 "darwin64-ppc" => {
1649 inherit_from => [ "darwin-common" ],
1650 cflags => add("-arch ppc64 -std=gnu9x"),
1651 lib_cppflags => add("-DB_ENDIAN"),
1656 "darwin-i386-cc" => { inherit_from => [ "darwin-i386" ] }, # Historic alias
1657 "darwin-i386" => {
1658 inherit_from => [ "darwin-common" ],
1659 CFLAGS => add(picker(release => "-fomit-frame-pointer")),
1660 cflags => add("-arch i386"),
1661 lib_cppflags => add("-DL_ENDIAN"),
1666 "darwin64-x86_64-cc" => { inherit_from => [ "darwin64-x86_64" ] }, # Historic alias
1667 "darwin64-x86_64" => {
1668 inherit_from => [ "darwin-common" ],
1669 CFLAGS => add("-Wall"),
1670 cflags => add("-arch x86_64"),
1671 lib_cppflags => add("-DL_ENDIAN"),
1676 "darwin64-arm64-cc" => { inherit_from => [ "darwin64-arm64" ] }, # "Historic" alias
1677 "darwin64-arm64" => {
1678 inherit_from => [ "darwin-common" ],
1679 CFLAGS => add("-Wall"),
1680 cflags => add("-arch arm64"),
1681 lib_cppflags => add("-DL_ENDIAN"),
1683 asm_arch => 'aarch64',
1687 ##### GNU Hurd
1688 "hurd-x86" => {
1691 CFLAGS => "-O3 -fomit-frame-pointer -Wall",
1692 cflags => threads("-pthread"),
1693 lib_cppflags => "-DL_ENDIAN",
1694 ex_libs => add("-ldl", threads("-pthread")),
1700 shared_target => "linux-shared",
1701 shared_cflag => "-fPIC",
1705 "vxworks-ppc60x" => {
1708 CFLAGS => "-O2 -Wall -fstrength-reduce",
1709 …cflags => "-mrtp -mhard-float -mstrict-align -fno-implicit-fp -fno-builtin -fno-strict-a…
1710 cppflags => combine("-D_REENTRANT -DPPC32_fp60x -DCPU=PPC32",
1711 "_DTOOL_FAMILY=gnu -DTOOL=gnu",
1712 "-I\$(WIND_BASE)/target/usr/h",
1713 "-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
1715 lflags => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common"),
1716 ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
1718 "vxworks-ppcgen" => {
1721 CFLAGS => "-O1 -Wall",
1722 cflags => "-mrtp -msoft-float -mstrict-align -fno-builtin -fno-strict-aliasing",
1723 cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC32",
1724 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
1725 "-I\$(WIND_BASE)/target/usr/h",
1726 "-I\$(WIND_BASE)/target/usr/h/wrn/coreip"),
1728 lflags => add("-L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon"),
1729 ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
1731 "vxworks-ppc405" => {
1734 CFLAGS => "-g",
1735 cflags => "-msoft-float -mlongcall",
1736 cppflags => combine("-D_REENTRANT -DPPC32 -DCPU=PPC405",
1737 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
1738 "-I\$(WIND_BASE)/target/h"),
1740 lflags => add("-r"),
1742 "vxworks-ppc750" => {
1745 CFLAGS => "-ansi -fvolatile -Wall \$(DEBUG_FLAG)",
1746 … cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
1747 cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
1748 "-I\$(WIND_BASE)/target/h"),
1750 lflags => add("-r"),
1752 "vxworks-ppc750-debug" => {
1755 CFLAGS => "-ansi -fvolatile -Wall -g",
1756 … cflags => "-nostdinc -fno-builtin -fno-for-scope -fsigned-char -msoft-float -mlongcall",
1757 cppflags => combine("-DPPC750 -D_REENTRANT -DCPU=PPC604",
1758 "-DPEDANTIC -DDEBUG",
1759 "-I\$(WIND_BASE)/target/h"),
1761 lflags => add("-r"),
1763 "vxworks-ppc860" => {
1766 cflags => "-nostdinc -msoft-float",
1767 cppflags => combine("-DCPU=PPC860 -DNO_STRINGS_H",
1768 "-I\$(WIND_BASE)/target/h"),
1770 lflags => add("-r"),
1772 "vxworks-simlinux" => {
1775 …cflags => "-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -fno-builtin -fno-defer-…
1776 …cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
1777 "-DL_ENDIAN -DCPU=SIMLINUX -DNO_STRINGS_H",
1778 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
1779 "-DOPENSSL_NO_HW_PADLOCK",
1780 "-I\$(WIND_BASE)/target/h",
1781 "-I\$(WIND_BASE)/target/h/wrn/coreip"),
1783 lflags => add("-r"),
1786 "vxworks-mips" => {
1789 CFLAGS => "-O -G 0",
1790 … => "-mrtp -mips2 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -msoft-float -mno…
1791 …cppflags => combine("-D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\"",
1792 "-DCPU=MIPS32 -DNO_STRINGS_H",
1793 "-DTOOL_FAMILY=gnu -DTOOL=gnu",
1794 "-DOPENSSL_NO_HW_PADLOCK",
1795 threads("-D_REENTRANT"),
1796 "-I\$(WIND_BASE)/target/h",
1797 "-I\$(WIND_BASE)/target/h/wrn/coreip"),
1799 lflags => add("-L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon"),
1800 ex_libs => add("-Wl,--defsym,__wrs_rtp_base=0xe0000000"),
1808 "uClinux-dist" => {
1811 cppflags => threads("-D_REENTRANT"),
1816 shared_target => "linux-shared",
1817 shared_cflag => "-fPIC",
1820 "uClinux-dist64" => {
1823 cppflags => threads("-D_REENTRANT"),
1828 shared_target => "linux-shared",
1829 shared_cflag => "-fPIC",
1834 # Most things happen in vms-generic.
1836 # the target name, and will assume that anything matching /-p\d+$/
1838 "vms-generic" => {
1848 @{vms_info()->{disable_warns}};
1855 return vms_info()->{def_zlib}
1856 ? "LIBZ=\"\"\"".vms_info()->{def_zlib}."\"\"\"" : ();
1872 ex_libs => add(sub { return vms_info()->{zlib} || (); }),
1873 shared_target => "vms-shared",
1880 AS => sub { vms_info()->{AS} },
1881 ASFLAGS => sub { vms_info()->{ASFLAGS} },
1882 asoutflag => sub { vms_info()->{asoutflag} },
1883 asflags => sub { vms_info()->{asflags} },
1884 perlasm_scheme => sub { vms_info()->{perlasm_scheme} },
1892 # ----------
1893 # LONG[=ARGV] The compiler assumes 64-bit pointers. If the ARGV option to
1898 # ----------
1900 # We don't want the hassle of dealing with 32-bit pointers with argv, so
1901 # we force it to have 64-bit pointers, see the added cflags in the -p64
1904 "vms-alpha" => {
1905 inherit_from => [ "vms-generic" ],
1909 "vms-alpha-p32" => {
1910 inherit_from => [ "vms-alpha" ],
1914 "vms-alpha-p64" => {
1915 inherit_from => [ "vms-alpha" ],
1919 "vms-ia64" => {
1920 inherit_from => [ "vms-generic" ],
1922 asm_arch => sub { vms_info()->{AS} ? 'ia64' : undef },
1927 "vms-ia64-p32" => {
1928 inherit_from => [ "vms-ia64" ],
1932 "vms-ia64-p64" => {
1933 inherit_from => [ "vms-ia64" ],
1937 "vms-x86_64" => {
1938 inherit_from => [ "vms-generic" ],