00001
00006 #ifndef VL_HOST_H
00007 #define VL_HOST_H
00008
00009
00010
00011
00012
00013
00016 #if defined(linux) || \
00017 defined(__linux) || \
00018 defined(__linux__) || \
00019 defined(__DOXYGEN__)
00020 #define VL_OS_LINUX 1
00021 #endif
00022
00023 #if (defined(__APPLE__) & defined(__MACH__)) || \
00024 defined(__DOXYGEN__)
00025 #define VL_OS_MACOSX 1
00026 #endif
00027
00028 #if defined(__WIN32__) || \
00029 defined(_WIN32) || \
00030 defined(__DOXYGEN__)
00031 #define VL_OS_WIN 1
00032 #endif
00033
00034 #if defined(_WIN64) || \
00035 defined(__DOXYGEN__)
00036 #define VL_OS_WIN64 1
00037 #endif
00038
00042 #if defined(__GNUC__) || defined(__DOXYGEN__)
00043 # if defined(__GNUC_PATCHLEVEL__)
00044 # define VL_COMPILER_GNUC (__GNUC__ * 10000 \
00045 + __GNUC_MINOR__ * 100 \
00046 + __GNUC_PATCHLEVEL__)
00047 # else
00048 # define VL_COMPILER_GNUC (__GNUC__ * 10000 \
00049 + __GNUC_MINOR__ * 100)
00050 # endif
00051 #endif
00052
00053 #if defined(_MSC_VER) || defined(__DOXYGEN__)
00054 #define VL_COMPILER_MSC _MSC_VER
00055 #endif
00056
00057 #if defined(__LCC__) || defined(__DOXYGEN__)
00058 #warning "LCC support is experimental!"
00059 #define VL_COMPILER_LCC 1
00060 #endif
00061
00066 #if defined(i386) || \
00067 defined(__i386__) || \
00068 defined(__DOXYGEN__)
00069 #define VL_ARCH_IX86 300
00070 #elif defined(__i486__)
00071 #define VL_ARCH_IX86 400
00072 #elif defined(__i586__)
00073 #define VL_ARCH_IX86 500
00074 #elif defined(__i686__)
00075 #define VL_ARCH_IX86 600
00076 #elif defined(_M_IX86)
00077 #define VL_ARCH_IX86 _M_IX86
00078 #endif
00079
00080 #if defined(__ia64__) || \
00081 defined(_IA64) || \
00082 defined(__IA64) || \
00083 defined(__ia64) || \
00084 defined(_M_IA64) || \
00085 defined(__DOXYGEN__)
00086 #define VL_ARCH_IA64
00087 #endif
00088
00092 #if defined(__LLP64__) || \
00093 defined(__LLP64) || \
00094 defined(__LLP64) || \
00095 (defined(VL_COMPILER_MSC) & defined(VL_OS_WIN64)) || \
00096 (defined(VL_COMPILER_LCC) & defined(VL_OS_WIN64)) || \
00097 defined(__DOXYGEN__)
00098 #define VL_COMPILER_LLP64
00099 #endif
00100
00101 #if defined(__LP64__) || \
00102 defined(__LP64) || \
00103 defined(__LP64) || \
00104 (defined(VL_OS_MACOSX) & defined(VL_ARCH_IA64)) || \
00105 defined(__DOXYGEN__)
00106 #define VL_COMPILER_LP64
00107 #endif
00108
00109 #if (!defined(VL_COMPILER_LLP64) & !defined(VL_COMPILER_LP64)) || \
00110 defined(__DOXYGEN__)
00111 #define VL_COMPILER_ILP32
00112 #endif
00113
00117 #if defined(__LITTLE_ENDIAN__) || \
00118 defined(VL_ARCH_IX86) || \
00119 defined(VL_ARCH_IA64) || \
00120 defined(__DOXYGEN__)
00121 #define VL_ARCH_LITTLE_ENDIAN
00122 #endif
00123
00124 #if defined(__DOXYGEN__) || \
00125 !defined(VL_ARCH_LITTLE_ENDIAN)
00126 #define VL_ARCH_BIG_ENDIAN
00127 #endif
00128
00130 #if defined(VL_COMPILER_MSC)
00131 #define VL_INLINE static __inline
00132 #define snprintf _snprintf
00133 #define isnan _isnan
00134 #ifdef VL_BUILD_DLL
00135 #define VL_EXPORT __declspec(dllexport)
00136 #else
00137 #define VL_EXPORT __declspec(dllimport)
00138 #endif
00139 #endif
00140
00141 #if defined(VL_COMPILER_LCC)
00142 #define VL_INLINE static __inline
00143 #define snprintf _snprintf
00144 #define isnan _isnan
00145 #ifdef VL_BUILD_DLL
00146 #define VL_EXPORT __declspec(dllexport)
00147 #else
00148 #define VL_EXPORT
00149 #endif
00150 #endif
00151
00152 #if defined(VL_COMPILER_GNUC) || \
00153 defined(__DOXYGEN__)
00154 #define VL_INLINE static __inline__
00155 #ifdef VL_BUILD_DLL
00156 #define VL_EXPORT __attribute__((visibility ("default")))
00157 #else
00158 #define VL_EXPORT
00159 #endif
00160 #endif
00161
00167 #if defined(VL_COMPILER_LP64) || defined(VL_COMPILER_LLP64)
00168 typedef long long vl_int64 ;
00169 typedef int vl_int32 ;
00170 typedef short vl_int16 ;
00171 typedef char vl_int8 ;
00173 typedef long long unsigned vl_uint64 ;
00174 typedef int unsigned vl_uint32 ;
00175 typedef short unsigned vl_uint16 ;
00176 typedef char unsigned vl_uint8 ;
00178 typedef int vl_int ;
00179 typedef unsigned int vl_uint ;
00181 typedef int vl_bool ;
00182 typedef vl_int64 vl_intptr ;
00183 typedef vl_uint64 vl_uintptr ;
00184 #endif
00185
00186 #if defined(VL_COMPILER_ILP32)
00187
00188 #ifdef VL_COMPILER_MSC
00189 typedef __int64 vl_int64 ;
00190 #else
00191 typedef long long vl_int64 ;
00192 #endif
00193
00194 typedef int vl_int32 ;
00195 typedef short vl_int16 ;
00196 typedef char vl_int8 ;
00197
00198 #ifdef VL_COMPILER_MSC
00199 typedef __int64 unsigned vl_uint64 ;
00200 #else
00201 typedef long long unsigned vl_uint64 ;
00202 #endif
00203 typedef int unsigned vl_uint32 ;
00204 typedef short unsigned vl_uint16 ;
00205 typedef char unsigned vl_uint8 ;
00206
00207 typedef int vl_int ;
00208 typedef unsigned int vl_uint ;
00209
00210 typedef int vl_bool ;
00211 typedef vl_int32 vl_intptr ;
00212 typedef vl_uint32 vl_uintptr ;
00213 #endif
00214
00236 #ifdef VL_COMPILER_MSC
00237 #define VL_FL_INT64 "I64"
00238 #else
00239 #define VL_FL_INT64 "ll"
00240 #endif
00241 #define VL_FL_INT32 ""
00242 #define VL_FL_INT16 "h"
00243 #define VL_FL_INT8 "hh"
00244
00251 #define VL_BIG_INT 0x7FFFFFFFL
00252
00254 #define VL_SMALL_INT (- VL_BIG_INT - 1)
00255
00257 #define VL_BIG_UINT 0xFFFFFFFFUL
00258
00263 VL_EXPORT void vl_print_host_info() ;
00264 VL_EXPORT vl_bool vl_cpu_has_sse3 () ;
00265 VL_EXPORT vl_bool vl_cpu_has_sse2 () ;
00268 VL_EXPORT void vl_set_simd_enabled (vl_bool x) ;
00269 VL_EXPORT vl_bool vl_get_simd_enabled() ;
00270
00271
00272 #endif