blob: 7f9dca3b073d18dc2d44f991493a2dce52e514b5 [file] [log] [blame] [edit]
//
// Various compiling-to-JS parameters. These are simply variables present when the
// JS compiler runs. To set them, do something like
//
// emcc -s OPTION1=VALUE1 -s OPTION2=VALUE2 [..other stuff..]
//
// See https://github.com/kripken/emscripten/wiki/Code-Generation-Modes/
// Tuning
var QUANTUM_SIZE = 4; // This is the size of an individual field in a structure. 1 would
// lead to e.g. doubles and chars both taking 1 memory address. This
// is a form of 'compressed' memory, with shrinking and stretching
// according to the type, when compared to C/C++. On the other hand
// the normal value of 4 means all fields take 4 memory addresses,
// as per the norm on a 32-bit machine.
//
// Changing this from the default of 4 is deprecated.
var TARGET_X86 = 0; // For i386-pc-linux-gnu
var TARGET_LE32 = 1; // For le32-unknown-nacl
var CORRECT_SIGNS = 1; // Whether we make sure to convert unsigned values to signed values.
// Decreases performance with additional runtime checks. Might not be
// needed in some kinds of code.
// If equal to 2, done on a line-by-line basis according to
// CORRECT_SIGNS_LINES, correcting only the specified lines.
// If equal to 3, correcting all *but* the specified lines
var CHECK_SIGNS = 0; // Runtime errors for signing issues that need correcting.
// It is recommended to use this in
// order to find if your code needs CORRECT_SIGNS. If you can get your
// code to run without CORRECT_SIGNS, it will run much faster
var ASSERTIONS = 1; // Whether we should add runtime assertions, for example to
// check that each allocation to the stack does not
// exceed it's size, whether all allocations (stack and static) are
// of positive size, etc., whether we should throw if we encounter a bad __label__, i.e.,
// if code flow runs into a fault
// ASSERTIONS == 2 gives even more runtime checks
var VERBOSE = 0; // When set to 1, will generate more verbose output during compilation.
var INVOKE_RUN = 1; // Whether we will run the main() function. Disable if you embed the generated
// code in your own, and will call main() yourself at the right time (which you
// can do with Module.callMain(), with an optional parameter of commandline args).
var INIT_HEAP = 0; // Whether to initialize memory anywhere other than the stack to 0.
var TOTAL_STACK = 5*1024*1024; // The total stack size. There is no way to enlarge the stack, so this
// value must be large enough for the program's requirements. If
// assertions are on, we will assert on not exceeding this, otherwise,
// it will fail silently.
var TOTAL_MEMORY = 16777216; // The total amount of memory to use. Using more memory than this will
// cause us to expand the heap, which can be costly with typed arrays:
// we need to copy the old heap into a new one in that case.
var FAST_MEMORY = 2*1024*1024; // The amount of memory to initialize to 0. This ensures it will be
// in a flat array. This only matters in non-typed array builds.
var ALLOW_MEMORY_GROWTH = 0; // If false, we abort with an error if we try to allocate more memory than
// we can (TOTAL_MEMORY). If true, we will grow the memory arrays at
// runtime, seamlessly and dynamically. This has a performance cost though,
// both during the actual growth and in general (the latter is because in
// that case we must be careful about optimizations, in particular the
// eliminator). Note that memory growth is only supported with typed
// arrays.
var MAX_SETJMPS = 20; // size of setjmp table allocated in each function invocation (that has setjmp)
// Code embetterments
var MICRO_OPTS = 1; // Various micro-optimizations, like nativizing variables
var RELOOP = 0; // Recreate js native loops from llvm data
var RELOOPER = 'relooper.js'; // Loads the relooper from this path relative to compiler.js
var USE_TYPED_ARRAYS = 2; // Use typed arrays for the heap. See https://github.com/kripken/emscripten/wiki/Code-Generation-Modes/
// 0 means no typed arrays are used. This mode disallows LLVM optimizations
// 1 has two heaps, IHEAP (int32) and FHEAP (double),
// and addresses there are a match for normal addresses. This mode disallows LLVM optimizations.
// 2 is a single heap, accessible through views as int8, int32, etc. This is
// the recommended mode both for performance and for compatibility.
var USE_FHEAP = 1; // Relevant in USE_TYPED_ARRAYS == 1. If this is disabled, only IHEAP will be used, and FHEAP
// not generated at all. This is useful if your code is 100% ints without floats or doubles
var DOUBLE_MODE = 1; // How to load and store 64-bit doubles. Without typed arrays or in typed array mode 1,
// this doesn't matter - these values are just values like any other. In typed array mode 2,
// a potential risk is that doubles may be only 32-bit aligned. Forcing 64-bit alignment
// in Clang itself should be able to solve that, or as a workaround in DOUBLE_MODE 1 we
// will carefully load in parts, in a way that requires only 32-bit alignment. In DOUBLE_MODE
// 0 we will simply store and load doubles as 32-bit floats, so when they are stored/loaded
// they will truncate from 64 to 32 bits, and lose precision. This is faster, and might
// work for some code (but probably that code should just use floats and not doubles anyhow).
// Note that a downside of DOUBLE_MODE 1 is that we currently store the double in parts,
// then load it aligned, and that load-store will make JS engines alter it if it is being
// stored to a typed array for security reasons. That will 'fix' the number from being a
// NaN or an infinite number.
var UNALIGNED_MEMORY = 0; // If enabled, all memory accesses are assumed to be unaligned. (This only matters in
// typed arrays mode 2 where alignment is relevant.) In unaligned memory mode, you
// can run nonportable code that typically would break in JS (or on ARM for that
// matter, which also cannot do unaligned reads/writes), at the cost of slowness
var FORCE_ALIGNED_MEMORY = 0; // If enabled, assumes all reads and writes are fully aligned for the type they
// use. This is true in proper C code (no undefined behavior), but is sadly
// common enough that we can't do it by default. See SAFE_HEAP and CHECK_HEAP_ALIGN
// for ways to help find places in your code where unaligned reads/writes are done -
// you might be able to refactor your codebase to prevent them, which leads to
// smaller and faster code, or even the option to turn this flag on.
var PRECISE_I64_MATH = 1; // If enabled, i64 addition etc. is emulated - which is slow but precise. If disabled,
// we use the 'double trick' which is fast but incurs rounding at high values.
// Note that we do not catch 32-bit multiplication by default (which must be done in
// 64 bits for high values for full precision) - you must manually set PRECISE_I32_MUL
// for that.
// If set to 2, we always include the i64 math code, which is necessary in the case
// that we can't know at compile time that 64-bit math is needed. For example, if you
// print 64-bit values with printf, but never add them, we can't know at compile time
// and you need to set this to 2.
var PRECISE_I32_MUL = 1; // If enabled, i32 multiplication is done with full precision, which means it is
// correct even if the value exceeds the JS double-integer limit of ~52 bits (otherwise,
// rounding will occur above that range).
var CLOSURE_ANNOTATIONS = 0; // If set, the generated code will be annotated for the closure
// compiler. This potentially lets closure optimize the code better.
var SKIP_STACK_IN_SMALL = 1; // When enabled, does not push/pop the stack at all in
// functions that have no basic stack usage. But, they
// may allocate stack later, and in a loop, this can be
// very bad. In particular, when debugging, printf()ing
// a lot can exhaust the stack very fast, with this option.
// In particular, be careful with the autodebugger! (We do turn
// this off automatically in that case, though.)
var INLINE_LIBRARY_FUNCS = 1; // Will inline library functions that have __inline defined
var INLINING_LIMIT = 0; // A limit on inlining. If 0, we will inline normally in LLVM and
// closure. If greater than 0, we will *not* inline in LLVM, and
// we will prevent inlining of functions of this size or larger
// in closure. 50 is a reasonable setting if you do not want
// inlining
// Generated code debugging options
var SAFE_HEAP = 0; // Check each write to the heap, for example, this will give a clear
// error on what would be segfaults in a native build (like deferencing
// 0). See preamble.js for the actual checks performed.
// If equal to 2, done on a line-by-line basis according to
// SAFE_HEAP_LINES, checking only the specified lines.
// If equal to 3, checking all *but* the specified lines. Note
// that 3 is the option you usually want here.
var SAFE_HEAP_LOG = 0; // Log out all SAFE_HEAP operations
var CHECK_HEAP_ALIGN = 0; // Check heap accesses for alignment, but don't do as
// near extensive (or slow) checks as SAFE_HEAP.
var SAFE_DYNCALLS = 0; // Show stack traces on missing function pointer/virtual method calls
var RESERVED_FUNCTION_POINTERS = 0; // In asm.js mode, we cannot simply add function pointers to
// function tables, so we reserve some slots for them.
var ALIASING_FUNCTION_POINTERS = 0; // Whether to allow function pointers to alias if they have
// a different type. This can greatly decrease table sizes
// in asm.js, but can break code that compares function
// pointers across different types.
var ASM_HEAP_LOG = 0; // Simple heap logging, like SAFE_HEAP_LOG but cheaper, and in asm.js
var CORRUPTION_CHECK = 0; // When enabled, will emit a buffer area at the beginning and
// end of each allocation on the heap, filled with canary
// values that can be checked later. Corruption is checked for
// at the end of each at each free() (see jsifier to add more, and you
// can add more manual checks by calling CorruptionChecker.checkAll).
// 0 means not enabled, higher values mean the size of the
// buffer areas as a multiple of the allocated area (so
// 1 means 100%, or buffer areas equal to allocated area,
// both before and after). This must be an integer.
var LABEL_DEBUG = 0; // 1: Print out functions as we enter them
// 2: Also print out each label as we enter it
var LABEL_FUNCTION_FILTERS = []; // Filters for function label debug.
// The items for this array will be used
// as filters for function names. Only the
// labels of functions that is equaled to
// one of the filters are printed out
// When the array is empty, the filter is disabled.
var EXCEPTION_DEBUG = 0; // Print out exceptions in emscriptened code. Does not work in asm.js mode
var LIBRARY_DEBUG = 0; // Print out when we enter a library call (library*.js). You can also unset
// Runtime.debug at runtime for logging to cease, and can set it when you
// want it back. A simple way to set it in C++ is
// emscripten_run_script("Runtime.debug = ...;");
var SOCKET_DEBUG = 0; // Log out socket/network data transfer.
var SOCKET_WEBRTC = 0; // Select socket backend, either webrtc or websockets.
var OPENAL_DEBUG = 0; // Print out debugging information from our OpenAL implementation.
var GL_DEBUG = 0; // Print out all calls into WebGL. As with LIBRARY_DEBUG, you can set a runtime
// option, in this case GL.debug.
var GL_TESTING = 0; // When enabled, sets preserveDrawingBuffer in the context, to allow tests to work (but adds overhead)
var GL_MAX_TEMP_BUFFER_SIZE = 2097152; // How large GL emulation temp buffers are
var GL_UNSAFE_OPTS = 1; // Enables some potentially-unsafe optimizations in GL emulation code
var FULL_ES2 = 0; // Forces support for all GLES2 features, not just the WebGL-friendly subset.
var FORCE_GL_EMULATION = 0; // Forces inclusion of full GL emulation code.
var DISABLE_GL_EMULATION = 0; // Disable inclusion of full GL emulation code. Useful when you don't want emulation
// but do need INCLUDE_FULL_LIBRARY or MAIN_MODULE.
var DISABLE_EXCEPTION_CATCHING = 0; // Disables generating code to actually catch exceptions. If the code you
// are compiling does not actually rely on catching exceptions (but the
// compiler generates code for it, maybe because of stdlibc++ stuff),
// then this can make it much faster. If an exception actually happens,
// it will not be caught and the program will halt (so this will not
// introduce silent failures, which is good).
// DISABLE_EXCEPTION_CATCHING = 0 - generate code to actually catch exceptions
// DISABLE_EXCEPTION_CATCHING = 1 - disable exception catching at all
// DISABLE_EXCEPTION_CATCHING = 2 - disable exception catching, but enables
// catching in whitelist
// TODO: Make this also remove cxa_begin_catch etc., optimize relooper
// for it, etc. (perhaps do all of this as preprocessing on .ll?)
var EXCEPTION_CATCHING_WHITELIST = []; // Enables catching exception in listed functions if
// DISABLE_EXCEPTION_CATCHING = 2 set
var EXECUTION_TIMEOUT = -1; // Throw an exception after X seconds - useful to debug infinite loops
var CHECK_OVERFLOWS = 0; // Add code that checks for overflows in integer math operations.
// There is currently not much to do to handle overflows if they occur.
// We can add code to simulate i32/i64 overflows in JS, but that would
// be very slow. It probably makes more sense to avoid overflows in
// C/C++ code. For example, if you have an int that you multiply by
// some factor, in order to get 'random' hash values - by taking
// that |value & hash_table_size| - then multiplying enough times will overflow.
// But instead, you can do |value = value & 30_BITS| in each iteration.
var CHECK_SIGNED_OVERFLOWS = 0; // Whether to allow *signed* overflows - our correction for overflows generates signed
// values (since we use &). This means that we correct some things are not strictly overflows,
// and we cause them to be signed (which may lead to unnecessary unSign()ing later).
// With this enabled, we check signed overflows for CHECK_OVERFLOWS
var CORRECT_OVERFLOWS = 1; // Experimental code that tries to prevent unexpected JS overflows in integer
// mathops, by doing controlled overflows (sort of parallel to a CPU).
// Note that as mentioned above in CHECK_OVERFLOWS, the best thing is to
// not rely on overflows in your C/C++ code, as even if this option works,
// it slows things down.
//
// If equal to 2, done on a line-by-line basis according to
// CORRECT_OVERFLOWS_LINES, correcting only the specified lines.
// If equal to 3, correcting all *but* the specified lines
//
// NOTE: You can introduce signing issues by using this option. If you
// take a large enough 32-bit value, and correct it for overflows,
// you may get a negative number, as JS & operations are signed.
var CORRECT_ROUNDINGS = 1; // C rounds to 0 (-5.5 to -5, +5.5 to 5), while JS has no direct way to do that:
// Math.floor is to negative, ceil to positive. With CORRECT_ROUNDINGS,
// we will do slow but correct C rounding operations.
var FS_LOG = 0; // Log all FS operations. This is especially helpful when you're porting
// a new project and want to see a list of file system operations happening
// so that you can create a virtual file system with all of the required files.
var USE_BSS = 1; // https://en.wikipedia.org/wiki/.bss
// When enabled, 0-initialized globals are sorted to the end of the globals list,
// enabling us to not explicitly store the initialization value for each 0 byte.
// This significantly lowers the memory initialization array size.
var NAMED_GLOBALS = 0; // If 1, we use global variables for globals. Otherwise
// they are referred to by a base plus an offset (called an indexed global),
// saving global variables but adding runtime overhead.
var EXPORTED_FUNCTIONS = ['_main', '_malloc'];
// Functions that are explicitly exported. These functions are kept alive
// through LLVM dead code elimination, and also made accessible outside of
// the generated code even after running closure compiler (on "Module").
// Note the necessary prefix of "_".
var EXPORT_ALL = 0; // If true, we export all the symbols. Note that this does *not* affect LLVM, so it can
// still eliminate functions as dead. This just exports them on the Module object.
var EXPORT_BINDINGS = 0; // Export all bindings generator functions (prefixed with emscripten_bind_). This
// is necessary to use the bindings generator with asm.js
// JS library functions (C functions implemented in JS)
// that we include by default. If you want to make sure
// something is included by the JS compiler, add it here.
// For example, if you do not use some emscripten_*
// C API call from C, but you want to call it from JS,
// add it here (and in EXPORTED FUNCTIONS with prefix
// "_", for closure).
var DEFAULT_LIBRARY_FUNCS_TO_INCLUDE = ['memcpy', 'memset', 'malloc', 'free', 'strlen', '$Browser'];
var LIBRARY_DEPS_TO_AUTOEXPORT = ['memcpy']; // This list is also used to determine
// auto-exporting of library dependencies (i.e., functions that
// might be dependencies of JS library functions, that if
// so we must export so that if they are implemented in C
// they will be accessible, in ASM_JS mode).
var IGNORED_FUNCTIONS = []; // Functions that we should not generate, neither a stub nor a complete function.
// This is useful if your project code includes a function, and you want to replace
// that in the compiled code with your own handwritten JS. (Of course even without
// this option, you could just override the generated function at runtime. However,
// JS engines might optimize better if the function is defined once in a single
// place in your code.)
var EXPORTED_GLOBALS = []; // Global non-function variables that are explicitly
// exported, so they are guaranteed to be
// accessible outside of the generated code.
var INCLUDE_FULL_LIBRARY = 0; // Whether to include the whole library rather than just the
// functions used by the generated code. This is needed when
// dynamically loading modules that make use of runtime
// library functions that are not used in the main module.
// Note that this includes js libraries but *not* C. You will
// need the main file to include all needed C libraries. For
// example, if a library uses malloc or new, you will need
// to use those in the main file too to link in dlmalloc.
var SHELL_FILE = 0; // set this to a string to override the shell file used
var SHOW_LABELS = 0; // Show labels in the generated code
var PRINT_SPLIT_FILE_MARKER = 0; // Prints markers in Javascript generation to split the file later on. See emcc --split option.
var MAIN_MODULE = 0; // A main module is a file compiled in a way that allows us to link it to
// a side module using emlink.py.
var SIDE_MODULE = 0; // Corresponds to MAIN_MODULE
var BUILD_AS_SHARED_LIB = 0; // Whether to build the code as a shared library
// 0 here means this is not a shared lib: It is a main file.
// All shared library options (1 and 2) are currently deprecated XXX
// 1 means this is a normal shared lib, load it with dlopen()
// 2 means this is a shared lib that will be linked at runtime,
// which means it will insert its functions into
// the global namespace. See STATIC_LIBS_TO_LOAD.
var RUNTIME_LINKED_LIBS = []; // If this is a main file (BUILD_AS_SHARED_LIB == 0), then
// we will link these at runtime. They must have been built with
// BUILD_AS_SHARED_LIB == 2.
// NOTE: LLVM optimizations run separately on the main file and
// linked libraries can break things.
var BUILD_AS_WORKER = 0; // If set to 1, this is a worker library, a special kind of library
// that is run in a worker. See emscripten.h
var LINKABLE = 0; // If set to 1, this file can be linked with others, either as a shared
// library or as the main file that calls a shared library. To enable that,
// we will not internalize all symbols and cull the unused ones, in other
// words, we will not remove unused functions and globals, which might be
// used by another module we are linked with.
// BUILD_AS_SHARED_LIB > 0 implies this, so it is only important to set this to 1
// when building the main file, and *if* that main file has symbols that
// the library it will open will then access through an extern.
// LINKABLE of 0 is very useful in that we can reduce the size of the
// generated code very significantly, by removing everything not actually used.
var RUNTIME_TYPE_INFO = 0; // Whether to expose type info to the script at run time. This
// increases the size of the generated script, but allows you
// to more easily perform operations from handwritten JS on
// objects with structures etc.
var FAKE_X86_FP80 = 1; // Replaces x86_fp80 with double. This loses precision. It is better,
// if you can, to get the original source code to build without x86_fp80
// (which is nonportable anyhow).
var GC_SUPPORT = 1; // Enables GC, see gc.h (this does not add overhead, so it is on by default)
var WARN_ON_UNDEFINED_SYMBOLS = 0; // If set to 1, we will warn on any undefined symbols that
// are not resolved by the library_*.js files. We by default
// do not warn because (1) it is normal in large projects to
// not implement everything, when you know what is not
// going to actually be called (and don't want to mess with
// the existing buildsystem), and (2) functions might be
// implemented later on, say in --pre-js
var ERROR_ON_UNDEFINED_SYMBOLS = 0; // If set to 1, we will give a compile-time error on any
// undefined symbols (see WARN_ON_UNDEFINED_SYMBOLS).
var SMALL_XHR_CHUNKS = 0; // Use small chunk size for binary synchronous XHR's in Web Workers.
// Used for testing.
// See test_chunked_synchronous_xhr in runner.py and library.js.
var HEADLESS = 0; // If 1, will include shim code that tries to 'fake' a browser
// environment, in order to let you run a browser program (say,
// using SDL) in the shell. Obviously nothing is rendered, but
// this can be useful for benchmarking and debugging if actual
// rendering is not the issue. Note that the shim code is
// very partial - it is hard to fake a whole browser! - so
// keep your expectations low for this to work.
var BENCHMARK = 0; // If 1, will just time how long main() takes to execute, and not
// print out anything at all whatsoever. This is useful for benchmarking.
var ASM_JS = 0; // If 1, generate code in asm.js format. XXX This is highly experimental,
// and will not work on most codebases yet. It is NOT recommended that you
// try this yet.
var PGO = 0; // Enables profile-guided optimization in the form of runtime checks for
// which functions are actually called. Emits a list during shutdown that you
// can pass to DEAD_FUNCTIONS (you can also emit the list manually by
// calling PGOMonitor.dump());
var DEAD_FUNCTIONS = []; // Functions on this list are not converted to JS, and calls to
// them are turned into abort()s. This is potentially useful for
// reducing code size.
// If a dead function is actually called, you will get a runtime
// error.
// TODO: options to lazily load such functions
var EXPLICIT_ZEXT = 0; // If 1, generate an explicit conversion of zext i1 to i32, using ?:
var NECESSARY_BLOCKADDRS = []; // List of (function, block) for all block addresses that are taken.
var EMIT_GENERATED_FUNCTIONS = 0; // whether to emit the list of generated functions, needed for external JS optimization passes
var JS_CHUNK_SIZE = 10240; // Used as a maximum size before breaking up expressions and lines into smaller pieces
var EXPORT_NAME = 'Module'; // Global variable to export the module as for environments without a standardized module
// loading system (e.g. the browser and SM shell).
// Compiler debugging options
var DEBUG_TAGS_SHOWING = [];
// Some useful items:
// framework
// frameworkLines
// gconst
// types
// vars
// relooping
// unparsedFunctions
// metadata
// legalizer
// A cached set of defines, generated from the header files. This
// lets the emscripten libc (library.js) see the right values.
// If you the headers or use different ones, you will need to override
// this.
var C_DEFINES = {'SI_MESGQ': '5',
'M_SQRTPI': '1.77245385091',
'_NL_MESSAGES_CODESET': '86',
'SIGRTMIN': '27',
'math_errhandling': '1',
'M_LOG10E': '0.434294481903',
'_S_IFMT': '0170000',
'_CS_V7_ENV': '20',
'USHRT_MAX': '65535',
'_SC_XOPEN_LEGACY': '98',
'HAVE_STDINT_H': '1',
'_SC_XOPEN_VERSION': '106',
'F_UNLCK': '3',
'_SC_BC_DIM_MAX': '58',
'SDL_LOADSO_DLOPEN': '1',
'S_IFDIR': '0040000',
'HAVE_ALLOCA': '1',
'_SC_BARRIERS': '56',
'_IFDIR': '0040000',
'SDL_JOYSTICK_DINPUT': '1',
'_IFLNK': '0120000',
'__long_double_t': "<type 'long'>",
'DEFFILEMODE': '0000400',
'HAVE_SSCANF': '1',
'_FCREAT': '512',
'HAVE_STRTOLL': '1',
'SDL_VIDEO_OPENGL_ES': '1',
'O_CREAT': '512',
'SHRT_MAX': '32767',
'SDL_JOYSTICK_ANDROID': '1',
'_SC_NPROCESSORS_CONF': '9',
'_XOPEN_ENH_I18N': '1',
'F_DUPFD_CLOEXEC': '14',
'_CS_POSIX_V6_LP64_OFF64_LIBS': '11',
'_POSIX_SHARED_MEMORY_OBJECTS': '200112',
'ABDAY_7': '20',
'ABDAY_6': '19',
'ABDAY_5': '18',
'ABDAY_4': '17',
'ABDAY_3': '16',
'M_PI': '3.14159265359',
'ABDAY_1': '14',
'_PC_REC_MIN_XFER_SIZE': '18',
'_SC_V6_ILP32_OFFBIG': '93',
'SIGSTOP': '17',
'_M_LN2': '0.69314718056',
'F_UNLKSYS': '4',
'PTHREAD_CREATE_JOINABLE': '1',
'SDL_VIDEO_OPENGL_GLX': '1',
'M_PI_2': '1.57079632679',
'_SC_MEMLOCK': '24',
'M_PI_4': '0.785398163397',
'FEXLOCK': '256',
'_FNDELAY': '16384',
'SIGEV_NONE': '1',
'SIGWINCH': '28',
'UTIME_NOW': '-2',
'_SC_THREADS': '42',
'__INT_MAX__': '2147483647',
'_XBS5_LP64_OFF64': '-1',
'_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS': '6',
'___int_least32_t_defined': '1',
'_POSIX_MAPPED_FILES': '200112',
'HAVE_FREE': '1',
'M_E': '2.71828182846',
'SIGTRAP': '5',
'_SC_SS_REPL_MAX': '78',
'_PC_SOCK_MAXBUF': '100',
'_SC_THREAD_KEYS_MAX': '38',
'O_RDWR': '2',
'__LARGE64_FILES': '1',
'_POSIX_V6_LP64_OFF64': '-1',
'HAVE_COSF': '1',
'_SC_2_PBS': '113',
'FNOCTTY': '32768',
'_SC_TRACE_INHERIT': '86',
'PTHREAD_PRIO_NONE': '0',
'_SC_REGEXP': '72',
'_CS_POSIX_V6_LP64_OFF64_CFLAGS': '9',
'_SC_DELAYTIMER_MAX': '37',
'HAVE_SINF': '1',
'_POSIX_RAW_SOCKETS': '200112',
'___int64_t_defined': '1',
'S_IFREG': '0100000',
'SIGCLD': '20',
'F_GETLK64': '20',
'_IFCHR': '0020000',
'S_IRWXG': '0000040',
'SDL_VIDEO_DRIVER_ANDROID': '1',
'POLLHUP': '16',
'S_IFMT': '0170000',
'RADIXCHAR': '50',
'HAVE_UNSETENV': '1',
'_S_IEXEC': '0000100',
'_SC_XOPEN_CRYPT': '96',
'M_LN10': '2.30258509299',
'S_IRWXU': '0000400',
'OPTIONAL_ARG': '2',
'_PC_CHOWN_RESTRICTED': '6',
'CRNCYSTR': '56',
'SIZEOF_VOIDP': '4',
'SCHAR_MAX': '127',
'S_BLKSIZE': '1024',
'SDL_JOYSTICK_NDS': '1',
'_SC_CLK_TCK': '2',
'AM_STR': '5',
'__BUFSIZ__': '16',
'ALT_DIGITS': '49',
'HAVE_SIGNAL_H': '1',
'HAVE_ATAN': '1',
'_NL_CTYPE_MB_CUR_MAX': '85',
'_REENT_SIGNAL_SIZE': '24',
'SDL_AUDIO_DRIVER_DSOUND': '1',
'F_RSETLKW': '13',
'HAVE_STRTOULL': '1',
'___int16_t_defined': '1',
'SIGXCPU': '24',
'_SC_MQ_PRIO_MAX': '14',
'_FTRUNC': '1024',
'__MACOSX__': '1',
'SDL_LOADSO_WINDOWS': '1',
'SDL_VIDEO_DRIVER_X11_XINERAMA': '1',
'MALLOC_ALIGNMENT': '16',
'PTHREAD_CREATE_DETACHED': '0',
'_POSIX2_VERSION': '200112',
'_O_CREAT': '512',
'PM_STR': '6',
'_PC_POSIX_SECURITY': '91',
'HAVE_INTTYPES_H': '1',
'_SC_2_LOCALEDEF': '112',
'_SC_STREAM_MAX': '100',
'HAVE_MEMCMP': '1',
'_CS_POSIX_V7_ILP32_OFF32_LIBS': '3',
'_POSIX2_C_BIND': '200112',
'_POSIX_VERSION': '200112',
'S_IFIFO': '0010000',
'SDL_VIDEO_DRIVER_X11_XSCRNSAVER': '1',
'SCHED_FIFO': '1',
'SDL_HAPTIC_DISABLED': '1',
'M_LN2LO': '1.90821492927e-10',
'MON_10': '30',
'_CS_XBS5_ILP32_OFF32_LIBS': '3',
'O_SYNC': '8192',
'_CS_POSIX_V6_ILP32_OFFBIG_LIBS': '7',
'YESEXPR': '52',
'_PC_PATH_MAX': '4',
'_SC_SPORADIC_SERVER': '77',
'SDL_POWER_UIKIT': '1',
'_POSIX_SYNCHRONIZED_IO': '200112',
'SIGXFSZ': '25',
'_SC_NPROCESSORS_ONLN': '10',
'_CS_POSIX_V6_LPBIG_OFFBIG_LIBS': '15',
'_PC_MAX_INPUT': '2',
'F_TLOCK': '2',
'REQUIRED_ARG': '1',
'_SC_VERSION': '7',
'HUGE_VAL': 'inf',
'AT_EACCESS': '1',
'ABMON_3': '35',
'ABMON_2': '34',
'ABMON_1': '33',
'_SC_THREAD_ROBUST_PRIO_PROTECT': '123',
'ABMON_7': '39',
'ABMON_6': '38',
'ABMON_5': '37',
'ABMON_4': '36',
'S_IWUSR': '0000200',
'ABMON_9': '41',
'ABMON_8': '40',
'UNDERFLOW': '4',
'_SC_AIO_MAX': '35',
'ERA': '45',
'_CS_XBS5_ILP32_OFFBIG_LIBS': '7',
'S_IXUSR': '0000100',
'_SC_THREAD_PRIO_INHERIT': '46',
'__HPUX__': '1',
'M_2_PI': '0.636619772368',
'_O_RDWR': '2',
'_PC_2_SYMLINKS': '13',
'POSIX_FADV_DONTNEED': '135',
'SIG_BLOCK': '1',
'SDL_VIDEO_RENDER_NDS': '0',
'_O_WRONLY': '1',
'_CS_XBS5_LP64_OFF64_CFLAGS': '9',
'__OS2__': '1',
'MON_2': '22',
'MON_3': '23',
'_POSIX_PRIORITY_SCHEDULING': '200112',
'MON_1': '21',
'MON_6': '26',
'MON_7': '27',
'MON_4': '24',
'MON_5': '25',
'_SC_SPAWN': '75',
'MON_8': '28',
'MON_9': '29',
'_CS_POSIX_V6_ILP32_OFF32_LDFLAGS': '2',
'_SC_TRACE_EVENT_NAME_MAX': '85',
'SA_SIGINFO': '2',
'_FBINARY': '65536',
'PTHREAD_PRIO_PROTECT': '2',
'POLLERR': '8',
'SIGVTALRM': '26',
'O_BINARY': '65536',
'_REENT_EMERGENCY_SIZE': '25',
'S_IEXEC': '0000100',
'_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS': '13',
'SIGEV_THREAD': '3',
'ITIMER_VIRTUAL': '1',
'HAVE_ATOI': '1',
'_SC_TRACE_SYS_MAX': '89',
'_POSIX_NO_TRUNC': '1',
'HAVE_ATOF': '1',
'__RISCOS__': '1',
'_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS': '17',
'HAVE_ATAN2': '1',
'HAVE_PUTENV': '1',
'SDL_AUDIO_DRIVER_ANDROID': '1',
'F_SETFL': '4',
'HAVE_GCC_ATOMICS': '1',
'_CS_POSIX_V7_THREADS_CFLAGS': '18',
'_SC_AIO_PRIO_DELTA_MAX': '36',
'_POSIX2_C_DEV': '200112',
'_SC_MONOTONIC_CLOCK': '69',
'_POSIX_THREAD_SPORADIC_SERVER': '1',
'_FNOINHERIT': '262144',
'SDL_HAPTIC_NDS': '1',
'_SC_XOPEN_ENH_I18N': '97',
'SIGPROF': '27',
'F_SETLKW64': '22',
'HAVE__STRREV': '1',
'_O_APPEND': '8',
'_FDEFER': '32',
'SDL_VIDEO_DRIVER_X11_XINPUT': '1',
'CLOCK_DISALLOWED': '0',
'SDL_VIDEO_DRIVER_X11': '1',
'_SC_MEMORY_PROTECTION': '26',
'HAVE_STDIO_H': '1',
'LONG_MAX': '2147483647',
'no_argument': '0',
'__NINTENDODS__': '1',
'F_OK': '0',
'SDL_ASSEMBLY_ROUTINES': '1',
'FAPPEND': '8',
'SA_RESETHAND': '8',
'FREAD': '1',
'_SC_SPIN_LOCKS': '76',
'SDL_VIDEO_DRIVER_COCOA': '1',
'M_LN2HI': '0.693147180369',
'_LIBC_LIMITS_H_': '1',
'S_IFSOCK': '0140000',
'SDL_AUDIO_DRIVER_COREAUDIO': '1',
'HAVE_MALLOC': '1',
'_POSIX_DEVCTL_DIRECTION': '1',
'ABDAY_2': '15',
'HAVE_STRTOL': '1',
'SDL_VIDEO_DRIVER_DUMMY': '1',
'_PC_LINK_MAX': '0',
'_POSIX_THREAD_PRIO_PROTECT': '1',
'HAVE_STRTOD': '1',
'__DREAMCAST__': '1',
'NOEXPR': '53',
'FEXCL': '2048',
'_SC_FSYNC': '22',
'_SC_GETGR_R_SIZE_MAX': '50',
'_POSIX_THREAD_PROCESS_SHARED': '200112',
'HAVE_QSORT': '1',
'_ATEXIT_SIZE': '32',
'_SC_TRACE_NAME_MAX': '88',
'_SC_BC_BASE_MAX': '57',
'__WIN32__': '1',
'_LIMITS_H': '1',
'PTHREAD_STACK_MIN': '200',
'O_APPEND': '8',
'_CS_XBS5_LP64_OFF64_LINTFLAGS': '12',
'_SC_XOPEN_STREAMS': '104',
'HAVE_CALLOC': '1',
'HAVE_CTYPE_H': '1',
'_SC_GETPW_R_SIZE_MAX': '51',
'_POSIX_ASYNCHRONOUS_IO': '1',
'UCHAR_MAX': '255',
'__BSDI__': '1',
'_SC_PAGE_SIZE': '8',
'SDL_THREADS_DISABLED': '1',
'_SC_XBS5_ILP32_OFFBIG': '93',
'S_IFBLK': '0060000',
'_S_IFIFO': '0010000',
'T_FMT_AMPM': '4',
'_POSIX_SEMAPHORES': '200112',
'HAVE_SCALBN': '1',
'__NETBSD__': '1',
'NBBY': '8',
'SDL_AUDIO_DRIVER_XAUDIO2': '1',
'SIGEMT': '7',
'_POSIX_FSYNC': '200112',
'F_SETLKW': '9',
'_MB_EXTENDED_CHARSETS_WINDOWS': '1',
'SIGALRM': '14',
'SDL_VIDEO_DRIVER_UIKIT': '1',
'___int32_t_defined': '1',
'POLLNVAL': '4',
'_SC_OPEN_MAX': '4',
'CHAR_BIT': '8',
'_N_LISTS': '30',
'_SC_2_FORT_RUN': '111',
'PTHREAD_MUTEX_DEFAULT': '3',
'HAVE_STDARG_H': '1',
'_POSIX_REGEXP': '1',
'_SC_RE_DUP_MAX': '73',
'PTHREAD_PROCESS_PRIVATE': '0',
'_S_IFREG': '0100000',
'_SC_THREAD_THREADS_MAX': '40',
'_SC_THREAD_PRIO_PROTECT': '47',
'SDL_THREAD_WINDOWS': '1',
'_SC_2_PBS_CHECKPOINT': '115',
'M_1_PI': '0.318309886184',
'_PC_POSIX_PERMISSIONS': '90',
'_SC_TIMERS': '33',
'MON_11': '31',
'MON_12': '32',
'CLOCK_DISABLED': '0',
'_SC_XBS5_LPBIG_OFFBIG': '95',
'_POSIX_SPIN_LOCKS': '200112',
'_FREAD': '1',
'HAVE_SYSCONF': '1',
'_SC_SHARED_MEMORY_OBJECTS': '199',
'F_RDLCK': '1',
'F_GETFD': '1',
'MAC_OS_X_VERSION_10_4': '1040',
'AT_SYMLINK_NOFOLLOW': '2',
'_PC_ALLOC_SIZE_MIN': '15',
'_POSIX_C_SOURCE': '2',
'_SC_READER_WRITER_LOCKS': '71',
'HAVE_STRING_H': '1',
'SI_USER': '1',
'_SC_MEMLOCK_RANGE': '25',
'_SC_PRIORITY_SCHEDULING': '101',
'optional_argument': '2',
'T_FMT': '3',
'LACKS_SYS_MMAN_H': '1',
'MAC_OS_X_VERSION_10_5': '1050',
'_PC_VDISABLE': '8',
'SDL_VIDEO_DRIVER_X11_XSHAPE': '1',
'THOUSEP': '51',
'O_NOINHERIT': '262144',
'PTHREAD_PROCESS_SHARED': '1',
'_SC_TRACE_EVENT_FILTER': '84',
'ERA_T_FMT': '48',
'_SC_THREAD_ATTR_STACKADDR': '43',
'_SC_LOGIN_NAME_MAX': '52',
'M_LOG2E': '1.44269504089',
'ITIMER_PROF': '2',
'HAVE_LOG': '1',
'_SC_2_C_BIND': '108',
'FNONBIO': '16384',
'_PC_NO_TRUNC': '7',
'F_RSETLK': '11',
'_SC_V7_ILP32_OFF32': '92',
'_FAPPEND': '8',
'PTHREAD_EXPLICIT_SCHED': '2',
'_FNBIO': '4096',
'HAVE_SYSCTLBYNAME': '1',
'F_CNVT': '12',
'_SC_SHELL': '74',
'_SC_V6_LP64_OFF64': '94',
'SCHED_OTHER': '0',
'_CS_GNU_LIBC_VERSION': '42',
'_SC_SEM_VALUE_MAX': '17',
'S_ENFMT': '0002000',
'_SC_MQ_OPEN_MAX': '13',
'SDL_JOYSTICK_DISABLED': '1',
'_POSIX_ADVISORY_INFO': '200112',
'SIGABRT': '6',
'_CS_POSIX_V7_ILP32_OFF32_CFLAGS': '1',
'_CS_XBS5_ILP32_OFF32_CFLAGS': '1',
'_MB_EXTENDED_CHARSETS_ISO': '1',
'_SC_HOST_NAME_MAX': '65',
'_SC_THREAD_STACK_MIN': '39',
'_SC_TIMEOUTS': '82',
'POLLOUT': '2',
'_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS': '16',
'_SC_CHILD_MAX': '1',
'__RAND_MAX': '2147483647',
'SDL_VIDEO_DRIVER_NDS': '1',
'_POSIX_THREAD_ATTR_STACKADDR': '1',
'SIGFPE': '8',
'NL_ARGMAX': '32',
'_SC_2_PBS_MESSAGE': '117',
'TIMER_ABSTIME': '4',
'_NL_CTYPE_CODESET_NAME': '0',
'_SC_2_C_DEV': '109',
'_SC_TIMER_MAX': '19',
'S_IXOTH': '0000001',
'FP_ZERO': '2',
'SING': '2',
'M_INVLN2': '1.44269504089',
'SDL_TIMERS_DISABLED': '1',
'M_TWOPI': '6.28318530718',
'_PC_REC_XFER_ALIGN': '19',
'_NL_TIME_DATE_FMT': '84',
'_SC_REALTIME_SIGNALS': '29',
'_POSIX2_RE_DUP_MAX': '255',
'CLOCKS_PER_SEC': '1000',
'_READ_WRITE_RETURN_TYPE': "<type 'int'>",
'ERA_D_T_FMT': '47',
'SIG_UNBLOCK': '2',
'_CS_XBS5_ILP32_OFFBIG_LDFLAGS': '6',
'_FSHLOCK': '128',
'CLK_TCK': '1000',
'D_FMT': '2',
'SDL_VIDEO_OPENGL_CGL': '1',
'_POSIX_SPAWN': '1',
'_XBS5_ILP32_OFF32': '-1',
'_SC_THREAD_PRIO_CEILING': '47',
'SCHED_SPORADIC': '4',
'_PC_ASYNC_IO': '9',
'SI_TIMER': '3',
'DAY_2': '8',
'DAY_3': '9',
'DAY_1': '7',
'DAY_6': '12',
'DAY_7': '13',
'DAY_4': '10',
'DAY_5': '11',
'F_GETFL': '3',
'HAVE_STRNCMP': '1',
'AT_REMOVEDIR': '8',
'SDL_THREAD_PTHREAD_RECURSIVE_MUTEX': '1',
'PATH_MAX': '4096',
'_POSIX_TIMEOUTS': '1',
'_SC_MAPPED_FILES': '23',
'__IRIX__': '1',
'HAVE_INDEX': '1',
'HAVE__LTOA': '1',
'_SC_NGROUPS_MAX': '3',
'__QNXNTO__': '1',
'_FSYNC': '8192',
'MATH_ERRNO': '1',
'_POSIX_SAVED_IDS': '1',
'SDL_POWER_MACOSX': '1',
'_SC_SEMAPHORES': '30',
'__FILENAME_MAX__': '255',
'SIGTSTP': '18',
'F_ULOCK': '0',
'HAVE_COS': '1',
'__LONG_MAX__': '2147483647',
'F_WRLCK': '2',
'_POSIX_JOB_CONTROL': '1',
'FLT_EVAL_METHOD': '0',
'_XOPEN_SHM': '1',
'_POSIX_CHOWN_RESTRICTED': '1',
'F_SETLK64': '21',
'_SC_TRACE_LOG': '87',
'HAVE_ITOA': '1',
'SIGILL': '4',
'_FNONBLOCK': '16384',
'__OPENBSD__': '1',
'_POSIX_TIMERS': '1',
'FNDELAY': '16384',
'FD_CLOEXEC': '1',
'POLLIN': '1',
'_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS': '14',
'_POSIX_THREAD_CPUTIME': '1',
'F_LOCK': '1',
'_FLOAT_ARG': "<type 'float'>",
'REQ_ARG': '1',
'_CS_XBS5_ILP32_OFF32_LINTFLAGS': '4',
'_SC_THREAD_DESTRUCTOR_ITERATIONS': '53',
'M_LN2': '0.69314718056',
'UINT_MAX': '2147483647',
'HAVE_STRDUP': '1',
'SIG_SETMASK': '0',
'_SC_BC_STRING_MAX': '60',
'_CS_XBS5_LPBIG_OFFBIG_LIBS': '15',
'_SC_XOPEN_UUCP': '124',
'_SC_2_SW_DEV': '119',
'FDEFER': '32',
'FP_NAN': '0',
'F_SETOWN': '6',
'SDL_LOADSO_DISABLED': '1',
'CHAR_MIN': '-128',
'PTHREAD_SCOPE_SYSTEM': '1',
'HAVE_SETENV': '1',
'HAVE_STRNCASECMP': '1',
'_POSIX_V6_LPBIG_OFFBIG': '-1',
'_S_IWRITE': '0000200',
'_S_IFDIR': '0040000',
'_SC_ARG_MAX': '0',
'_SC_THREAD_PRIORITY_SCHEDULING': '45',
'F_GETLK': '7',
'SIGTTIN': '21',
'_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS': '17',
'_POSIX_SPORADIC_SERVER': '1',
'_SC_THREAD_CPUTIME': '80',
'_POSIX_V6_ILP32_OFF32': '-1',
'_CS_POSIX_V7_ILP32_OFFBIG_LIBS': '7',
'_CS_POSIX_V6_ILP32_OFF32_LIBS': '3',
'_SC_SYNCHRONIZED_IO': '32',
'_UNIX98_THREAD_MUTEX_ATTRIBUTES': '1',
'_POSIX_REALTIME_SIGNALS': '200112',
'__SIGLASTNOTRT': '31',
'ERA_D_FMT': '46',
'HAVE_RINDEX': '1',
'OPT_ARG': '2',
'SDL_HAPTIC_IOKIT': '1',
'_FASYNC': '64',
'_CS_POSIX_V6_ILP32_OFF32_CFLAGS': '1',
'NOSTR': '55',
'_POSIX_MONOTONIC_CLOCK': '200112',
'SIGPOLL': '23',
'S_ISGID': '0002000',
'FP_INFINITE': '1',
'ULONG_MAX': '2147483647',
'__SIGFIRSTNOTRT': '1',
'AT_SYMLINK_FOLLOW': '4',
'FSYNC': '8192',
'__USE_XOPEN2K': '1',
'SDL_VIDEO_RENDER_OGL_ES': '1',
'_CS_XBS5_ILP32_OFFBIG_CFLAGS': '5',
'_IFSOCK': '0140000',
'_IFIFO': '0010000',
'ARG_MAX': '4096',
'SIGPIPE': '13',
'HAVE__ULTOA': '1',
'_O_EXCL': '2048',
'O_TRUNC': '1024',
'O_TEXT': '131072',
'_POSIX_THREAD_PRIO_INHERIT': '1',
'_XBS5_ILP32_OFFBIG': '1',
'HAVE_MEMMOVE': '1',
'STDERR_FILENO': '2',
'_CS_XBS5_LPBIG_OFFBIG_CFLAGS': '13',
'__LINUX__': '1',
'PLOSS': '6',
'S_IRWXO': '0000004',
'_SC_V7_LP64_OFF64': '94',
'_O_NOINHERIT': '262144',
'D_MD_ORDER': '57',
'_IFMT': '0170000',
'_SC_SYMLOOP_MAX': '79',
'MB_LEN_MAX': '1',
'SDL_TIMER_WINDOWS': '1',
'_SC_XOPEN_UNIX': '105',
'M_IVLN10': '0.434294481903',
'ALLPERMS': '0004000',
'HAVE_STRSTR': '1',
'__BEOS__': '1',
'HAVE_GCC_SYNC_LOCK_TEST_AND_SET': '1',
'F_SETFD': '2',
'SIGUSR1': '30',
'HAVE_SIN': '1',
'SDL_VIDEO_DRIVER_X11_XRANDR': '1',
'MAC_OS_X_VERSION_10_6': '1060',
'___int8_t_defined': '1',
'SIGKILL': '9',
'_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS': '5',
'PTHREAD_MUTEX_RECURSIVE': '1',
'SIGSEGV': '11',
'M_LOG2_E': '0.69314718056',
'FWRITE': '2',
'_FEXCL': '2048',
'SIGINT': '2',
'HAVE_STRRCHR': '1',
'H8300': '1',
'_POSIX_MEMORY_PROTECTION': '200112',
'FP_ILOGBNAN': '2147483647',
'_SC_V7_LPBIG_OFFBIG': '95',
'_SC_CLOCK_SELECTION': '61',
'_PC_PRIO_IO': '10',
'M_2_SQRTPI': '1.1283791671',
'S_IROTH': '0000004',
'_SC_MESSAGE_PASSING': '27',
'_SC_V6_LPBIG_OFFBIG': '95',
'SDL_AUDIO_DRIVER_DUMMY': '1',
'HAVE_MEMCPY': '1',
'_SC_EXPR_NEST_MAX': '64',
'SDL_TIMER_WINCE': '1',
'STDC_HEADERS': '1',
'_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS': '5',
'S_ISVTX': '0001000',
'HAVE_STRLCPY': '1',
'UTIME_OMIT': '-1',
'_CS_POSIX_V7_THREADS_LDFLAGS': '19',
'SDL_POWER_WINDOWS': '1',
'_SC_PAGESIZE': '8',
'_PC_REC_MAX_XFER_SIZE': '17',
'SIGIOT': '6',
'FASYNC': '64',
'_SC_V7_ILP32_OFFBIG': '93',
'_RAND48_MULT_0': '58989',
'_RAND48_MULT_1': '57068',
'_RAND48_MULT_2': '5',
'_CS_POSIX_V6_LP64_OFF64_LDFLAGS': '10',
'HAVE_STRTOUL': '1',
'PTHREAD_MUTEX_NORMAL': '0',
'_O_TRUNC': '1024',
'W_OK': '2',
'O_NONBLOCK': '16384',
'R_OK': '4',
'_IFBLK': '0060000',
'FTRUNC': '1024',
'__OSF__': '1',
'_SC_XBS5_LP64_OFF64': '94',
'STDIN_FILENO': '0',
'HAVE_ABS': '1',
'SDL_TIMER_NDS': '1',
'_CS_POSIX_V7_LPBIG_OFFBIG_LIBS': '15',
'SDL_AUDIO_DRIVER_DISK': '1',
'_SC_SIGQUEUE_MAX': '18',
'M_3PI_4': '2.35619449019',
'HAVE_STRCMP': '1',
'_POSIX_MESSAGE_PASSING': '200112',
'S_ISUID': '0004000',
'SIGLOST': '29',
'_POSIX_THREAD_PRIORITY_SCHEDULING': '200112',
'SDL_VIDEO_RENDER_OGL_ES2': '1',
'__FREEBSD__': '1',
'_SC_TZNAME_MAX': '20',
'_O_RAW': '65536',
'_CS_PATH': '0',
'_POSIX_BARRIERS': '200112',
'SDL_ALTIVEC_BLITTERS': '1',
'SEEK_SET': '0',
'_POSIX_THREAD_SAFE_FUNCTIONS': '200112',
'S_IREAD': '0000400',
'_LONG_LONG_TYPE': "<type 'long'>",
'___int_least8_t_defined': '1',
'INT_MAX': '2147483647',
'_POSIX_V6_ILP32_OFFBIG': '1',
'_SC_PHYS_PAGES': '11',
'HAVE_BCOPY': '1',
'_PC_MAX_CANON': '1',
'HAVE_STRICMP': '1',
'_CS_XBS5_LPBIG_OFFBIG_LDFLAGS': '14',
'_SC_THREAD_SAFE_FUNCTIONS': '49',
'SIGRTMAX': '31',
'S_IXGRP': '0000010',
'HAVE_GETENV': '1',
'_XBS5_LPBIG_OFFBIG': '-1',
'_PC_NAME_MAX': '3',
'O_EXCL': '2048',
'_SC_XOPEN_SHM': '103',
'S_IWGRP': '0000020',
'_SC_TRACE_USER_EVENT_MAX': '90',
'SDL_VIDEO_RENDER_D3D': '1',
'HAVE__STRNICMP': '1',
'M_SQRT1_2': '0.707106781187',
'_SC_AVPHYS_PAGES': '12',
'_SC_RAW_SOCKETS': '70',
'O_RDONLY': '0',
'_DATE_FMT': '84',
'HAVE_STRCASECMP': '1',
'__SOLARIS__': '1',
'_SC_RTSIG_MAX': '15',
'_POSIX_DEVICE_CONTROL': '1',
'CLOCK_ENABLED': '1',
'_NULL': '0',
'_SC_PRIORITIZED_IO': '28',
'_O_TEXT': '131072',
'SDL_VIDEO_DRIVER_X11_XVIDMODE': '1',
'SIGBUS': '10',
'CODESET': '0',
'CHAR_MAX': '127',
'SDL_POWER_NINTENDODS': '1',
'SIGSYS': '12',
'_PC_REC_INCR_XFER_SIZE': '16',
'S_IRUSR': '0000400',
'_PC_FILESIZEBITS': '12',
'_SC_XBS5_ILP32_OFF32': '92',
'HAVE_MATH_H': '1',
'HAVE_SQRT': '1',
'SIGURG': '16',
'_POSIX_THREAD_ATTR_STACKSIZE': '200112',
'_CS_POSIX_V7_LP64_OFF64_LIBS': '11',
'_CS_GNU_LIBPTHREAD_VERSION': '43',
'HAVE_M_PI': '1',
'_REENT_ASCTIME_SIZE': '26',
'_SC_2_PBS_LOCATE': '116',
'_SC_V6_ILP32_OFF32': '92',
'SIGCHLD': '20',
'SHRT_MIN': '-32768',
'__HAIKU__': '1',
'PTHREAD_MUTEX_ERRORCHECK': '2',
'_PC_SYNC_IO': '11',
'SDL_VIDEO_OPENGL': '1',
'FP_NORMAL': '4',
'_SC_2_UPE': '120',
'HAVE_POW': '1',
'_SC_SEM_NSEMS_MAX': '16',
'__ANDROID__': '1',
'_SC_IOV_MAX': '66',
'S_IRGRP': '0000040',
'YESSTR': '54',
'HAVE_ALLOCA_H': '1',
'S_IFCHR': '0020000',
'_POSIX_MEMLOCK': '1',
'_SC_TRACE': '83',
'_POSIX_INTERRUPT_CONTROL': '1',
'_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS': '6',
'PTHREAD_SCOPE_PROCESS': '0',
'__GNUC_VA_LIST': '1',
'HAVE_FABS': '1',
'_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS': '14',
'TLOSS': '5',
'_TIME_T_': "<type 'long'>",
'DOMAIN': '1',
'HAVE_REALLOC': '1',
'HAVE_STRLEN': '1',
'__IPHONEOS__': '1',
'_POINTER_INT': "<type 'long'>",
'O_NOCTTY': '32768',
'PTHREAD_PRIO_INHERIT': '1',
'_SC_THREAD_SPORADIC_SERVER': '81',
'O_ACCMODE': '3',
'_SC_LINE_MAX': '68',
'D_T_FMT': '1',
'_RAND48_SEED_1': '43981',
'_RAND48_SEED_0': '13070',
'_RAND48_SEED_2': '4660',
'HAVE_STRLCAT': '1',
'HAVE_SETJMP': '1',
'SDL_AUDIO_DRIVER_COREAUDIOIPHONE': '1',
'FOPEN': '-1',
'F_RGETLK': '10',
'F_DUPFD': '0',
'_S_IFCHR': '0020000',
'SDL_IPHONE_KEYBOARD': '1',
'_POSIX_IPV6': '200112',
'_XOPEN_VERSION': '600',
'HAVE_FLOOR': '1',
'_CS_XBS5_LP64_OFF64_LDFLAGS': '10',
'_FNOCTTY': '32768',
'_IFREG': '0100000',
'FP_SUBNORMAL': '3',
'SA_NOCLDSTOP': '1',
'HAVE_STDDEF_H': '1',
'NSIG': '32',
'HAVE__STRUPR': '1',
'SDL_THREAD_PTHREAD': '1',
'S_IWOTH': '0000002',
'SEEK_END': '2',
'SDL_ASSERT_LEVEL': '1',
'SI_ASYNCIO': '4',
'required_argument': '1',
'_FWRITE': '2',
'SCHED_RR': '2',
'_SC_2_FORT_DEV': '110',
'SA_NODEFER': '4',
'_POSIX2_CHAR_TERM': '200112',
'F_SETLK': '8',
'SIGQUIT': '3',
'_SC_ATEXIT_MAX': '55',
'_POSIX_MEMLOCK_RANGE': '200112',
'_SC_SAVED_IDS': '6',
'PTHREAD_INHERIT_SCHED': '1',
'SEEK_CUR': '1',
'S_IFLNK': '0120000',
'_S_IREAD': '0000400',
'_FOPEN': '-1',
'OVERFLOW': '3',
'_POSIX_SHELL': '1',
'FMARK': '16',
'_POSIX2_UPE': '200112',
'SDL_VIDEO_RENDER_OGL': '1',
'_SC_2_PBS_TRACK': '118',
'_POSIX_CPUTIME': '1',
'_SC_THREAD_PROCESS_SHARED': '48',
'_SC_JOB_CONTROL': '5',
'_O_RDONLY': '0',
'FNBIO': '4096',
'O_CLOEXEC': '262144',
'_CS_XBS5_LP64_OFF64_LIBS': '11',
'_PC_TIMESTAMP_RESOLUTION': '20',
'_POSIX_READER_WRITER_LOCKS': '200112',
'ACCESSPERMS': '0000400',
'_POSIX_PRIORITIZED_IO': '1',
'_SC_IPV6': '67',
'SDL_VIDEO_OPENGL_WGL': '1',
'_CS_XBS5_ILP32_OFFBIG_LINTFLAGS': '8',
'HAVE__STRICMP': '1',
'_SC_ADVISORY_INFO': '54',
'SCHAR_MIN': '-128',
'_SC_XOPEN_REALTIME_THREADS': '102',
'SIGEV_SIGNAL': '2',
'HAVE_NANOSLEEP': '1',
'O_WRONLY': '1',
'_PC_SYMLINK_MAX': '14',
'_SC_THREAD_ROBUST_PRIO_INHERIT': '122',
'X_OK': '1',
'_CS_XBS5_ILP32_OFF32_LDFLAGS': '2',
'SIGTERM': '15',
'_SC_COLL_WEIGHTS_MAX': '62',
'_CS_POSIX_V7_ILP32_OFF32_LDFLAGS': '2',
'NO_ARG': '0',
'_CS_POSIX_V7_LP64_OFF64_CFLAGS': '9',
'S_IWRITE': '0000200',
'_FEXLOCK': '256',
'_SC_XOPEN_REALTIME': '99',
'SIGPWR': '19',
'SDL_AUDIO_DRIVER_WINMM': '1',
'HAVE_STRCHR': '1',
'_PC_PIPE_BUF': '5',
'SDL_HAPTIC_DINPUT': '1',
'SIGHUP': '1',
'F_GETOWN': '5',
'CLOCK_ALLOWED': '1',
'HAVE_MEMSET': '1',
'SIGUSR2': '31',
'_SC_2_PBS_ACCOUNTING': '114',
'F_TEST': '3',
'HAVE_VSNPRINTF': '1',
'ITIMER_REAL': '0',
'HAVE_SNPRINTF': '1',
'HAVE_SYS_TYPES_H': '1',
'HAVE_COPYSIGN': '1',
'_CLOCKS_PER_SEC_': '1000',
'SDL_HAPTIC_DUMMY': '1',
'SIGCONT': '19',
'NULL': '0',
'FSHLOCK': '128',
'STDOUT_FILENO': '1',
'__AIX__': '1',
'SDL_JOYSTICK_IOKIT': '1',
'_SC_THREAD_ATTR_STACKSIZE': '44',
'SIGIO': '23',
'HAVE_CEIL': '1',
'HAVE__STRLWR': '1',
'HAVE_SIGACTION': '1',
'_SC_CPUTIME': '63',
'_SC_2_VERSION': '121',
'_O_BINARY': '65536',
'___int_least16_t_defined': '1',
'_FTEXT': '131072',
'_POSIX2_SW_DEV': '200112',
'_LARGEFILE64_SOURCE': '1',
'_XOPEN_CRYPT': '1',
'FD_SETSIZE': '64',
'SDL_AUDIO_DRIVER_NDS': '1',
'_FMARK': '16',
'_SC_TYPED_MEMORY_OBJECTS': '91',
'_SC_ASYNCHRONOUS_IO': '21',
'_SC_2_CHAR_TERM': '107',
'_SC_AIO_LISTIO_MAX': '34',
'FCREAT': '512',
'_RAND48_ADD': '11',
'MAXPATHLEN': '1024',
'_SC_BC_SCALE_MAX': '59',
'SDL_IPHONE_MAX_GFORCE': '5.0',
'MATH_ERREXCEPT': '2',
'SDL_VIDEO_DRIVER_WINDOWS': '1',
'_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS': '13',
'M_SQRT3': '1.73205080757',
'M_SQRT2': '1.41421356237',
'_POSIX_THREADS': '200112',
'ABMON_12': '44',
'ABMON_11': '43',
'ABMON_10': '42',
'SI_QUEUE': '2',
'SDL_TIMER_UNIX': '1',
'AT_FDCWD': '-2',
'SIGTTOU': '22',
'_CS_POSIX_V7_LP64_OFF64_LDFLAGS': '10',
'_SC_TTY_NAME_MAX': '41',
'AF_INET': '2',
'AF_INET6': '6',
'PF_INET': '2',
'PF_INET6': '6',
'FIONREAD': '1',
'SOCK_STREAM': '200',
'SOCK_DGRAM': '20',
'IPPROTO_TCP': '1',
'IPPROTO_UDP': '2'
};