Handle special cases correctly in exponentation functions.
[openssl.git] / crypto / opensslconf.h.in
1 /* crypto/opensslconf.h.in */
2
3 /* Generate 80386 code? */
4 #undef I386_ONLY
5
6 #if !(defined(VMS) || defined(__VMS)) /* VMS uses logical names instead */
7 #if defined(HEADER_CRYPTLIB_H) && !defined(OPENSSLDIR)
8 #define OPENSSLDIR "/usr/local/ssl"
9 #endif
10 #endif
11
12 #define OPENSSL_UNISTD <unistd.h>
13
14 #if defined(HEADER_IDEA_H) && !defined(IDEA_INT)
15 #define IDEA_INT unsigned int
16 #endif
17
18 #if defined(HEADER_MD2_H) && !defined(MD2_INT)
19 #define MD2_INT unsigned int
20 #endif
21
22 #if defined(HEADER_RC2_H) && !defined(RC2_INT)
23 /* I need to put in a mod for the alpha - eay */
24 #define RC2_INT unsigned int
25 #endif
26
27 #if defined(HEADER_RC4_H)
28 #if !defined(RC4_INT)
29 /* using int types make the structure larger but make the code faster
30  * on most boxes I have tested - up to %20 faster. */
31 /*
32  * I don't know what does "most" mean, but declaring "int" is a must on:
33  * - Intel P6 because partial register stalls are very expensive;
34  * - elder Alpha because it lacks byte load/store instructions;
35  */
36 #define RC4_INT unsigned int
37 #endif
38 #if !defined(RC4_CHUNK)
39 /*
40  * This enables code handling data aligned at natural CPU word
41  * boundary. See crypto/rc4/rc4_enc.c for further details.
42  */
43 #undef RC4_CHUNK
44 #endif
45 #endif
46
47 #if defined(HEADER_DES_H) && !defined(DES_LONG)
48 /* If this is set to 'unsigned int' on a DEC Alpha, this gives about a
49  * %20 speed up (longs are 8 bytes, int's are 4). */
50 #ifndef DES_LONG
51 #define DES_LONG unsigned long
52 #endif
53 #endif
54
55 #if defined(HEADER_BN_H) && !defined(CONFIG_HEADER_BN_H)
56 #define CONFIG_HEADER_BN_H
57 #undef BN_LLONG
58
59 /* Should we define BN_DIV2W here? */
60
61 /* Only one for the following should be defined */
62 /* The prime number generation stuff may not work when
63  * EIGHT_BIT but I don't care since I've only used this mode
64  * for debuging the bignum libraries */
65 #undef SIXTY_FOUR_BIT_LONG
66 #undef SIXTY_FOUR_BIT
67 #define THIRTY_TWO_BIT
68 #undef SIXTEEN_BIT
69 #undef EIGHT_BIT
70 #endif
71
72 #if defined(HEADER_RC4_LOCL_H) && !defined(CONFIG_HEADER_RC4_LOCL_H)
73 #define CONFIG_HEADER_RC4_LOCL_H
74 /* if this is defined data[i] is used instead of *data, this is a %20
75  * speedup on x86 */
76 #undef RC4_INDEX
77 #endif
78
79 #if defined(HEADER_BF_LOCL_H) && !defined(CONFIG_HEADER_BF_LOCL_H)
80 #define CONFIG_HEADER_BF_LOCL_H
81 #undef BF_PTR
82 #endif /* HEADER_BF_LOCL_H */
83
84 #if defined(HEADER_DES_LOCL_H) && !defined(CONFIG_HEADER_DES_LOCL_H)
85 #define CONFIG_HEADER_DES_LOCL_H
86 #ifndef DES_DEFAULT_OPTIONS
87 /* the following is tweaked from a config script, that is why it is a
88  * protected undef/define */
89 #ifndef DES_PTR
90 #undef DES_PTR
91 #endif
92
93 /* This helps C compiler generate the correct code for multiple functional
94  * units.  It reduces register dependancies at the expense of 2 more
95  * registers */
96 #ifndef DES_RISC1
97 #undef DES_RISC1
98 #endif
99
100 #ifndef DES_RISC2
101 #undef DES_RISC2
102 #endif
103
104 #if defined(DES_RISC1) && defined(DES_RISC2)
105 YOU SHOULD NOT HAVE BOTH DES_RISC1 AND DES_RISC2 DEFINED!!!!!
106 #endif
107
108 /* Unroll the inner loop, this sometimes helps, sometimes hinders.
109  * Very mucy CPU dependant */
110 #ifndef DES_UNROLL
111 #undef DES_UNROLL
112 #endif
113
114 /* These default values were supplied by
115  * Peter Gutman <pgut001@cs.auckland.ac.nz>
116  * They are only used if nothing else has been defined */
117 #if !defined(DES_PTR) && !defined(DES_RISC1) && !defined(DES_RISC2) && !defined(DES_UNROLL)
118 /* Special defines which change the way the code is built depending on the
119    CPU and OS.  For SGI machines you can use _MIPS_SZLONG (32 or 64) to find
120    even newer MIPS CPU's, but at the moment one size fits all for
121    optimization options.  Older Sparc's work better with only UNROLL, but
122    there's no way to tell at compile time what it is you're running on */
123  
124 #if defined( sun )              /* Newer Sparc's */
125 #  define DES_PTR
126 #  define DES_RISC1
127 #  define DES_UNROLL
128 #elif defined( __ultrix )       /* Older MIPS */
129 #  define DES_PTR
130 #  define DES_RISC2
131 #  define DES_UNROLL
132 #elif defined( __osf1__ )       /* Alpha */
133 #  define DES_PTR
134 #  define DES_RISC2
135 #elif defined ( _AIX )          /* RS6000 */
136   /* Unknown */
137 #elif defined( __hpux )         /* HP-PA */
138   /* Unknown */
139 #elif defined( __aux )          /* 68K */
140   /* Unknown */
141 #elif defined( __dgux )         /* 88K (but P6 in latest boxes) */
142 #  define DES_UNROLL
143 #elif defined( __sgi )          /* Newer MIPS */
144 #  define DES_PTR
145 #  define DES_RISC2
146 #  define DES_UNROLL
147 #elif defined( i386 )           /* x86 boxes, should be gcc */
148 #  define DES_PTR
149 #  define DES_RISC1
150 #  define DES_UNROLL
151 #endif /* Systems-specific speed defines */
152 #endif
153
154 #endif /* DES_DEFAULT_OPTIONS */
155 #endif /* HEADER_DES_LOCL_H */