1#### Nonstop configurations 2 # Common for all 3 'nonstop-common' => { 4 inherit_from => [ 'BASE_unix' ], 5 template => 1, 6 cc => 'c99', 7 cflags => add_before(picker(debug => '-g -O0', 8 release => '-g -O2'), 9 '-Wextensions', 10 '-Wnowarn=203,220,272,734,770,1506', 11 '-Wbuild_neutral_library', 12 '-Wverbose'), 13 defines => add('OPENSSL_VPROC=$(OPENSSL_VPROC)', 14 '_XOPEN_SOURCE', 15 '_XOPEN_SOURCE_EXTENDED=1', 16 '_TANDEM_SOURCE', 17 'B_ENDIAN'), 18 perl => '/usr/bin/perl', 19 shared_target => 'nonstop-shared', 20 shared_extension => ".so", 21 ex_libs => add('-lrld'), 22 enable => ['egd'], 23 dso_scheme => 'DLFCN', 24 sys_id => 'TANDEM', 25 }, 26 27 ###################################################################### 28 # Additional variant settings, to be combined with nonstop-common 29 # Note that these do not inherit anything. However, the diverse values 30 # are merged with other entries in an 'inherit_from'. 31 # 32 # These combine: 33 # - System architecture (MIPS, Itanium, or x86) 34 # - Execution environment (oss [default] or guardian) 35 # 36 # Unfortunately, they can't be separated into independent templates, because 37 # a number of the above are encoded as different linkers, and by consequence, 38 # different c99 linker flags (-Wld, -Weld, and -Wxld) 39 # 40 # In addition, the are modifiers for: 41 # - Size of long + pointer (ilp32 [default] and lp64) 42 # - Float type (neutral and tandem) 43 # 44 # Unfortunately, because the float types affect the linker settings, those 45 # are divided per system architecture 46 # 47 # MIPS + guardian (unused but present for convenience): 48 'nonstop-archenv-mips-guardian' => { 49 template => 1, 50 defines => ['NO_GETPID'], 51 cflags => '-Wtarget=tns/r -Wsystype=guardian', 52 lflags => '-Wld="-set systype guardian"', 53 shared_ldflag => '-Wshared -Wld="-soname $(@:lib%.so=%)"', 54 shared_defflag => '-Wld_obey=', 55 shared_argfileflag => '-Wld_obey=', 56 }, 57 58 # Itanium + guardian: 59 'nonstop-archenv-itanium-guardian' => { 60 template => 1, 61 defines => ['NO_GETPID', '_TANDEM_ARCH=2'], 62 cflags => '-Wtarget=tns/e -Wsystype=guardian', 63 lflags => '-Weld="-set systype guardian"', 64 shared_ldflag => '-Wshared -Weld="-soname $(@:lib%.so=%)"', 65 shared_defflag => '-Weld_obey=', 66 shared_argfileflag => '-Weld_obey=', 67 }, 68 69 # x86 + guardian: 70 'nonstop-archenv-x86_64-guardian' => { 71 template => 1, 72 defines => ['NO_GETPID', '_TANDEM_ARCH=3'], 73 cflags => '-Wtarget=tns/x -Wsystype=guardian', 74 lflags => '-Wxld="-set systype guardian"', 75 shared_ldflag => '-Wshared -Wxld="-soname $(@:lib%.so=%)"', 76 shared_defflag => '-Wxld_obey=', 77 shared_argfileflag => '-Wxld_obey=', 78 }, 79 80 # MIPS + oss (unused but present for convenience): 81 'nonstop-archenv-mips-oss' => { 82 template => 1, 83 cflags => '-Wtarget=tns/r -Wsystype=oss', 84 lflags => '-Wld="-set systype oss"', 85 shared_ldflag => '-Wshared', 86 shared_defflag => '-Wld_obey=', 87 shared_argfileflag => '-Wld_obey=', 88 }, 89 # Itanium + oss: 90 'nonstop-archenv-itanium-oss' => { 91 template => 1, 92 defines => ['_TANDEM_ARCH=2'], 93 cflags => '-Wtarget=tns/e -Wsystype=oss', 94 lflags => '-Weld="-set systype oss"', 95 shared_ldflag => '-Wshared', 96 shared_defflag => '-Weld_obey=', 97 shared_argfileflag => '-Weld_obey=', 98 }, 99 # x86_64 + oss: 100 'nonstop-archenv-x86_64-oss' => { 101 template => 1, 102 defines => ['_TANDEM_ARCH=3'], 103 cflags => '-Wtarget=tns/x -Wsystype=oss', 104 lflags => '-Wxld="-set systype oss"', 105 shared_ldflag => '-Wshared', 106 shared_defflag => '-Wxld_obey=', 107 shared_argfileflag => '-Wxld_obey=', 108 }, 109 110 # Size variants 111 'nonstop-ilp32' => { 112 template => 1, 113 cflags => '-Wilp32', 114 bn_ops => 'THIRTY_TWO_BIT', 115 }, 116 'nonstop-lp64-itanium' => { 117 template => 1, 118 cflags => '-Wlp64', 119 bn_ops => 'SIXTY_FOUR_BIT_LONG RC4_CHAR RC4_CHUNK DES_INT DES_UNROLL BF_PTR', 120 }, 121 'nonstop-lp64-x86_64' => { 122 template => 1, 123 cflags => '-Wlp64', 124 lflags => '-Wxld="-set data_model lp64"', 125 bn_ops => 'SIXTY_FOUR_BIT', 126 }, 127 128 # Float variants 129 'nonstop-nfloat-mips' => { 130 template => 1, 131 lflags => '-Wld="-set floattype neutral_float"', 132 }, 133 'nonstop-tfloat-mips' => { 134 template => 1, 135 lflags => '-Wld="-set floattype tandem_float"', 136 }, 137 'nonstop-efloat-itanium' => { 138 template => 1, 139 cflags => '-WIEEE_float', 140 lflags => '-Weld="-set floattype ieee_float"', 141 }, 142 'nonstop-nfloat-itanium' => { 143 template => 1, 144 lflags => '-Weld="-set floattype neutral_float"', 145 }, 146 'nonstop-tfloat-itanium' => { 147 template => 1, 148 cflags => '-WTandem_float', 149 lflags => '-Weld="-set floattype tandem_float"', 150 }, 151 'nonstop-efloat-x86_64' => { 152 template => 1, 153 cflags => '-WIEEE_float', 154 lflags => '-Wxld="-set floattype ieee_float"', 155 }, 156 'nonstop-nfloat-x86_64' => { 157 template => 1, 158 lflags => '-Wxld="-set floattype neutral_float"', 159 }, 160 'nonstop-tfloat-x86_64' => { 161 template => 1, 162 cflags => '-WTandem_float', 163 lflags => '-Wxld="-set floattype tandem_float"', 164 }, 165 166 ###################################################################### 167 # Build models 168 'nonstop-model-put' => { 169 template => 1, 170 defines => ['_PUT_MODEL_', 171 '_REENTRANT', '_THREAD_SUPPORT_FUNCTIONS'], 172 ex_libs => '-lput', 173 }, 174 'nonstop-model-spt' => { 175 template => 1, 176 defines => ['_SPT_MODEL_', 177 '_REENTRANT', '_ENABLE_FLOSS_THREADS'], 178 ex_libs => '-lspt', 179 }, 180 181 # Additional floss model that can be combined with any of the other models. 182 # If used without any of the other models, the entry that does so must 183 # disable threads. 184 'nonstop-model-floss' => { 185 template => 1, 186 defines => ['OPENSSL_TANDEM_FLOSS'], 187 includes => ['/usr/local/include'], 188 ex_libs => '-lfloss', 189 }, 190 191 ###################################################################### 192 # Now for the entries themselves, let's combine things! 193 'nonstop-nsx' => { 194 inherit_from => [ 'nonstop-common', 195 'nonstop-archenv-x86_64-oss', 196 'nonstop-ilp32', 197 'nonstop-efloat-x86_64' ], 198 disable => ['threads'], 199 }, 200 'nonstop-nsx_put' => { 201 inherit_from => [ 'nonstop-common', 202 'nonstop-archenv-x86_64-oss', 203 'nonstop-ilp32', 204 'nonstop-efloat-x86_64', 205 'nonstop-model-put' ], 206 multilib => '-put', 207 }, 208 'nonstop-nsx_64' => { 209 inherit_from => [ 'nonstop-common', 210 'nonstop-archenv-x86_64-oss', 211 'nonstop-lp64-x86_64', 212 'nonstop-efloat-x86_64' ], 213 multilib => '64', 214 disable => ['threads'], 215 }, 216 'nonstop-nsx_64_put' => { 217 inherit_from => [ 'nonstop-common', 218 'nonstop-archenv-x86_64-oss', 219 'nonstop-lp64-x86_64', 220 'nonstop-efloat-x86_64', 221 'nonstop-model-put' ], 222 multilib => '64-put', 223 }, 224 'nonstop-nsx_spt' => { 225 inherit_from => [ 'nonstop-common', 226 'nonstop-archenv-x86_64-oss', 227 'nonstop-ilp32', 228 'nonstop-efloat-x86_64', 229 'nonstop-model-spt' ], 230 multilib => '-spt', 231 }, 232 'nonstop-nsx_spt_floss' => { 233 inherit_from => [ 'nonstop-common', 234 'nonstop-archenv-x86_64-oss', 235 'nonstop-ilp32', 236 'nonstop-efloat-x86_64', 237 'nonstop-model-floss', 238 'nonstop-model-spt'], 239 multilib => '-spt', 240 }, 241 'nonstop-nsx_g' => { 242 inherit_from => [ 'nonstop-common', 243 'nonstop-archenv-x86_64-guardian', 244 'nonstop-ilp32', 'nonstop-nfloat-x86_64' ], 245 disable => ['threads'], 246 }, 247 'nonstop-nsx_g_tandem' => { 248 inherit_from => [ 'nonstop-common', 249 'nonstop-archenv-x86_64-guardian', 250 'nonstop-ilp32', 'nonstop-tfloat-x86_64' ], 251 disable => ['threads'], 252 }, 253 'nonstop-nsv' => { 254 inherit_from => [ 'nonstop-nsx' ], 255 }, 256 'nonstop-nse' => { 257 inherit_from => [ 'nonstop-common', 258 'nonstop-archenv-itanium-oss', 259 'nonstop-ilp32', 260 'nonstop-efloat-itanium' ], 261 disable => ['threads'], 262 }, 263 'nonstop-nse_put' => { 264 inherit_from => [ 'nonstop-common', 265 'nonstop-archenv-itanium-oss', 266 'nonstop-ilp32', 267 'nonstop-efloat-itanium', 268 'nonstop-model-put' ], 269 multilib => '-put', 270 }, 271 'nonstop-nse_64' => { 272 inherit_from => [ 'nonstop-common', 273 'nonstop-archenv-itanium-oss', 274 'nonstop-lp64-itanium', 275 'nonstop-efloat-itanium' ], 276 multilib => '64', 277 disable => ['threads'], 278 }, 279 'nonstop-nse_64_put' => { 280 inherit_from => [ 'nonstop-common', 281 'nonstop-archenv-itanium-oss', 282 'nonstop-lp64-itanium', 283 'nonstop-efloat-itanium', 284 'nonstop-model-put' ], 285 multilib => '64-put', 286 }, 287 'nonstop-nse_spt' => { 288 inherit_from => [ 'nonstop-common', 289 'nonstop-archenv-itanium-oss', 290 'nonstop-ilp32', 291 'nonstop-efloat-itanium', 292 'nonstop-model-spt' ], 293 multilib => '-spt', 294 }, 295 'nonstop-nse_spt_floss' => { 296 inherit_from => [ 'nonstop-common', 297 'nonstop-archenv-itanium-oss', 298 'nonstop-ilp32', 299 'nonstop-efloat-itanium', 300 'nonstop-model-floss', 'nonstop-model-spt' ], 301 multilib => '-spt', 302 }, 303 'nonstop-nse_g' => { 304 inherit_from => [ 'nonstop-common', 305 'nonstop-archenv-itanium-guardian', 306 'nonstop-ilp32', 'nonstop-nfloat-itanium' ], 307 disable => ['threads'], 308 }, 309 310 'nonstop-nse_g_tandem' => { 311 inherit_from => [ 'nonstop-common', 312 'nonstop-archenv-itanium-guardian', 313 'nonstop-ilp32', 'nonstop-tfloat-itanium' ], 314 disable => ['threads'], 315 }, 316