[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Minios-devel] [UNIKRAFT/LIBPYTHON PATCH 2/3] Initial port of CPython on Unikraft



From: Vlad Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>

This is our initial port of CPython to Unikraft as external library. Newlib is
required. When adding the library to the dependency list, python should stay
after newlib (e.g. ...:$(UK_LIBS)/newlib.git:$(UK_LIBS)/python...).

This is CPython2 and CPython3 will be added in future patches via a config
option. This version does not use the standard python library and needs to be
ran with the "-S" argument.

Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
---
 CODING_STYLE.md         |    4 +
 CONTRIBUTING.md         |    4 +
 Config.uk               |   25 +
 MAINTAINERS.md          |   11 +
 Makefile.uk             |  328 ++++++++++
 README.md               |    5 +
 config.c                |  194 ++++++
 include/pyconfig.h      | 1330 +++++++++++++++++++++++++++++++++++++++
 include/sys/sysmacros.h |   15 +
 main_file.c             |    7 +
 10 files changed, 1923 insertions(+)
 create mode 100644 CODING_STYLE.md
 create mode 100644 CONTRIBUTING.md
 create mode 100644 Config.uk
 create mode 100644 MAINTAINERS.md
 create mode 100644 Makefile.uk
 create mode 100644 README.md
 create mode 100644 config.c
 create mode 100644 include/pyconfig.h
 create mode 100644 include/sys/sysmacros.h
 create mode 100644 main_file.c

diff --git a/CODING_STYLE.md b/CODING_STYLE.md
new file mode 100644
index 0000000..5730041
--- /dev/null
+++ b/CODING_STYLE.md
@@ -0,0 +1,4 @@
+Coding Style
+============
+
+Please refer to the `CODING_STYLE.md` file in the main Unikraft repository.
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..5f55eca
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,4 @@
+Contributing to Unikraft
+=======================
+
+Please refer to the `CONTRIBUTING.md` file in the main Unikraft repository.
diff --git a/Config.uk b/Config.uk
new file mode 100644
index 0000000..07dd7de
--- /dev/null
+++ b/Config.uk
@@ -0,0 +1,25 @@
+menuconfig LIBPYTHON
+          bool "libpython - Python"
+          default n
+       select LIBNEWLIBC
+       select LIBUKFS
+       select LIBUKSCHEDCOOP
+if LIBPYTHON
+
+config PYTHON_THREADS
+       bool "Enable threads support"
+       select LIBPTHREAD_EMBEDDED
+       default n
+
+config PYTHON_NETWORKING
+       bool "Enable networking support support"
+       select CONFIG_LIBLWIP
+       default n
+
+config PYTHON_SIGNALS
+       bool "Enable python signals module"
+       default n
+
+endif
+
+
diff --git a/MAINTAINERS.md b/MAINTAINERS.md
new file mode 100644
index 0000000..ca07d1d
--- /dev/null
+++ b/MAINTAINERS.md
@@ -0,0 +1,11 @@
+Maintainers List
+================
+
+For notes on how to read this information, please refer to `MAINTAINERS.md` in
+the main Unikraft repository.
+
+       LIBPYTHON-UNIKRAFT
+       M:      Felipe Huici <felipe.huici@xxxxxxxxx>
+       M:      Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
+       L:      minios-devel@xxxxxxxxxxxxx
+       F: *
diff --git a/Makefile.uk b/Makefile.uk
new file mode 100644
index 0000000..b015657
--- /dev/null
+++ b/Makefile.uk
@@ -0,0 +1,328 @@
+#  libpython Makefile.uc
+#
+#  Authors: Felipe Huici <felipe.huici@xxxxxxxxx>
+#          Badoiu Vlad  <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
+#
+#  Copyright (c) 2018, NEC Europe Ltd., NEC Corporation. All rights reserved.
+#  Copyright (c) 2019, University Politehnica of Bucharest. All rights 
reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions
+#  are met:
+#
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the names of its
+#     contributors may be used to endorse or promote products derived from
+#     this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+#  THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
+#
+
+################################################################################
+# Library registration
+################################################################################
+$(eval $(call addlib_s,libpython,$(CONFIG_LIBPYTHON)))
+
+################################################################################
+# Sources
+################################################################################
+LIBPYTHON_VERSION=2.7.15
+LIBPYTHON_URL=https://www.python.org/ftp/python/2.7.15/Python-$(LIBPYTHON_VERSION).tgz
+LIBPYTHON_PATCHDIR=$(LIBPYTHON_BASE)/patches
+$(eval $(call fetch,libpython,$(LIBPYTHON_URL)))
+$(eval $(call 
patch,libpython,$(LIBPYTHON_PATCHDIR),Python-$(LIBPYTHON_VERSION)))
+
+LIBPYTHON_SRCS-y += $(LIBPYTHON_BASE)/main_file.c
+################################################################################
+# Helpers
+################################################################################
+LIBPYTHON_SUBDIR=Python-$(LIBPYTHON_VERSION)
+LIBPYTHON_SRC = $(LIBPYTHON_ORIGIN)/$(LIBPYTHON_SUBDIR)
+
+################################################################################
+# Library includes
+################################################################################
+CINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_BASE)/include
+CINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Include
+CINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/pyfiles
+CINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Python
+CINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Modules
+CINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Objects
+
+CXXINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_BASE)/include
+CXXINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Include
+CXXINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/pyfiles
+CXXINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Python
+CXXINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Modules
+CXXINCLUDES-$(CONFIG_LIBPYTHON) += -I$(LIBPYTHON_SRC)/Objects
+
+################################################################################
+# Global flags
+################################################################################
+
+SUPPRESS_FLAGS += -Wno-unused-parameter -Wno-unused-variable -Wno-nonnull   \
+-Wno-unused-function -Wno-missing-field-initializers -Wno-uninitialized     \
+-Wno-array-bounds -Wno-maybe-uninitialized -Wno-pointer-sign -Wno-unused-value 
 \
