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