RSA BSAFE Micro Edition Suite

Streamlined security for mobile and embedded devices

Search  Print

r_platf.h

Go to the documentation of this file.
00001 /* $Id: r_platf.h,v 1.11 2005/02/03 05:57:57 mjs Exp $ */
00002 /*
00003  * Copyright (C) 1998-2003 RSA Security Inc. All rights reserved. 
00004  *
00005  * This work contains proprietary information of RSA Security. 
00006  * Distribution is limited to authorized licensees of RSA 
00007  * Security. Any unauthorized reproduction, distribution or 
00008  * modification of this work is strictly prohibited.
00009  */
00010 
00011 #ifndef HEADER_COMMON_R_PLATF_H
00012 #define HEADER_COMMON_R_PLATF_H
00013 
00014 #ifdef  __cplusplus
00015 extern "C" {
00016 #endif
00017 
00024 /*
00025  * There is a mixture of library feature, operating system name,
00026  * operating system version, processor family, processor version,
00027  * processor feature, compiler, compiler version, cpu feature
00028  * in various defines in RSA products. This header file blends the
00029  * usage from each product into a consistant single model.
00030  */
00031 
00032 /*
00033  * Aims:
00034  *  - single identifier for each set of 'build' options
00035  *    (i.e. only one thing that must be set in the compiler flags)
00036  *  - feature tests rather than 'platform' tests for interfaces
00037  *    (reduced usage of 'platform' defines in the code)
00038  *  - explicit identification of 'arch' (CPU family + CPU version)
00039  *  - precise specification of compiler and O/S version dependencies
00040  *    (where these are actually required)
00041  *  - independant values and define names for everything for all
00042  *    output (i.e. one central set of names and values) which should
00043  *    increase consistancy
00044  *  - reduce clashes with existing 3rd party usage
00045  *
00046  * R_OS=R_OS_${NAME}
00047  * R_OS_VER=${VALUE}
00048  *
00049  * R_COMPILER=R_COMPILER_${NAME}
00050  * R_COMPILER_VER=${VALUE}
00051  *
00052  * R_LIBC_VER=${VALUE}
00053  *
00054  * R_FEATURE_${NAME}=1
00055  *
00056  * R_CPU=R_CPU_${NAME}
00057  * or
00058  * R_CPU_FAMILY=R_CPU_FAMILY_${NAME}
00059  * R_CPU_VERSION=${VALUE}
00060  * or both
00061  * R_CPU=R_CPU_FAMILY_${R_CPU_VERSION}
00062  *
00063  * If needed at compile-time (unclear) then
00064  * R_CPU_HAS_${FEATURE}=1 (currently this is only used at runtime)
00065  *
00066  *
00067  * The defines for each of these are unique values which are constant
00068  * between products and product releases.
00069  */
00070 
00071 /*----------------------------------------------------------------------------*/
00072 
00073 #if 0
00074 /* VENDOR */
00075 /* VxWorks: CPU=ARM7TDMI,MIPS32,I80486,PPC603,SH7700,SIMSPARCSOLARIS,SIMNT */
00076 #endif
00077 
00078 /*----------------------------------------------------------------------------*/
00079 
00080 #if 0
00081 
00082 /* RCOM
00083  *
00084  * build system sets the values in CFLAGS
00085  * all products end up with r_com.h included
00086  *
00087  * INCLUDE:   r_com.h
00088  *        HEADER_COMMON_R_COM_H
00089  *        r_cpuid.h
00090  *
00091  * PLATFORM:  PLATFORM_${NAME}
00092  *            R_PLATFORM_${NAME}
00093  *
00094  * CPU:       CPU_${NAME}
00095  *
00096  */
00097 
00098 /* values used for identifying platforms in the code */
00099 
00100 PLATFORM_IMODE
00101 PLATFORM_LINUX
00102 SOLARIS
00103 R_PLATFORM_IRIX         /* need to rename to PLATFORM_IRIX */
00104 R_PLATFORM_PSOS         /* need to rename to PLATFORM_PSOS */
00105 HPUX_IA64_32
00106 
00107 WINDOWS
00108 WIN32
00109 MSDOS
00110 
00111 _HPUX_SOURCE
00112 
00113 /* legacy usage in the code */
00114 __sgi
00115 __ultrix
00116 linux
00117 sun
00118 __i386__
00119 
00120 UNDER_PALMOS
00121 UNDER_CE            /* this is version number of WinCE OS */
00122 
00123 R_OS_HPUX11
00124 
00125 /* build system - these have values - which are used */
00126 CPU_X86
00127 CPU_POWERPC
00128 CPU_ALPHA
00129 CPU_IA64
00130 CPU_PA8000
00131 CPU_PARISC
00132 CPU_X86
00133 CPU_SPARC_V8
00134 CPU_SPARC_V8PLUS
00135 CPU_SPARC_V9
00136 CPU_ARM4L
00137 
00138 /* r_cpuid.h */
00139 R_CPU_UNDEF
00140 R_CPU_UNKNOWN
00141 R_CPU_SPARC
00142 R_CPU_SPARC64
00143 R_CPU_X86
00144 R_CPU_IA64
00145 R_CPU_ALPHA
00146 R_CPU_MIPS
00147 R_CPU_MIPS64
00148 R_CPU_SHx
00149 R_CPU_M68K
00150 R_CPU_ARM
00151 R_CPU_ARM4L
00152 R_CPU_PARISC
00153 R_CPU_PARISC64
00154 R_CPU_POWERPC
00155 
00156 /* Attributes */
00157 R_CPU_DEFAULT    0
00158 
00159 /* flags */
00160 R_CPU_SPARC_HAS_MUL
00161 R_CPU_SPARC_HAS_MULD
00162 R_CPU_SPARC_HAS_V9
00163 R_CPU_SPARC_HAS_VIS
00164 R_CPU_SPARC_HAS_FMULADD
00165 
00166 /* flags */
00167 R_CPU_X86_HAS_386
00168 R_CPU_X86_HAS_486
00169 R_CPU_X86_HAS_PENTIUM
00170 R_CPU_X86_HAS_PENTIUM_PRO
00171 R_CPU_X86_HAS_PENTIUM_IV
00172 R_CPU_X86_HAS_MMX
00173 R_CPU_X86_HAS_SSE
00174 R_CPU_X86_HAS_SSE2
00175 
00176 /* flags */
00177 R_CPU_IA64_HAS_ITANIUM
00178 R_CPU_IA64_HAS_ITANIUM2
00179 
00180 #endif
00181 
00182 /*----------------------------------------------------------------------------*/
00183 
00184 #if 0
00185 
00186 /* Crypto-C [+Cert-C] */
00187 /* bsafe.h -> bsfplat.h */
00188 
00189 /* Crypto-C
00190  *
00191  * INCLUDE:   bsafe.h
00192  *        _BSAFE_H_
00193  *
00194  * PLATFORM:  RSA_PLATFORM=RSA_${NAME}
00195  *
00196  * CPU:       CPU_${NAME}
00197  *
00198  */
00199 
00200 /* bsfplatf.h */
00201 RSA_I386_486
00202 RSA_WINTEL_IA64
00203 RSA_HP_PA1
00204 RSA_HP_PA2
00205 RSA_HP_64
00206 RSA_HP_IA64
00207 RSA_HP_IA64_32
00208 RSA_LINUX
00209 RSA_LINUX_IA64
00210 RSA_SPARC_SUN_SOLARIS25
00211 RSA_SPARC_SUN_SOLARISV8
00212 RSA_SPARC_SUN_SOLARISV9
00213 RSA_MAC_PPC_CODE_WARRIOR
00214 
00215 RSA_MODERN_PLATFORM
00216 
00217 /* bsfmacro.h */
00218 
00219 RSA_INTEL_MSVC15_16_BIT     10
00220 RSA_INTEL_MSVC20_32_BIT     12
00221 RSA_INTEL_MSVC40_32_BIT     14
00222 RSA_INTEL_BORLAND45_16_BIT  20
00223 RSA_INTEL_BORLAND45_32_BIT  22
00224 RSA_LINUX                   30
00225 RSA_INTEL_LINUX21_32_BIT    31
00226 RSA_INTEL_LINUX30_32_BIT    32
00227 RSA_INTEL_LINUX_GLIBC5      33
00228 RSA_INTEL_LINUX_GLIBC6      34
00229 RSA_INTEL_SCO50_32_BIT      40
00230 RSA_SPARC_SUN_OS_412        100
00231 RSA_SPARC_SUN_SOLARIS       101
00232 RSA_SPARC_SUN_SOLARIS25     102
00233 RSA_SPARC_SUN_SOLARISV8     103
00234 RSA_SPARC_SUN_SOLARISV9     104
00235 RSA_SPARC_SUN_SOLARIS26     RSA_SPARC_SUN_SOLARISV8
00236 RSA_SPARC_SUN_SOLARIS28     RSA_SPARC_SUN_SOLARISV9
00237 RSA_MAC_68K_CODE_WARRIOR    120
00238 RSA_MAC_68K_SYMANTEC        122
00239 RSA_MAC_PPC_CODE_WARRIOR    130
00240 RSA_MAC_PPC_SYMANTEC        132
00241 RSA_ALPHA_DEC_OSF_UNIX      140
00242 RSA_ALPHA_DEC_NT_MSVC40     142
00243 RSA_ALPHA_DEC_VMS           144
00244 RSA_MIPS_R2000_IRIX53       160
00245 RSA_MIPS_R4000_IRIX60       162
00246 RSA_HP_PA                   180
00247 RSA_HP_PA1                  181
00248 RSA_HP_PA2                  182
00249 RSA_HP_64                   183
00250 RSA_HP_IA64                 184
00251 RSA_HP_IA64_32              185
00252 RSA_AIX_414                 200
00253 RSA_RS6000_PPC_AIX414       202
00254 RSA_RS6000_PWR_AIX414       204
00255 RSA_IBM_AIX32               205
00256 RSA_IBM_AIX64               206
00257 RSA_I386_486                210
00258 RSA_WINTEL_IA64             211
00259 RSA_LINUX_IA64              212
00260 RSA_S390_OS390R13           220
00261 RSA_LINUX_ARM               230
00262 
00263 /* rsashlib.h */
00264 RSA_SHARED_LIBRARY_X86_WINDOWS   10
00265 RSA_SHARED_LIBRARY_UNIX          30
00266 RSA_SHARED_LIBRARY_HP_32         80
00267 RSA_SHARED_LIBRARY_MACOS9        90
00268 RSA_SHARED_LIBRARY_UNKNOWN       1000
00269 
00270 /* rsap11.h */
00271 RSA_PKCS11_X86_WINDOWS   RSA_SHARED_LIBRARY_X86_WINDOWS
00272 RSA_PKCS11_UNIX          RSA_SHARED_LIBRARY_UNIX
00273 RSA_PKCS11_HP_32         RSA_SHARED_LIBRARY_HP_32
00274 RSA_PKCS11_MACOS9        RSA_SHARED_LIBRARY_MACOS9
00275 RSA_PKCS11_UNKNOWN       RSA_SHARED_LIBRARY_UNKNOWN
00276 
00277 #endif
00278 
00279 /*----------------------------------------------------------------------------*/
00280 
00281 /* operating systems */
00282 #define R_OS_LINUX              0x0001
00283 #define R_OS_WINDOWS            0x0002
00284 #define R_OS_SUNOS              0x0003
00285 #define R_OS_SOLARIS            0x0004
00286 #define R_OS_HPUX               0x0005
00287 #define R_OS_MACOS              0x0006
00288 #define R_OS_DEC_OSF            0x0007
00289 #define R_OS_DEC_UNIX           0x0008
00290 #define R_OS_MSDOS              0x0009
00291 #define R_OS_AIX                0x000a
00292 #define R_OS_IRIX               0x000b
00293 #define R_OS_PALMOS             0x000c
00294 #define R_OS_EPOC               0x000d
00295 #define R_OS_SYMBIANOS          R_OS_EPOC
00296 #define R_OS_QNX                0x000e
00297 #define R_OS_NETBSD             0x000f
00298 #define R_OS_FREEBSD            0x0010
00299 #define R_OS_PSOS               0x0011
00300 #define R_OS_WINCE              0x0012
00301 #define R_OS_VXWORKS            0x0013
00302 #define R_OS_SCO_UNIX           0x0014
00303 #define R_OS_UNIXWARE           0x0015
00304 #define R_OS_RIM                0x0016
00305 #define R_OS_DOS4G              0x0017
00306 
00307 #define R_OS_VMS                0x0100
00308 #define R_OS_MVS                0x0101
00309 #define R_OS_OS390              0x0102
00310 #define R_OS_OS400              0x0103
00311 #define R_OS_NUCLEUS            0x0018
00312 
00313 /* mask for vendor specific value (will not clash for R_OS_ usage) */
00314 #define R_OS_VENDOR_DEFINED 0xf000
00315 
00316 /* compilers */
00317 #define R_COMPILER_VENDOR   0x0000
00318 #define R_COMPILER_GCC      0x0001
00319 #define R_COMPILER_MSVC     0x0002
00320 #define R_COMPILER_INTEL    0x0003
00321 #define R_COMPILER_BORLAND  0x0004
00322 #define R_COMPILER_GREENHILL    0x0005
00323 #define R_COMPILER_IAR      0x0006
00324 #define R_COMPILER_WATCOM   0x0007
00325 #define R_COMPILER_CODEWARRIOR  0x0008
00326 
00327 /* CPU and CPU family values */
00328 #define R_CPU_FAMILY(X)     (X & 0xff00)
00329 
00330 /* Default/Unknown defines */
00331 #define R_CPU_UNDEF             0xFFFF
00332 #define R_CPU_UNKNOWN           0x0000
00333 
00334 /* Intel x86/ia32 series */
00335 #define R_CPU_FAMILY_X86    0x0100
00336 #define R_CPU_X86       (R_CPU_FAMILY_X86|0x0001)
00337 #define R_CPU_IA32      R_CPU_X86
00338 
00339 /* Intel ia64 Itanium series */
00340 #define R_CPU_FAMILY_IA64   0x0200
00341 #define R_CPU_IA64      (R_CPU_FAMILY_IA64|0x0001)
00342 
00343 /* Sun SPARC series */
00344 #define R_CPU_FAMILY_SPARC      0x0300
00345 #define R_CPU_SPARCV8           (R_CPU_FAMILY_SPARC|0x0001)
00346 #define R_CPU_SPARCV8PLUS       (R_CPU_FAMILY_SPARC|0x0002)
00347 #define R_CPU_SPARCV9           (R_CPU_FAMILY_SPARC|0x0003)
00348 #define R_CPU_SPARC_IS_32(X)    (((X)==R_CPU_SPARCV8)||((X)==R_CPU_SPARCV8PLUS))
00349 #define R_CPU_SPARC_IS_64(X)    ((X)==R_CPU_SPARCV9)
00350 #define R_CPU_SPARC             R_CPU_FAMILY_SPARC
00351 
00352 /* Hewlett Packard PA-RISC series */
00353 #define R_CPU_FAMILY_PARISC     0x0400
00354 #define R_CPU_PARISC1           (R_CPU_FAMILY_PARISC|0x0001)
00355 #define R_CPU_PARISC2           (R_CPU_FAMILY_PARISC|0x0002)
00356 #define R_CPU_PARISC_IS_32(X)   ((X)==R_CPU_PARISC1)
00357 #define R_CPU_PARISC_IS_64(X)   ((X)==R_CPU_PARISC2)
00358 #define R_CPU_PARISC            R_CPU_PARISC1
00359 #define R_CPU_PARISC64          R_CPU_PARISC2
00360 
00361 /* Mororola PowerPC series */
00362 #define R_CPU_FAMILY_POWERPC    0x0500
00363 #define R_CPU_POWERPC       (R_CPU_FAMILY_POWERPC|0x0001)
00364 
00365 /* MIPS mips series */
00366 #define R_CPU_FAMILY_MIPS       0x0600
00367 #define R_CPU_R2000             (R_CPU_FAMILY_MIPS|0x0001)
00368 #define R_CPU_R3000             (R_CPU_FAMILY_MIPS|0x0002)
00369 #define R_CPU_R4000             (R_CPU_FAMILY_MIPS|0x0003)
00370 #define R_CPU_MIPS_IS_32(X)     (((X)==R_CPU_R2000)||((X)==R_CPU_R3000))
00371 #define R_CPU_MIPS_IS_64(X)     ((X)==R_CPU_R4000)
00372 #define R_CPU_MIPS              R_CPU_FAMILY_MIPS
00373 
00374 /* Digital/Compaq alpha series */
00375 #define R_CPU_FAMILY_ALPHA  0x0700
00376 #define R_CPU_ALPHA     (R_CPU_FAMILY_ALPHA|0x0001)
00377 
00378 /* Motorala 68k series */
00379 #define R_CPU_FAMILY_M68K   0x0800
00380 #define R_CPU_M68K      (R_CPU_FAMILY_M68K|0x0001)
00381 
00382 /* ARM arm series */
00383 #define R_CPU_FAMILY_ARM    0x0900
00384 #define R_CPU_ARM       (R_CPU_FAMILY_ARM|0x0001)
00385 #define R_CPU_ARM4L     (R_CPU_FAMILY_ARM|0x0002)
00386 
00387 /* Hitachi SuperH series */
00388 #define R_CPU_FAMILY_SH     0x0a00
00389 #define R_CPU_SH2       (R_CPU_FAMILY_SH|0x00001)
00390 #define R_CPU_SH3       (R_CPU_FAMILY_SH|0x00002)
00391 #define R_CPU_SH        R_CPU_SH2
00392 
00393 /* Matsushita MN series */
00394 #define R_CPU_FAMILY_MN     0x0b00
00395 #define R_CPU_MN102L        (R_CPU_FAMILY_MN|0x0001)
00396 #define R_CPU_MN103L        (R_CPU_FAMILY_MN|0x0002)
00397 #define R_CPU_MN        R_CPU_MN102L
00398 
00399 /*----------------------------------------------------------------------------*/
00400 
00401 /* features are interfaces or properties of platforms */
00402 #define R_FEATURE_NOT_SUPPORTED 0x0000
00403 
00404 #define R_FEATURE_BITSIZE_32    0x0001
00405 #define R_FEATURE_BITSIZE_64    0x0002
00406 
00407 #define R_FEATURE_SHLIB_DL  0x0001
00408 
00410 #define R_FEATURE_SHLIB_WIN 0x0002
00411 
00413 #define R_FEATURE_SHLIB_SHL 0x0003
00414 
00416 #define R_FEATURE_SHLIB_MAC 0x0004
00417 
00419 #define R_FEATURE_SHLIB_POS 0x0005
00420 
00422 #define R_FEATURE_SHLIB_VXW 0x0006
00423 
00425 #define R_FEATURE_SHLIB_WCE 0x0007
00426 
00428 #define R_FEATURE_SHLIB_EPC 0x0008
00429 
00431 #define R_FEATURE_SHLIB_D4G     0x0009
00432 
00434 #define R_FEATURE_SHLIB_NUC 0x0010
00435 
00437 /*----------------------------------------------------------------------------*/
00438 
00439 /* now map from RCOM and Crypto-C platform defines */
00440 
00441 /* if we have not been provided with an explicit value for R_OS then we
00442  * attempt to guess the right value from the existing flags used in
00443  * building products
00444  */
00445 
00446 #if !defined(R_OS)
00447 
00448 #if defined(_BSAFE_MACRO_H_)
00449 
00450 /* if we have included bsfmacro.h then we are working with Crypto-C */
00451 #if RSA_PLATFORM == RSA_I386_486
00452 #define R_OS    R_OS_WINDOWS
00453 #define R_CPU   R_CPU_X86
00454 #endif
00455 #if RSA_PLATFORM == RSA_WINTEL_IA64
00456 #define R_OS    R_OS_WINDOWS
00457 #define R_CPU   R_CPU_IA64
00458 #endif
00459 #if RSA_PLATFORM == RSA_LINUX
00460 #define R_OS    R_OS_LINUX
00461 #define R_CPU   R_CPU_X86
00462 #endif
00463 #if RSA_PLATFORM == RSA_LINUX_IA64
00464 #define R_OS    R_OS_LINUX
00465 #define R_CPU   R_CPU_IA64
00466 #endif
00467 #if RSA_PLATFORM == RSA_SPARC_SUN_SOLARISV8
00468 #define R_OS    R_OS_SOLARIS
00469 #define R_CPU   R_CPU_SPARCV8
00470 #endif
00471 #if RSA_PLATFORM == RSA_SPARC_SUN_SOLARISV9
00472 #define R_OS    R_OS_SOLARIS
00473 #define R_CPU   R_CPU_SPARCV9
00474 #endif
00475 
00476 #else /* !defined(_BSAFE_MACRO_H_) */
00477 
00478 /* otherwise we are working with an RCOM 'build' based setup */
00479 
00480 #if defined(WINDOWS) || defined(WIN32) || defined(WIN64)
00481 #define R_OS R_OS_WINDOWS
00482 #if defined(CPU_X86)
00483 #define R_CPU R_CPU_X86
00484 #endif
00485 #if defined(CPU_IA64)
00486 #define R_CPU R_CPU_IA64
00487 #endif
00488 #endif
00489 
00490 #if defined(PLATFORM_LINUX)
00491 #define R_OS R_OS_LINUX
00492 #if defined(CPU_X86)
00493 #define R_CPU R_CPU_X86
00494 #endif
00495 #if defined(CPU_IA64)
00496 #define R_CPU R_CPU_IA64
00497 #endif /* CPU_IA64 */
00498 #endif /* PLATFORM_LINUX */
00499 
00500 #if defined(PLATFORM_SOLARIS)
00501 #define R_OS  R_OS_SOLARIS
00502 #if defined(CPU_SPARC_V8)
00503 #define R_CPU R_CPU_SPARCV8
00504 #endif
00505 #if defined(CPU_SPARC_V8PLUS)
00506 #define R_CPU R_CPU_SPARCV8PLUS
00507 #endif
00508 #if defined(CPU_SPARC_V9)
00509 #define R_CPU R_CPU_SPARCV9
00510 #endif
00511 #endif /* PLATFORM_SOLARIS */
00512 
00513 #if defined(PLATFORM_HPUX_32)
00514 #define R_OS    R_OS_HPUX
00515 #define R_FEATURE_BITSIZE   R_FEATURE_BITSIZE_32
00516 #endif
00517 
00518 #if defined(PLATFORM_HPUX_64)
00519 #define R_OS    R_OS_HPUX
00520 #define R_FEATURE_BITSIZE   R_FEATURE_BITSIZE_64
00521 #endif
00522 
00523 #if defined(PLATFORM_MACOS)
00524 #define R_OS    R_OS_MACOS
00525 #endif
00526 
00527 #if defined(PLATFORM_PALMOS)
00528 #define R_OS    R_OS_PALMOS
00529 #endif
00530 
00531 #if defined(PLATFORM_VXWORKS)
00532 #define R_OS    R_OS_VXWORKS
00533 #endif
00534 
00535 #if defined(PLATFORM_WINCE)
00536 #define R_OS    R_OS_WINCE
00537 #endif
00538 
00539 #if defined(PLATFORM_EPOC)
00540 #define R_OS    R_OS_EPOC
00541 #endif
00542 
00543 #if defined(PLATFORM_AIX)
00544 #define R_OS    R_OS_AIX
00545 #endif
00546 
00547 
00548 #endif /*  defined(_BSAFE_MACRO_H_) */
00549 
00550 #endif /* !defined(R_OS) */
00551 
00552 /*----------------------------------------------------------------------------*/
00553 
00554 /* this code switches based on R_OS ... it really should switch based
00555  * on a unique build setup but I haven't done that yet
00556  */
00557 
00558 #if R_OS == R_OS_WINDOWS
00559 
00560 /* Win32 - MSVC 6.0 */
00561 
00562 #if !defined(R_CPU)
00563 #define R_CPU           R_CPU_X86
00564 #endif
00565 
00566 #if !defined(R_COMPILER)
00567 #define R_COMPILER      R_COMPILER_MSVC
00568 #endif
00569 #if !defined(R_COMPILER_VER)
00570 #define R_COMPILER_VER      0x0C00          /* 12.00 (MSVC6) */
00571 #endif
00572 
00573 #define R_FEATURE_BITSIZE   R_FEATURE_BITSIZE_32
00574 
00575 #define R_FEATURE_SHLIB     R_FEATURE_SHLIB_WIN
00576 
00577 #endif /* R_OS == R_OS_WINDOWS */
00578 
00579 /*----------------------------------------------------------------------------*/
00580 
00581 #if R_OS == R_OS_LINUX
00582 
00583 /* Linux 2.2, gcc2.96, libc6 (glibc)  32bit build */
00584 
00585 #if !defined(R_OS_VER)
00586 #define R_OS_VER        0x0202          /* 2.2 kernel */
00587 #endif
00588 
00589 #if !defined(R_CPU)
00590 #define R_CPU           R_CPU_X86
00591 #endif
00592 
00593 #if !defined(R_COMPILER)
00594 #define R_COMPILER      R_COMPILER_GCC
00595 #endif
00596 #if !defined(R_COMPILER_VER)
00597 #define R_COMPILER_VER      0x0260          /* 2.96 */
00598 #endif
00599 #if !defined(R_LIBC_VER)
00600 #define R_LIBC_VER      0x0600          /* libc6 (glibc2) */
00601 #endif
00602 
00603 #define R_FEATURE_BITSIZE   R_FEATURE_BITSIZE_32
00604 
00605 #define R_FEATURE_SHLIB     R_FEATURE_SHLIB_DL
00606 
00607 #endif /* R_OS == R_OS_LINUX */
00608 
00609 /*----------------------------------------------------------------------------*/
00610 
00611 #if R_OS == R_OS_SOLARIS
00612 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_DL
00613 #if !defined(R_COMPILER)
00614 #ifdef __GNUC__
00615 #define R_COMPILER              R_COMPILER_GCC
00616 #else /* !__GNUC__ */
00617 #define R_COMPILER              R_COMPILER_VENDOR
00618 #endif /* __GNUC__ */
00619 #endif /* !R_COMPILER */
00620 #endif /* R_OS == R_OS_SOLARIS */
00621 
00622 /*----------------------------------------------------------------------------*/
00623 
00624 #if R_OS == R_OS_HPUX
00625 #if defined(PLATFORM_HPUX_64)
00626 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_DL
00627 #endif
00628 #if defined(PLATFORM_HPUX_32)
00629 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_SHL
00630 #endif
00631 #endif /* R_OS == R_OS_HPUX */
00632 
00633 /*----------------------------------------------------------------------------*/
00634 
00635 #if R_OS == R_OS_MACOS
00636 #define R_FEATURE_SHLIB     R_FEATURE_SHLIB_MAC
00637 #endif /* R_OS == R_OS_MACOS */
00638 
00639 /*----------------------------------------------------------------------------*/
00640 
00641 #if R_OS == R_OS_PALMOS
00642 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_POS
00643 #define R_SHLIB_E_MALLOC_MEM_SIZE (20 * 1024)
00644 #ifndef NO_ENV_VARS
00645 #define NO_ENV_VARS
00646 #endif
00647 #endif /* R_OS == R_OS_PALMOS */
00648 
00649 /*----------------------------------------------------------------------------*/
00650 
00651 #if R_OS == R_OS_VXWORKS
00652 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_VXW
00653 #define R_SHLIB_E_MALLOC_MEM_SIZE (20 * 1024)
00654 #ifdef __GNUC__
00655 #define R_COMPILER              R_COMPILER_GCC
00656 #else /* !__GNUC__ */
00657 #define R_COMPILER              R_COMPILER_VENDOR
00658 #endif /* __GNUC__ */
00659 #endif /* R_OS == R_OS_VXWORKS */
00660 
00661 /*----------------------------------------------------------------------------*/
00662 
00663 #if R_OS == R_OS_WINCE
00664 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_WCE
00665 #define R_SHLIB_E_MALLOC_MEM_SIZE (20 * 1024)
00666 #ifndef NO_ENV_VARS
00667 #define NO_ENV_VARS
00668 #endif
00669 #endif /* R_OS == R_OS_WINCE */
00670 
00671 /*----------------------------------------------------------------------------*/
00672 
00673 #if R_OS == R_OS_EPOC
00674 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_EPC
00675 #define R_SHLIB_E_MALLOC_MEM_SIZE (20 * 1024)
00676 #endif /* R_OS == R_OS_EPOC */
00677 
00678 /*----------------------------------------------------------------------------*/
00679 
00680 #if R_OS == R_OS_AIX
00681 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_DL
00682 #endif /* R_OS == R_OS_AIX */
00683 
00684 /*----------------------------------------------------------------------------*/
00685 
00686 #if R_OS == R_OS_DOS4G
00687 #define R_FEATURE_SHLIB         R_FEATURE_SHLIB_D4G
00688 #endif /* R_OS == R_OS_DOS4G */
00689 
00690 /*----------------------------------------------------------------------------*/
00691 
00692 #if R_OS == R_OS_NUCLEUS
00693 #define R_FEATURE_SHLIB     R_FEATURE_SHLIB_NUC
00694 #define R_FEATURE_BITSIZE   R_FEATURE_BITSIZE_32
00695 #endif /* R_OS == R_OS_NUCLEUS */
00696 
00697 /*----------------------------------------------------------------------------*/
00698 
00699 /* set a default shared library e_malloc memory size */
00700 #if !defined(R_SHLIB_E_MALLOC_MEM_SIZE)
00701 #define R_SHLIB_E_MALLOC_MEM_SIZE (32 * 1024)
00702 #endif
00703 
00704 /*----------------------------------------------------------------------------*/
00705 
00706 /* all features are set in terms of specific values - those features that
00707  * we want to have a boolean flag for are handled here explicitly
00708  */
00709 
00710 #if R_FEATURE_BITSIZE == R_FEATURE_BITSIZE_32
00711 #define R_FEATURE_IS_32BIT      1
00712 #endif
00713 
00714 #if R_FEATURE_BITSIZE == R_FEATURE_BITSIZE_64
00715 #define R_FEATURE_IS_64BIT      1
00716 #endif
00717 
00718 #ifdef  __cplusplus
00719 }
00720 #endif
00721 
00722 #endif /* HEADER_COMMON_R_PLATF_H */
00723 
00724 

Copyright (c) 1999-2005 RSA Security Inc. All rights reserved. 072-001001-2100-001-000 - 2.1