+-Wno-unused-macros -Wno-parentheses -Wno-implicit-function-declaration      \
+-Wno-missing-braces -Wno-endif-labels -Wno-unused-but-set-variable      \
+-Wno-implicit-function-declaration -Wno-type-limits -Wno-sign-compare
+
+LIBPYTHON_CFLAGS-y += $(SUPPRESS_FLAGS) -D __DYNAMIC_REENT__
+
+################################################################################
+# OS dependencies code - Glue between Unicore and newlib
+################################################################################
+LIBPYTHON_SRCS-y += $(LIBPYTHON_BASE)/config.c
+
+################################################################################
+# Pyton sources - Python
+################################################################################
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/asdl.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/ast.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/bltinmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/ceval.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/codecs.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/compile.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/dtoa.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/dynload_stub.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/errors.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/formatter_string.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/formatter_unicode.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/frozen.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/frozenmain.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/future.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/getargs.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/getcompiler.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/getcopyright.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/getopt.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/getplatform.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/getversion.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/graminit.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/import.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/importdl.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/marshal.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/modsupport.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/mysnprintf.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/mystrtoul.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/peephole.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pyarena.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pyctype.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pyfpe.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pymath.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pystate.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pystrcmp.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pystrtod.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/Python-ast.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/pythonrun.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/random.c
+ifndef CONFIG_PYTHON_SIGNALS
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/sigcheck.c
+endif
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/structmember.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/symtable.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/sysmodule.c
+ifdef CONFIG_PYTHON_THREADS
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/thread.c
+endif
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/traceback.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Python/_warnings.c
+
+################################################################################
+# Pyton sources - Modules
+################################################################################
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/almodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/arraymodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/atexitmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/audioop.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/binascii.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_bisectmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_bsddb.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/bsddbmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/bz2module.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/cdmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/cgensupport.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/clmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/cmathmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_codecsmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_collectionsmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/cPickle.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/cryptmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/cStringIO.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_csv.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_cursesmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_curses_panel.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/datetimemodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/dbmmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/dlmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_elementtree.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/errnomodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/fcntlmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/flmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/fmmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/fpectlmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/fpetestmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_functoolsmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/future_builtins.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/gcmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/gdbmmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/getaddrinfo.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/getbuildinfo.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/getnameinfo.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/getpath.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/glmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/grpmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_hashopenssl.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_heapqmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_hotshot.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/imageop.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/imgfile.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/itertoolsmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_json.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/linuxaudiodev.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_localemodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_lsprof.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/main.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_math.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/mathmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/md5.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/md5module.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/mmapmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/nismodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/operator.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/ossaudiodev.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/parsermodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/posixmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/puremodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/pwdmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/pyexpat.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_randommodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/readline.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/resource.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/rotatingtree.c
+ifdef CONFIG_PYTHON_NETWORKING
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/selectmodule.c 
+endif
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/sgimodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/sha256module.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/sha512module.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/shamodule.c
+ifdef CONFIG_PYTHON_SIGNALS
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/signalmodule.c
+endif
+
+ifdef CONFIG_PYTHON_NETWORKING
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/socketmodule.c
+endif
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/spwdmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_sre.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_ssl.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/stropmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_struct.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/sunaudiodev.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/svmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/symtablemodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/syslogmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/termios.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_testcapimodule.c
+ifdef CONFIG_PYTHON_THREADS
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/threadmodule.c
+endif
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/timemodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/timingmodule.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/tkappinit.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_tkinter.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/unicodedata.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_weakref.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/xxmodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/xxsubtype.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/yuvconvert.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/zipimport.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_io/bufferedio.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_io/bytesio.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_io/fileio.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_io/iobase.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_io/_iomodule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_io/stringio.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/_io/textio.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Modules/zlibmodule.c
+
+################################################################################
+# Pyton sources - Objects
+################################################################################
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/abstract.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/boolobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/bufferobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/bytearrayobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/bytes_methods.c
+#LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/bytesobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/capsule.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/cellobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/classobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/cobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/codeobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/complexobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/descrobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/dictobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/enumobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/exceptions.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/fileobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/floatobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/frameobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/funcobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/genobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/intobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/iterobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/listobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/longobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/memoryobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/methodobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/moduleobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/object.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/obmalloc.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/rangeobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/setobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/sliceobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/stringobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/structseq.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/tupleobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/typeobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/unicodectype.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/unicodeobject.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Objects/weakrefobject.c
+
+################################################################################
+# Pyton sources - Objects
+################################################################################
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/acceler.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/bitset.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/firstsets.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/grammar1.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/grammar.c
+ifndef CONFIG_PYTHON_SIGNALS
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/intrcheck.c
+endif
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/listnode.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/metagrammar.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/myreadline.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/node.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/parser.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/parsetok.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/pgen.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/printgrammar.c
+LIBPYTHON_SRCS-y += $(LIBPYTHON_SRC)/Parser/tokenizer.c
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..20ad2f0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,5 @@
+libpython for Unikraft
+===================
+
+Please refer to the `README.md` as well as the documentation in the `doc/`
+subdirectory of the main unikraft repository.
diff --git a/config.c b/config.c
new file mode 100644
index 0000000..13d89e1
--- /dev/null
+++ b/config.c
@@ -0,0 +1,194 @@
+/* -*- C -*- ***********************************************
+Copyright (c) 2000, BeOpen.com.
+Copyright (c) 1995-2000, Corporation for National Research Initiatives.
+Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
+All rights reserved.
+
+See the file "Misc/COPYRIGHT" for information on usage and
+redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+******************************************************************/
+
+/* Module configuration */
+
+/* !!! !!! !!! This file is edited by the makesetup script !!! !!! !!! */
+
+/* This file contains the table of built-in modules.
+   See init_builtin() in import.c. */
+
+#include "Python.h"
+#include <uk/config.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#ifdef CONFIG_PYTHON_THREADS
+extern void initthread(void);
+#endif
+extern void initerrno(void);
+extern void initresource(void);
+extern void init_locale(void);
+extern void init_hotshot(void);
+//extern void initfcntl(void);
+
+extern void init_sre(void);
+extern void init_codecs(void);
+extern void init_weakref(void);
+//extern void initzipimport(void);
+extern void init_symtable(void);
+extern void initxxsubtype(void);
+extern void initposix(void);
+/* modules that should be dynamically loaded */
+extern void initarray(void);
+/* missing audioop, getbuildinfo, getpath, md5.c, _math, rotatingtree */
+extern void initbinascii(void);
+extern void init_bisect(void);
+extern void initcmath(void);
+extern void init_collections(void);
+extern void initcPickle(void);
+extern void initcStringIO(void);
+extern void init_csv(void);
+extern void initfpetest(void);
+extern void init_functools(void);
+extern void initfuture_builtins(void);
+extern void initgc(void);
+extern void init_heapq(void);
+extern void initimageop(void);
+extern void inititertools(void);
+extern void init_json(void);
+extern void init_lsprof(void);
+extern void initmath(void);
+extern void init_md5(void);
+extern void initoperator(void);
+extern void initparser(void);
+extern void initpure(void);
+extern void init_random(void);
+extern void init_sha256(void);
+extern void init_sha512(void);
+extern void init_sha(void);
+extern void init_sre(void);
+extern void initstrop(void);
+extern void init_struct(void);
+extern void init_symtable(void);
+extern void init_testcapi(void);
+extern void inittiming(void);
+extern void initunicodedata(void);
+extern void initxx(void);
+extern void initxxsubtype(void);
+extern void inittime(void);
+#ifdef CONFIG_PYTHON_SIGNALS
+extern void initsignal(void);
+#endif
+extern void initdatetime(void);
+extern void initpwd(void);
+extern void init_io(void);
+#ifdef CONFIG_PYTHON_NETWORKING
+extern void init_socket(void);
+extern void initselect(void);
+#endif
+/* -- ADDMODULE MARKER 1 -- */
+
+extern void PyMarshal_Init(void);
+extern void initimp(void);
+extern void initgc(void);
+extern void init_ast(void);
+extern void _PyWarnings_Init(void);
+
+struct _inittab _PyImport_Inittab[] = {
+
+
+#ifdef CONFIG_PYTHON_THREADS
+    {"thread", initthread},
+#endif
+#ifdef CONFIG_PYTHON_NETWORKING
+    {"_socket", init_socket},
+#endif
+    {"resource", initresource},
+    {"_hotshot", init_hotshot},
+    //{"fcntl", initfcntl},
+#ifdef CONFIG_PYTHON_NETWORKING
+    {"select", initselect},
+#endif
+    {"_locale", init_locale},
+    {"errno", initerrno}, 
+    {"_io", init_io}, 
+#ifdef CONFIG_PYTHON_SIGNALS
+    {"signal", initsignal},
+#endif
+    {"_sre", init_sre},
+    {"time", inittime},
+    {"_codecs", init_codecs},
+    {"_weakref", init_weakref},
+    //{"zipimport", initzipimport},
+    {"_symtable", init_symtable},
+    {"xxsubtype", initxxsubtype},
+    {"posix", initposix},
+/* modules that should be dynamically loaded */
+    {"array", initarray},
+    {"binascii", initbinascii},
+    {"_bisect", init_bisect},
+    {"cmath", initcmath},
+    {"_collections", init_collections},
+    {"cPickle", initcPickle},
+    {"cStringIO", initcStringIO},
+    {"_csv", init_csv},
+    {"fpetest", initfpetest},
+    {"_functools", init_functools},
+    {"future_builtins", initfuture_builtins},
+    {"gc", initgc},
+    {"_heapq", init_heapq},
+    {"imageop", initimageop},
+    {"itertools", inititertools},
+    {"_json", init_json},
+    {"_lsprof", init_lsprof},
+    {"math", initmath},
+    {"_md5", init_md5},
+    {"operator", initoperator},
+    {"parser", initparser},
+    {"pure", initpure},
+    {"_random", init_random},
+    {"_sha256", init_sha256},
+    {"_sha512", init_sha512},
+    {"_sha", init_sha},
+    {"_sre", init_sre},
+    {"strop", initstrop},
+    {"_struct", init_struct},
+    {"_symtable", init_symtable},
+    {"_testcapi", init_testcapi},
+    {"timing", inittiming},
+    {"unicodedata", initunicodedata},
+    {"xx", initxx},
+    {"xxsubtype", initxxsubtype},
+    {"datetime", initdatetime},
+    {"pwd", initpwd},
+/* -- ADDMODULE MARKER 2 -- */
+
+    /* This module lives in marshal.c */
+    {"marshal", PyMarshal_Init},
+
+    /* This lives in import.c */
+    {"imp", initimp},
+
+    /* This lives in Python/Python-ast.c */
+    {"_ast", init_ast},
+
+    /* These entries are here for sys.builtin_module_names */
+    {"__main__", NULL},
+    {"__builtin__", NULL},
+    {"sys", NULL},
+    {"exceptions", NULL},
+
+    /* This lives in gcmodule.c */
+    {"gc", initgc},
+
+    /* This lives in _warnings.c */
+    {"_warnings", _PyWarnings_Init},
+
+    /* Sentinel */
+    {0, 0}
+};
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/include/pyconfig.h b/include/pyconfig.h
new file mode 100644
index 0000000..9abd159
--- /dev/null
+++ b/include/pyconfig.h
@@ -0,0 +1,1330 @@
+#ifndef Py_PYCONFIG_H
+#define Py_PYCONFIG_H
+
+#include <uk/config.h>
+
+#define PREFIX "/lib/python-2.7.15"
+#define EXEC_PREFIX "/lib/python-2.7.15"
+#define VERSION "2.7.15"
+#define VPATH ""
+#define PYTHONPATH "/lib/python-2.7.15"
+#define PYTHONHOME "/lib/python-2.7.15"
+#define DEFAULT_VERS
+
+/* Define if building universal (internal helper macro) */
+/* #undef AC_APPLE_UNIVERSAL_BUILD */
+
+/* Define for AIX if your compiler is a genuine IBM xlC/xlC_r and you want
+   support for AIX C++ shared extension modules. */
+/* #undef AIX_GENUINE_CPLUSPLUS */
+
+/* Define this if you have AtheOS threads. */
+/* #undef ATHEOS_THREADS */
+
+/* Define this if you have BeOS threads. */
+/* #undef BEOS_THREADS */
+
+/* Define if you have the Mach cthreads package */
+/* #undef C_THREADS */
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM
+   mixed-endian order (byte order 45670123) */
+/* #undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 */
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the most
+   significant byte first */
+/* #undef DOUBLE_IS_BIG_ENDIAN_IEEE754 */
+
+/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the
+   least significant byte first */
+#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1
+
+/* Define if --enable-ipv6 is specified */
+/* #define ENABLE_IPV6 1 */
+
+/* Define if flock needs to be linked with bsd library. */
+/* #undef FLOCK_NEEDS_LIBBSD */
+
+/* Define if getpgrp() must be called as getpgrp(0). */
+/* #undef GETPGRP_HAVE_ARG */
+
+/* Define if gettimeofday() does not have second (timezone) argument This is
+   the case on Motorola V4 (R40V4.2) */
+/* #undef GETTIMEOFDAY_NO_TZ */
+
+/* Define to 1 if you have the `acosh' function. */
+#define HAVE_ACOSH 1
+
+/* struct addrinfo (netdb.h) */
+ #define HAVE_ADDRINFO 1 
+
+/* Define to 1 if you have the `alarm' function. */
+#define HAVE_ALARM 1
+
+/* Define to 1 if you have the <alloca.h> header file. */
+#define HAVE_ALLOCA_H 1
+
+/* Define this if your time.h defines altzone. */
+/* #undef HAVE_ALTZONE */
+
+/* Define to 1 if you have the `asinh' function. */
+#define HAVE_ASINH 1
+
+/* Define to 1 if you have the <asm/types.h> header file. */
+#define HAVE_ASM_TYPES_H 1
+
+/* Define to 1 if you have the `atanh' function. */
+#define HAVE_ATANH 1
+
+/* Define if GCC supports __attribute__((format(PyArg_ParseTuple, 2, 3))) */
+/* #undef HAVE_ATTRIBUTE_FORMAT_PARSETUPLE */
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+/* #define HAVE_BIND_TEXTDOMAIN_CODESET 1 */
+
+/* Define to 1 if you have the <bluetooth/bluetooth.h> header file. */
+/* #undef HAVE_BLUETOOTH_BLUETOOTH_H */
+
+/* Define to 1 if you have the <bluetooth.h> header file. */
+/* #undef HAVE_BLUETOOTH_H */
+
+/* Define if nice() returns success/failure instead of the new priority. */
+/* #undef HAVE_BROKEN_NICE */
+
+/* Define if the system reports an invalid PIPE_BUF value. */
+/* #undef HAVE_BROKEN_PIPE_BUF */
+
+/* Define if poll() sets errno on invalid file descriptors. */
+/* #undef HAVE_BROKEN_POLL */
+
+/* Define if the Posix semaphores do not work on your system */
+/* #undef HAVE_BROKEN_POSIX_SEMAPHORES */
+
+/* Define if pthread_sigmask() does not work on your system. */
+/* #undef HAVE_BROKEN_PTHREAD_SIGMASK */
+
+/* define to 1 if your sem_getvalue is broken. */
+#define HAVE_BROKEN_SEM_GETVALUE 1
+
+/* Define if `unsetenv` does not return an int. */
+/* #undef HAVE_BROKEN_UNSETENV */
+
+/* Define this if you have the type _Bool. */
+#define HAVE_C99_BOOL 1
+
+/* Define to 1 if you have the 'chflags' function. */
+/* #undef HAVE_CHFLAGS */
+
+/* Define to 1 if you have the `chown' function. */
+#define HAVE_CHOWN 1
+
+/* Define if you have the 'chroot' function. */
+//#define HAVE_CHROOT 1
+
+/* Define to 1 if you have the `clock' function. */
+#define HAVE_CLOCK 1
+
+/* Define if the C compiler supports computed gotos. */
+#define HAVE_COMPUTED_GOTOS 1
+
+/* Define to 1 if you have the `confstr' function. */
+#define HAVE_CONFSTR 1
+
+/* Define to 1 if you have the <conio.h> header file. */
+/* #undef HAVE_CONIO_H */
+
+/* Define to 1 if you have the `copysign' function. */
+#define HAVE_COPYSIGN 1
+
+/* Define to 1 if you have the <crypt.h> header file. */
+/* define HAVE_CRYPT_H 1 */
+
+/* Define to 1 if you have the `ctermid' function. */
+/* #define HAVE_CTERMID 1 */
+
+/* Define if you have the 'ctermid_r' function. */
+/* #undef HAVE_CTERMID_R */
+
+/* Define if you have the 'filter' function. */
+//#define HAVE_CURSES_FILTER 1
+
+/* Define to 1 if you have the <curses.h> header file. */
+/* #define HAVE_CURSES_H 1 */
+
+/* Define if you have the 'has_key' function. */
+/* #define HAVE_CURSES_HAS_KEY 1 */
+
+/* Define if you have the 'immedok' function. */
+/* #define HAVE_CURSES_IMMEDOK 1 */
+
+/* Define if you have the 'is_pad' function or macro. */
+/* #define HAVE_CURSES_IS_PAD 1 */
+
+/* Define if you have the 'is_term_resized' function. */
+/* #define HAVE_CURSES_IS_TERM_RESIZED 1 */
+
+/* Define if you have the 'resizeterm' function. */
+/* #define HAVE_CURSES_RESIZETERM 1 */
+
+/* Define if you have the 'resize_term' function. */
+/* #define HAVE_CURSES_RESIZE_TERM 1 */
+
+/* Define if you have the 'syncok' function. */
+/* #define HAVE_CURSES_SYNCOK 1 8i */
+
+/* Define if you have the 'typeahead' function. */
+/* #define HAVE_CURSES_TYPEAHEAD 1 */
+
+/* Define if you have the 'use_env' function. */
+/* #define HAVE_CURSES_USE_ENV 1 */
+
+/* Define if you have the 'wchgat' function. */
+/* #define HAVE_CURSES_WCHGAT 1 */
+
+/* Define to 1 if you have the declaration of `isfinite', and to 0 if you
+   don't. */
+#define HAVE_DECL_ISFINITE 1
+
+/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't.
+   */
+#define HAVE_DECL_ISINF 1
+
+/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't.
+   */
+#define HAVE_DECL_ISNAN 1
+
+/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
+   */
+/* #undef HAVE_DECL_TZNAME */
+
+/* Define to 1 if you have the device macros. */
+#define HAVE_DEVICE_MACROS 1
+
+/* Define to 1 if you have the /dev/ptc device file. */
+/* #undef HAVE_DEV_PTC */
+
+/* Define to 1 if you have the /dev/ptmx device file. */
+#define HAVE_DEV_PTMX 1
+
+/* Define to 1 if you have the <direct.h> header file. */
+/* #undef HAVE_DIRECT_H */
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.*/
+#define HAVE_DIRENT_H 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+//#define HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the `dlopen' function. */
+//#define HAVE_DLOPEN 1
+
+/* Define to 1 if you have the `dup2' function. */
+#define HAVE_DUP2 1
+
+/* Defined when any dynamic module loading is enabled. */
+ //#define HAVE_DYNAMIC_LOADING 1
+
+/* Define if you have the 'epoll' functions. */
+//#define HAVE_EPOLL 1
+
+/* Define to 1 if you have the `erf' function. */
+#define HAVE_ERF 1
+
+/* Define to 1 if you have the `erfc' function. */
+#define HAVE_ERFC 1
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if you have the `execv' function. */
+#define HAVE_EXECV 1
+
+/* Define to 1 if you have the `expm1' function. */
+#define HAVE_EXPM1 1
+
+/* Define if you have the 'fchdir' function. */
+#define HAVE_FCHDIR 1
+
+/* Define to 1 if you have the `fchmod' function. */
+#define HAVE_FCHMOD 1
+
+/* Define to 1 if you have the `fchown' function. */
+#define HAVE_FCHOWN 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if you have the 'fdatasync' function. */
+#define HAVE_FDATASYNC 1
+
+/* Define to 1 if you have the `finite' function. */
+#define HAVE_FINITE 1
+
+/* Define to 1 if you have the `flock' function. */
+//#define HAVE_FLOCK 1
+
+/* Define to 1 if you have the `fork' function. */
+#define HAVE_FORK 1
+
+/* Define to 1 if you have the `forkpty' function. */
+#define HAVE_FORKPTY 1
+
+/* Define to 1 if you have the `fpathconf' function. */
+#define HAVE_FPATHCONF 1
+
+/* Define to 1 if you have the `fseek64' function. */
+/* #undef HAVE_FSEEK64 */
+
+/* Define to 1 if you have the `fseeko' function. */
+#define HAVE_FSEEKO 1
+
+/* Define to 1 if you have the `fstatvfs' function. */
+#define HAVE_FSTATVFS 1
+
+/* Define if you have the 'fsync' function. */
+#define HAVE_FSYNC 1
+
+/* Define to 1 if you have the `ftell64' function. */
+/* #undef HAVE_FTELL64 */
+
+/* Define to 1 if you have the `ftello' function. */
+#define HAVE_FTELLO 1
+
+/* Define to 1 if you have the `ftime' function. */
+/* #define HAVE_FTIME 1 */
+
+/* Define to 1 if you have the `ftruncate' function. */
+//#define HAVE_FTRUNCATE 1
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#define HAVE_GAI_STRERROR 1
+
+/* Define to 1 if you have the `gamma' function. */
+#define HAVE_GAMMA 1
+
+/* Define if we can use gcc inline assembler to get and set x87 control word
+   */
+#define HAVE_GCC_ASM_FOR_X87 1
+
+/* Define if you have the getaddrinfo function. */
+/* #define HAVE_GETADDRINFO 1 */
+
+/* Define to 1 if you have the `getcwd' function. */
+ #define HAVE_GETCWD 1 
+
+/* Define this if you have flockfile(), getc_unlocked(), and funlockfile() */
+//#define HAVE_GETC_UNLOCKED 1
+
+/* Define to 1 if you have the `getentropy' function. */
+/* #undef HAVE_GETENTROPY */
+
+/* Define to 1 if you have the `getgroups' function. */
+#define HAVE_GETGROUPS 1
+
+/* Define to 1 if you have the `gethostbyname' function. */
+/* #undef HAVE_GETHOSTBYNAME */
+
+/* Define this if you have some version of gethostbyname_r() */
+/* #define HAVE_GETHOSTBYNAME_R 1 */
+
+/* Define this if you have the 3-arg version of gethostbyname_r(). */
+/* #undef HAVE_GETHOSTBYNAME_R_3_ARG */
+
+/* Define this if you have the 5-arg version of gethostbyname_r(). */
+/* #undef HAVE_GETHOSTBYNAME_R_5_ARG */
+
+/* Define this if you have the 6-arg version of gethostbyname_r(). */
+/* #define HAVE_GETHOSTBYNAME_R_6_ARG 1 */
+
+/* Define to 1 if you have the `getitimer' function. */
+/*#define HAVE_GETITIMER 1*/
+
+/* Define to 1 if you have the `getloadavg' function. */
+/*#define HAVE_GETLOADAVG 1*/
+
+/* Define to 1 if you have the `getlogin' function. */
+/* #define HAVE_GETLOGIN 1*/
+
+/* Define to 1 if you have the `getnameinfo' function. */
+/* #define HAVE_GETNAMEINFO 1 */
+////
+/* Define if you have the 'getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getpeername' function. */
+#define HAVE_GETPEERNAME 1
+
+/* Define to 1 if you have the `getpgid' function. */
+#define HAVE_GETPGID 1
+
+/* Define to 1 if you have the `getpgrp' function. */
+//#define HAVE_GETPGRP 1
+
+/* Define to 1 if you have the `getpid' function. */
+/* #define HAVE_GETPID 1 */
+
+/* Define to 1 if you have the `getpriority' function. */
+/* #define HAVE_GETPRIORITY 1 */
+
+/* Define to 1 if you have the `getpwent' function. */
+/* #define HAVE_GETPWENT 1 */
+
+/* Define to 1 if you have the `getresgid' function. */
+/* #define HAVE_GETRESGID 1 */
+
+/* Define to 1 if you have the `getresuid' function. */
+#define HAVE_GETRESUID 1
+
+/* Define to 1 if you have the `getsid' function. */
+#define HAVE_GETSID 1
+
+/* Define to 1 if you have the `getspent' function. */
+#define HAVE_GETSPENT 1
+
+/* Define to 1 if you have the `getspnam' function. */
+#define HAVE_GETSPNAM 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `getwd' function. */
+#define HAVE_GETWD 1 
+
+/* Define to 1 if you have the <grp.h> header file. */
+/* #define HAVE_GRP_H 1 */
+
+/* Define if you have the 'hstrerror' function. */
+/* #define HAVE_HSTRERROR 1 */
+
+/* Define to 1 if you have the `hypot' function. */
+#define HAVE_HYPOT 1
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+/* #undef HAVE_IEEEFP_H */
+
+/* Define if you have the 'inet_aton' function. */
+#define HAVE_INET_ATON 1
+
+/* Define if you have the 'inet_pton' function. */
+/* #define HAVE_INET_PTON 1 */
+
+/* Define to 1 if you have the `initgroups' function. */
+#define HAVE_INITGROUPS 1
+
+/* Define if your compiler provides int32_t. */
+#define HAVE_INT32_T 1
+
+/* Define if your compiler provides int64_t. */
+#define HAVE_INT64_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <io.h> header file. */
+/* #undef HAVE_IO_H */
+
+/* Define to 1 if you have the `kill' function. */
+#define HAVE_KILL 1
+
+/* Define to 1 if you have the `killpg' function. */
+#define HAVE_KILLPG 1
+
+/* Define if you have the 'kqueue' functions. */
+/* #undef HAVE_KQUEUE */
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#define HAVE_LANGINFO_H 1
+
+/* Defined to enable large file support when an off_t is bigger than a long
+   and long long is available and at least as big as an off_t. You may need to
+   add some flags for configuration and compilation to enable this mode. (For
+   Solaris and Linux, the necessary defines are already defined.) */
+/* #undef HAVE_LARGEFILE_SUPPORT */
+
+/* Define to 1 if you have the 'lchflags' function. */
+/* #undef HAVE_LCHFLAGS */
+
+/* Define to 1 if you have the `lchmod' function. */
+/* #undef HAVE_LCHMOD */
+
+/* Define to 1 if you have the `lchown' function. */
+#define HAVE_LCHOWN 1
+
+/* Define to 1 if you have the `lgamma' function. */
+/* #define HAVE_LGAMMA 1 */
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+/* #define HAVE_LIBDL 1 */
+
+/* Define to 1 if you have the `dld' library (-ldld). */
+/* #undef HAVE_LIBDLD */
+
+/* Define to 1 if you have the `ieee' library (-lieee). */
+/* #undef HAVE_LIBIEEE */
+
+/* Define to 1 if you have the <libintl.h> header file. */
+//#define HAVE_LIBINTL_H 1
+
+/* Define if you have the readline library (-lreadline). */
+//#define HAVE_LIBREADLINE 1
+
+/* Define to 1 if you have the `resolv' library (-lresolv). */
+/* #undef HAVE_LIBRESOLV */
+
+/* Define to 1 if you have the <libutil.h> header file. */
+/* #undef HAVE_LIBUTIL_H */
+
+/* Define if you have the 'link' function. */
+/* #define HAVE_LINK 1 */
+
+/* Define to 1 if you have the <linux/netlink.h> header file. */
+/* #define HAVE_LINUX_NETLINK_H 1 */
+
+/* Define to 1 if you have the <linux/tipc.h> header file. */
+/* #define HAVE_LINUX_TIPC_H 1 */
+
+/* Define to 1 if you have the `log1p' function. */
+/* #define HAVE_LOG1P 1 */
+
+/* Define this if you have the type long double. */
+#define HAVE_LONG_DOUBLE 1
+
+/* Define this if you have the type long long. */
+#define HAVE_LONG_LONG 1
+
+/* Define to 1 if you have the `lstat' function. */
+ /*#define HAVE_LSTAT 1*/ // TODO add from gluecode in newlib
+
+/* Define this if you have the makedev macro. */
+#define HAVE_MAKEDEV 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+/* #define HAVE_MEMORY_H 1*/
+
+/* Define to 1 if you have the `mkfifo' function. */
+/* #define HAVE_MKFIFO 1 */
+
+/* Define to 1 if you have the `mknod' function. */
+#define HAVE_MKNOD 1
+
+/* Define to 1 if you have the `mktime' function. */
+#define HAVE_MKTIME 1
+
+/* Define to 1 if you have the `mmap' function. */
+/* #define HAVE_MMAP 1 */
+
+/* Define to 1 if you have the `mremap' function. */
+/* #define HAVE_MREMAP 1 */
+
+/* Define to 1 if you have the <ncurses.h> header file. */
+/* #define HAVE_NCURSES_H 1 */
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the <netpacket/packet.h> header file. */
+/* #define HAVE_NETPACKET_PACKET_H 1 */
+
+/* Define to 1 if you have the `nice' function. */
+#define HAVE_NICE 1
+
+/* Define to 1 if you have the `openpty' function. */
+#define HAVE_OPENPTY 1
+
+/* Define if compiling using MacOS X 10.5 SDK or later. */
+/* #undef HAVE_OSX105_SDK */
+
+/* Define to 1 if you have the `pathconf' function. */
+#define HAVE_PATHCONF 1
+
+/* Define to 1 if you have the `pause' function. */
+#define HAVE_PAUSE 1
+
+/* Define to 1 if you have the `plock' function. */
+/* #undef HAVE_PLOCK */
+
+/* Define to 1 if you have the `poll' function. */
+#define HAVE_POLL 1
+
+/* Define to 1 if you have the <poll.h> header file. */
+#define HAVE_POLL_H 1
+
+/* Define to 1 if you have the <process.h> header file. */
+/* #undef HAVE_PROCESS_H */
+
+/* Define if your compiler supports function prototype */
+#define HAVE_PROTOTYPES 1
+
+/* Define if you have GNU PTH threads. */
+/* #define HAVE_PTH */
+
+/* Define to 1 if you have the `pthread_atfork' function. */
+/* #undef HAVE_PTHREAD_ATFORK */
+
+/* Defined for Solaris 2.6 bug in pthread header. */
+/* #undef HAVE_PTHREAD_DESTRUCTOR */
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#ifdef CONFIG_PYTHON_THREADS
+       #define HAVE_PTHREAD_H 1
+#endif
+
+/* Define to 1 if you have the `pthread_init' function. */
+/* #undef HAVE_PTHREAD_INIT */
+
+/* Define to 1 if you have the `pthread_sigmask' function. */
+/* #undef HAVE_PTHREAD_SIGMASK */
+
+/* Define to 1 if you have the <pty.h> header file. */
+#define HAVE_PTY_H 1
+
+/* Define to 1 if you have the `putenv' function. */
+#define HAVE_PUTENV 1
+
+/* Define to 1 if you have the `readlink' function. */
+////#define HAVE_READLINK 1
+
+/* Define to 1 if you have the `realpath' function. */
+/*#define HAVE_REALPATH 1 */
+
+/* Define if you have readline 2.1 */
+//#define HAVE_RL_CALLBACK 1
+
+/* Define if you can turn off readline's signal handling. */
+//#define HAVE_RL_CATCH_SIGNAL 1
+
+/* Define if you have readline 2.2 */
+//#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1
+
+/* Define if you have readline 4.0 */
+//#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1
+
+/* Define if you have readline 4.2 */
+//#define HAVE_RL_COMPLETION_MATCHES 1
+
+/* Define if you have rl_completion_suppress_append */
+//#define HAVE_RL_COMPLETION_SUPPRESS_APPEND 1
+
+/* Define if you have readline 4.0 */
+//#define HAVE_RL_PRE_INPUT_HOOK 1
+
+/* Define if you have readline 4.0 */
+//#define HAVE_RL_RESIZE_TERMINAL 1
+
+/* Define to 1 if you have the `round' function. */
+#define HAVE_ROUND 1
+
+/* Define to 1 if you have the `select' function. */
+//#define HAVE_SELECT 1 TODO: lwip
+
+/* Define to 1 if you have the `sem_getvalue' function. */
+/* #undef HAVE_SEM_GETVALUE */
+
+/* Define to 1 if you have the `sem_open' function. */
+/* #undef HAVE_SEM_OPEN */
+
+/* Define to 1 if you have the `sem_timedwait' function. */
+/* #undef HAVE_SEM_TIMEDWAIT */
+
+/* Define to 1 if you have the `sem_unlink' function. */
+/* #undef HAVE_SEM_UNLINK */
+
+/* Define to 1 if you have the `setegid' function. */
+#define HAVE_SETEGID 1
+
+/* Define to 1 if you have the `seteuid' function. */
+#define HAVE_SETEUID 1
+
+/* Define to 1 if you have the `setgid' function. */
+#define HAVE_SETGID 1
+
+/* Define if you have the 'setgroups' function. */
+#define HAVE_SETGROUPS 1
+
+/* Define to 1 if you have the `setitimer' function. */
+/* #define HAVE_SETITIMER 1 */
+
+/* Define to 1 if you have the `setlocale' function. */
+#define HAVE_SETLOCALE 1
+
+/* Define to 1 if you have the `setpgid' function. */
+#define HAVE_SETPGID 1
+
+/* Define to 1 if you have the `setpgrp' function. */
+#define HAVE_SETPGRP 1
+
+/* Define to 1 if you have the `setregid' function. */
+#define HAVE_SETREGID 1
+
+/* Define to 1 if you have the `setresgid' function. */
+//#define HAVE_SETRESGID 1
+
+/* Define to 1 if you have the `setresuid' function. */
+#define HAVE_SETRESUID 1
+
+/* Define to 1 if you have the `setreuid' function. */
+#define HAVE_SETREUID 1
+
+/* Define to 1 if you have the `setsid' function. */
+#define HAVE_SETSID 1
+
+/* Define to 1 if you have the `setuid' function. */
+#define HAVE_SETUID 1
+
+/* Define to 1 if you have the `setvbuf' function. */
+#define HAVE_SETVBUF 1
+
+/* Define to 1 if you have the <shadow.h> header file. */
+#define HAVE_SHADOW_H 1
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the `siginterrupt' function. */
+#define HAVE_SIGINTERRUPT 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#ifdef CONFIG_PYTHON_SIGNALS
+#define HAVE_SIGNAL_H 1
+#endif
+
+/* Define to 1 if you have the `sigrelse' function. */
+#define HAVE_SIGRELSE 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define if sockaddr has sa_len member */
+/* #undef HAVE_SOCKADDR_SA_LEN */
+
+/* struct sockaddr_storage (sys/socket.h) */
+ #define HAVE_SOCKADDR_STORAGE 
+
+/* Define if you have the 'socketpair' function. */
+/* #define HAVE_SOCKETPAIR 1 */
+
+/* Define to 1 if you have the <spawn.h> header file. */
+#define HAVE_SPAWN_H 1
+
+/* Define if your compiler provides ssize_t */
+#define HAVE_SSIZE_T 1
+
+/* Define to 1 if you have the `statvfs' function. */
+#define HAVE_STATVFS 1
+
+/* Define if you have struct stat.st_mtim.tv_nsec */
+//#define HAVE_STAT_TV_NSEC 1
+
+/* Define if you have struct stat.st_mtimensec */
+/* #undef HAVE_STAT_TV_NSEC2 */
+
+/* Define if your compiler supports variable length function prototypes (e.g.
+   void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */
+#define HAVE_STDARG_PROTOTYPES 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the <stropts.h> header file. */
+/*#define HAVE_STROPTS_H 1*/
+
+/* Define to 1 if `st_birthtime' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLOCKS 1
+
+/* Define to 1 if `st_flags' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_FLAGS */
+
+/* Define to 1 if `st_gen' is a member of `struct stat'. */
+/* #undef HAVE_STRUCT_STAT_ST_GEN */
+
+/* Define to 1 if `st_rdev' is a member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_RDEV 1
+
+/* Define to 1 if `tm_zone' is a member of `struct tm'. */
+/* #define HAVE_STRUCT_TM_TM_ZONE 1*/
+
+/* Define if you have the 'symlink' function. */
+#define HAVE_SYMLINK 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the <sysexits.h> header file. */
+#define HAVE_SYSEXITS_H 1
+
+/* Define to 1 if you have the <sys/audioio.h> header file. */
+ #undef HAVE_SYS_AUDIOIO_H 
+
+/* Define to 1 if you have the <sys/bsdtty.h> header file. */
+/* #undef HAVE_SYS_BSDTTY_H */
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+ #undef HAVE_SYS_DIR_H 
+
+/* Define to 1 if you have the <sys/epoll.h> header file. */
+//#define HAVE_SYS_EPOLL_H 1
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+/* #undef HAVE_SYS_EVENT_H */
+
+/* Define to 1 if you have the <sys/file.h> header file. */
+#define HAVE_SYS_FILE_H 1
+
+/* Define to 1 if you have the <sys/loadavg.h> header file. */
+/* #undef HAVE_SYS_LOADAVG_H */
+
+/* Define to 1 if you have the <sys/lock.h> header file. */
+/* #undef HAVE_SYS_LOCK_H */
+
+/* Define to 1 if you have the <sys/mkdev.h> header file. */
+/* #undef HAVE_SYS_MKDEV_H */
+
+/* Define to 1 if you have the <sys/modem.h> header file. */
+/* #undef HAVE_SYS_MODEM_H */
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+/* #define HAVE_SYS_POLL_H 1 */
+
+/* Define to 1 if you have the <sys/random.h> header file. */
+#define HAVE_SYS_RANDOM_H 
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+/* #define HAVE_SYS_SELECT_H 1 */
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#define HAVE_SYS_STATVFS_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/sysmacros.h> header file. */
+#define HAVE_SYS_SYSMACROS_H 1
+
+/* Define to 1 if you have the <sys/termio.h> header file. */
+/* #undef HAVE_SYS_TERMIO_H */
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#define HAVE_SYS_TIMES_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+/* #define HAVE_SYS_UN_H 1 */
+
+/* Define to 1 if you have the <sys/utsname.h> header file. */
+#define HAVE_SYS_UTSNAME_H 1
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the `tcgetpgrp' function. */
+#define HAVE_TCGETPGRP 1
+
+/* Define to 1 if you have the `tcsetpgrp' function. */
+#define HAVE_TCSETPGRP 1
+
+/* Define to 1 if you have the `tempnam' function. */
+#define HAVE_TEMPNAM 1
+
+/* Define to 1 if you have the <termios.h> header file. */
+//#define HAVE_TERMIOS_H 1
+
+/* Define to 1 if you have the <term.h> header file. */
+#define HAVE_TERM_H 1
+
+/* Define to 1 if you have the `tgamma' function. */
+#define HAVE_TGAMMA 1
+
+/* Define to 1 if you have the <thread.h> header file. */
+/* #define HAVE_THREAD_H */
+
+/* Define to 1 if you have the `timegm' function. */
+#define HAVE_TIMEGM 1
+
+/* Define to 1 if you have the `times' function. */
+#define HAVE_TIMES 1
+
+/* Define to 1 if you have the `tmpfile' function. */
+#define HAVE_TMPFILE 1
+
+/* Define to 1 if you have the `tmpnam' function. */
+#define HAVE_TMPNAM 1
+
+/* Define to 1 if you have the `tmpnam_r' function. */
+/* #define HAVE_TMPNAM_R 1 */
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+   `HAVE_STRUCT_TM_TM_ZONE' instead. */
+/* #define HAVE_TM_ZONE 1 */
+
+/* Define to 1 if you have the `truncate' function. */
+#define HAVE_TRUNCATE 1
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+   `tzname'. */
+/* #undef HAVE_TZNAME */
+
+/* Define this if you have tcl and TCL_UTF_MAX==6 */
+/* #undef HAVE_UCS4_TCL */
+
+/* Define if your compiler provides uint32_t. */
+#define HAVE_UINT32_T 1
+
+/* Define if your compiler provides uint64_t. */
+#define HAVE_UINT64_T 1
+
+/* Define to 1 if the system has the type `uintptr_t'. */
+#define HAVE_UINTPTR_T 1
+
+/* Define to 1 if you have the `uname' function. */
+#define HAVE_UNAME 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#define HAVE_UNSETENV 1
+
+/* Define if you have a useable wchar_t type defined in wchar.h; useable means
+   wchar_t must be an unsigned type with at least 16 bits. (see
+   Include/unicodeobject.h). */
+#define HAVE_USABLE_WCHAR_T
+
+/* Define to 1 if you have the <util.h> header file. */
+/* #undef HAVE_UTIL_H */
+
+/* Define to 1 if you have the `utimes' function. */
+#define HAVE_UTIMES 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the `wait3' function. */
+#define HAVE_WAIT3 1
+
+/* Define to 1 if you have the `wait4' function. */
+#define HAVE_WAIT4 1
+
+/* Define to 1 if you have the `waitpid' function. */
+#define HAVE_WAITPID 1
+
+/* Define if the compiler provides a wchar.h header file. */
+#define HAVE_WCHAR_H 1
+
+/* Define to 1 if you have the `wcscoll' function. */
+#define HAVE_WCSCOLL 1
+
+/* Define if tzset() actually switches the local timezone in a meaningful way.
+   */
+#define HAVE_WORKING_TZSET 1
+
+/* Define if the zlib library has inflateCopy */
+//#define HAVE_ZLIB_COPY 1
+
+
+/* Define to 1 if you have the `_getpty' function. */
+/* #undef HAVE__GETPTY */
+
+/* Define if you are using Mach cthreads directly under /include */
+/* #undef HURD_C_THREADS */
+
+/* Define if you are using Mach cthreads under mach / */
+/* #undef MACH_C_THREADS */
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
+   */
+/* #undef MAJOR_IN_MKDEV */
+
+/* Define to 1 if `major', `minor', and `makedev' are declared in
+   <sysmacros.h>. */
+/* #undef MAJOR_IN_SYSMACROS */
+
+/* Define if mvwdelch in curses.h is an expression. */
+#define MVWDELCH_IS_EXPRESSION 1
+
+/* Define to the address where bug reports for this package should be sent. */
+/* #undef PACKAGE_BUGREPORT */
+
+/* Define to the full name of this package. */
+/* #undef PACKAGE_NAME */
+
+/* Define to the full name and version of this package. */
+/* #undef PACKAGE_STRING */
+
+/* Define to the one symbol short name of this package. */
+/* #undef PACKAGE_TARNAME */
+
+/* Define to the home page for this package. */
+/* #undef PACKAGE_URL */
+
+/* Define to the version of this package. */
+/* #undef PACKAGE_VERSION */
+
+/* Define if POSIX semaphores aren't enabled on your system */
+#define POSIX_SEMAPHORES_NOT_ENABLED 1
+
+/* Defined if PTHREAD_SCOPE_SYSTEM supported. */
+/* #undef PTHREAD_SYSTEM_SCHED_SUPPORTED */
+
+/* Define as the preferred size in bits of long digits */
+/* #undef PYLONG_BITS_IN_DIGIT */
+
+/* Define to printf format modifier for long long type */
+#define PY_FORMAT_LONG_LONG "ll"
+
+/* Define to printf format modifier for Py_ssize_t */
+#define PY_FORMAT_SIZE_T "z"
+
+/* Define as the integral type used for Unicode representation. */
+#define PY_UNICODE_TYPE unsigned short
+
+/* Define if you want to build an interpreter with many run-time checks. */
+ #undef Py_DEBUG 
+
+/* Defined if Python is built as a shared library. */
+/* #undef Py_ENABLE_SHARED */
+
+/* Define as the size of the unicode type. */
+#define Py_UNICODE_SIZE 2
+
+/* Define if you want to have a Unicode type. */
+#define Py_USING_UNICODE 1
+
+/* assume C89 semantics that RETSIGTYPE is always void */
+#define RETSIGTYPE void
+
+/* Define if setpgrp() must be called as setpgrp(0, 0). */
+/* #undef SETPGRP_HAVE_ARG */
+
+/* Define this to be extension of shared libraries (including the dot!). */
+#define SHLIB_EXT ".so"
+
+/* Define if i>>j for signed int i does not extend the sign bit when i < 0 */
+/* #undef SIGNED_RIGHT_SHIFT_ZERO_FILLS */
+
+/* The size of `double', as computed by sizeof. */
+#define SIZEOF_DOUBLE 8
+
+/* The size of `float', as computed by sizeof. */
+#define SIZEOF_FLOAT 4
+
+/* The size of `fpos_t', as computed by sizeof. */
+#define SIZEOF_FPOS_T 16
+
+/* The size of `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of `long', as computed by sizeof. */
+#define SIZEOF_LONG 8
+
+/* The size of `long double', as computed by sizeof. */
+#define SIZEOF_LONG_DOUBLE 16
+
+/* The size of `long long', as computed by sizeof. */
+#define SIZEOF_LONG_LONG 8
+
+/* The size of `off_t', as computed by sizeof. */
+#define SIZEOF_OFF_T 8
+
+/* The size of `pid_t', as computed by sizeof. */
+#define SIZEOF_PID_T 4
+
+/* The size of `pthread_t', as computed by sizeof. */
+#define SIZEOF_PTHREAD_T 16
+
+/* The size of `short', as computed by sizeof. */
+#define SIZEOF_SHORT 2
+
+/* The size of `size_t', as computed by sizeof. */
+#define SIZEOF_SIZE_T 8
+
+/* The size of `time_t', as computed by sizeof. */
+#define SIZEOF_TIME_T 8
+
+/* The size of `uintptr_t', as computed by sizeof. */
+#define SIZEOF_UINTPTR_T 8
+
+/* The size of `void *', as computed by sizeof. */
+#define SIZEOF_VOID_P 8
+
+/* The size of `wchar_t', as computed by sizeof. */
+#define SIZEOF_WCHAR_T 4
+
+/* The size of `_Bool', as computed by sizeof. */
+#define SIZEOF__BOOL 1
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define if you can safely include both <sys/select.h> and <sys/time.h>
+   (which you can't on SCO ODT 3.0). */
+#define SYS_SELECT_WITH_SYS_TIME 1
+
+/* Define if tanh(-0.) is -0., or if platform doesn't have signed zeros */
+#define TANH_PRESERVES_ZERO_SIGN 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+/* #undef TM_IN_SYS_TIME */
+
+/* Define if you want to use computed gotos in ceval.c. */
+/* #undef USE_COMPUTED_GOTOS */
+
+/* Enable extensions on AIX 3, Interix.  */
+//#ifndef _ALL_SOURCE
+//# define _ALL_SOURCE 1
+//#endif
+/* Enable GNU extensions on systems that have them.  */
+//#ifndef _GNU_SOURCE
+//# define _GNU_SOURCE 1
+//#endif
+/* Enable threading extensions on Solaris.  */
+//#ifndef _POSIX_PTHREAD_SEMANTICS
+//# define _POSIX_PTHREAD_SEMANTICS 1
+//#endif
+/* Enable extensions on HP NonStop.  */
+//#ifndef _TANDEM_SOURCE
+//# define _TANDEM_SOURCE 1
+//#endif
+/* Enable general extensions on Solaris.  */
+//#ifndef __EXTENSIONS__
+//# define __EXTENSIONS__ 1
+//#endif
+
+
+/* Define if you want to use MacPython modules on MacOSX in unix-Python. */
+/* #undef USE_TOOLBOX_OBJECT_GLUE */
+
+/* Define if a va_list is an array of some kind */
+#define VA_LIST_IS_ARRAY 1
+
+/* Define if you want SIGFPE handled (see Include/pyfpe.h). */
+/* #undef WANT_SIGFPE_HANDLER */
+
+/* Define if you want wctype.h functions to be used instead of the one
+   supplied by Python itself. (see Include/unicodectype.h). */
+/* #undef WANT_WCTYPE_FUNCTIONS */
+
+/* Define if WINDOW in curses.h offers a field _flags. */
+/* #define WINDOW_HAS_FLAGS 1*/
+
+/* Define if you want documentation strings in extension modules */
+#define WITH_DOC_STRINGS 1
+
+/* Define if you want to use the new-style (Openstep, Rhapsody, MacOS) dynamic
+   linker (dyld) instead of the old-style (NextStep) dynamic linker (rld).
+   Dyld is necessary to support frameworks. */
+/* #undef WITH_DYLD */
+
+/* Define to 1 if libintl is needed for locale functions. */
+/* #undef WITH_LIBINTL */
+
+/* Define if you want to produce an OpenStep/Rhapsody framework (shared
+   library plus accessory files). */
+/* #undef WITH_NEXT_FRAMEWORK */
+
+/* Define if you want to compile in Python-specific mallocs */
+#define WITH_PYMALLOC 1
+
+/* Define if you want to compile in rudimentary thread support */
+#ifdef CONFIG_PYTHON_THREADS
+       #define WITH_THREAD 1
+#endif
+
+
+/* Define to profile with the Pentium timestamp counter */
+/* #undef WITH_TSC */
+
+/* Define if you want pymalloc to be disabled when running under valgrind */
+/* #undef WITH_VALGRIND */
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+/* #  undef WORDS_BIGENDIAN */
+# endif
+#endif
+
+/* Define if arithmetic is subject to x87-style double rounding issue */
+/* #undef X87_DOUBLE_ROUNDING */
+
+/* Define on OpenBSD to activate all library features */
+/* #undef _BSD_SOURCE */
+
+/* Define on Irix to enable u_int */
+#define _BSD_TYPES 1
+
+/* Define on Darwin to activate all library features */
+/* #define _DARWIN_C_SOURCE 1 */
+
+/* This must be set to 64 on some systems to enable large file support. */
+#define _FILE_OFFSET_BITS 64
+
+/* Define on Linux to activate all library features */
+#define _GNU_SOURCE 1
+
+/* This must be defined on some systems to enable large file support. */
+#define _LARGEFILE_SOURCE 1
+
+/* This must be defined on AIX systems to enable large file support. */
+/* #undef _LARGE_FILES */
+
+/* Define to 1 if on MINIX. */
+/* #undef _MINIX */
+
+/* Define on NetBSD to activate all library features */
+/* #define _NETBSD_SOURCE 1 */
+
+/* Define _OSF_SOURCE to get the makedev macro. */
+/* #undef _OSF_SOURCE */
+
+/* Define to 2 if the system does not provide POSIX.1 features except with
+   this defined. */
+/* #undef _POSIX_1_SOURCE */
+
+/* Define to activate features from IEEE Stds 1003.1-2001 */
+#ifndef _POSIX_C_SOURCE
+    #define _POSIX_C_SOURCE 200112L
+#endif
+/* Define to 1 if you need to in order for `stat' and other things to work. */
+/* #undef _POSIX_SOURCE */
+
+/* Define if you have POSIX threads, and your system does not define that. */
+#ifdef CONFIG_PYTHON_THREADS
+       #define _POSIX_THREADS 1
+#endif
+/* Define to force use of thread-safe errno, h_errno, and other functions */
+/* #undef _REENTRANT */
+
+/* Define for Solaris 2.5.1 so the uint32_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+/* #undef _UINT32_T */
+
+/* Define for Solaris 2.5.1 so the uint64_t typedef from <sys/synch.h>,
+   <pthread.h>, or <semaphore.h> is not used. If the typedef were allowed, the
+   #define below would cause a syntax error. */
+/* #undef _UINT64_T */
+
+/* Define to the level of X/Open that your system supports */
+#define _XOPEN_SOURCE 600
+
+/* Define to activate Unix95-and-earlier features */
+#define _XOPEN_SOURCE_EXTENDED 1
+
+/* Define on FreeBSD to activate all library features */
+/* #define __BSD_VISIBLE 1 */
+
+/* Define to 1 if type `char' is unsigned and you are not using gcc.  */
+#ifndef __CHAR_UNSIGNED__
+/* # undef __CHAR_UNSIGNED__ */
+#endif
+
+/* Defined on Solaris to see additional function prototypes. */
+#define __EXTENSIONS__ 1
+
+/* Define to 'long' if <time.h> doesn't define. */
+/* #undef clock_t */
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef gid_t */
+
+/* Define to the type of a signed integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef int32_t */
+
+/* Define to the type of a signed integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef int64_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef mode_t */
+
+/* Define to `long int' if <sys/types.h> does not define. */
+/* #undef off_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to empty if the keyword does not work. */
+/* #undef signed */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+/* Define to `int' if <sys/socket.h> does not define. */
+/* #undef socklen_t */
+
+/* Define to `int' if <sys/types.h> doesn't define. */
+/* #undef uid_t */
+
+/* Define to the type of an unsigned integer type of width exactly 32 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef uint32_t */
+
+/* Define to the type of an unsigned integer type of width exactly 64 bits if
+   such a type exists and the standard includes do not define it. */
+/* #undef uint64_t */
+
+/* Define to empty if the keyword does not work. */
+/* #undef volatile */
+
+/* Define the macros needed if on a UnixWare 7.x system. */
+#if defined(__USLC__) && defined(__SCO_VERSION__)
+#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
+#endif
+
+#endif /*Py_PYCONFIG_H*/
+
diff --git a/include/sys/sysmacros.h b/include/sys/sysmacros.h
new file mode 100644
index 0000000..07a3ef1
--- /dev/null
+++ b/include/sys/sysmacros.h
@@ -0,0 +1,15 @@
+#ifndef _SYS_SYSMACROS_H
+#define _SYS_SYSMACROS_H
+
+#define major(x) \
+       ((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) ))
+#define minor(x) \
+       ((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) ))
+
+#define makedev(x,y) ( \
+        (((x)&0xfffff000ULL) << 32) | \
+       (((x)&0x00000fffULL) << 8) | \
+        (((y)&0xffffff00ULL) << 12) | \
+       (((y)&0x000000ffULL)) )
+
+#endif
diff --git a/main_file.c b/main_file.c
new file mode 100644
index 0000000..6ee01d2
--- /dev/null
+++ b/main_file.c
@@ -0,0 +1,7 @@
+#include <Python.h>
+
+int __attribute__((weak)) main(int argc, char *argv[]) 
+{
+    return Py_Main(argc, argv);
+}
+
-- 
2.21.0

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.