10-main.conf 66.9 KB
Newer Older
1
## -*- mode: perl; -*-
2 3 4 5
## Standard openssl configuration targets.

%targets = (

6
#### Basic configs that should work on any 32-bit box
7 8
    "gcc" => {
        cc               => "gcc",
9 10 11
        cflags           => "",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
12 13 14 15 16 17 18 19
        thread_cflag     => "(unknown)",
        bn_ops           => "BN_LLONG",
    },
    "cc" => {
        cc               => "cc",
        cflags           => "-O",
        thread_cflag     => "(unknown)",
    },
20

21
#### VOS Configurations
22
    "vos-gcc" => {
23
        inherit_from     => [ "BASE_unix" ],
24 25
        cc               => "gcc",
        cflags           => "-Wall -DOPENSSL_SYS_VOS -D_POSIX_C_SOURCE=200112L -D_BSD -D_VOS_EXTENDED_NAMES -DB_ENDIAN",
R
Rich Salz 已提交
26
        debug_cflags     => "-O0 -g -DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG",
27 28 29 30 31 32 33
        release_cflags   => "-O3",
        thread_cflag     => "(unknown)",
        sys_id           => "VOS",
        lflags           => "-Wl,-map",
        bn_ops           => "BN_LLONG",
        shared_extension => ".so",
    },
34

R
Richard Levitte 已提交
35
#### Solaris configurations
36
    "solaris-common" => {
37
        inherit_from     => [ "BASE_unix" ],
38 39
        template         => 1,
        cflags           => "-DFILIO_H",
40
        ex_libs          => "-lresolv -lsocket -lnsl -ldl",
41 42 43 44
        dso_scheme       => "dlfcn",
        shared_target    => "solaris-shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
45
#### Solaris x86 with GNU C setups
46
    "solaris-x86-gcc" => {
47 48 49 50 51
        # -DOPENSSL_NO_INLINE_ASM switches off inline assembler. We have
        # to do it here because whenever GNU C instantiates an assembler
        # template it surrounds it with #APP #NO_APP comment pair which
        # (at least Solaris 7_x86) /usr/ccs/bin/as fails to assemble
        # with "Illegal mnemonic" error message.
52
        inherit_from     => [ "solaris-common", asm("x86_elf_asm") ],
53
        cc               => "gcc",
54
        cflags           => add_before("-Wall -DL_ENDIAN -DOPENSSL_NO_INLINE_ASM"),
55 56
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3 -fomit-frame-pointer",
M
Matt Caswell 已提交
57
        thread_cflag     => "-pthread",
R
Rich Salz 已提交
58
        bn_ops           => "BN_LLONG",
59 60 61 62
        shared_cflag     => "-fPIC",
        shared_ldflag    => "-shared",
    },
    "solaris64-x86_64-gcc" => {
63 64 65 66 67 68 69 70
        # -shared -static-libgcc might appear controversial, but modules
        # taken from static libgcc do not have relocations and linking
        # them into our shared objects doesn't have any negative side
        # effects. On the contrary, doing so makes it possible to use
        # gcc shared build with Sun C. Given that gcc generates faster
        # code [thanks to inline assembler], I would actually recommend
        # to consider using gcc shared build even with vendor compiler:-)
        #					<appro@fy.chalmers.se>
71
        inherit_from     => [ "solaris-common", asm("x86_64_asm") ],
72
        cc               => "gcc",
73
        cflags           => add_before("-m64 -Wall -DL_ENDIAN"),
74 75
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
M
Matt Caswell 已提交
76
        thread_cflag     => "-pthread",
77
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
78 79 80 81 82
        perlasm_scheme   => "elf",
        shared_cflag     => "-fPIC",
        shared_ldflag    => "-m64 -shared -static-libgcc",
        multilib         => "/64",
    },
83 84

#### Solaris x86 with Sun C setups
85
    "solaris-x86-cc" => {
86
        inherit_from     => [ "solaris-common" ],
87
        cc               => "cc",
88
        cflags           => add_before("-xarch=generic -xstrconst -Xa -DL_ENDIAN"),
89 90
        debug_cflags     => "-g",
        release_cflags   => "-xO5 -xregs=frameptr -xdepend -xbuiltin",
91
        thread_cflag     => "-D_REENTRANT",
92 93
        lflags           => add("-mt"),
        ex_libs          => add("-lpthread"),
94
        bn_ops           => "BN_LLONG RC4_CHAR",
95 96 97 98
        shared_cflag     => "-KPIC",
        shared_ldflag    => "-G -dy -z text",
    },
    "solaris64-x86_64-cc" => {
99
        inherit_from     => [ "solaris-common", asm("x86_64_asm") ],
100
        cc               => "cc",
101
        cflags           => add_before("-xarch=generic64 -xstrconst -Xa -DL_ENDIAN"),
102 103
        debug_cflags     => "-g",
        release_cflags   => "-xO5 -xdepend -xbuiltin",
104
        thread_cflag     => "-D_REENTRANT",
105 106
        lflags           => add("-mt"),
        ex_libs          => add("-lpthread"),
107
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
108 109
        perlasm_scheme   => "elf",
        shared_cflag     => "-KPIC",
110
        shared_ldflag    => "-xarch=generic64 -G -dy -z text",
111 112
        multilib         => "/64",
    },
113 114

#### SPARC Solaris with GNU C setups
115
    "solaris-sparcv7-gcc" => {
116
        inherit_from     => [ "solaris-common" ],
117
        cc               => "gcc",
118
        cflags           => add_before("-Wall -DB_ENDIAN -DBN_DIV2W"),
119 120
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
M
Matt Caswell 已提交
121
        thread_cflag     => "-pthread",
122
        bn_ops           => "BN_LLONG RC4_CHAR",
123 124 125 126
        shared_cflag     => "-fPIC",
        shared_ldflag    => "-shared",
    },
    "solaris-sparcv8-gcc" => {
127
        inherit_from     => [ "solaris-sparcv7-gcc", asm("sparcv8_asm") ],
128
        cflags           => add_before("-mcpu=v8"),
129 130
    },
    "solaris-sparcv9-gcc" => {
131
        # -m32 should be safe to add as long as driver recognizes
132
        # -mcpu=ultrasparc
133
        inherit_from     => [ "solaris-sparcv7-gcc", asm("sparcv9_asm") ],
134
        cflags           => add_before("-m32 -mcpu=ultrasparc"),
R
Rich Salz 已提交
135
        debug_cflags     => "-DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG -DPEDANTIC -O -g -pedantic -ansi -Wshadow -Wno-long-long -D__EXTENSIONS__",
136 137
    },
    "solaris64-sparcv9-gcc" => {
138
        inherit_from     => [ "solaris-sparcv9-gcc" ],
139
        cflags           => sub { my $f=join(" ",@_); $f =~ s/\-m32/-m64/; $f; },
140
        bn_ops           => "BN_LLONG RC4_CHAR",
141 142 143
        shared_ldflag    => "-m64 -shared",
        multilib         => "/64",
    },
144 145 146 147 148

#### SPARC Solaris with Sun C setups
# SC4.0 doesn't pass 'make test', upgrade to SC5.0 or SC4.2.
# SC4.2 is ok, better than gcc even on bn as long as you tell it -xarch=v8
# SC5.0 note: Compiler common patch 107357-01 or later is required!
149
    "solaris-sparcv7-cc" => {
150
        inherit_from     => [ "solaris-common" ],
151
        cc               => "cc",
152
        cflags           => add_before("-xstrconst -Xa -DB_ENDIAN -DBN_DIV2W"),
R
Rich Salz 已提交
153
        debug_cflags     => "-g -DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG",
154
        release_cflags   => "-xO5 -xdepend",
155
        thread_cflag     => "-D_REENTRANT",
156 157
        lflags           => add("-mt"),
        ex_libs          => add("-lpthread"),
158
        bn_ops           => "BN_LLONG RC4_CHAR",
159 160 161
        shared_cflag     => "-KPIC",
        shared_ldflag    => "-G -dy -z text",
    },
162
####
163
    "solaris-sparcv8-cc" => {
164
        inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv8_asm") ],
165
        cflags           => add_before("-xarch=v8"),
166 167
    },
    "solaris-sparcv9-cc" => {
168
        inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
169
        cflags           => add_before("-xarch=v8plus -xtarget=ultra"),
170 171
    },
    "solaris64-sparcv9-cc" => {
172
        inherit_from     => [ "solaris-sparcv7-cc", asm("sparcv9_asm") ],
173
        cflags           => add_before("-xarch=v9 -xtarget=ultra"),
174
        bn_ops           => "BN_LLONG RC4_CHAR",
175 176 177
        shared_ldflag    => "-xarch=v9 -G -dy -z text",
        multilib         => "/64",
    },
178 179 180

#### IRIX 5.x configs
# -mips2 flag is added by ./config when appropriate.
181
    "irix-gcc" => {
182
        inherit_from     => [ "BASE_unix", asm("mips32_asm") ],
183
        cc               => "gcc",
184 185 186
        cflags           => "-DB_ENDIAN",
        debug_cflags     => "-g -O0",
        release_cflags   => "-O3",
187
        thread_cflag     => "(unknown)",
188
        bn_ops           => "BN_LLONG RC4_CHAR",
189 190 191 192 193 194
        perlasm_scheme   => "o32",
        dso_scheme       => "dlfcn",
        shared_target    => "irix-shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
    "irix-cc" => {
195
        inherit_from     => [ "BASE_unix", asm("mips32_asm") ],
196
        cc               => "cc",
197 198 199
        cflags           => "-use_readonly_const -DB_ENDIAN",
        debug_cflags     => "-g -O0",
        release_cflags   => "-O2",
200
        thread_cflag     => "(unknown)",
201
        bn_ops           => "BN_LLONG RC4_CHAR",
202 203 204 205 206
        perlasm_scheme   => "o32",
        dso_scheme       => "dlfcn",
        shared_target    => "irix-shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
207 208 209
#### IRIX 6.x configs
# Only N32 and N64 ABIs are supported. If you need O32 ABI build, invoke
# './Configure irix-cc -o32' manually.
210
    "irix-mips3-gcc" => {
211
        inherit_from     => [ "BASE_unix", asm("mips64_asm") ],
212
        cc               => "gcc",
213 214 215
        cflags           => "-mabi=n32 -DB_ENDIAN -DBN_DIV3W",
        debug_cflags     => "-g -O0",
        release_cflags   => "-O3",
M
Matt Caswell 已提交
216
        thread_cflag     => "-D_SGI_MP_SOURCE -pthread",
217
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT",
218 219 220 221 222 223 224 225
        perlasm_scheme   => "n32",
        dso_scheme       => "dlfcn",
        shared_target    => "irix-shared",
        shared_ldflag    => "-mabi=n32",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "32",
    },
    "irix-mips3-cc" => {
226
        inherit_from     => [ "BASE_unix", asm("mips64_asm") ],
227
        cc               => "cc",
228 229 230
        cflags           => "-n32 -mips3 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W",
        debug_cflags     => "-g -O0",
        release_cflags   => "-O2",
231
        thread_cflag     => "-D_SGI_MP_SOURCE",
232
        ex_libs          => "-lpthread",
233
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT",
234 235 236 237 238 239 240
        perlasm_scheme   => "n32",
        dso_scheme       => "dlfcn",
        shared_target    => "irix-shared",
        shared_ldflag    => "-n32",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "32",
    },
241
    # N64 ABI builds.
242
    "irix64-mips4-gcc" => {
243
        inherit_from     => [ "BASE_unix", asm("mips64_asm") ],
244
        cc               => "gcc",
245 246 247
        cflags           => "-mabi=64 -mips4 -DB_ENDIAN -DBN_DIV3W",
        debug_cflags     => "-g -O0",
        release_cflags   => "-O3",
248
        thread_cflag     => "-D_SGI_MP_SOURCE",
249
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
250 251 252 253 254 255 256 257
        perlasm_scheme   => "64",
        dso_scheme       => "dlfcn",
        shared_target    => "irix-shared",
        shared_ldflag    => "-mabi=64",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "64",
    },
    "irix64-mips4-cc" => {
258
        inherit_from     => [ "BASE_unix", asm("mips64_asm") ],
259
        cc               => "cc",
260 261 262
        cflags           => "-64 -mips4 -use_readonly_const -G0 -rdata_shared -DB_ENDIAN -DBN_DIV3W",
        debug_cflags     => "-g -O0",
        release_cflags   => "-O2",
263
        thread_cflag     => "-D_SGI_MP_SOURCE",
264
        ex_libs          => "-lpthread",
265
        bn_ops           => "RC4_CHAR SIXTY_FOUR_BIT_LONG",
266 267 268 269 270 271 272
        perlasm_scheme   => "64",
        dso_scheme       => "dlfcn",
        shared_target    => "irix-shared",
        shared_ldflag    => "-64",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "64",
    },
273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288

#### Unified HP-UX ANSI C configs.
# Special notes:
# - Originally we were optimizing at +O4 level. It should be noted
#   that the only difference between +O3 and +O4 is global inter-
#   procedural analysis. As it has to be performed during the link
#   stage the compiler leaves behind certain pseudo-code in lib*.a
#   which might be release or even patch level specific. Generating
#   the machine code for and analyzing the *whole* program appears
#   to be *extremely* memory demanding while the performance gain is
#   actually questionable. The situation is intensified by the default
#   HP-UX data set size limit (infamous 'maxdsiz' tunable) of 64MB
#   which is way too low for +O4. In other words, doesn't +O3 make
#   more sense?
# - Keep in mind that the HP compiler by default generates code
#   suitable for execution on the host you're currently compiling at.
F
FdaSilvaYY 已提交
289
#   If the toolkit is meant to be used on various PA-RISC processors
290
#   consider './Configure hpux-parisc-[g]cc +DAportable'.
291 292 293 294 295
# - -DMD32_XARRAY triggers workaround for compiler bug we ran into in
#   32-bit message digests. (For the moment of this writing) HP C
#   doesn't seem to "digest" too many local variables (they make "him"
#   chew forever:-). For more details look-up MD32_XARRAY comment in
#   crypto/sha/sha_lcl.h.
296
# - originally there were 32-bit hpux-parisc2-* targets. They were
F
FdaSilvaYY 已提交
297
#   scrapped, because a) they were not interchangeable with other 32-bit
298 299 300
#   targets; a) when critical 32-bit assembly modules detect if they
#   are executed on PA-RISC 2.0 and thus adequate performance is
#   provided. 
301
#					<appro@fy.chalmers.se>
302
    "hpux-parisc-gcc" => {
303
        inherit_from     => [ "BASE_unix" ],
304
        cc               => "gcc",
305 306 307
        cflags           => "-DB_ENDIAN -DBN_DIV2W",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
M
Matt Caswell 已提交
308
        thread_cflag     => "-pthread",
309
        ex_libs          => "-Wl,+s -ldld",
310
        bn_ops           => "BN_LLONG",
311 312 313 314 315 316 317
        dso_scheme       => "dl",
        shared_target    => "hpux-shared",
        shared_cflag     => "-fPIC",
        shared_ldflag    => "-shared",
        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
    "hpux-parisc1_1-gcc" => {
318
        inherit_from     => [ "hpux-parisc-gcc", asm("parisc11_asm") ],
319 320 321
        multilib         => "/pa1.1",
    },
    "hpux64-parisc2-gcc" => {
322
        inherit_from     => [ "BASE_unix", asm("parisc20_64_asm") ],
323
        cc               => "gcc",
324 325 326 327
        cflags           => "-DB_ENDIAN",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
        thread_cflag     => "-D_REENTRANT",
328
        ex_libs          => "-ldl",
329
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
330 331 332 333 334 335 336
        dso_scheme       => "dlfcn",
        shared_target    => "hpux-shared",
        shared_cflag     => "-fpic",
        shared_ldflag    => "-shared",
        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "/pa20_64",
    },
337

338 339 340 341
    # More attempts at unified 10.X and 11.X targets for HP C compiler.
    #
    # Chris Ruemmler <ruemmler@cup.hp.com>
    # Kevin Steves <ks@hp.se>
342
    "hpux-parisc-cc" => {
343
        inherit_from     => [ "BASE_unix" ],
344
        cc               => "cc",
345 346 347
        cflags           => "+Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DBN_DIV2W -DMD32_XARRAY",
        debug_cflags      => "+O0 +d -g",
        release_cflags   => "+O3",
348
        thread_cflag     => "-D_REENTRANT",
349
        ex_libs          => "-Wl,+s -ldld -lpthread",
350
        bn_ops           => "RC4_CHAR",
351 352 353 354 355 356 357
        dso_scheme       => "dl",
        shared_target    => "hpux-shared",
        shared_cflag     => "+Z",
        shared_ldflag    => "-b",
        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
    "hpux-parisc1_1-cc" => {
358
        inherit_from     => [ "hpux-parisc-cc", asm("parisc11_asm") ],
359
        cflags           => add_before("+DA1.1"),
360 361 362
        multilib         => "/pa1.1",
    },
    "hpux64-parisc2-cc" => {
363
        inherit_from     => [ "BASE_unix", asm("parisc20_64_asm") ],
364
        cc               => "cc",
365 366 367 368
        cflags           => "+DD64 +Optrs_strongly_typed -Ae +ESlit -DB_ENDIAN -DMD32_XARRAY",
        debug_cflags      => "+O0 +d -g",
        release_cflags   => "+O3",
        thread_cflag     => "-D_REENTRANT",
369
        ex_libs          => "-ldl -lpthread",
370
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
371 372 373 374 375 376 377
        dso_scheme       => "dlfcn",
        shared_target    => "hpux-shared",
        shared_cflag     => "+Z",
        shared_ldflag    => "+DD64 -b",
        shared_extension => ".sl.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "/pa20_64",
    },
378

379
    # HP/UX IA-64 targets
380
    "hpux-ia64-cc" => {
381
        inherit_from     => [ "BASE_unix", asm("ia64_asm") ],
382
        cc               => "cc",
383 384 385 386
        cflags           => "-Ae +DD32 +Olit=all -z -DB_ENDIAN",
        debug_cflags     => "+O0 +d -g",
        release_cflags   => "+O2",
        thread_cflag     => "-D_REENTRANT",
387
        ex_libs          => "-ldl -lpthread",
388
        bn_ops           => "SIXTY_FOUR_BIT",
389 390 391 392 393 394 395
        dso_scheme       => "dlfcn",
        shared_target    => "hpux-shared",
        shared_cflag     => "+Z",
        shared_ldflag    => "+DD32 -b",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "/hpux32",
    },
396 397
    # Frank Geurts <frank.geurts@nl.abnamro.com> has patiently assisted
    # with debugging of the following config.
398
    "hpux64-ia64-cc" => {
399
        inherit_from     => [ "BASE_unix", asm("ia64_asm") ],
400
        cc               => "cc",
401 402 403 404
        cflags           => "-Ae +DD64 +Olit=all -z -DB_ENDIAN",
        debug_cflags     => "+O0 +d -g",
        release_cflags   => "+O3",
        thread_cflag     => "-D_REENTRANT",
405
        ex_libs          => "-ldl -lpthread",
406
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
407 408 409 410 411 412 413
        dso_scheme       => "dlfcn",
        shared_target    => "hpux-shared",
        shared_cflag     => "+Z",
        shared_ldflag    => "+DD64 -b",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "/hpux64",
    },
414
    # GCC builds...
415
    "hpux-ia64-gcc" => {
416
        inherit_from     => [ "BASE_unix", asm("ia64_asm") ],
417
        cc               => "gcc",
418 419 420
        cflags           => "-DB_ENDIAN",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
M
Matt Caswell 已提交
421
        thread_cflag     => "-pthread",
422
        ex_libs          => "-ldl",
423
        bn_ops           => "SIXTY_FOUR_BIT",
424 425 426 427 428 429 430 431
        dso_scheme       => "dlfcn",
        shared_target    => "hpux-shared",
        shared_cflag     => "-fpic",
        shared_ldflag    => "-shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "/hpux32",
    },
    "hpux64-ia64-gcc" => {
432
        inherit_from     => [ "BASE_unix", asm("ia64_asm") ],
433
        cc               => "gcc",
434 435 436
        cflags           => "-mlp64 -DB_ENDIAN",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
M
Matt Caswell 已提交
437
        thread_cflag     => "-pthread",
438
        ex_libs          => "-ldl",
439
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
440 441 442 443 444 445 446
        dso_scheme       => "dlfcn",
        shared_target    => "hpux-shared",
        shared_cflag     => "-fpic",
        shared_ldflag    => "-mlp64 -shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        multilib         => "/hpux64",
    },
447 448

#### HP MPE/iX http://jazz.external.hp.com/src/openssl/
449
    "MPE/iX-gcc" => {
450
        inherit_from     => [ "BASE_unix" ],
451 452 453 454
        cc               => "gcc",
        cflags           => "-D_ENDIAN -DBN_DIV2W -O3 -D_POSIX_SOURCE -D_SOCKET_SOURCE -I/SYSLOG/PUB",
        thread_cflag     => "(unknown)",
        sys_id           => "MPE",
455
        ex_libs          => "-L/SYSLOG/PUB -lsyslog -lsocket -lcurses",
456
        bn_ops           => "BN_LLONG",
457
    },
458

459
#### DEC Alpha OSF/1/Tru64 targets.
460
    "osf1-alpha-gcc" => {
461
        inherit_from     => [ "BASE_unix", asm("alpha_asm") ],
462 463 464
        cc               => "gcc",
        cflags           => "-O3",
        thread_cflag     => "(unknown)",
465
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
466 467 468 469 470
        dso_scheme       => "dlfcn",
        shared_target    => "alpha-osf1-shared",
        shared_extension => ".so",
    },
    "osf1-alpha-cc" => {
471
        inherit_from     => [ "BASE_unix", asm("alpha_asm") ],
472 473 474
        cc               => "cc",
        cflags           => "-std1 -tune host -O4 -readonly_strings",
        thread_cflag     => "(unknown)",
475
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
476 477 478 479 480
        dso_scheme       => "dlfcn",
        shared_target    => "alpha-osf1-shared",
        shared_extension => ".so",
    },
    "tru64-alpha-cc" => {
481
        inherit_from     => [ "BASE_unix", asm("alpha_asm") ],
482 483 484
        cc               => "cc",
        cflags           => "-std1 -tune host -fast -readonly_strings",
        thread_cflag     => "-pthread",
485
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
486 487 488 489 490
        dso_scheme       => "dlfcn",
        shared_target    => "alpha-osf1-shared",
        shared_ldflag    => "-msym",
        shared_extension => ".so",
    },
491 492 493 494 495 496

####
#### Variety of LINUX:-)
####
# *-generic* is endian-neutral target, but ./config is free to
# throw in -D[BL]_ENDIAN, whichever appropriate...
497
    "linux-generic32" => {
498
        inherit_from     => [ "BASE_unix" ],
499
        cc               => "gcc",
500
        cflags           => "-Wall",
R
Rich Salz 已提交
501
        debug_cflags     => "-O0 -g -DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG",
502
        release_cflags   => "-O3",
M
Matt Caswell 已提交
503
        thread_cflag     => "-pthread",
504
        ex_libs          => "-ldl",
505
        bn_ops           => "BN_LLONG RC4_CHAR",
506 507 508 509 510
        dso_scheme       => "dlfcn",
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
511 512
    "linux-generic64" => {
        inherit_from     => [ "linux-generic32" ],
513
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
514 515
    },

516
    "linux-ppc" => {
517
        inherit_from     => [ "linux-generic32", asm("ppc32_asm") ],
518
        perlasm_scheme   => "linux32",
519 520 521 522 523 524 525 526 527 528 529 530 531
    },
    "linux-ppc64" => {
        inherit_from     => [ "linux-generic64", asm("ppc64_asm") ],
        cflags           => "-m64 -Wall -DB_ENDIAN",
        perlasm_scheme   => "linux64",
        shared_ldflag    => "-m64",
        multilib         => "64",
    },
    "linux-ppc64le" => {
        inherit_from     => [ "linux-generic64", asm("ppc64_asm") ],
        cflags           => "-m64 -Wall -DL_ENDIAN",
        perlasm_scheme   => "linux64le",
        shared_ldflag    => "-m64",
532
    },
533

534
    "linux-armv4" => {
535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567
        ################################################################
        # Note that -march is not among compiler options in linux-armv4
        # target description. Not specifying one is intentional to give
        # you choice to:
        #
        # a) rely on your compiler default by not specifying one;
        # b) specify your target platform explicitly for optimal
        # performance, e.g. -march=armv6 or -march=armv7-a;
        # c) build "universal" binary that targets *range* of platforms
        # by specifying minimum and maximum supported architecture;
        #
        # As for c) option. It actually makes no sense to specify
        # maximum to be less than ARMv7, because it's the least
        # requirement for run-time switch between platform-specific
        # code paths. And without run-time switch performance would be
        # equivalent to one for minimum. Secondly, there are some
        # natural limitations that you'd have to accept and respect.
        # Most notably you can *not* build "universal" binary for
        # big-endian platform. This is because ARMv7 processor always
        # picks instructions in little-endian order. Another similar
        # limitation is that -mthumb can't "cross" -march=armv6t2
        # boundary, because that's where it became Thumb-2. Well, this
        # limitation is a bit artificial, because it's not really
        # impossible, but it's deemed too tricky to support. And of
        # course you have to be sure that your binutils are actually
        # up to the task of handling maximum target platform. With all
        # this in mind here is an example of how to configure
        # "universal" build:
        #
        # ./Configure linux-armv4 -march=armv6 -D__ARM_MAX_ARCH__=8
        #
        inherit_from     => [ "linux-generic32", asm("armv4_asm") ],
        perlasm_scheme   => "linux32",
568 569
    },
    "linux-aarch64" => {
570
        inherit_from     => [ "linux-generic64", asm("aarch64_asm") ],
571 572
        perlasm_scheme   => "linux64",
    },
573 574
    "linux-arm64ilp32" => {  # https://wiki.linaro.org/Platform/arm64-ilp32
        inherit_from     => [ "linux-generic32", asm("aarch64_asm") ],
575
        cflags           => "-mabi=ilp32 -Wall",
576
        bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR",
577 578 579
        perlasm_scheme   => "linux64",
        shared_ldflag    => "-mabi=ilp32",
    },
580

581
    "linux-mips32" => {
582 583 584 585
        # Configure script adds minimally required -march for assembly
        # support, if no -march was specified at command line.
        inherit_from     => [ "linux-generic32", asm("mips32_asm") ],
        cflags           => "-mabi=32 -Wall -DBN_DIV3W",
586
        perlasm_scheme   => "o32",
587
        shared_ldflag    => "-mabi=32",
588
    },
589 590
    # mips32 and mips64 below refer to contemporary MIPS Architecture
    # specifications, MIPS32 and MIPS64, rather than to kernel bitness.
591
    "linux-mips64" => {
592 593
        inherit_from     => [ "linux-generic32", asm("mips64_asm") ],
        cflags           => "-mabi=n32 -Wall -DBN_DIV3W",
594
        bn_ops           => "SIXTY_FOUR_BIT RC4_CHAR",
595 596 597 598 599
        perlasm_scheme   => "n32",
        shared_ldflag    => "-mabi=n32",
        multilib         => "32",
    },
    "linux64-mips64" => {
600
        inherit_from     => [ "linux-generic64", asm("mips64_asm") ],
601 602 603 604 605
        cflags           => "-mabi=64 -O3 -Wall -DBN_DIV3W",
        perlasm_scheme   => "64",
        shared_ldflag    => "-mabi=64",
        multilib         => "64",
    },
606 607

    #### IA-32 targets...
608
    "linux-elf" => {
609
        inherit_from     => [ "linux-generic32", asm("x86_elf_asm") ],
610
        cc               => "gcc",
611
        cflags           => "-DL_ENDIAN -Wall",
R
Rich Salz 已提交
612
        debug_cflags     => "-O0 -g -DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG",
613
        release_cflags   => "-O3 -fomit-frame-pointer",
614
        debug_ex_libs    => "-lefence",
R
Rich Salz 已提交
615
        bn_ops           => "BN_LLONG",
616 617
    },
    "linux-aout" => {
618
        inherit_from     => [ "BASE_unix", asm("x86_asm") ],
619
        cc               => "gcc",
620
        cflags           => "-DL_ENDIAN -Wall",
621 622
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3 -fomit-frame-pointer",
623
        thread_cflag     => "(unknown)",
R
Rich Salz 已提交
624
        bn_ops           => "BN_LLONG",
625 626
        perlasm_scheme   => "a.out",
    },
627

628
    "linux-x86_64" => {
629
        inherit_from     => [ "linux-generic64", asm("x86_64_asm") ],
630
        cflags           => "-m64 -DL_ENDIAN -Wall",
631
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
632
        perlasm_scheme   => "elf",
633
        shared_ldflag    => "-m64",
634 635
        multilib         => "64",
    },
636 637 638
    "linux-x86_64-clang" => {
        inherit_from     => [ "linux-x86_64" ],
        cc               => "clang",
B
Ben Laurie 已提交
639
        cflags           => "-m64 -DL_ENDIAN -Wall -Wextra -Qunused-arguments",
640
    },
641
    "linux-x32" => {
642 643
        inherit_from     => [ "linux-generic32", asm("x86_64_asm") ],
        cflags           => "-mx32 -DL_ENDIAN -Wall",
644
        bn_ops           => "SIXTY_FOUR_BIT",
645 646 647 648
        perlasm_scheme   => "elf",
        shared_ldflag    => "-mx32",
        multilib         => "x32",
    },
649 650 651

    "linux-ia64" => {
        inherit_from     => [ "linux-generic64", asm("ia64_asm") ],
652
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
653 654
    },

655
    "linux64-s390x" => {
656 657
        inherit_from     => [ "linux-generic64", asm("s390x_asm") ],
        cflags           => "-m64 -Wall -DB_ENDIAN",
658 659 660 661 662
        perlasm_scheme   => "64",
        shared_ldflag    => "-m64",
        multilib         => "64",
    },
    "linux32-s390x" => {
663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681
        #### So called "highgprs" target for z/Architecture CPUs
        # "Highgprs" is kernel feature first implemented in Linux
        # 2.6.32, see /proc/cpuinfo. The idea is to preserve most
        # significant bits of general purpose registers not only
        # upon 32-bit process context switch, but even on
        # asynchronous signal delivery to such process. This makes
        # it possible to deploy 64-bit instructions even in legacy
        # application context and achieve better [or should we say
        # adequate] performance. The build is binary compatible with
        # linux-generic32, and the idea is to be able to install the
        # resulting libcrypto.so alongside generic one, e.g. as
        # /lib/highgprs/libcrypto.so.x.y, for ldconfig and run-time
        # linker to autodiscover. Unfortunately it doesn't work just
        # yet, because of couple of bugs in glibc
        # sysdeps/s390/dl-procinfo.c affecting ldconfig and ld.so.1...
        #
        inherit_from     => [ "linux-generic32", asm("s390x_asm") ],
        cflags           => "-m31 -Wall -Wa,-mzarch -DB_ENDIAN",
        bn_obj           => sub { my $r=join(" ",@_); $r=~s/bn\-s390x/bn_asm/; $r; },
682 683 684 685
        perlasm_scheme   => "31",
        shared_ldflag    => "-m31",
        multilib         => "/highgprs",
    },
686 687 688 689

    #### SPARC Linux setups
    # Ray Miller <ray.miller@computing-services.oxford.ac.uk> has
    # patiently assisted with debugging of following two configs.
690
    "linux-sparcv8" => {
691
        inherit_from     => [ "linux-generic32", asm("sparcv8_asm") ],
692
        cflags           => "-mcpu=v8 -Wall -DB_ENDIAN -DBN_DIV2W",
693 694
    },
    "linux-sparcv9" => {
695 696 697 698
        # it's a real mess with -mcpu=ultrasparc option under Linux,
        # but -Wa,-Av8plus should do the trick no matter what.
        inherit_from     => [ "linux-generic32", asm("sparcv9_asm") ],
        cflags           => "-m32 -mcpu=ultrasparc -Wall -Wa,-Av8plus -DB_ENDIAN -DBN_DIV2W",
699 700 701
        shared_ldflag    => "-m32",
    },
    "linux64-sparcv9" => {
702 703 704
        # GCC 3.1 is a requirement
        inherit_from     => [ "linux-generic64", asm("sparcv9_asm") ],
        cflags           => "-m64 -mcpu=ultrasparc -Wall -DB_ENDIAN",
705
        bn_ops           => "BN_LLONG RC4_CHAR",
706 707 708
        shared_ldflag    => "-m64",
        multilib         => "64",
    },
709

710
    "linux-alpha-gcc" => {
711 712
        inherit_from     => [ "linux-generic64", asm("alpha_asm") ],
        cflags           => "-DL_ENDIAN",
713
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
714 715
    },
    "linux-c64xplus" => {
716
        inherit_from     => [ "BASE_unix" ],
717
        # TI_CGT_C6000_7.3.x is a requirement
718 719 720 721
        cc               => "cl6x",
        cflags           => "--linux -ea=.s -eo=.o -mv6400+ -o2 -ox -ms -pden -DOPENSSL_SMALL_FOOTPRINT",
        thread_cflag     => "-D_REENTRANT",
        bn_ops           => "BN_LLONG",
722 723 724 725 726 727 728 729
        cpuid_asm_src    => "c64xpluscpuid.s",
        bn_asm_src       => "asm/bn-c64xplus.asm c64xplus-gf2m.s",
        aes_asm_src      => "aes-c64xplus.s aes_cbc.c aes-ctr.fake",
        sha1_asm_src     => "sha1-c64xplus.s sha256-c64xplus.s sha512-c64xplus.s",
        rc4_asm_src      => "rc4-c64xplus.s",
        modes_asm_src    => "ghash-c64xplus.s",
        chacha_asm_src   => "chacha-c64xplus.s",
        poly1305_asm_src => "poly1305-c64xplus.s",
730 731 732 733 734 735 736 737
        perlasm_scheme   => "void",
        dso_scheme       => "dlfcn",
        shared_target    => "linux-shared",
        shared_cflag     => "--pic",
        shared_ldflag    => "-z --sysv --shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        ranlib           => "true",
    },
738

739
#### Android: linux-* but without pointers to headers and libs.
A
Andy Polyakov 已提交
740 741 742 743 744 745 746 747 748 749 750 751 752 753
    #
    # It takes pair of prior-set environment variables to make it work:
    #
    # CROSS_SYSROOT=/some/where/android-ndk-<ver>/platforms/android-<apiver>/arch-<
    # CROSS_COMPILE=<prefix>
    #
    # As well as PATH adjusted to cover ${CROSS_COMPILE}gcc and company.
    # For example to compile for ICS and ARM with NDK 10d, you'd:
    #
    # ANDROID_NDK=/some/where/android-ndk-10d
    # CROSS_SYSROOT=$ANDROID_NDK/platforms/android-14/arch-arm
    # CROSS_COMPILE=arm-linux-adroideabi-
    # PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.8/prebuild/linux-x86_64/
    #
754
    "android" => {
755
        inherit_from     => [ "linux-generic32" ],
A
Andy Polyakov 已提交
756 757 758 759 760 761 762 763 764 765
        # Special note about unconditional -fPIC and -pie. The underlying
        # reason is that Lollipop refuses to run non-PIE. But what about
        # older systems and NDKs? -fPIC was never problem, so the only
        # concern if -pie. Older toolchains, e.g. r4, appear to handle it
        # and binaries turn mostly functional. "Mostly" means that oldest
        # Androids, such as Froyo, fail to handle executable, but newer
        # systems are perfectly capable of executing binaries targeting
        # Froyo. Keep in mind that in the nutshell Android builds are
        # about JNI, i.e. shared libraries, not applications.
        cflags           => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack -Wall",
766
        debug_cflags     => "-O0 -g",
767 768
        lflags           => "-pie",
        ex_libs          => "-ldl",
A
Andy Polyakov 已提交
769
        shared_cflag     => "",
770 771
    },
    "android-x86" => {
772 773
        inherit_from     => [ "android", asm("x86_asm") ],
        release_cflags   => "-O3 -fomit-frame-pointer",
R
Rich Salz 已提交
774
        bn_ops           => "BN_LLONG",
775
        perlasm_scheme   => "android",
776
    },
A
Andy Polyakov 已提交
777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798
    ################################################################
    # Contemporary Android applications can provide multiple JNI
    # providers in .apk, targeting multiple architectures. Among
    # them there is "place" for two ARM flavours: generic eabi and
    # armv7-a/hard-float. However, it should be noted that OpenSSL's
    # ability to engage NEON is not constrained by ABI choice, nor
    # is your ability to call OpenSSL from your application code
    # compiled with floating-point ABI other than default 'soft'.
    # [Latter thanks to __attribute__((pcs("aapcs"))) declaration.]
    # This means that choice of ARM libraries you provide in .apk
    # is driven by application needs. For example if application
    # itself benefits from NEON or is floating-point intensive, then
    # it might be appropriate to provide both libraries. Otherwise
    # just generic eabi would do. But in latter case it would be
    # appropriate to
    #
    #   ./Configure android-armeabi -D__ARM_MAX_ARCH__=8
    #
    # in order to build "universal" binary and allow OpenSSL take
    # advantage of NEON when it's available.
    #
    "android-armeabi" => {
799
        inherit_from     => [ "android", asm("armv4_asm") ],
A
Andy Polyakov 已提交
800
    },
801
    "android-mips" => {
802
        inherit_from     => [ "android", asm("mips32_asm") ],
803 804
        perlasm_scheme   => "o32",
    },
805

806 807 808 809
    "android64" => {
        inherit_from     => [ "linux-generic64" ],
        cflags           => "-mandroid -fPIC --sysroot=\$(CROSS_SYSROOT) -Wa,--noexecstack -Wall",
        debug_cflags     => "-O0 -g",
810 811
        lflags           => "-pie",
        ex_libs          => "-ldl",
812 813 814 815 816 817 818
        shared_cflag     => "",
    },
    "android64-aarch64" => {
        inherit_from     => [ "android64", asm("aarch64_asm") ],
        perlasm_scheme   => "linux64",
    },

819
#### *BSD
820
    "BSD-generic32" => {
821 822 823 824 825 826 827
        # As for thread_cflag. Idea is to maintain "collective" set of
        # flags, which would cover all BSD flavors. -pthread applies
        # to them all, but is treated differently. OpenBSD expands is
        # as -D_POSIX_THREAD -lc_r, which is sufficient. FreeBSD 4.x
        # expands it as -lc_r, which has to be accompanied by explicit
        # -D_THREAD_SAFE and sometimes -D_REENTRANT. FreeBSD 5.x
        # expands it as -lc_r, which seems to be sufficient?
828
        inherit_from     => [ "BASE_unix" ],
829
        cc               => "cc",
830 831 832
        cflags           => "-Wall",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O3",
833
        thread_cflag     => "-pthread -D_THREAD_SAFE -D_REENTRANT",
834
        bn_ops           => "BN_LLONG",
835 836 837 838 839
        dso_scheme       => "dlfcn",
        shared_target    => "bsd-gcc-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
840 841
    "BSD-generic64" => {
        inherit_from     => [ "BSD-generic32" ],
842
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
843
    },
844 845 846

    "BSD-x86" => {
        inherit_from     => [ "BSD-generic32", asm("x86_asm") ],
847 848
        cflags           => "-DL_ENDIAN -Wall",
        release_cflags   => "-O3 -fomit-frame-pointer",
R
Rich Salz 已提交
849
        bn_ops           => "BN_LLONG",
850
        shared_target    => "bsd-shared",
851
        perlasm_scheme   => "a.out",
852
    },
853 854 855
    "BSD-x86-elf" => {
        inherit_from     => [ "BSD-x86" ],
        perlasm_scheme   => "elf",
856
    },
857

858 859
    "BSD-sparcv8" => {
        inherit_from     => [ "BSD-generic32", asm("sparcv8_asm") ],
860
        cflags           => "-mcpu=v8 -Wall -DB_ENDIAN",
861 862
    },
    "BSD-sparc64" => {
863 864 865 866 867
        # -DMD32_REG_T=int doesn't actually belong in sparc64 target, it
        # simply *happens* to work around a compiler bug in gcc 3.3.3,
        # triggered by RIPEMD160 code.
        inherit_from     => [ "BSD-generic64", asm("sparcv9_asm") ],
        cflags           => "-DB_ENDIAN -DMD32_REG_T=int -Wall",
868
        bn_ops           => "BN_LLONG",
869
    },
870

871
    "BSD-ia64" => {
872 873
        inherit_from     => [ "BSD-generic64", asm("ia64_asm") ],
        cflags           => "-DL_ENDIAN -Wall",
874
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
875
    },
876

877
    "BSD-x86_64" => {
878 879
        inherit_from     => [ "BSD-generic64", asm("x86_64_asm") ],
        cflags           => "-DL_ENDIAN -Wall",
880
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
881 882
        perlasm_scheme   => "elf",
    },
883

884
    "bsdi-elf-gcc" => {
885
        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
886
        cc               => "gcc",
887
        cflags           => "-DPERL5 -DL_ENDIAN -fomit-frame-pointer -O3 -Wall",
888
        thread_cflag     => "(unknown)",
889
        ex_libs          => "-ldl",
R
Rich Salz 已提交
890
        bn_ops           => "BN_LLONG",
891 892 893 894 895
        dso_scheme       => "dlfcn",
        shared_target    => "bsd-gcc-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
896

897
    "nextstep" => {
898
        inherit_from     => [ "BASE_unix" ],
899 900 901 902
        cc               => "cc",
        cflags           => "-O -Wall",
        unistd           => "<libc.h>",
        thread_cflag     => "(unknown)",
R
Rich Salz 已提交
903
        bn_ops           => "BN_LLONG",
904 905
    },
    "nextstep3.3" => {
906
        inherit_from     => [ "BASE_unix" ],
907 908 909 910
        cc               => "cc",
        cflags           => "-O3 -Wall",
        unistd           => "<libc.h>",
        thread_cflag     => "(unknown)",
R
Rich Salz 已提交
911
        bn_ops           => "BN_LLONG",
912
    },
913 914

# QNX
915
    "qnx4" => {
916
        inherit_from     => [ "BASE_unix" ],
917 918 919 920 921
        cc               => "cc",
        cflags           => "-DL_ENDIAN -DTERMIO",
        thread_cflag     => "(unknown)",
    },
    "QNX6" => {
922
        inherit_from     => [ "BASE_unix" ],
923
        cc               => "gcc",
924
        ex_libs          => "-lsocket",
925 926 927 928 929 930
        dso_scheme       => "dlfcn",
        shared_target    => "bsd-gcc-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
    "QNX6-i386" => {
931
        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
932 933
        cc               => "gcc",
        cflags           => "-DL_ENDIAN -O2 -Wall",
934
        ex_libs          => "-lsocket",
935 936 937 938 939
        dso_scheme       => "dlfcn",
        shared_target    => "bsd-gcc-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
940 941 942 943 944 945 946 947 948 949 950 951 952

#### SCO/Caldera targets.
#
# Originally we had like unixware-*, unixware-*-pentium, unixware-*-p6, etc.
# Now we only have blended unixware-* as it's the only one used by ./config.
# If you want to optimize for particular microarchitecture, bypass ./config
# and './Configure unixware-7 -Kpentium_pro' or whatever appropriate.
# Note that not all targets include assembler support. Mostly because of
# lack of motivation to support out-of-date platforms with out-of-date
# compiler drivers and assemblers. Tim Rice <tim@multitalents.net> has
# patiently assisted to debug most of it.
#
# UnixWare 2.0x fails destest with -O.
953
    "unixware-2.0" => {
954
        inherit_from     => [ "BASE_unix" ],
955 956 957
        cc               => "cc",
        cflags           => "-DFILIO_H -DNO_STRINGS_H",
        thread_cflag     => "-Kthread",
958
        ex_libs          => "-lsocket -lnsl -lresolv -lx",
959 960
    },
    "unixware-2.1" => {
961
        inherit_from     => [ "BASE_unix" ],
962 963 964
        cc               => "cc",
        cflags           => "-O -DFILIO_H",
        thread_cflag     => "-Kthread",
965
        ex_libs          => "-lsocket -lnsl -lresolv -lx",
966 967
    },
    "unixware-7" => {
968
        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
969 970 971
        cc               => "cc",
        cflags           => "-O -DFILIO_H -Kalloca",
        thread_cflag     => "-Kthread",
972
        ex_libs          => "-lsocket -lnsl",
R
Rich Salz 已提交
973
        bn_ops           => "BN_LLONG",
974 975 976 977 978 979 980
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "svr5-shared",
        shared_cflag     => "-Kpic",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
    "unixware-7-gcc" => {
981
        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
982
        cc               => "gcc",
983
        cflags           => "-DL_ENDIAN -DFILIO_H -O3 -fomit-frame-pointer -Wall",
984
        thread_cflag     => "-D_REENTRANT",
985
        ex_libs          => "-lsocket -lnsl",
R
Rich Salz 已提交
986
        bn_ops           => "BN_LLONG",
987 988 989 990 991 992
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "gnu-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
993
# SCO 5 - Ben Laurie <ben@algroup.co.uk> says the -O breaks the SCO cc.
994
    "sco5-cc" => {
995
        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
996 997 998
        cc               => "cc",
        cflags           => "-belf",
        thread_cflag     => "(unknown)",
999
        ex_libs          => "-lsocket -lnsl",
1000 1001 1002 1003 1004 1005 1006
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "svr3-shared",
        shared_cflag     => "-Kpic",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
    "sco5-gcc" => {
1007
        inherit_from     => [ "BASE_unix", asm("x86_elf_asm") ],
1008 1009 1010
        cc               => "gcc",
        cflags           => "-O3 -fomit-frame-pointer",
        thread_cflag     => "(unknown)",
1011
        ex_libs          => "-lsocket -lnsl",
R
Rich Salz 已提交
1012
        bn_ops           => "BN_LLONG",
1013 1014 1015 1016 1017 1018
        perlasm_scheme   => "elf-1",
        dso_scheme       => "dlfcn",
        shared_target    => "svr3-shared",
        shared_cflag     => "-fPIC",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
    },
1019 1020

#### IBM's AIX.
1021
    "aix-gcc" => {
1022
        inherit_from     => [ "BASE_unix", asm("ppc32_asm") ],
1023
        cc               => "gcc",
1024 1025 1026
        cflags           => "-DB_ENDIAN",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O",
1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037
        thread_cflag     => "-pthread",
        sys_id           => "AIX",
        bn_ops           => "BN_LLONG RC4_CHAR",
        perlasm_scheme   => "aix32",
        dso_scheme       => "dlfcn",
        shared_target    => "aix-shared",
        shared_ldflag    => "-shared -Wl,-G",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        arflags          => "-X32",
    },
    "aix64-gcc" => {
1038
        inherit_from     => [ "BASE_unix", asm("ppc64_asm") ],
1039
        cc               => "gcc",
1040 1041 1042
        cflags           => "-maix64 -DB_ENDIAN",
        debug_cflags     => "-O0 -g",
        release_cflags   => "-O",
1043 1044 1045 1046 1047 1048 1049 1050 1051 1052
        thread_cflag     => "-pthread",
        sys_id           => "AIX",
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        perlasm_scheme   => "aix64",
        dso_scheme       => "dlfcn",
        shared_target    => "aix-shared",
        shared_ldflag    => "-maix64 -shared -Wl,-G",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        arflags          => "-X64",
    },
1053 1054 1055
    # Below targets assume AIX 5. Idea is to effectively disregard
    # $OBJECT_MODE at build time. $OBJECT_MODE is respected at
    # ./config stage!
1056
    "aix-cc" => {
1057
        inherit_from     => [ "BASE_unix", asm("ppc32_asm") ],
1058
        cc               => "cc",
1059 1060 1061
        cflags           => "-q32 -DB_ENDIAN -qmaxmem=16384 -qro -qroconst",
        debug_cflags     => "",
        release_cflags   => "-O",
1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072
        thread_cflag     => "-qthreaded -D_THREAD_SAFE",
        sys_id           => "AIX",
        bn_ops           => "BN_LLONG RC4_CHAR",
        perlasm_scheme   => "aix32",
        dso_scheme       => "dlfcn",
        shared_target    => "aix-shared",
        shared_ldflag    => "-q32 -G",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        arflags          => "-X 32",
    },
    "aix64-cc" => {
1073
        inherit_from     => [ "BASE_unix", asm("ppc64_asm") ],
1074
        cc               => "cc",
1075 1076 1077
        cflags           => "-q64 -DB_ENDIAN -qmaxmem=16384 -qro -qroconst",
        debug_cflags     => "",
        release_cflags   => "-O",
1078 1079 1080 1081 1082 1083 1084 1085 1086 1087
        thread_cflag     => "-qthreaded -D_THREAD_SAFE",
        sys_id           => "AIX",
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
        perlasm_scheme   => "aix64",
        dso_scheme       => "dlfcn",
        shared_target    => "aix-shared",
        shared_ldflag    => "-q64 -G",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        arflags          => "-X 64",
    },
1088 1089

# SIEMENS BS2000/OSD: an EBCDIC-based mainframe
1090
    "BS2000-OSD" => {
1091
        inherit_from     => [ "BASE_unix" ],
1092 1093 1094
        cc               => "c89",
        cflags           => "-O -XLLML -XLLMK -XL -DB_ENDIAN -DCHARSET_EBCDIC",
        thread_cflag     => "(unknown)",
1095
        ex_libs          => "-lsocket -lnsl",
1096
        bn_ops           => "THIRTY_TWO_BIT RC4_CHAR",
1097
    },
1098 1099 1100 1101 1102

# OS/390 Unix an EBCDIC-based Unix system on IBM mainframe
# You need to compile using the c89.sh wrapper in the tools directory, because the
# IBM compiler does not like the -L switch after any object modules.
#
1103
    "OS390-Unix" => {
1104
        inherit_from     => [ "BASE_unix" ],
1105 1106 1107
        cc               => "c89.sh",
        cflags           => "-O -DB_ENDIAN -DCHARSET_EBCDIC -DNO_SYS_PARAM_H  -D_ALL_SOURCE",
        thread_cflag     => "(unknown)",
1108
        bn_ops           => "THIRTY_TWO_BIT RC4_CHAR",
1109
    },
1110

1111
#### Visual C targets
1112 1113 1114 1115 1116 1117 1118
#
# Win64 targets, WIN64I denotes IA-64 and WIN64A - AMD64
#
# Note about -wd4090, disable warning C4090. This warning returns false
# 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.
1119
    "VC-common" => {
1120
        inherit_from     => [ "BASE_Windows" ],
1121
        template         => 1,
1122
        cc               => "cl",
1123
        cflags           => "-W3 -wd4090 -Gs0 -GF -Gy -nologo -DOPENSSL_SYS_WIN32 -DWIN32_LEAN_AND_MEAN -DL_ENDIAN -D_CRT_SECURE_NO_DEPRECATE",
1124
        shared_target    => "win-shared", # meaningless except it gives Configure a hint
1125 1126
        dso_scheme       => "win32",
    },
1127 1128
    "VC-WIN64I" => {
        inherit_from     => [ "VC-common", asm("ia64_asm") ],
1129
        cflags           => add("-DUNICODE -D_UNICODE"),
1130
        sys_id           => "WIN64I",
1131
        bn_ops           => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
1132 1133
        bn_obj           => sub { my $r=join(" ",@_); $r=~s/bn\-//; $r; },
        rc4_obj          => "",
1134
        perlasm_scheme   => "ias",
1135
        build_scheme     => add("VC-W64", { separator => undef }),
1136 1137
    },
    "VC-WIN64A" => {
1138
        inherit_from     => [ "VC-common", asm("x86_64_asm") ],
1139
        cflags           => add("-DUNICODE -D_UNICODE"),
1140
        sys_id           => "WIN64A",
1141
        bn_ops           => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
1142
        bn_obj           => sub { my $r=join(" ",@_); $r=~s/x86_64\-gcc/bn_asm/; $r; },
1143
        perlasm_scheme   => "auto",
1144
        build_scheme     => add("VC-W64", { separator => undef }),
1145 1146
    },
    "VC-WIN32" => {
1147 1148 1149
        # 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") ],
1150
        sys_id           => "WIN32",
R
Rich Salz 已提交
1151
        bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
1152
        perlasm_scheme   => "win32n",
1153
        build_scheme     => add("VC-W32", { separator => undef }),
1154 1155
    },
    "VC-CE" => {
1156
        inherit_from     => [ "BASE_Windows" ],
1157 1158
        cc               => "cl",
        sys_id           => "WINCE",
R
Rich Salz 已提交
1159
        bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
1160
        dso_scheme       => "win32",
1161
        build_scheme     => add("VC-WCE", { separator => undef }),
1162
    },
1163

1164
#### Borland C++ 4.5
1165
    "BC-32" => {
1166
        inherit_from     => [ "BASE_Windows" ],
1167 1168
        cc               => "bcc32",
        sys_id           => "WIN32",
1169
        bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
1170
        dso_scheme       => "win32",
1171
        build_scheme     => add("BC", { separator => undef }),
1172
    },
1173

1174
#### MinGW
1175
    "mingw" => {
1176
        inherit_from     => [ "BASE_unix", asm("x86_asm"),
1177
                              sub { $disabled{shared} ? () : "x86_uplink" } ],
1178
        cc               => "gcc",
1179
        cflags           => "-DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE -m32 -Wall",
1180
        debug_cflags     => "-g -O0",
1181
        release_cflags   => "-O3 -fomit-frame-pointer",
1182 1183
        thread_cflag     => "-D_MT",
        sys_id           => "MINGW32",
1184
        ex_libs          => "-lws2_32 -lgdi32 -lcrypt32",
R
Rich Salz 已提交
1185
        bn_ops           => "BN_LLONG EXPORT_VAR_AS_FN",
1186 1187
        perlasm_scheme   => "coff",
        dso_scheme       => "win32",
1188
        shared_target    => "mingw-shared",
1189
        shared_cflag     => add("-D_WINDLL"),
1190
        shared_ldflag    => "-static-libgcc",
1191
        shared_rcflag    => "--target=pe-i386",
1192
        shared_extension => ".dll",
1193
        multilib         => "",
1194 1195
    },
    "mingw64" => {
1196 1197 1198 1199 1200 1201 1202 1203
        # As for OPENSSL_USE_APPLINK. Applink makes it possible to use
        # .dll compiled with one compiler with application compiled with
        # another compiler. It's possible to engage Applink support in
        # mingw64 build, but it's not done, because till mingw64
        # supports structured exception handling, one can't seriously
        # consider its binaries for using with non-mingw64 run-time
        # environment. And as mingw64 is always consistent with itself,
        # Applink is never engaged and can as well be omitted.
1204
        inherit_from     => [ "BASE_unix", asm("x86_64_asm") ],
1205
        cc               => "gcc",
1206
        cflags           => "-DL_ENDIAN -DWIN32_LEAN_AND_MEAN -DUNICODE -D_UNICODE -m64 -Wall",
1207
        debug_cflags     => "-g -O0",
1208
        release_cflags   => "-O3",
1209 1210
        thread_cflag     => "-D_MT",
        sys_id           => "MINGW64",
1211
        ex_libs          => "-lws2_32 -lgdi32 -lcrypt32",
1212
        bn_ops           => "SIXTY_FOUR_BIT EXPORT_VAR_AS_FN",
1213 1214
        perlasm_scheme   => "mingw64",
        dso_scheme       => "win32",
1215
        shared_target    => "mingw-shared",
1216
        shared_cflag     => add("-D_WINDLL"),
1217
        shared_ldflag    => "-static-libgcc",
1218
        shared_rcflag    => "--target=pe-x86-64",
1219
        shared_extension => ".dll",
1220
        multilib         => "64",
1221
    },
1222

D
David Woodhouse 已提交
1223 1224
#### UEFI
    "UEFI" => {
1225
        inherit_from     => [ "BASE_unix" ],
D
David Woodhouse 已提交
1226 1227 1228 1229 1230
        cc               => "cc",
        cflags           => "-DL_ENDIAN -O",
        sys_id           => "UEFI",
    },

1231
#### UWIN
1232
    "UWIN" => {
1233
        inherit_from     => [ "BASE_unix" ],
1234 1235 1236
        cc               => "cc",
        cflags           => "-DTERMIOS -DL_ENDIAN -O -Wall",
        sys_id           => "UWIN",
R
Rich Salz 已提交
1237
        bn_ops           => "BN_LLONG",
1238 1239
        dso_scheme       => "win32",
    },
1240

1241
#### Cygwin
1242
    "Cygwin-x86" => {
1243
        inherit_from     => [ "BASE_unix", asm("x86_asm") ],
1244
        cc               => "gcc",
1245
        cflags           => "-DTERMIOS -DL_ENDIAN -Wall",
1246
        debug_cflags     => "-g -O0",
1247
        release_cflags   => "-O3 -fomit-frame-pointer",
1248
        sys_id           => "CYGWIN",
R
Rich Salz 已提交
1249
        bn_ops           => "BN_LLONG",
1250 1251 1252 1253 1254
        perlasm_scheme   => "coff",
        dso_scheme       => "dlfcn",
        shared_target    => "cygwin-shared",
        shared_cflag     => "-D_WINDLL",
        shared_ldflag    => "-shared",
1255
        shared_extension => ".dll",
1256 1257
    },
    "Cygwin-x86_64" => {
1258
        inherit_from     => [ "BASE_unix", asm("x86_64_asm") ],
1259
        cc               => "gcc",
1260 1261
        cflags           => "-DTERMIOS -DL_ENDIAN -Wall",
        debug_cflags     => "-g -O0",
1262
        release_cflags   => "-O3",
1263
        sys_id           => "CYGWIN",
1264
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
1265 1266 1267 1268 1269
        perlasm_scheme   => "mingw64",
        dso_scheme       => "dlfcn",
        shared_target    => "cygwin-shared",
        shared_cflag     => "-D_WINDLL",
        shared_ldflag    => "-shared",
1270
        shared_extension => ".dll",
1271
    },
1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288
    # Backward compatibility for those using this target
    "Cygwin" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    # In case someone constructs the Cygwin target name themself
    "Cygwin-i386" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    "Cygwin-i486" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    "Cygwin-i586" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
    "Cygwin-i686" => {
	inherit_from     => [ "Cygwin-x86" ]
    },
1289

1290
#### NetWare from David Ward (dsward@novell.com)
1291 1292 1293 1294
# 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
1295
    "netware-clib" => {
1296
        inherit_from     => [ "BASE_Windows" ],
1297
        cc               => "mwccnlm",
1298
        build_scheme     => add("netware", { separator => undef }),
1299 1300
    },
    "netware-clib-bsdsock" => {
1301
        inherit_from     => [ "BASE_Windows" ],
1302
        cc               => "mwccnlm",
1303
        build_scheme     => add("netware", { separator => undef }),
1304 1305
    },
    "netware-clib-gcc" => {
1306
        inherit_from     => [ "BASE_unix" ],
1307 1308 1309 1310
        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" => {
1311
        inherit_from     => [ "BASE_unix" ],
1312 1313 1314
        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",
    },
1315
    # netware-libc => LibC/NKS support
1316
    "netware-libc" => {
1317
        inherit_from     => [ "BASE_Windows" ],
1318
        cc               => "mwccnlm",
R
Rich Salz 已提交
1319
        bn_ops           => "BN_LLONG",
1320
        build_scheme     => add("netware", { separator => undef }),
1321 1322
    },
    "netware-libc-bsdsock" => {
1323
        inherit_from     => [ "BASE_Windows" ],
1324
        cc               => "mwccnlm",
R
Rich Salz 已提交
1325
        bn_ops           => "BN_LLONG",
1326
        build_scheme     => add("netware", { separator => undef }),
1327 1328
    },
    "netware-libc-gcc" => {
1329
        inherit_from     => [ "BASE_unix" ],
1330 1331
        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",
R
Rich Salz 已提交
1332
        bn_ops           => "BN_LLONG",
1333 1334
    },
    "netware-libc-bsdsock-gcc" => {
1335
        inherit_from     => [ "BASE_unix" ],
1336 1337
        cc               => "i586-netware-gcc",
        cflags           => "-nostdinc -I/ndk/libc/include -DNETWARE_BSDSOCK -DL_ENDIAN -DNETWARE_LIBC -DOPENSSL_SYS_NETWARE -DTERMIO -O2 -Wall",
R
Rich Salz 已提交
1338
        bn_ops           => "BN_LLONG",
1339
    },
1340

1341
#### DJGPP
1342
    "DJGPP" => {
1343
        inherit_from     => [ asm("x86_asm") ],
1344 1345 1346
        cc               => "gcc",
        cflags           => "-I/dev/env/WATT_ROOT/inc -DTERMIO -DL_ENDIAN -fomit-frame-pointer -O2 -Wall",
        sys_id           => "MSDOS",
1347
        ex_libs          => "-L/dev/env/WATT_ROOT/lib -lwatt",
R
Rich Salz 已提交
1348
        bn_ops           => "BN_LLONG",
1349 1350
        perlasm_scheme   => "a.out",
    },
1351

1352
#### Ultrix from Bernhard Simon <simon@zid.tuwien.ac.at>
1353
    "ultrix-cc" => {
1354
        inherit_from     => [ "BASE_unix" ],
1355 1356 1357 1358 1359
        cc               => "cc",
        cflags           => "-std1 -O -Olimit 2500 -DL_ENDIAN",
        thread_cflag     => "(unknown)",
    },
    "ultrix-gcc" => {
1360
        inherit_from     => [ "BASE_unix" ],
1361 1362 1363 1364 1365
        cc               => "gcc",
        cflags           => "-O3 -DL_ENDIAN",
        thread_cflag     => "(unknown)",
        bn_ops           => "BN_LLONG",
    },
1366 1367 1368 1369
# 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
1370
    "darwin-common" => {
1371
        inherit_from     => [ "BASE_unix" ],
1372
        template         => 1,
1373
        cc               => "cc",
1374 1375
        cflags           => "",
        debug_cflags     => "-g -O0",
1376
        release_cflags   => "-O3",
1377 1378
        thread_cflag     => "-D_REENTRANT",
        sys_id           => "MACOSX",
1379
        plib_lflags      => "-Wl,-search_paths_first",
1380
        bn_ops           => "BN_LLONG RC4_CHAR",
1381 1382 1383 1384
        perlasm_scheme   => "osx32",
        dso_scheme       => "dlfcn",
        shared_target    => "darwin-shared",
        shared_cflag     => "-fPIC -fno-common",
1385
        shared_ldflag    => "-dynamiclib",
1386 1387
        shared_extension => ".\$(SHLIB_MAJOR).\$(SHLIB_MINOR).dylib",
    },
1388 1389 1390 1391 1392 1393
    "darwin-ppc-cc" => {
        inherit_from     => [ "darwin-common", asm("ppc32_asm") ],
        cflags           => "-arch ppc -DB_ENDIAN -Wa,-force_cpusubtype_ALL",
        perlasm_scheme   => "osx32",
        shared_ldflag    => "-arch ppc -dynamiclib",
    },
1394
    "darwin64-ppc-cc" => {
1395 1396
        inherit_from     => [ "darwin-common", asm("ppc64_asm") ],
        cflags           => "-arch ppc64 -DB_ENDIAN",
1397
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
1398 1399 1400 1401
        perlasm_scheme   => "osx64",
        shared_ldflag    => "-arch ppc64 -dynamiclib",
    },
    "darwin-i386-cc" => {
1402
        inherit_from     => [ "darwin-common", asm("x86_asm") ],
1403 1404
        cflags           => "-arch i386 -DL_ENDIAN",
        release_cflags   => "-O3 -fomit-frame-pointer",
1405
        bn_ops           => "BN_LLONG RC4_INT",
1406 1407 1408 1409
        perlasm_scheme   => "macosx",
        shared_ldflag    => "-arch i386 -dynamiclib",
    },
    "darwin64-x86_64-cc" => {
1410
        inherit_from     => [ "darwin-common", asm("x86_64_asm") ],
1411
        cflags           => "-arch x86_64 -DL_ENDIAN -Wall",
1412
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
1413 1414 1415
        perlasm_scheme   => "macosx",
        shared_ldflag    => "-arch x86_64 -dynamiclib",
    },
1416 1417

#### iPhoneOS/iOS
1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429
#
# It takes three prior-set environment variables to make it work:
#
# CROSS_COMPILE=/where/toolchain/is/usr/bin/ [note ending slash]
# CROSS_TOP=/where/SDKs/are
# CROSS_SDK=iPhoneOSx.y.sdk
#
# Exact paths vary with Xcode releases, but for couple of last ones
# they would look like this:
#
# CROSS_COMPILE=`xcode-select --print-path`/Toolchains/XcodeDefault.xctoolchain/usr/bin/
# CROSS_TOP=`xcode-select --print-path`/Platforms/iPhoneOS.platform/Developer
1430
# CROSS_SDK=iPhoneOS.sdk
1431
#
1432
    "iphoneos-cross" => {
1433 1434
        inherit_from     => [ "darwin-common" ],
        cflags           => "-isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common",
1435 1436
        sys_id           => "iOS",
    },
1437 1438 1439 1440
    "ios-cross" => {
        inherit_from     => [ "darwin-common", asm("armv4_asm") ],
        # It should be possible to go below iOS 6 and even add -arch armv6,
        # thus targeting iPhone pre-3GS, but it's assumed to be irrelevant
1441
        # at this point.
1442 1443 1444 1445
        cflags           => "-arch armv7 -mios-version-min=6.0.0 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common",
        sys_id           => "iOS",
        perlasm_scheme   => "ios32",
    },
1446
    "ios64-cross" => {
1447 1448
        inherit_from     => [ "darwin-common", asm("aarch64_asm") ],
        cflags           => "-arch arm64 -mios-version-min=7.0.0 -isysroot \$(CROSS_TOP)/SDKs/\$(CROSS_SDK) -fno-common",
1449
        sys_id           => "iOS",
1450
        bn_ops           => "SIXTY_FOUR_BIT_LONG RC4_CHAR",
1451 1452
        perlasm_scheme   => "ios64",
    },
1453 1454

##### GNU Hurd
1455
    "hurd-x86" => {
1456
        inherit_from     => [ "BASE_unix" ],
1457
        inherit_from     => [ asm("x86_elf_asm") ],
1458
        cc               => "gcc",
1459
        cflags           => "-DL_ENDIAN -O3 -fomit-frame-pointer -Wall",
M
Matt Caswell 已提交
1460
        thread_cflag     => "-pthread",
1461
        ex_libs          => "-ldl",
R
Rich Salz 已提交
1462
        bn_ops           => "BN_LLONG",
1463 1464 1465 1466
        dso_scheme       => "dlfcn",
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
    },
1467 1468

##### OS/2 EMX
1469
    "OS2-EMX" => {
1470
        inherit_from     => [ "BASE_unix" ],
1471 1472
        cc               => "gcc",
    },
1473 1474

##### VxWorks for various targets
1475
    "vxworks-ppc60x" => {
1476
        inherit_from     => [ "BASE_unix" ],
1477 1478 1479
        cc               => "ccppc",
        cflags           => "-D_REENTRANT -mrtp -mhard-float -mstrict-align -fno-implicit-fp -DPPC32_fp60x -O2 -fstrength-reduce -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip",
        sys_id           => "VXWORKS",
1480
        ex_libs          => "-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/common",
1481 1482
    },
    "vxworks-ppcgen" => {
1483
        inherit_from     => [ "BASE_unix" ],
1484 1485 1486
        cc               => "ccppc",
        cflags           => "-D_REENTRANT -mrtp -msoft-float -mstrict-align -O1 -fno-builtin -fno-strict-aliasing -Wall -DCPU=PPC32 -DTOOL_FAMILY=gnu -DTOOL=gnu -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/usr/h/wrn/coreip",
        sys_id           => "VXWORKS",
1487
        ex_libs          => "-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/ppc/PPC32/sfcommon",
1488 1489
    },
    "vxworks-ppc405" => {
1490
        inherit_from     => [ "BASE_unix" ],
1491 1492 1493 1494 1495 1496
        cc               => "ccppc",
        cflags           => "-g -msoft-float -mlongcall -DCPU=PPC405 -I\$(WIND_BASE)/target/h",
        sys_id           => "VXWORKS",
        lflags           => "-r",
    },
    "vxworks-ppc750" => {
1497
        inherit_from     => [ "BASE_unix" ],
1498 1499 1500 1501 1502 1503
        cc               => "ccppc",
        cflags           => "-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h \$(DEBUG_FLAG)",
        sys_id           => "VXWORKS",
        lflags           => "-r",
    },
    "vxworks-ppc750-debug" => {
1504
        inherit_from     => [ "BASE_unix" ],
1505
        cc               => "ccppc",
R
Rich Salz 已提交
1506
        cflags           => "-ansi -nostdinc -DPPC750 -D_REENTRANT -fvolatile -fno-builtin -fno-for-scope -fsigned-char -Wall -msoft-float -mlongcall -DCPU=PPC604 -I\$(WIND_BASE)/target/h -DBN_DEBUG -DREF_DEBUG -DCONF_DEBUG -DBN_CTX_DEBUG -DPEDANTIC -DDEBUG_SAFESTACK -DDEBUG -g",
1507 1508 1509 1510
        sys_id           => "VXWORKS",
        lflags           => "-r",
    },
    "vxworks-ppc860" => {
1511
        inherit_from     => [ "BASE_unix" ],
1512 1513 1514 1515 1516 1517
        cc               => "ccppc",
        cflags           => "-nostdinc -msoft-float -DCPU=PPC860 -DNO_STRINGS_H -I\$(WIND_BASE)/target/h",
        sys_id           => "VXWORKS",
        lflags           => "-r",
    },
    "vxworks-simlinux" => {
1518
        inherit_from     => [ "BASE_unix" ],
1519 1520 1521 1522 1523 1524 1525
        cc               => "ccpentium",
        cflags           => "-B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DL_ENDIAN -DCPU=SIMLINUX -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/h -I\$(WIND_BASE)/target/h/wrn/coreip -DOPENSSL_NO_HW_PADLOCK",
        sys_id           => "VXWORKS",
        lflags           => "-r",
        ranlib           => "ranlibpentium",
    },
    "vxworks-mips" => {
1526
        inherit_from     => [ "BASE_unix", asm("mips32_asm") ],
1527 1528 1529 1530
        cc               => "ccmips",
        cflags           => "-mrtp -mips2 -O -G 0 -B\$(WIND_BASE)/host/\$(WIND_HOST_TYPE)/lib/gcc-lib/ -D_VSB_CONFIG_FILE=\"\$(WIND_BASE)/target/lib/h/config/vsbConfig.h\" -DCPU=MIPS32 -msoft-float -mno-branch-likely -DTOOL_FAMILY=gnu -DTOOL=gnu -fno-builtin -fno-defer-pop -DNO_STRINGS_H -I\$(WIND_BASE)/target/usr/h -I\$(WIND_BASE)/target/h/wrn/coreip",
        thread_cflag     => "-D_REENTRANT",
        sys_id           => "VXWORKS",
1531
        ex_libs          => "-Wl,--defsym,__wrs_rtp_base=0xe0000000 -L \$(WIND_BASE)/target/usr/lib/mips/MIPSI32/sfcommon",
1532 1533 1534
        perlasm_scheme   => "o32",
        ranlib           => "ranlibmips",
    },
1535

1536
#### uClinux
1537
    "uClinux-dist" => {
1538
        inherit_from     => [ "BASE_unix" ],
1539 1540 1541
        cc               => "$ENV{'CC'}",
        cflags           => "\$(CFLAGS)",
        thread_cflag     => "-D_REENTRANT",
1542
        plib_lflags      => "\$(LDFLAGS)",
1543
        ex_libs          => "\$(LDLIBS)",
1544 1545 1546 1547 1548 1549 1550 1551 1552
        bn_ops           => "BN_LLONG",
        dso_scheme       => "$ENV{'LIBSSL_dlfcn'}",
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
        shared_ldflag    => "-shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        ranlib           => "$ENV{'RANLIB'}",
    },
    "uClinux-dist64" => {
1553
        inherit_from     => [ "BASE_unix" ],
1554 1555 1556
        cc               => "$ENV{'CC'}",
        cflags           => "\$(CFLAGS)",
        thread_cflag     => "-D_REENTRANT",
1557
        plib_lflags      => "\$(LDFLAGS)",
1558
        ex_libs          => "\$(LDLIBS)",
1559 1560 1561 1562 1563 1564 1565 1566
        bn_ops           => "SIXTY_FOUR_BIT_LONG",
        dso_scheme       => "$ENV{'LIBSSL_dlfcn'}",
        shared_target    => "linux-shared",
        shared_cflag     => "-fPIC",
        shared_ldflag    => "-shared",
        shared_extension => ".so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",
        ranlib           => "$ENV{'RANLIB'}",
    },
1567

1568 1569
    ##### VMS
    "vms-generic" => {
1570
        inherit_from     => [ "BASE_VMS" ],
1571 1572 1573 1574 1575 1576 1577 1578 1579 1580
        template         => 1,
        cc               => "CC/DECC",
        cflags           => "/STANDARD=RELAXED/NOLIST/PREFIX=ALL/NAMES=(AS_IS,SHORTENED)",
        debug_cflags     => "/NOOPTIMIZE/DEBUG",
        release_cflags   => "/OPTIMIZE/NODEBUG",
        lflags           => "/MAP",
        debug_lflags     => "/DEBUG/TRACEBACK",
        release_lflags   => "/NODEBUG/NOTRACEBACK",
        shared_target    => "vms-shared",

1581
        apps_aux_src     => "vms_decc_init.c",
1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604
    },

    # VMS on VAX is *unsupported*
    #"vms-asm" => {
    #   template          => 1,
    #   bn_obj            => "[.asm]vms.obj vms-helper.obj"
    #},
    #"vms-vax" => {
    #   inherit_from      => [ "vms-generic", asm("vms-asm") ],
    #   as                => "MACRO",
    #   debug_aflags      => "/NOOPTIMIZE/DEBUG",
    #   release_aflags    => "/OPTIMIZE/NODEBUG",
    #   bn_opts           => "THIRTY_TWO_BIT RC4_CHAR RC4_CHUNK DES_PTR BF_PTR",
    #},
    "vms-alpha" => {
        inherit_from     => [ "vms-generic" ],
        #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" ],
1605
	cflags		 => add("/POINTER_SIZE=32"),
1606 1607 1608
    },
    "vms-alpha-P64" => {
	inherit_from	 => [ "vms-alpha" ],
1609
	cflags		 => add("/POINTER_SIZE=64"),
1610 1611 1612 1613 1614 1615 1616 1617 1618 1619
    },
    "vms-ia64" => {
        inherit_from     => [ "vms-generic" ],
        #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" ],
1620
	cflags		 => add("/POINTER_SIZE=32"),
1621 1622 1623
    },
    "vms-ia64-P64" => {
	inherit_from	 => [ "vms-ia64" ],
1624
	cflags		 => add("/POINTER_SIZE=64"),
1625 1626
    },

1627
);