RTXI 1.3
plugins/ni_device/osiPlatform.h
Go to the documentation of this file.
00001 /* 
00002    osiPlatform.h
00003 */
00004 
00005 #ifndef  ___osiPlatform_h___
00006 #define  ___osiPlatform_h___
00007 
00008 // Operating System defines
00009 
00010 #define  nOSINT100_kLinux            0
00011 #define  nOSINT100_kMacOSX           0
00012 #define  nOSINT100_kPharLap          0
00013 #define  nOSINT100_kVenturComRTX     0
00014 #define  nOSINT100_kWindows          0
00015 
00016 // Processor defines
00017 
00018 #define  nOSINT100_kIntel86          0
00019 #define  nOSINT100_kPowerPC          0
00020    
00021 // Compiler defines
00022 
00023 #define  nOSINT100_kApple            0
00024 #define  nOSINT100_kGNU              0
00025 #define  nOSINT100_kMicrosoft        0
00026 
00027 // OS, Processor and Compiler Detection
00028 
00029 #if (defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_I86)))
00030    #undef   nOSINT100_kIntel86
00031    #define  nOSINT100_kIntel86          1
00032    
00033    #undef   nOSINT100_kMicrosoft
00034    #define  nOSINT100_kMicrosoft        _MSC_VER
00035 #elif     ((defined(__GNUG__) || defined(__GNUC__)) && defined(__i386__))
00036    #undef   nOSINT100_kIntel86
00037    #define  nOSINT100_kIntel86          1
00038 
00039    #undef   nOSINT100_kGNU
00040    #define  nOSINT100_kGNU              1
00041 #elif     ((defined(__GNUG__) || defined(__GNUC__)) && defined(__ppc__) && defined(__APPLE__))
00042    #undef   nOSINT100_kMacOSX
00043    #define  nOSINT100_kMacOSX          1
00044 
00045    #undef   nOSINT100_kPowerPC
00046    #define  nOSINT100_kPowerPC         1
00047 
00048    #undef   nOSINT100_kApple
00049    #define  nOSINT100_kApple           1
00050 #else
00051    #error   Unknown target;
00052 #endif
00053 
00054 #if      nOSINT100_kIntel86
00055    #if      defined(__linux__)
00056       #undef   nOSINT100_kLinux
00057       #define  nOSINT100_kLinux            1
00058    #elif    defined(PHARLAPOS)
00059       #undef   nOSINT100_kPharLap
00060       #define  nOSINT100_kPharLap          1
00061    #elif    defined(RTXOS)
00062       #undef   nOSINT100_kVenturComRTX
00063       #define  nOSINT100_kVenturComRTX     1
00064    #elif    defined(WINDOWSOS)
00065       #undef   nOSINT100_kWindows
00066       #define  nOSINT100_kWindows          1
00067    #elif    defined(_WIN32)
00068       #undef   nOSINT100_kWindows
00069       #define  nOSINT100_kWindows          1
00070    #else
00071       #error   Unknown target operating system;
00072    #endif
00073 #endif
00074 
00075 // Define endianness
00076 
00077 #if  nOSINT100_kIntel86
00078    #define  nOSINT100_kBigEndian    0
00079    #define  nOSINT100_kLittleEndian 1
00080 #elif  nOSINT100_kPowerPC
00081    #define  nOSINT100_kBigEndian    1
00082    #define  nOSINT100_kLittleEndian 0
00083 #else
00084    #error  Unknown processor; 
00085 #endif
00086 
00087 // language defines
00088 
00089 #if defined(__cplusplus)
00090 
00091    #define  nOSINT100_kC                0
00092    #define  nOSINT100_kCpp              1
00093    #define  nOSINT100_cppHeader         extern "C" {
00094    #define  nOSINT100_cppTrailer        }
00095    #define  nOSINT100_EXTERNC           extern "C"
00096    
00097 #else
00098 
00099    #define  nOSINT100_kC                1
00100    #define  nOSINT100_kCpp              0
00101    #define  nOSINT100_cppHeader
00102    #define  nOSINT100_cppTrailer
00103    #define  nOSINT100_EXTERNC   
00104    
00105 #endif
00106 
00107 // OS-Specific Defines
00108 
00109 #if nOSINT100_kLinux
00110    
00111    #define  nOSINT100_kImport
00112    #define  nOSINT100_kExport        __attribute__ ((section (".export")))
00113    #define  nOSINT100_kImportData
00114    #define  nOSINT100_kExportData    __attribute__ ((section (".exportData")))
00115    #define  nOSINT100_kCCall
00116    #define  nOSINT100_kStdCall
00117    
00118 #endif
00119 
00120 #if nOSINT100_kMacOSX
00121    
00122    #define  nOSINT100_kImport
00123    #define  nOSINT100_kExport        __attribute__ ((section ("__TEXT,__export")))
00124    #define  nOSINT100_kImportData
00125    #define  nOSINT100_kExportData    __attribute__ ((section ("__DATA,__export")))
00126    #define  nOSINT100_kCCall
00127    #define  nOSINT100_kStdCall
00128 
00129 #endif
00130 
00131 #if nOSINT100_kPharLap
00132    
00133    #define  nOSINT100_kImport           __declspec(dllimport)
00134    #define  nOSINT100_kExport           __declspec(dllexport)
00135    #define  nOSINT100_kImportData       __declspec(dllimport)
00136    #define  nOSINT100_kExportData       __declspec(dllexport)
00137    #define  nOSINT100_kCCall            __cdecl
00138    #define  nOSINT100_kStdCall          __stdcall
00139    
00140 #endif
00141 
00142 #if nOSINT100_kVenturComRTX
00143    
00144    #define  nOSINT100_kImport           __declspec(dllimport)
00145    #define  nOSINT100_kExport           __declspec(dllexport)
00146    #define  nOSINT100_kImportData       __declspec(dllimport)
00147    #define  nOSINT100_kExportData       __declspec(dllexport)
00148    #define  nOSINT100_kCCall            __cdecl
00149    #define  nOSINT100_kStdCall          __stdcall
00150    
00151 #endif
00152 
00153 #if nOSINT100_kWindows
00154 
00155    #define  nOSINT100_kImport           __declspec(dllimport)
00156    #define  nOSINT100_kExport           __declspec(dllexport)
00157    #define  nOSINT100_kImportData       __declspec(dllimport)
00158    #define  nOSINT100_kExportData       __declspec(dllexport)
00159    #define  nOSINT100_kCCall            __cdecl
00160    #define  nOSINT100_kStdCall          __stdcall
00161    
00162 #endif
00163 
00164 // Sanity checks --
00165 
00166 // Operating Systems
00167 #if !(nOSINT100_kLinux || nOSINT100_kMacOSX || nOSINT100_kPharLap || nOSINT100_kVenturComRTX || nOSINT100_kWindows)
00168     #error Operating System unknown!
00169 #endif
00170 
00171 // Processors
00172 #if !(nOSINT100_kIntel86  || nOSINT100_kPowerPC)
00173     #error Processor unknown!
00174 #endif
00175 
00176 // Compilers
00177 #if !(nOSINT100_kApple || nOSINT100_kGNU || nOSINT100_kMicrosoft)
00178     #error Compiler unknown!
00179 #endif
00180 
00181 // Global definitions
00182 
00183 #ifndef nOSINT100_DisableGlobalDefines
00184 
00185 #ifndef nOSINT100_DisableGlobalOSDefines
00186     #define  kLinux           nOSINT100_kLinux
00187     #define  kMacOSX          nOSINT100_kMacOSX
00188     #define  kPharLap         nOSINT100_kPharLap
00189     #define  kkVenturComRTX   nOSINT100_kVenturComRTX
00190     #define  kWindows         nOSINT100_kWindows
00191 #endif
00192 
00193 #ifndef nOSINT100_DisableGlobalProcessorDefines
00194     #define  kIntel86   nOSINT100_kIntel86
00195     #define  kPowerPC   nOSINT100_kPowerPC
00196 #endif
00197 
00198 #ifndef nOSINT100_DisableGlobalCompilerDefines
00199     #define  kApple         nOSINT100_kApple
00200     #define  kGNU           nOSINT100_kGNU
00201     #define  kMicrosoft     nOSINT100_kMicrosoft
00202 #endif
00203 
00204 #ifndef nOSINT100_DisableGlobalEXTERNCDefine
00205     #define  EXTERNC        nOSINT100_EXTERNC
00206 #endif
00207 
00208 #ifndef nOSINT100_DisableGlobalLanguageDefines
00209     #define  kC                nOSINT100_kC
00210     #define  kCpp              nOSINT100_kCpp
00211     #define  cppHeader         nOSINT100_cppHeader
00212     #define  cppTrailer        nOSINT100_cppTrailer
00213 #endif
00214 
00215 #ifndef nOSINT100_DisableGlobalEndiannessDefines
00216     #define  kBigEndian         nOSINT100_kBigEndian
00217     #define  kLittleEndian      nOSINT100_kLittleEndian 
00218 #endif
00219 
00220 #ifndef nOSINT100_DisableGlobalExportDefines
00221     #define  kImport           nOSINT100_kImport
00222     #define  kExport           nOSINT100_kExport
00223     #define  kImportData       nOSINT100_kImportData
00224     #define  kExportData       nOSINT100_kExportData
00225     #define  kCCall            nOSINT100_kCCall
00226     #define  kStdCall          nOSINT100_kStdCall
00227 #endif
00228 
00229 #endif //nOSINT100_DisableGlobalDefines
00230 
00231 
00232 #endif //___osiPlatform_h___
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines