| RSA BSAFE Micro Edition Suite |
Streamlined security for mobile and embedded devices |
 
![]() |
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