summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--project/pyexts.mk1802
1 files changed, 1802 insertions, 0 deletions
diff --git a/project/pyexts.mk b/project/pyexts.mk
index e69de29..3802de9 100644
--- a/project/pyexts.mk
+++ b/project/pyexts.mk
@@ -0,0 +1,1802 @@
+# _multibytecodec
+PYEXT_MULTIBYTECODEC_SRCS += Modules/cjkcodecs/multibytecodec.c
+
+PYEXT_MULTIBYTECODEC_LOBJS = $(PYEXT_MULTIBYTECODEC_SRCS:.c=.lo)
+PYEXT_MULTIBYTECODEC_OBJS = $(PYEXT_MULTIBYTECODEC_SRCS:.c=.o)
+
+PYEXT_MULTIBYTECODEC_SHARED = pyext/_multibytecodec$(OS_LIB_SUFFIX)
+PYEXT_MULTIBYTECODEC_STATIC = pyext/_multibytecodec$(OS_ARCHIVE_EXT)
+
+$(PYEXT_MULTIBYTECODEC_SHARED): $(PYEXT_MULTIBYTECODEC_LOBJS)
+$(PYEXT_MULTIBYTECODEC_STATIC): $(PYEXT_MULTIBYTECODEC_OBJS)
+
+pyext-multibytecodec-shared: $(PYEXT_MULTIBYTECODEC_SHARED)
+pyext-multibytecodec-static: $(PYEXT_MULTIBYTECODEC_STATIC)
+
+pyext-multibytecodec-clean:
+ rm -f $(PYEXT_MULTIBYTECODEC_LOBJS)
+ rm -f $(PYEXT_MULTIBYTECODEC_OBJS)
+ rm -f $(PYEXT_MULTIBYTECODEC_SHARED)
+ rm -f $(PYEXT_MULTIBYTECODEC_STATIC)
+
+clean: pyext-multibytecodec-clean
+
+.PHONY: pyext-multibytecodec-shared
+.PHONY: pyext-multibytecodec-static
+.PHONY: pyext-multibytecodec-clean
+
+
+# _codecs_cn
+PYEXT_CODECS_CN_SRCS += Modules/cjkcodecs/_codecs_cn.c
+
+PYEXT_CODECS_CN_LOBJS = $(PYEXT_CODECS_CN_SRCS:.c=.lo)
+PYEXT_CODECS_CN_OBJS = $(PYEXT_CODECS_CN_SRCS:.c=.o)
+
+PYEXT_CODECS_CN_SHARED = pyext/_codecs_cn$(OS_LIB_SUFFIX)
+PYEXT_CODECS_CN_STATIC = pyext/_codecs_cn$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CODECS_CN_SHARED): $(PYEXT_CODECS_CN_LOBJS)
+$(PYEXT_CODECS_CN_STATIC): $(PYEXT_CODECS_CN_OBJS)
+
+pyext-codecs_cn-shared: $(PYEXT_CODECS_CN_SHARED)
+pyext-codecs_cn-static: $(PYEXT_CODECS_CN_STATIC)
+
+pyext-codecs_cn-clean:
+ rm -f $(PYEXT_CODECS_CN_LOBJS)
+ rm -f $(PYEXT_CODECS_CN_OBJS)
+ rm -f $(PYEXT_CODECS_CN_SHARED)
+ rm -f $(PYEXT_CODECS_CN_STATIC)
+
+clean: pyext-codecs_cn-clean
+
+.PHONY: pyext-codecs_cn-shared
+.PHONY: pyext-codecs_cn-static
+.PHONY: pyext-codecs_cn-clean
+
+
+# _codecs_hk
+PYEXT_CODECS_HK_SRCS += Modules/cjkcodecs/_codecs_hk.c
+
+PYEXT_CODECS_HK_LOBJS = $(PYEXT_CODECS_HK_SRCS:.c=.lo)
+PYEXT_CODECS_HK_OBJS = $(PYEXT_CODECS_HK_SRCS:.c=.o)
+
+PYEXT_CODECS_HK_SHARED = pyext/_codecs_hk$(OS_LIB_SUFFIX)
+PYEXT_CODECS_HK_STATIC = pyext/_codecs_hk$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CODECS_HK_SHARED): $(PYEXT_CODECS_HK_LOBJS)
+$(PYEXT_CODECS_HK_STATIC): $(PYEXT_CODECS_HK_OBJS)
+
+pyext-codecs_hk-shared: $(PYEXT_CODECS_HK_SHARED)
+pyext-codecs_hk-static: $(PYEXT_CODECS_HK_STATIC)
+
+pyext-codecs_hk-clean:
+ rm -f $(PYEXT_CODECS_HK_LOBJS)
+ rm -f $(PYEXT_CODECS_HK_OBJS)
+ rm -f $(PYEXT_CODECS_HK_SHARED)
+ rm -f $(PYEXT_CODECS_HK_STATIC)
+
+clean: pyext-codecs_hk-clean
+
+.PHONY: pyext-codecs_hk-shared
+.PHONY: pyext-codecs_hk-static
+.PHONY: pyext-codecs_hk-clean
+
+
+# _codecs_jp
+PYEXT_CODECS_JP_SRCS += Modules/cjkcodecs/_codecs_jp.c
+
+PYEXT_CODECS_JP_LOBJS = $(PYEXT_CODECS_JP_SRCS:.c=.lo)
+PYEXT_CODECS_JP_OBJS = $(PYEXT_CODECS_JP_SRCS:.c=.o)
+
+PYEXT_CODECS_JP_SHARED = pyext/_codecs_jp$(OS_LIB_SUFFIX)
+PYEXT_CODECS_JP_STATIC = pyext/_codecs_jp$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CODECS_JP_SHARED): $(PYEXT_CODECS_JP_LOBJS)
+$(PYEXT_CODECS_JP_STATIC): $(PYEXT_CODECS_JP_OBJS)
+
+pyext-codecs_jp-shared: $(PYEXT_CODECS_JP_SHARED)
+pyext-codecs_jp-static: $(PYEXT_CODECS_JP_STATIC)
+
+pyext-codecs_jp-clean:
+ rm -f $(PYEXT_CODECS_JP_LOBJS)
+ rm -f $(PYEXT_CODECS_JP_OBJS)
+ rm -f $(PYEXT_CODECS_JP_SHARED)
+ rm -f $(PYEXT_CODECS_JP_STATIC)
+
+clean: pyext-codecs_jp-clean
+
+.PHONY: pyext-codecs_jp-shared
+.PHONY: pyext-codecs_jp-static
+.PHONY: pyext-codecs_jp-clean
+
+
+# _codecs_kr
+PYEXT_CODECS_KR_SRCS += Modules/cjkcodecs/_codecs_kr.c
+
+PYEXT_CODECS_KR_LOBJS = $(PYEXT_CODECS_KR_SRCS:.c=.lo)
+PYEXT_CODECS_KR_OBJS = $(PYEXT_CODECS_KR_SRCS:.c=.o)
+
+PYEXT_CODECS_KR_SHARED = pyext/_codecs_kr$(OS_LIB_SUFFIX)
+PYEXT_CODECS_KR_STATIC = pyext/_codecs_kr$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CODECS_KR_SHARED): $(PYEXT_CODECS_KR_LOBJS)
+$(PYEXT_CODECS_KR_STATIC): $(PYEXT_CODECS_KR_OBJS)
+
+pyext-codecs_kr-shared: $(PYEXT_CODECS_KR_SHARED)
+pyext-codecs_kr-static: $(PYEXT_CODECS_KR_STATIC)
+
+pyext-codecs_kr-clean:
+ rm -f $(PYEXT_CODECS_KR_LOBJS)
+ rm -f $(PYEXT_CODECS_KR_OBJS)
+ rm -f $(PYEXT_CODECS_KR_SHARED)
+ rm -f $(PYEXT_CODECS_KR_STATIC)
+
+clean: pyext-codecs_kr-clean
+
+.PHONY: pyext-codecs_kr-shared
+.PHONY: pyext-codecs_kr-static
+.PHONY: pyext-codecs_kr-clean
+
+
+# _codecs_tw
+PYEXT_CODECS_TW_SRCS += Modules/cjkcodecs/_codecs_tw.c
+
+PYEXT_CODECS_TW_LOBJS = $(PYEXT_CODECS_TW_SRCS:.c=.lo)
+PYEXT_CODECS_TW_OBJS = $(PYEXT_CODECS_TW_SRCS:.c=.o)
+
+PYEXT_CODECS_TW_SHARED = pyext/_codecs_tw$(OS_LIB_SUFFIX)
+PYEXT_CODECS_TW_STATIC = pyext/_codecs_tw$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CODECS_TW_SHARED): $(PYEXT_CODECS_TW_LOBJS)
+$(PYEXT_CODECS_TW_STATIC): $(PYEXT_CODECS_TW_OBJS)
+
+pyext-codecs_tw-shared: $(PYEXT_CODECS_TW_SHARED)
+pyext-codecs_tw-static: $(PYEXT_CODECS_TW_STATIC)
+
+pyext-codecs_tw-clean:
+ rm -f $(PYEXT_CODECS_TW_LOBJS)
+ rm -f $(PYEXT_CODECS_TW_OBJS)
+ rm -f $(PYEXT_CODECS_TW_SHARED)
+ rm -f $(PYEXT_CODECS_TW_STATIC)
+
+clean: pyext-codecs_tw-clean
+
+.PHONY: pyext-codecs_tw-shared
+.PHONY: pyext-codecs_tw-static
+.PHONY: pyext-codecs_tw-clean
+
+
+# _codecs_iso2022
+PYEXT_CODECS_ISO2022_SRCS += Modules/cjkcodecs/_codecs_iso2022.c
+
+PYEXT_CODECS_ISO2022_LOBJS = $(PYEXT_CODECS_ISO2022_SRCS:.c=.lo)
+PYEXT_CODECS_ISO2022_OBJS = $(PYEXT_CODECS_ISO2022_SRCS:.c=.o)
+
+PYEXT_CODECS_ISO2022_SHARED = pyext/_codecs_iso2022$(OS_LIB_SUFFIX)
+PYEXT_CODECS_ISO2022_STATIC = pyext/_codecs_iso2022$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CODECS_ISO2022_SHARED): $(PYEXT_CODECS_ISO2022_LOBJS)
+$(PYEXT_CODECS_ISO2022_STATIC): $(PYEXT_CODECS_ISO2022_OBJS)
+
+pyext-codecs_iso2022-shared: $(PYEXT_CODECS_ISO2022_SHARED)
+pyext-codecs_iso2022-static: $(PYEXT_CODECS_ISO2022_STATIC)
+
+pyext-codecs_iso2022-clean:
+ rm -f $(PYEXT_CODECS_ISO2022_LOBJS)
+ rm -f $(PYEXT_CODECS_ISO2022_OBJS)
+ rm -f $(PYEXT_CODECS_ISO2022_SHARED)
+ rm -f $(PYEXT_CODECS_ISO2022_STATIC)
+
+clean: pyext-codecs_iso2022-clean
+
+.PHONY: pyext-codecs_iso2022-shared
+.PHONY: pyext-codecs_iso2022-static
+.PHONY: pyext-codecs_iso2022-clean
+
+
+# _bisect
+PYEXT_BISECT_SRCS += Modules/_bisectmodule.c
+
+PYEXT_BISECT_LOBJS = $(PYEXT_BISECT_SRCS:.c=.lo)
+PYEXT_BISECT_OBJS = $(PYEXT_BISECT_SRCS:.c=.o)
+
+PYEXT_BISECT_SHARED = pyext/_bisect$(OS_LIB_SUFFIX)
+PYEXT_BISECT_STATIC = pyext/_bisect$(OS_ARCHIVE_EXT)
+
+$(PYEXT_BISECT_SHARED): $(PYEXT_BISECT_LOBJS)
+$(PYEXT_BISECT_STATIC): $(PYEXT_BISECT_OBJS)
+
+pyext-bisect-shared: $(PYEXT_BISECT_SHARED)
+pyext-bisect-static: $(PYEXT_BISECT_STATIC)
+
+pyext-bisect-clean:
+ rm -f $(PYEXT_BISECT_LOBJS)
+ rm -f $(PYEXT_BISECT_OBJS)
+ rm -f $(PYEXT_BISECT_SHARED)
+ rm -f $(PYEXT_BISECT_STATIC)
+
+clean: pyext-bisect-clean
+
+.PHONY: pyext-bisect-shared
+.PHONY: pyext-bisect-static
+.PHONY: pyext-bisect-clean
+
+
+# _collections
+PYEXT_COLLECTIONS_SRCS += Modules/_collectionsmodule.c
+
+PYEXT_COLLECTIONS_LOBJS = $(PYEXT_COLLECTIONS_SRCS:.c=.lo)
+PYEXT_COLLECTIONS_OBJS = $(PYEXT_COLLECTIONS_SRCS:.c=.o)
+
+PYEXT_COLLECTIONS_SHARED = pyext/_collections$(OS_LIB_SUFFIX)
+PYEXT_COLLECTIONS_STATIC = pyext/_collections$(OS_ARCHIVE_EXT)
+
+$(PYEXT_COLLECTIONS_SHARED): $(PYEXT_COLLECTIONS_LOBJS)
+$(PYEXT_COLLECTIONS_STATIC): $(PYEXT_COLLECTIONS_OBJS)
+
+pyext-collections-shared: $(PYEXT_COLLECTIONS_SHARED)
+pyext-collections-static: $(PYEXT_COLLECTIONS_STATIC)
+
+pyext-collections-clean:
+ rm -f $(PYEXT_COLLECTIONS_LOBJS)
+ rm -f $(PYEXT_COLLECTIONS_OBJS)
+ rm -f $(PYEXT_COLLECTIONS_SHARED)
+ rm -f $(PYEXT_COLLECTIONS_STATIC)
+
+clean: pyext-collections-clean
+
+.PHONY: pyext-collections-shared
+.PHONY: pyext-collections-static
+.PHONY: pyext-collections-clean
+
+
+# _csv
+PYEXT_CSV_SRCS += Modules/_csv.c
+
+PYEXT_CSV_LOBJS = $(PYEXT_CSV_SRCS:.c=.lo)
+PYEXT_CSV_OBJS = $(PYEXT_CSV_SRCS:.c=.o)
+
+PYEXT_CSV_SHARED = pyext/_csv$(OS_LIB_SUFFIX)
+PYEXT_CSV_STATIC = pyext/_csv$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CSV_SHARED): $(PYEXT_CSV_LOBJS)
+$(PYEXT_CSV_STATIC): $(PYEXT_CSV_OBJS)
+
+pyext-csv-shared: $(PYEXT_CSV_SHARED)
+pyext-csv-static: $(PYEXT_CSV_STATIC)
+
+pyext-csv-clean:
+ rm -f $(PYEXT_CSV_LOBJS)
+ rm -f $(PYEXT_CSV_OBJS)
+ rm -f $(PYEXT_CSV_SHARED)
+ rm -f $(PYEXT_CSV_STATIC)
+
+clean: pyext-csv-clean
+
+.PHONY: pyext-csv-shared
+.PHONY: pyext-csv-static
+.PHONY: pyext-csv-clean
+
+
+# _ctypes_test
+PYEXT_CTYPES_TEST_SRCS += Modules/_ctypes/_ctypes_test.c
+
+PYEXT_CTYPES_TEST_LOBJS = $(PYEXT_CTYPES_TEST_SRCS:.c=.lo)
+PYEXT_CTYPES_TEST_OBJS = $(PYEXT_CTYPES_TEST_SRCS:.c=.o)
+
+PYEXT_CTYPES_TEST_SHARED = pyext/_ctypes_test$(OS_LIB_SUFFIX)
+PYEXT_CTYPES_TEST_STATIC = pyext/_ctypes_test$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CTYPES_TEST_SHARED): $(PYEXT_CTYPES_TEST_LOBJS)
+$(PYEXT_CTYPES_TEST_STATIC): $(PYEXT_CTYPES_TEST_OBJS)
+
+pyext-ctypes_test-shared: $(PYEXT_CTYPES_TEST_SHARED)
+pyext-ctypes_test-static: $(PYEXT_CTYPES_TEST_STATIC)
+
+pyext-ctypes_test-clean:
+ rm -f $(PYEXT_CTYPES_TEST_LOBJS)
+ rm -f $(PYEXT_CTYPES_TEST_OBJS)
+ rm -f $(PYEXT_CTYPES_TEST_SHARED)
+ rm -f $(PYEXT_CTYPES_TEST_STATIC)
+
+clean: pyext-ctypes_test-clean
+
+.PHONY: pyext-ctypes_test-shared
+.PHONY: pyext-ctypes_test-static
+.PHONY: pyext-ctypes_test-clean
+
+
+# _functools
+PYEXT_FUNCTOOLS_SRCS += Modules/_functoolsmodule.c
+
+PYEXT_FUNCTOOLS_LOBJS = $(PYEXT_FUNCTOOLS_SRCS:.c=.lo)
+PYEXT_FUNCTOOLS_OBJS = $(PYEXT_FUNCTOOLS_SRCS:.c=.o)
+
+PYEXT_FUNCTOOLS_SHARED = pyext/_functools$(OS_LIB_SUFFIX)
+PYEXT_FUNCTOOLS_STATIC = pyext/_functools$(OS_ARCHIVE_EXT)
+
+$(PYEXT_FUNCTOOLS_SHARED): $(PYEXT_FUNCTOOLS_LOBJS)
+$(PYEXT_FUNCTOOLS_STATIC): $(PYEXT_FUNCTOOLS_OBJS)
+
+pyext-functools-shared: $(PYEXT_FUNCTOOLS_SHARED)
+pyext-functools-static: $(PYEXT_FUNCTOOLS_STATIC)
+
+pyext-functools-clean:
+ rm -f $(PYEXT_FUNCTOOLS_LOBJS)
+ rm -f $(PYEXT_FUNCTOOLS_OBJS)
+ rm -f $(PYEXT_FUNCTOOLS_SHARED)
+ rm -f $(PYEXT_FUNCTOOLS_STATIC)
+
+clean: pyext-functools-clean
+
+.PHONY: pyext-functools-shared
+.PHONY: pyext-functools-static
+.PHONY: pyext-functools-clean
+
+
+# _heapq
+PYEXT_HEAPQ_SRCS += Modules/_heapqmodule.c
+
+PYEXT_HEAPQ_LOBJS = $(PYEXT_HEAPQ_SRCS:.c=.lo)
+PYEXT_HEAPQ_OBJS = $(PYEXT_HEAPQ_SRCS:.c=.o)
+
+PYEXT_HEAPQ_SHARED = pyext/_heapq$(OS_LIB_SUFFIX)
+PYEXT_HEAPQ_STATIC = pyext/_heapq$(OS_ARCHIVE_EXT)
+
+$(PYEXT_HEAPQ_SHARED): $(PYEXT_HEAPQ_LOBJS)
+$(PYEXT_HEAPQ_STATIC): $(PYEXT_HEAPQ_OBJS)
+
+pyext-heapq-shared: $(PYEXT_HEAPQ_SHARED)
+pyext-heapq-static: $(PYEXT_HEAPQ_STATIC)
+
+pyext-heapq-clean:
+ rm -f $(PYEXT_HEAPQ_LOBJS)
+ rm -f $(PYEXT_HEAPQ_OBJS)
+ rm -f $(PYEXT_HEAPQ_SHARED)
+ rm -f $(PYEXT_HEAPQ_STATIC)
+
+clean: pyext-heapq-clean
+
+.PHONY: pyext-heapq-shared
+.PHONY: pyext-heapq-static
+.PHONY: pyext-heapq-clean
+
+
+# _hotshot
+PYEXT_HOTSHOT_SRCS += Modules/_hotshot.c
+
+PYEXT_HOTSHOT_LOBJS = $(PYEXT_HOTSHOT_SRCS:.c=.lo)
+PYEXT_HOTSHOT_OBJS = $(PYEXT_HOTSHOT_SRCS:.c=.o)
+
+PYEXT_HOTSHOT_SHARED = pyext/_hotshot$(OS_LIB_SUFFIX)
+PYEXT_HOTSHOT_STATIC = pyext/_hotshot$(OS_ARCHIVE_EXT)
+
+$(PYEXT_HOTSHOT_SHARED): $(PYEXT_HOTSHOT_LOBJS)
+$(PYEXT_HOTSHOT_STATIC): $(PYEXT_HOTSHOT_OBJS)
+
+pyext-hotshot-shared: $(PYEXT_HOTSHOT_SHARED)
+pyext-hotshot-static: $(PYEXT_HOTSHOT_STATIC)
+
+pyext-hotshot-clean:
+ rm -f $(PYEXT_HOTSHOT_LOBJS)
+ rm -f $(PYEXT_HOTSHOT_OBJS)
+ rm -f $(PYEXT_HOTSHOT_SHARED)
+ rm -f $(PYEXT_HOTSHOT_STATIC)
+
+clean: pyext-hotshot-clean
+
+.PHONY: pyext-hotshot-shared
+.PHONY: pyext-hotshot-static
+.PHONY: pyext-hotshot-clean
+
+
+# _json
+PYEXT_JSON_SRCS += Modules/_json.c
+
+PYEXT_JSON_LOBJS = $(PYEXT_JSON_SRCS:.c=.lo)
+PYEXT_JSON_OBJS = $(PYEXT_JSON_SRCS:.c=.o)
+
+PYEXT_JSON_SHARED = pyext/_json$(OS_LIB_SUFFIX)
+PYEXT_JSON_STATIC = pyext/_json$(OS_ARCHIVE_EXT)
+
+$(PYEXT_JSON_SHARED): $(PYEXT_JSON_LOBJS)
+$(PYEXT_JSON_STATIC): $(PYEXT_JSON_OBJS)
+
+pyext-json-shared: $(PYEXT_JSON_SHARED)
+pyext-json-static: $(PYEXT_JSON_STATIC)
+
+pyext-json-clean:
+ rm -f $(PYEXT_JSON_LOBJS)
+ rm -f $(PYEXT_JSON_OBJS)
+ rm -f $(PYEXT_JSON_SHARED)
+ rm -f $(PYEXT_JSON_STATIC)
+
+clean: pyext-json-clean
+
+.PHONY: pyext-json-shared
+.PHONY: pyext-json-static
+.PHONY: pyext-json-clean
+
+
+# _locale
+PYEXT_LOCALE_SRCS += Modules/_localemodule.c
+
+PYEXT_LOCALE_LOBJS = $(PYEXT_LOCALE_SRCS:.c=.lo)
+PYEXT_LOCALE_OBJS = $(PYEXT_LOCALE_SRCS:.c=.o)
+
+PYEXT_LOCALE_SHARED = pyext/_locale$(OS_LIB_SUFFIX)
+PYEXT_LOCALE_STATIC = pyext/_locale$(OS_ARCHIVE_EXT)
+
+$(PYEXT_LOCALE_SHARED): $(PYEXT_LOCALE_LOBJS)
+$(PYEXT_LOCALE_STATIC): $(PYEXT_LOCALE_OBJS)
+
+pyext-locale-shared: $(PYEXT_LOCALE_SHARED)
+pyext-locale-static: $(PYEXT_LOCALE_STATIC)
+
+pyext-locale-clean:
+ rm -f $(PYEXT_LOCALE_LOBJS)
+ rm -f $(PYEXT_LOCALE_OBJS)
+ rm -f $(PYEXT_LOCALE_SHARED)
+ rm -f $(PYEXT_LOCALE_STATIC)
+
+clean: pyext-locale-clean
+
+.PHONY: pyext-locale-shared
+.PHONY: pyext-locale-static
+.PHONY: pyext-locale-clean
+
+
+# _lsprof
+PYEXT_LSPROF_SRCS += Modules/_lsprof.c
+PYEXT_LSPROF_SRCS += Modules/rotatingtree.c
+
+PYEXT_LSPROF_LOBJS = $(PYEXT_LSPROF_SRCS:.c=.lo)
+PYEXT_LSPROF_OBJS = $(PYEXT_LSPROF_SRCS:.c=.o)
+
+PYEXT_LSPROF_SHARED = pyext/_lsprof$(OS_LIB_SUFFIX)
+PYEXT_LSPROF_STATIC = pyext/_lsprof$(OS_ARCHIVE_EXT)
+
+$(PYEXT_LSPROF_SHARED): $(PYEXT_LSPROF_LOBJS)
+$(PYEXT_LSPROF_STATIC): $(PYEXT_LSPROF_OBJS)
+
+pyext-lsprof-shared: $(PYEXT_LSPROF_SHARED)
+pyext-lsprof-static: $(PYEXT_LSPROF_STATIC)
+
+pyext-lsprof-clean:
+ rm -f $(PYEXT_LSPROF_LOBJS)
+ rm -f $(PYEXT_LSPROF_OBJS)
+ rm -f $(PYEXT_LSPROF_SHARED)
+ rm -f $(PYEXT_LSPROF_STATIC)
+
+clean: pyext-lsprof-clean
+
+.PHONY: pyext-lsprof-shared
+.PHONY: pyext-lsprof-static
+.PHONY: pyext-lsprof-clean
+
+
+# _random
+PYEXT_RANDOM_SRCS += Modules/_randommodule.c
+
+PYEXT_RANDOM_LOBJS = $(PYEXT_RANDOM_SRCS:.c=.lo)
+PYEXT_RANDOM_OBJS = $(PYEXT_RANDOM_SRCS:.c=.o)
+
+PYEXT_RANDOM_SHARED = pyext/_random$(OS_LIB_SUFFIX)
+PYEXT_RANDOM_STATIC = pyext/_random$(OS_ARCHIVE_EXT)
+
+$(PYEXT_RANDOM_SHARED): $(PYEXT_RANDOM_LOBJS)
+$(PYEXT_RANDOM_STATIC): $(PYEXT_RANDOM_OBJS)
+
+pyext-random-shared: $(PYEXT_RANDOM_SHARED)
+pyext-random-static: $(PYEXT_RANDOM_STATIC)
+
+pyext-random-clean:
+ rm -f $(PYEXT_RANDOM_LOBJS)
+ rm -f $(PYEXT_RANDOM_OBJS)
+ rm -f $(PYEXT_RANDOM_SHARED)
+ rm -f $(PYEXT_RANDOM_STATIC)
+
+clean: pyext-random-clean
+
+.PHONY: pyext-random-shared
+.PHONY: pyext-random-static
+.PHONY: pyext-random-clean
+
+
+# _socket
+PYEXT_SOCKET_SRCS += Modules/socketmodule.c
+PYEXT_SOCKET_SRCS += Modules/timemodule.c
+
+PYEXT_SOCKET_LOBJS = $(PYEXT_SOCKET_SRCS:.c=.lo)
+PYEXT_SOCKET_OBJS = $(PYEXT_SOCKET_SRCS:.c=.o)
+
+PYEXT_SOCKET_SHARED = pyext/_socket$(OS_LIB_SUFFIX)
+PYEXT_SOCKET_STATIC = pyext/_socket$(OS_ARCHIVE_EXT)
+
+$(PYEXT_SOCKET_SHARED): $(PYEXT_SOCKET_LOBJS)
+$(PYEXT_SOCKET_STATIC): $(PYEXT_SOCKET_OBJS)
+
+pyext-socket-shared: $(PYEXT_SOCKET_SHARED)
+pyext-socket-static: $(PYEXT_SOCKET_STATIC)
+
+pyext-socket-clean:
+ rm -f $(PYEXT_SOCKET_LOBJS)
+ rm -f $(PYEXT_SOCKET_OBJS)
+ rm -f $(PYEXT_SOCKET_SHARED)
+ rm -f $(PYEXT_SOCKET_STATIC)
+
+clean: pyext-socket-clean
+
+.PHONY: pyext-socket-shared
+.PHONY: pyext-socket-static
+.PHONY: pyext-socket-clean
+
+
+# _struct
+PYEXT_STRUCT_SRCS += Modules/_struct.c
+
+PYEXT_STRUCT_LOBJS = $(PYEXT_STRUCT_SRCS:.c=.lo)
+PYEXT_STRUCT_OBJS = $(PYEXT_STRUCT_SRCS:.c=.o)
+
+PYEXT_STRUCT_SHARED = pyext/_struct$(OS_LIB_SUFFIX)
+PYEXT_STRUCT_STATIC = pyext/_struct$(OS_ARCHIVE_EXT)
+
+$(PYEXT_STRUCT_SHARED): $(PYEXT_STRUCT_LOBJS)
+$(PYEXT_STRUCT_STATIC): $(PYEXT_STRUCT_OBJS)
+
+pyext-struct-shared: $(PYEXT_STRUCT_SHARED)
+pyext-struct-static: $(PYEXT_STRUCT_STATIC)
+
+pyext-struct-clean:
+ rm -f $(PYEXT_STRUCT_LOBJS)
+ rm -f $(PYEXT_STRUCT_OBJS)
+ rm -f $(PYEXT_STRUCT_SHARED)
+ rm -f $(PYEXT_STRUCT_STATIC)
+
+clean: pyext-struct-clean
+
+.PHONY: pyext-struct-shared
+.PHONY: pyext-struct-static
+.PHONY: pyext-struct-clean
+
+
+# _testcapi
+PYEXT_TESTCAPI_SRCS += Modules/_testcapimodule.c
+
+PYEXT_TESTCAPI_LOBJS = $(PYEXT_TESTCAPI_SRCS:.c=.lo)
+PYEXT_TESTCAPI_OBJS = $(PYEXT_TESTCAPI_SRCS:.c=.o)
+
+PYEXT_TESTCAPI_SHARED = pyext/_testcapi$(OS_LIB_SUFFIX)
+PYEXT_TESTCAPI_STATIC = pyext/_testcapi$(OS_ARCHIVE_EXT)
+
+$(PYEXT_TESTCAPI_SHARED): $(PYEXT_TESTCAPI_LOBJS)
+$(PYEXT_TESTCAPI_STATIC): $(PYEXT_TESTCAPI_OBJS)
+
+pyext-testcapi-shared: $(PYEXT_TESTCAPI_SHARED)
+pyext-testcapi-static: $(PYEXT_TESTCAPI_STATIC)
+
+pyext-testcapi-clean:
+ rm -f $(PYEXT_TESTCAPI_LOBJS)
+ rm -f $(PYEXT_TESTCAPI_OBJS)
+ rm -f $(PYEXT_TESTCAPI_SHARED)
+ rm -f $(PYEXT_TESTCAPI_STATIC)
+
+clean: pyext-testcapi-clean
+
+.PHONY: pyext-testcapi-shared
+.PHONY: pyext-testcapi-static
+.PHONY: pyext-testcapi-clean
+
+
+# array
+PYEXT_ARRAY_SRCS += Modules/arraymodule.c
+
+PYEXT_ARRAY_LOBJS = $(PYEXT_ARRAY_SRCS:.c=.lo)
+PYEXT_ARRAY_OBJS = $(PYEXT_ARRAY_SRCS:.c=.o)
+
+PYEXT_ARRAY_SHARED = pyext/array$(OS_LIB_SUFFIX)
+PYEXT_ARRAY_STATIC = pyext/array$(OS_ARCHIVE_EXT)
+
+$(PYEXT_ARRAY_SHARED): $(PYEXT_ARRAY_LOBJS)
+$(PYEXT_ARRAY_STATIC): $(PYEXT_ARRAY_OBJS)
+
+pyext-array-shared: $(PYEXT_ARRAY_SHARED)
+pyext-array-static: $(PYEXT_ARRAY_STATIC)
+
+pyext-array-clean:
+ rm -f $(PYEXT_ARRAY_LOBJS)
+ rm -f $(PYEXT_ARRAY_OBJS)
+ rm -f $(PYEXT_ARRAY_SHARED)
+ rm -f $(PYEXT_ARRAY_STATIC)
+
+clean: pyext-array-clean
+
+.PHONY: pyext-array-shared
+.PHONY: pyext-array-static
+.PHONY: pyext-array-clean
+
+
+# audioop
+PYEXT_AUDIOOP_SRCS += Modules/audioop.c
+
+PYEXT_AUDIOOP_LOBJS = $(PYEXT_AUDIOOP_SRCS:.c=.lo)
+PYEXT_AUDIOOP_OBJS = $(PYEXT_AUDIOOP_SRCS:.c=.o)
+
+PYEXT_AUDIOOP_SHARED = pyext/audioop$(OS_LIB_SUFFIX)
+PYEXT_AUDIOOP_STATIC = pyext/audioop$(OS_ARCHIVE_EXT)
+
+$(PYEXT_AUDIOOP_SHARED): $(PYEXT_AUDIOOP_LOBJS)
+$(PYEXT_AUDIOOP_STATIC): $(PYEXT_AUDIOOP_OBJS)
+
+pyext-audioop-shared: $(PYEXT_AUDIOOP_SHARED)
+pyext-audioop-static: $(PYEXT_AUDIOOP_STATIC)
+
+pyext-audioop-clean:
+ rm -f $(PYEXT_AUDIOOP_LOBJS)
+ rm -f $(PYEXT_AUDIOOP_OBJS)
+ rm -f $(PYEXT_AUDIOOP_SHARED)
+ rm -f $(PYEXT_AUDIOOP_STATIC)
+
+clean: pyext-audioop-clean
+
+.PHONY: pyext-audioop-shared
+.PHONY: pyext-audioop-static
+.PHONY: pyext-audioop-clean
+
+
+# binascii
+PYEXT_BINASCII_SRCS += Modules/binascii.c
+
+PYEXT_BINASCII_LOBJS = $(PYEXT_BINASCII_SRCS:.c=.lo)
+PYEXT_BINASCII_OBJS = $(PYEXT_BINASCII_SRCS:.c=.o)
+
+PYEXT_BINASCII_SHARED = pyext/binascii$(OS_LIB_SUFFIX)
+PYEXT_BINASCII_STATIC = pyext/binascii$(OS_ARCHIVE_EXT)
+
+$(PYEXT_BINASCII_SHARED): $(PYEXT_BINASCII_LOBJS)
+$(PYEXT_BINASCII_STATIC): $(PYEXT_BINASCII_OBJS)
+
+pyext-binascii-shared: $(PYEXT_BINASCII_SHARED)
+pyext-binascii-static: $(PYEXT_BINASCII_STATIC)
+
+pyext-binascii-clean:
+ rm -f $(PYEXT_BINASCII_LOBJS)
+ rm -f $(PYEXT_BINASCII_OBJS)
+ rm -f $(PYEXT_BINASCII_SHARED)
+ rm -f $(PYEXT_BINASCII_STATIC)
+
+clean: pyext-binascii-clean
+
+.PHONY: pyext-binascii-shared
+.PHONY: pyext-binascii-static
+.PHONY: pyext-binascii-clean
+
+
+# cPickle
+PYEXT_CPICKLE_SRCS += Modules/cPickle.c
+
+PYEXT_CPICKLE_LOBJS = $(PYEXT_CPICKLE_SRCS:.c=.lo)
+PYEXT_CPICKLE_OBJS = $(PYEXT_CPICKLE_SRCS:.c=.o)
+
+PYEXT_CPICKLE_SHARED = pyext/cPickle$(OS_LIB_SUFFIX)
+PYEXT_CPICKLE_STATIC = pyext/cPickle$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CPICKLE_SHARED): $(PYEXT_CPICKLE_LOBJS)
+$(PYEXT_CPICKLE_STATIC): $(PYEXT_CPICKLE_OBJS)
+
+pyext-cPickle-shared: $(PYEXT_CPICKLE_SHARED)
+pyext-cPickle-static: $(PYEXT_CPICKLE_STATIC)
+
+pyext-cPickle-clean:
+ rm -f $(PYEXT_CPICKLE_LOBJS)
+ rm -f $(PYEXT_CPICKLE_OBJS)
+ rm -f $(PYEXT_CPICKLE_SHARED)
+ rm -f $(PYEXT_CPICKLE_STATIC)
+
+clean: pyext-cPickle-clean
+
+.PHONY: pyext-cPickle-shared
+.PHONY: pyext-cPickle-static
+.PHONY: pyext-cPickle-clean
+
+
+# cStringIO
+PYEXT_CSTRINGIO_SRCS += Modules/cStringIO.c
+
+PYEXT_CSTRINGIO_LOBJS = $(PYEXT_CSTRINGIO_SRCS:.c=.lo)
+PYEXT_CSTRINGIO_OBJS = $(PYEXT_CSTRINGIO_SRCS:.c=.o)
+
+PYEXT_CSTRINGIO_SHARED = pyext/cStringIO$(OS_LIB_SUFFIX)
+PYEXT_CSTRINGIO_STATIC = pyext/cStringIO$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CSTRINGIO_SHARED): $(PYEXT_CSTRINGIO_LOBJS)
+$(PYEXT_CSTRINGIO_STATIC): $(PYEXT_CSTRINGIO_OBJS)
+
+pyext-cStringIO-shared: $(PYEXT_CSTRINGIO_SHARED)
+pyext-cStringIO-static: $(PYEXT_CSTRINGIO_STATIC)
+
+pyext-cStringIO-clean:
+ rm -f $(PYEXT_CSTRINGIO_LOBJS)
+ rm -f $(PYEXT_CSTRINGIO_OBJS)
+ rm -f $(PYEXT_CSTRINGIO_SHARED)
+ rm -f $(PYEXT_CSTRINGIO_STATIC)
+
+clean: pyext-cStringIO-clean
+
+.PHONY: pyext-cStringIO-shared
+.PHONY: pyext-cStringIO-static
+.PHONY: pyext-cStringIO-clean
+
+
+# cmath
+PYEXT_CMATH_SRCS += Modules/cmathmodule.c
+PYEXT_CMATH_SRCS += Modules/_math.c
+
+PYEXT_CMATH_LOBJS = $(PYEXT_CMATH_SRCS:.c=.lo)
+PYEXT_CMATH_OBJS = $(PYEXT_CMATH_SRCS:.c=.o)
+
+PYEXT_CMATH_SHARED = pyext/cmath$(OS_LIB_SUFFIX)
+PYEXT_CMATH_STATIC = pyext/cmath$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CMATH_SHARED): $(PYEXT_CMATH_LOBJS)
+$(PYEXT_CMATH_STATIC): $(PYEXT_CMATH_OBJS)
+
+pyext-cmath-shared: $(PYEXT_CMATH_SHARED)
+pyext-cmath-static: $(PYEXT_CMATH_STATIC)
+
+pyext-cmath-clean:
+ rm -f $(PYEXT_CMATH_LOBJS)
+ rm -f $(PYEXT_CMATH_OBJS)
+ rm -f $(PYEXT_CMATH_SHARED)
+ rm -f $(PYEXT_CMATH_STATIC)
+
+clean: pyext-cmath-clean
+
+.PHONY: pyext-cmath-shared
+.PHONY: pyext-cmath-static
+.PHONY: pyext-cmath-clean
+
+
+# crypt
+PYEXT_CRYPT_SRCS += Modules/cryptmodule.c
+
+PYEXT_CRYPT_LOBJS = $(PYEXT_CRYPT_SRCS:.c=.lo)
+PYEXT_CRYPT_OBJS = $(PYEXT_CRYPT_SRCS:.c=.o)
+
+PYEXT_CRYPT_SHARED = pyext/crypt$(OS_LIB_SUFFIX)
+PYEXT_CRYPT_STATIC = pyext/crypt$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CRYPT_SHARED): $(PYEXT_CRYPT_LOBJS)
+$(PYEXT_CRYPT_STATIC): $(PYEXT_CRYPT_OBJS)
+
+pyext-crypt-shared: $(PYEXT_CRYPT_SHARED)
+pyext-crypt-static: $(PYEXT_CRYPT_STATIC)
+
+pyext-crypt-clean:
+ rm -f $(PYEXT_CRYPT_LOBJS)
+ rm -f $(PYEXT_CRYPT_OBJS)
+ rm -f $(PYEXT_CRYPT_SHARED)
+ rm -f $(PYEXT_CRYPT_STATIC)
+
+clean: pyext-crypt-clean
+
+.PHONY: pyext-crypt-shared
+.PHONY: pyext-crypt-static
+.PHONY: pyext-crypt-clean
+
+
+# datetime
+PYEXT_DATETIME_SRCS += Modules/datetimemodule.c
+PYEXT_DATETIME_SRCS += Modules/timemodule.c
+
+PYEXT_DATETIME_LOBJS = $(PYEXT_DATETIME_SRCS:.c=.lo)
+PYEXT_DATETIME_OBJS = $(PYEXT_DATETIME_SRCS:.c=.o)
+
+PYEXT_DATETIME_SHARED = pyext/datetime$(OS_LIB_SUFFIX)
+PYEXT_DATETIME_STATIC = pyext/datetime$(OS_ARCHIVE_EXT)
+
+$(PYEXT_DATETIME_SHARED): $(PYEXT_DATETIME_LOBJS)
+$(PYEXT_DATETIME_STATIC): $(PYEXT_DATETIME_OBJS)
+
+pyext-datetime-shared: $(PYEXT_DATETIME_SHARED)
+pyext-datetime-static: $(PYEXT_DATETIME_STATIC)
+
+pyext-datetime-clean:
+ rm -f $(PYEXT_DATETIME_LOBJS)
+ rm -f $(PYEXT_DATETIME_OBJS)
+ rm -f $(PYEXT_DATETIME_SHARED)
+ rm -f $(PYEXT_DATETIME_STATIC)
+
+clean: pyext-datetime-clean
+
+.PHONY: pyext-datetime-shared
+.PHONY: pyext-datetime-static
+.PHONY: pyext-datetime-clean
+
+
+# fcntl
+PYEXT_FCNTL_SRCS += Modules/fcntlmodule.c
+
+PYEXT_FCNTL_LOBJS = $(PYEXT_FCNTL_SRCS:.c=.lo)
+PYEXT_FCNTL_OBJS = $(PYEXT_FCNTL_SRCS:.c=.o)
+
+PYEXT_FCNTL_SHARED = pyext/fcntl$(OS_LIB_SUFFIX)
+PYEXT_FCNTL_STATIC = pyext/fcntl$(OS_ARCHIVE_EXT)
+
+$(PYEXT_FCNTL_SHARED): $(PYEXT_FCNTL_LOBJS)
+$(PYEXT_FCNTL_STATIC): $(PYEXT_FCNTL_OBJS)
+
+pyext-fcntl-shared: $(PYEXT_FCNTL_SHARED)
+pyext-fcntl-static: $(PYEXT_FCNTL_STATIC)
+
+pyext-fcntl-clean:
+ rm -f $(PYEXT_FCNTL_LOBJS)
+ rm -f $(PYEXT_FCNTL_OBJS)
+ rm -f $(PYEXT_FCNTL_SHARED)
+ rm -f $(PYEXT_FCNTL_STATIC)
+
+clean: pyext-fcntl-clean
+
+.PHONY: pyext-fcntl-shared
+.PHONY: pyext-fcntl-static
+.PHONY: pyext-fcntl-clean
+
+
+# future_builtins
+PYEXT_FUTURE_BUILTINS_SRCS += Modules/future_builtins.c
+
+PYEXT_FUTURE_BUILTINS_LOBJS = $(PYEXT_FUTURE_BUILTINS_SRCS:.c=.lo)
+PYEXT_FUTURE_BUILTINS_OBJS = $(PYEXT_FUTURE_BUILTINS_SRCS:.c=.o)
+
+PYEXT_FUTURE_BUILTINS_SHARED = pyext/future_builtins$(OS_LIB_SUFFIX)
+PYEXT_FUTURE_BUILTINS_STATIC = pyext/future_builtins$(OS_ARCHIVE_EXT)
+
+$(PYEXT_FUTURE_BUILTINS_SHARED):$(PYEXT_FUTURE_BUILTINS_LOBJS)
+$(PYEXT_FUTURE_BUILTINS_STATIC):$(PYEXT_FUTURE_BUILTINS_OBJS)
+
+pyext-future_builtins-shared: $(PYEXT_FUTURE_BUILTINS_SHARED)
+pyext-future_builtins-static: $(PYEXT_FUTURE_BUILTINS_STATIC)
+
+pyext-future_builtins-clean:
+ rm -f $(PYEXT_FUTURE_BUILTINS_LOBJS)
+ rm -f $(PYEXT_FUTURE_BUILTINS_OBJS)
+ rm -f $(PYEXT_FUTURE_BUILTINS_SHARED)
+ rm -f $(PYEXT_FUTURE_BUILTINS_STATIC)
+
+clean: pyext-future_builtins-clean
+
+.PHONY: pyext-future_builtins-shared
+.PHONY: pyext-future_builtins-static
+.PHONY: pyext-future_builtins-clean
+
+
+# grp
+PYEXT_GRP_SRCS += Modules/grpmodule.c
+
+PYEXT_GRP_LOBJS = $(PYEXT_GRP_SRCS:.c=.lo)
+PYEXT_GRP_OBJS = $(PYEXT_GRP_SRCS:.c=.o)
+
+PYEXT_GRP_SHARED = pyext/grp$(OS_LIB_SUFFIX)
+PYEXT_GRP_STATIC = pyext/grp$(OS_ARCHIVE_EXT)
+
+$(PYEXT_GRP_SHARED): $(PYEXT_GRP_LOBJS)
+$(PYEXT_GRP_STATIC): $(PYEXT_GRP_OBJS)
+
+pyext-grp-shared: $(PYEXT_GRP_SHARED)
+pyext-grp-static: $(PYEXT_GRP_STATIC)
+
+pyext-grp-clean:
+ rm -f $(PYEXT_GRP_LOBJS)
+ rm -f $(PYEXT_GRP_OBJS)
+ rm -f $(PYEXT_GRP_SHARED)
+ rm -f $(PYEXT_GRP_STATIC)
+
+clean: pyext-grp-clean
+
+.PHONY: pyext-grp-shared
+.PHONY: pyext-grp-static
+.PHONY: pyext-grp-clean
+
+
+# itertools
+PYEXT_ITERTOOLS_SRCS += Modules/itertoolsmodule.c
+
+PYEXT_ITERTOOLS_LOBJS = $(PYEXT_ITERTOOLS_SRCS:.c=.lo)
+PYEXT_ITERTOOLS_OBJS = $(PYEXT_ITERTOOLS_SRCS:.c=.o)
+
+PYEXT_ITERTOOLS_SHARED = pyext/itertools$(OS_LIB_SUFFIX)
+PYEXT_ITERTOOLS_STATIC = pyext/itertools$(OS_ARCHIVE_EXT)
+
+$(PYEXT_ITERTOOLS_SHARED): $(PYEXT_ITERTOOLS_LOBJS)
+$(PYEXT_ITERTOOLS_STATIC): $(PYEXT_ITERTOOLS_OBJS)
+
+pyext-itertools-shared: $(PYEXT_ITERTOOLS_SHARED)
+pyext-itertools-static: $(PYEXT_ITERTOOLS_STATIC)
+
+pyext-itertools-clean:
+ rm -f $(PYEXT_ITERTOOLS_LOBJS)
+ rm -f $(PYEXT_ITERTOOLS_OBJS)
+ rm -f $(PYEXT_ITERTOOLS_SHARED)
+ rm -f $(PYEXT_ITERTOOLS_STATIC)
+
+clean: pyext-itertools-clean
+
+.PHONY: pyext-itertools-shared
+.PHONY: pyext-itertools-static
+.PHONY: pyext-itertools-clean
+
+
+# math
+PYEXT_MATH_SRCS += Modules/mathmodule.c
+PYEXT_MATH_SRCS += Modules/_math.c
+
+PYEXT_MATH_LOBJS = $(PYEXT_MATH_SRCS:.c=.lo)
+PYEXT_MATH_OBJS = $(PYEXT_MATH_SRCS:.c=.o)
+
+PYEXT_MATH_SHARED = pyext/math$(OS_LIB_SUFFIX)
+PYEXT_MATH_STATIC = pyext/math$(OS_ARCHIVE_EXT)
+
+$(PYEXT_MATH_SHARED): $(PYEXT_MATH_LOBJS)
+$(PYEXT_MATH_STATIC): $(PYEXT_MATH_OBJS)
+
+pyext-math-shared: $(PYEXT_MATH_SHARED)
+pyext-math-static: $(PYEXT_MATH_STATIC)
+
+pyext-math-clean:
+ rm -f $(PYEXT_MATH_LOBJS)
+ rm -f $(PYEXT_MATH_OBJS)
+ rm -f $(PYEXT_MATH_SHARED)
+ rm -f $(PYEXT_MATH_STATIC)
+
+clean: pyext-math-clean
+
+.PHONY: pyext-math-shared
+.PHONY: pyext-math-static
+.PHONY: pyext-math-clean
+
+
+# mmap
+PYEXT_MMAP_SRCS += Modules/mmapmodule.c
+
+PYEXT_MMAP_LOBJS = $(PYEXT_MMAP_SRCS:.c=.lo)
+PYEXT_MMAP_OBJS = $(PYEXT_MMAP_SRCS:.c=.o)
+
+PYEXT_MMAP_SHARED = pyext/mmap$(OS_LIB_SUFFIX)
+PYEXT_MMAP_STATIC = pyext/mmap$(OS_ARCHIVE_EXT)
+
+$(PYEXT_MMAP_SHARED): $(PYEXT_MMAP_LOBJS)
+$(PYEXT_MMAP_STATIC): $(PYEXT_MMAP_OBJS)
+
+pyext-mmap-shared: $(PYEXT_MMAP_SHARED)
+pyext-mmap-static: $(PYEXT_MMAP_STATIC)
+
+pyext-mmap-clean:
+ rm -f $(PYEXT_MMAP_LOBJS)
+ rm -f $(PYEXT_MMAP_OBJS)
+ rm -f $(PYEXT_MMAP_SHARED)
+ rm -f $(PYEXT_MMAP_STATIC)
+
+clean: pyext-mmap-clean
+
+.PHONY: pyext-mmap-shared
+.PHONY: pyext-mmap-static
+.PHONY: pyext-mmap-clean
+
+
+# operator
+PYEXT_OPERATOR_SRCS += Modules/operator.c
+
+PYEXT_OPERATOR_LOBJS = $(PYEXT_OPERATOR_SRCS:.c=.lo)
+PYEXT_OPERATOR_OBJS = $(PYEXT_OPERATOR_SRCS:.c=.o)
+
+PYEXT_OPERATOR_SHARED = pyext/operator$(OS_LIB_SUFFIX)
+PYEXT_OPERATOR_STATIC = pyext/operator$(OS_ARCHIVE_EXT)
+
+$(PYEXT_OPERATOR_SHARED): $(PYEXT_OPERATOR_LOBJS)
+$(PYEXT_OPERATOR_STATIC): $(PYEXT_OPERATOR_OBJS)
+
+pyext-operator-shared: $(PYEXT_OPERATOR_SHARED)
+pyext-operator-static: $(PYEXT_OPERATOR_STATIC)
+
+pyext-operator-clean:
+ rm -f $(PYEXT_OPERATOR_LOBJS)
+ rm -f $(PYEXT_OPERATOR_OBJS)
+ rm -f $(PYEXT_OPERATOR_SHARED)
+ rm -f $(PYEXT_OPERATOR_STATIC)
+
+clean: pyext-operator-clean
+
+.PHONY: pyext-operator-shared
+.PHONY: pyext-operator-static
+.PHONY: pyext-operator-clean
+
+
+# ossaudiodev
+PYEXT_OSSAUDIODEV_SRCS += Modules/ossaudiodev.c
+
+PYEXT_OSSAUDIODEV_LOBJS = $(PYEXT_OSSAUDIODEV_SRCS:.c=.lo)
+PYEXT_OSSAUDIODEV_OBJS = $(PYEXT_OSSAUDIODEV_SRCS:.c=.o)
+
+PYEXT_OSSAUDIODEV_SHARED = pyext/ossaudiodev$(OS_LIB_SUFFIX)
+PYEXT_OSSAUDIODEV_STATIC = pyext/ossaudiodev$(OS_ARCHIVE_EXT)
+
+$(PYEXT_OSSAUDIODEV_SHARED): $(PYEXT_OSSAUDIODEV_LOBJS)
+$(PYEXT_OSSAUDIODEV_STATIC): $(PYEXT_OSSAUDIODEV_OBJS)
+
+pyext-ossaudiodev-shared: $(PYEXT_OSSAUDIODEV_SHARED)
+pyext-ossaudiodev-static: $(PYEXT_OSSAUDIODEV_STATIC)
+
+pyext-ossaudiodev-clean:
+ rm -f $(PYEXT_OSSAUDIODEV_LOBJS)
+ rm -f $(PYEXT_OSSAUDIODEV_OBJS)
+ rm -f $(PYEXT_OSSAUDIODEV_SHARED)
+ rm -f $(PYEXT_OSSAUDIODEV_STATIC)
+
+clean: pyext-ossaudiodev-clean
+
+.PHONY: pyext-ossaudiodev-shared
+.PHONY: pyext-ossaudiodev-static
+.PHONY: pyext-ossaudiodev-clean
+
+
+# parser
+PYEXT_PARSER_SRCS += Modules/parsermodule.c
+
+PYEXT_PARSER_LOBJS = $(PYEXT_PARSER_SRCS:.c=.lo)
+PYEXT_PARSER_OBJS = $(PYEXT_PARSER_SRCS:.c=.o)
+
+PYEXT_PARSER_SHARED = pyext/parser$(OS_LIB_SUFFIX)
+PYEXT_PARSER_STATIC = pyext/parser$(OS_ARCHIVE_EXT)
+
+$(PYEXT_PARSER_SHARED): $(PYEXT_PARSER_LOBJS)
+$(PYEXT_PARSER_STATIC): $(PYEXT_PARSER_OBJS)
+
+pyext-parser-shared: $(PYEXT_PARSER_SHARED)
+pyext-parser-static: $(PYEXT_PARSER_STATIC)
+
+pyext-parser-clean:
+ rm -f $(PYEXT_PARSER_LOBJS)
+ rm -f $(PYEXT_PARSER_OBJS)
+ rm -f $(PYEXT_PARSER_SHARED)
+ rm -f $(PYEXT_PARSER_STATIC)
+
+clean: pyext-parser-clean
+
+.PHONY: pyext-parser-shared
+.PHONY: pyext-parser-static
+.PHONY: pyext-parser-clean
+
+
+# resource
+PYEXT_RESOURCE_SRCS += Modules/resource.c
+
+PYEXT_RESOURCE_LOBJS = $(PYEXT_RESOURCE_SRCS:.c=.lo)
+PYEXT_RESOURCE_OBJS = $(PYEXT_RESOURCE_SRCS:.c=.o)
+
+PYEXT_RESOURCE_SHARED = pyext/resource$(OS_LIB_SUFFIX)
+PYEXT_RESOURCE_STATIC = pyext/resource$(OS_ARCHIVE_EXT)
+
+$(PYEXT_RESOURCE_SHARED): $(PYEXT_RESOURCE_LOBJS)
+$(PYEXT_RESOURCE_STATIC): $(PYEXT_RESOURCE_OBJS)
+
+pyext-resource-shared: $(PYEXT_RESOURCE_SHARED)
+pyext-resource-static: $(PYEXT_RESOURCE_STATIC)
+
+pyext-resource-clean:
+ rm -f $(PYEXT_RESOURCE_LOBJS)
+ rm -f $(PYEXT_RESOURCE_OBJS)
+ rm -f $(PYEXT_RESOURCE_SHARED)
+ rm -f $(PYEXT_RESOURCE_STATIC)
+
+clean: pyext-resource-clean
+
+.PHONY: pyext-resource-shared
+.PHONY: pyext-resource-static
+.PHONY: pyext-resource-clean
+
+
+# select
+PYEXT_SELECT_SRCS += Modules/selectmodule.c
+
+PYEXT_SELECT_LOBJS = $(PYEXT_SELECT_SRCS:.c=.lo)
+PYEXT_SELECT_OBJS = $(PYEXT_SELECT_SRCS:.c=.o)
+
+PYEXT_SELECT_SHARED = pyext/select$(OS_LIB_SUFFIX)
+PYEXT_SELECT_STATIC = pyext/select$(OS_ARCHIVE_EXT)
+
+$(PYEXT_SELECT_SHARED): $(PYEXT_SELECT_LOBJS)
+$(PYEXT_SELECT_STATIC): $(PYEXT_SELECT_OBJS)
+
+pyext-select-shared: $(PYEXT_SELECT_SHARED)
+pyext-select-static: $(PYEXT_SELECT_STATIC)
+
+pyext-select-clean:
+ rm -f $(PYEXT_SELECT_LOBJS)
+ rm -f $(PYEXT_SELECT_OBJS)
+ rm -f $(PYEXT_SELECT_SHARED)
+ rm -f $(PYEXT_SELECT_STATIC)
+
+clean: pyext-select-clean
+
+.PHONY: pyext-select-shared
+.PHONY: pyext-select-static
+.PHONY: pyext-select-clean
+
+
+# spwd
+PYEXT_SPWD_SRCS += Modules/spwdmodule.c
+
+PYEXT_SPWD_LOBJS = $(PYEXT_SPWD_SRCS:.c=.lo)
+PYEXT_SPWD_OBJS = $(PYEXT_SPWD_SRCS:.c=.o)
+
+PYEXT_SPWD_SHARED = pyext/spwd$(OS_LIB_SUFFIX)
+PYEXT_SPWD_STATIC = pyext/spwd$(OS_ARCHIVE_EXT)
+
+$(PYEXT_SPWD_SHARED): $(PYEXT_SPWD_LOBJS)
+$(PYEXT_SPWD_STATIC): $(PYEXT_SPWD_OBJS)
+
+pyext-spwd-shared: $(PYEXT_SPWD_SHARED)
+pyext-spwd-static: $(PYEXT_SPWD_STATIC)
+
+pyext-spwd-clean:
+ rm -f $(PYEXT_SPWD_LOBJS)
+ rm -f $(PYEXT_SPWD_OBJS)
+ rm -f $(PYEXT_SPWD_SHARED)
+ rm -f $(PYEXT_SPWD_STATIC)
+
+clean: pyext-spwd-clean
+
+.PHONY: pyext-spwd-shared
+.PHONY: pyext-spwd-static
+.PHONY: pyext-spwd-clean
+
+
+# strop
+PYEXT_STROP_SRCS += Modules/stropmodule.c
+
+PYEXT_STROP_LOBJS = $(PYEXT_STROP_SRCS:.c=.lo)
+PYEXT_STROP_OBJS = $(PYEXT_STROP_SRCS:.c=.o)
+
+PYEXT_STROP_SHARED = pyext/strop$(OS_LIB_SUFFIX)
+PYEXT_STROP_STATIC = pyext/strop$(OS_ARCHIVE_EXT)
+
+$(PYEXT_STROP_SHARED): $(PYEXT_STROP_LOBJS)
+$(PYEXT_STROP_STATIC): $(PYEXT_STROP_OBJS)
+
+pyext-strop-shared: $(PYEXT_STROP_SHARED)
+pyext-strop-static: $(PYEXT_STROP_STATIC)
+
+pyext-strop-clean:
+ rm -f $(PYEXT_STROP_LOBJS)
+ rm -f $(PYEXT_STROP_OBJS)
+ rm -f $(PYEXT_STROP_SHARED)
+ rm -f $(PYEXT_STROP_STATIC)
+
+clean: pyext-strop-clean
+
+.PHONY: pyext-strop-shared
+.PHONY: pyext-strop-static
+.PHONY: pyext-strop-clean
+
+
+# syslog
+PYEXT_SYSLOG_SRCS += Modules/syslogmodule.c
+
+PYEXT_SYSLOG_LOBJS = $(PYEXT_SYSLOG_SRCS:.c=.lo)
+PYEXT_SYSLOG_OBJS = $(PYEXT_SYSLOG_SRCS:.c=.o)
+
+PYEXT_SYSLOG_SHARED = pyext/syslog$(OS_LIB_SUFFIX)
+PYEXT_SYSLOG_STATIC = pyext/syslog$(OS_ARCHIVE_EXT)
+
+$(PYEXT_SYSLOG_SHARED): $(PYEXT_SYSLOG_LOBJS)
+$(PYEXT_SYSLOG_STATIC): $(PYEXT_SYSLOG_OBJS)
+
+pyext-syslog-shared: $(PYEXT_SYSLOG_SHARED)
+pyext-syslog-static: $(PYEXT_SYSLOG_STATIC)
+
+pyext-syslog-clean:
+ rm -f $(PYEXT_SYSLOG_LOBJS)
+ rm -f $(PYEXT_SYSLOG_OBJS)
+ rm -f $(PYEXT_SYSLOG_SHARED)
+ rm -f $(PYEXT_SYSLOG_STATIC)
+
+clean: pyext-syslog-clean
+
+.PHONY: pyext-syslog-shared
+.PHONY: pyext-syslog-static
+.PHONY: pyext-syslog-clean
+
+
+# termios
+PYEXT_TERMIOS_SRCS += Modules/termios.c
+
+PYEXT_TERMIOS_LOBJS = $(PYEXT_TERMIOS_SRCS:.c=.lo)
+PYEXT_TERMIOS_OBJS = $(PYEXT_TERMIOS_SRCS:.c=.o)
+
+PYEXT_TERMIOS_SHARED = pyext/termios$(OS_LIB_SUFFIX)
+PYEXT_TERMIOS_STATIC = pyext/termios$(OS_ARCHIVE_EXT)
+
+$(PYEXT_TERMIOS_SHARED): $(PYEXT_TERMIOS_LOBJS)
+$(PYEXT_TERMIOS_STATIC): $(PYEXT_TERMIOS_OBJS)
+
+pyext-termios-shared: $(PYEXT_TERMIOS_SHARED)
+pyext-termios-static: $(PYEXT_TERMIOS_STATIC)
+
+pyext-termios-clean:
+ rm -f $(PYEXT_TERMIOS_LOBJS)
+ rm -f $(PYEXT_TERMIOS_OBJS)
+ rm -f $(PYEXT_TERMIOS_SHARED)
+ rm -f $(PYEXT_TERMIOS_STATIC)
+
+clean: pyext-termios-clean
+
+.PHONY: pyext-termios-shared
+.PHONY: pyext-termios-static
+.PHONY: pyext-termios-clean
+
+
+# time
+PYEXT_TIME_SRCS += Modules/timemodule.c
+
+PYEXT_TIME_LOBJS = $(PYEXT_TIME_SRCS:.c=.lo)
+PYEXT_TIME_OBJS = $(PYEXT_TIME_SRCS:.c=.o)
+
+PYEXT_TIME_SHARED = pyext/time$(OS_LIB_SUFFIX)
+PYEXT_TIME_STATIC = pyext/time$(OS_ARCHIVE_EXT)
+
+$(PYEXT_TIME_SHARED): $(PYEXT_TIME_LOBJS)
+$(PYEXT_TIME_STATIC): $(PYEXT_TIME_OBJS)
+
+pyext-time-shared: $(PYEXT_TIME_SHARED)
+pyext-time-static: $(PYEXT_TIME_STATIC)
+
+pyext-time-clean:
+ rm -f $(PYEXT_TIME_LOBJS)
+ rm -f $(PYEXT_TIME_OBJS)
+ rm -f $(PYEXT_TIME_SHARED)
+ rm -f $(PYEXT_TIME_STATIC)
+
+clean: pyext-time-clean
+
+.PHONY: pyext-time-shared
+.PHONY: pyext-time-static
+.PHONY: pyext-time-clean
+
+
+# unicodedata
+PYEXT_UNICODEDATA_SRCS += Modules/unicodedata.c
+
+PYEXT_UNICODEDATA_LOBJS = $(PYEXT_UNICODEDATA_SRCS:.c=.lo)
+PYEXT_UNICODEDATA_OBJS = $(PYEXT_UNICODEDATA_SRCS:.c=.o)
+
+PYEXT_UNICODEDATA_SHARED = pyext/unicodedata$(OS_LIB_SUFFIX)
+PYEXT_UNICODEDATA_STATIC = pyext/unicodedata$(OS_ARCHIVE_EXT)
+
+$(PYEXT_UNICODEDATA_SHARED): $(PYEXT_UNICODEDATA_LOBJS)
+$(PYEXT_UNICODEDATA_STATIC): $(PYEXT_UNICODEDATA_OBJS)
+
+pyext-unicodedata-shared: $(PYEXT_UNICODEDATA_SHARED)
+pyext-unicodedata-static: $(PYEXT_UNICODEDATA_STATIC)
+
+pyext-unicodedata-clean:
+ rm -f $(PYEXT_UNICODEDATA_LOBJS)
+ rm -f $(PYEXT_UNICODEDATA_OBJS)
+ rm -f $(PYEXT_UNICODEDATA_SHARED)
+ rm -f $(PYEXT_UNICODEDATA_STATIC)
+
+clean: pyext-unicodedata-clean
+
+.PHONY: pyext-unicodedata-shared
+.PHONY: pyext-unicodedata-static
+.PHONY: pyext-unicodedata-clean
+
+
+# _curses
+PYEXT_CURSES_SRCS += Modules/_cursesmodule.c
+
+PYEXT_CURSES_LOBJS = $(PYEXT_CURSES_SRCS:.c=.lo)
+PYEXT_CURSES_OBJS = $(PYEXT_CURSES_SRCS:.c=.o)
+
+$(PYEXT_CURSES_LOBJS): CFLAGS_CONFIG += $(CFLAGS_NCURSES)
+$(PYEXT_CURSES_OBJS): CFLAGS_CONFIG += $(CFLAGS_NCURSES)
+
+PYEXT_CURSES_SHARED = pyext/_curses$(OS_LIB_SUFFIX)
+PYEXT_CURSES_STATIC = pyext/_curses$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CURSES_SHARED): LDFLAGS_DYNEXT += $(LDFLAGS_NCURSES)
+$(PYEXT_CURSES_SHARED): $(PYEXT_CURSES_LOBJS)
+$(PYEXT_CURSES_STATIC): $(PYEXT_CURSES_OBJS)
+
+pyext-curses-shared: $(PYEXT_CURSES_SHARED)
+pyext-curses-static: $(PYEXT_CURSES_STATIC)
+
+pyext-curses-clean:
+ rm -f $(PYEXT_CURSES_LOBJS)
+ rm -f $(PYEXT_CURSES_OBJS)
+ rm -f $(PYEXT_CURSES_SHARED)
+ rm -f $(PYEXT_CURSES_STATIC)
+
+clean: pyext-curses-clean
+
+.PHONY: pyext-curses-shared
+.PHONY: pyext-curses-static
+.PHONY: pyext-curses-clean
+
+
+# _curses_panel
+PYEXT_CURSES_PANEL_SRCS += Modules/_curses_panel.c
+
+PYEXT_CURSES_PANEL_LOBJS = $(PYEXT_CURSES_PANEL_SRCS:.c=.lo)
+PYEXT_CURSES_PANEL_OBJS = $(PYEXT_CURSES_PANEL_SRCS:.c=.o)
+
+$(PYEXT_CURSES_PANEL_LOBJS): CFLAGS_CONFIG += $(CFLAGS_NCURSES)
+$(PYEXT_CURSES_PANEL_OBJS): CFLAGS_CONFIG += $(CFLAGS_NCURSES)
+
+PYEXT_CURSES_PANEL_SHARED = pyext/_curses_panel$(OS_LIB_SUFFIX)
+PYEXT_CURSES_PANEL_STATIC = pyext/_curses_panel$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CURSES_PANEL_SHARED): LDFLAGS_DYNEXT += $(LDFLAGS_NCURSES)
+$(PYEXT_CURSES_PANEL_SHARED): $(PYEXT_CURSES_PANEL_LOBJS)
+$(PYEXT_CURSES_PANEL_STATIC): $(PYEXT_CURSES_PANEL_OBJS)
+
+pyext-curses_panel-shared: $(PYEXT_CURSES_PANEL_SHARED)
+pyext-curses_panel-static: $(PYEXT_CURSES_PANEL_STATIC)
+
+pyext-curses_panel-clean:
+ rm -f $(PYEXT_CURSES_PANEL_LOBJS)
+ rm -f $(PYEXT_CURSES_PANEL_OBJS)
+ rm -f $(PYEXT_CURSES_PANEL_SHARED)
+ rm -f $(PYEXT_CURSES_PANEL_STATIC)
+
+clean: pyext-curses_panel-clean
+
+.PHONY: pyext-curses_panel-shared
+.PHONY: pyext-curses_panel-static
+.PHONY: pyext-curses_panel-clean
+
+
+# _elementtree
+PYEXT_ELEMENTTREE_SRCS += Modules/_elementtree.c
+
+PYEXT_ELEMENTTREE_LOBJS = $(PYEXT_ELEMENTTREE_SRCS:.c=.lo)
+PYEXT_ELEMENTTREE_OBJS = $(PYEXT_ELEMENTTREE_SRCS:.c=.o)
+
+$(PYEXT_ELEMENTTREE_LOBJS): CFLAGS_CONFIG += -UVERSION
+$(PYEXT_ELEMENTTREE_OBJS): CFLAGS_CONFIG += -UVERSION
+
+PYEXT_ELEMENTTREE_SHARED = pyext/_elementtree$(OS_LIB_SUFFIX)
+PYEXT_ELEMENTTREE_STATIC = pyext/_elementtree$(OS_ARCHIVE_EXT)
+
+$(PYEXT_ELEMENTTREE_SHARED): LDFLAGS_DYNEXT += -lexpat
+$(PYEXT_ELEMENTTREE_SHARED): $(PYEXT_ELEMENTTREE_LOBJS)
+$(PYEXT_ELEMENTTREE_STATIC): $(PYEXT_ELEMENTTREE_OBJS)
+
+pyext-elementtree-shared: $(PYEXT_ELEMENTTREE_SHARED)
+pyext-elementtree-static: $(PYEXT_ELEMENTTREE_STATIC)
+
+pyext-elementtree-clean:
+ rm -f $(PYEXT_ELEMENTTREE_LOBJS)
+ rm -f $(PYEXT_ELEMENTTREE_OBJS)
+ rm -f $(PYEXT_ELEMENTTREE_SHARED)
+ rm -f $(PYEXT_ELEMENTTREE_STATIC)
+
+clean: pyext-elementtree-clean
+
+.PHONY: pyext-elementtree-shared
+.PHONY: pyext-elementtree-static
+.PHONY: pyext-elementtree-clean
+
+
+# _hashlib
+PYEXT_HASHLIB_SRCS += Modules/_hashopenssl.c
+
+PYEXT_HASHLIB_LOBJS = $(PYEXT_HASHLIB_SRCS:.c=.lo)
+PYEXT_HASHLIB_OBJS = $(PYEXT_HASHLIB_SRCS:.c=.o)
+
+
+PYEXT_HASHLIB_SHARED = pyext/_hashlib$(OS_LIB_SUFFIX)
+PYEXT_HASHLIB_STATIC = pyext/_hashlib$(OS_ARCHIVE_EXT)
+
+$(PYEXT_HASHLIB_SHARED): LDFLAGS_DYNEXT += -lssl -lcrypto
+$(PYEXT_HASHLIB_SHARED): $(PYEXT_HASHLIB_LOBJS)
+$(PYEXT_HASHLIB_STATIC): $(PYEXT_HASHLIB_OBJS)
+
+pyext-hashlib-shared: $(PYEXT_HASHLIB_SHARED)
+pyext-hashlib-static: $(PYEXT_HASHLIB_STATIC)
+
+pyext-hashlib-clean:
+ rm -f $(PYEXT_HASHLIB_LOBJS)
+ rm -f $(PYEXT_HASHLIB_OBJS)
+ rm -f $(PYEXT_HASHLIB_SHARED)
+ rm -f $(PYEXT_HASHLIB_STATIC)
+
+clean: pyext-hashlib-clean
+
+.PHONY: pyext-hashlib-shared
+.PHONY: pyext-hashlib-static
+.PHONY: pyext-hashlib-clean
+
+
+# _ssl
+PYEXT_SSL_SRCS += Modules/_ssl.c
+
+PYEXT_SSL_LOBJS = $(PYEXT_SSL_SRCS:.c=.lo)
+PYEXT_SSL_OBJS = $(PYEXT_SSL_SRCS:.c=.o)
+
+
+PYEXT_SSL_SHARED = pyext/_ssl$(OS_LIB_SUFFIX)
+PYEXT_SSL_STATIC = pyext/_ssl$(OS_ARCHIVE_EXT)
+
+$(PYEXT_SSL_SHARED): LDFLAGS_DYNEXT += -lssl -lcrypto
+$(PYEXT_SSL_SHARED): $(PYEXT_SSL_LOBJS)
+$(PYEXT_SSL_STATIC): $(PYEXT_SSL_OBJS)
+
+pyext-ssl-shared: $(PYEXT_SSL_SHARED)
+pyext-ssl-static: $(PYEXT_SSL_STATIC)
+
+pyext-ssl-clean:
+ rm -f $(PYEXT_SSL_LOBJS)
+ rm -f $(PYEXT_SSL_OBJS)
+ rm -f $(PYEXT_SSL_SHARED)
+ rm -f $(PYEXT_SSL_STATIC)
+
+clean: pyext-ssl-clean
+
+.PHONY: pyext-ssl-shared
+.PHONY: pyext-ssl-static
+.PHONY: pyext-ssl-clean
+
+
+# bz2
+PYEXT_BZ2_SRCS += Modules/bz2module.c
+
+PYEXT_BZ2_LOBJS = $(PYEXT_BZ2_SRCS:.c=.lo)
+PYEXT_BZ2_OBJS = $(PYEXT_BZ2_SRCS:.c=.o)
+
+
+PYEXT_BZ2_SHARED = pyext/bz2$(OS_LIB_SUFFIX)
+PYEXT_BZ2_STATIC = pyext/bz2$(OS_ARCHIVE_EXT)
+
+$(PYEXT_BZ2_SHARED): LDFLAGS_DYNEXT += -lbz2
+$(PYEXT_BZ2_SHARED): $(PYEXT_BZ2_LOBJS)
+$(PYEXT_BZ2_STATIC): $(PYEXT_BZ2_OBJS)
+
+pyext-bz2-shared: $(PYEXT_BZ2_SHARED)
+pyext-bz2-static: $(PYEXT_BZ2_STATIC)
+
+pyext-bz2-clean:
+ rm -f $(PYEXT_BZ2_LOBJS)
+ rm -f $(PYEXT_BZ2_OBJS)
+ rm -f $(PYEXT_BZ2_SHARED)
+ rm -f $(PYEXT_BZ2_STATIC)
+
+clean: pyext-bz2-clean
+
+.PHONY: pyext-bz2-shared
+.PHONY: pyext-bz2-static
+.PHONY: pyext-bz2-clean
+
+
+# gdbm
+PYEXT_GDBM_SRCS += Modules/gdbmmodule.c
+
+PYEXT_GDBM_LOBJS = $(PYEXT_GDBM_SRCS:.c=.lo)
+PYEXT_GDBM_OBJS = $(PYEXT_GDBM_SRCS:.c=.o)
+
+
+PYEXT_GDBM_SHARED = pyext/gdbm$(OS_LIB_SUFFIX)
+PYEXT_GDBM_STATIC = pyext/gdbm$(OS_ARCHIVE_EXT)
+
+$(PYEXT_GDBM_SHARED): LDFLAGS_DYNEXT += -lgdbm
+$(PYEXT_GDBM_SHARED): $(PYEXT_GDBM_LOBJS)
+$(PYEXT_GDBM_STATIC): $(PYEXT_GDBM_OBJS)
+
+pyext-gdbm-shared: $(PYEXT_GDBM_SHARED)
+pyext-gdbm-static: $(PYEXT_GDBM_STATIC)
+
+pyext-gdbm-clean:
+ rm -f $(PYEXT_GDBM_LOBJS)
+ rm -f $(PYEXT_GDBM_OBJS)
+ rm -f $(PYEXT_GDBM_SHARED)
+ rm -f $(PYEXT_GDBM_STATIC)
+
+clean: pyext-gdbm-clean
+
+.PHONY: pyext-gdbm-shared
+.PHONY: pyext-gdbm-static
+.PHONY: pyext-gdbm-clean
+
+
+# readline
+PYEXT_READLINE_SRCS += Modules/readline.c
+
+PYEXT_READLINE_LOBJS = $(PYEXT_READLINE_SRCS:.c=.lo)
+PYEXT_READLINE_OBJS = $(PYEXT_READLINE_SRCS:.c=.o)
+
+
+PYEXT_READLINE_SHARED = pyext/readline$(OS_LIB_SUFFIX)
+PYEXT_READLINE_STATIC = pyext/readline$(OS_ARCHIVE_EXT)
+
+$(PYEXT_READLINE_SHARED): LDFLAGS_DYNEXT += -lreadline
+$(PYEXT_READLINE_SHARED): $(PYEXT_READLINE_LOBJS)
+$(PYEXT_READLINE_STATIC): $(PYEXT_READLINE_OBJS)
+
+pyext-readline-shared: $(PYEXT_READLINE_SHARED)
+pyext-readline-static: $(PYEXT_READLINE_STATIC)
+
+pyext-readline-clean:
+ rm -f $(PYEXT_READLINE_LOBJS)
+ rm -f $(PYEXT_READLINE_OBJS)
+ rm -f $(PYEXT_READLINE_SHARED)
+ rm -f $(PYEXT_READLINE_STATIC)
+
+clean: pyext-readline-clean
+
+.PHONY: pyext-readline-shared
+.PHONY: pyext-readline-static
+.PHONY: pyext-readline-clean
+
+
+# pyexpat
+PYEXT_PYEXPAT_SRCS += Modules/pyexpat.c
+
+PYEXT_PYEXPAT_LOBJS = $(PYEXT_PYEXPAT_SRCS:.c=.lo)
+PYEXT_PYEXPAT_OBJS = $(PYEXT_PYEXPAT_SRCS:.c=.o)
+
+
+PYEXT_PYEXPAT_SHARED = pyext/pyexpat$(OS_LIB_SUFFIX)
+PYEXT_PYEXPAT_STATIC = pyext/pyexpat$(OS_ARCHIVE_EXT)
+
+$(PYEXT_PYEXPAT_SHARED): LDFLAGS_DYNEXT += -lexpat
+$(PYEXT_PYEXPAT_SHARED): $(PYEXT_PYEXPAT_LOBJS)
+$(PYEXT_PYEXPAT_STATIC): $(PYEXT_PYEXPAT_OBJS)
+
+pyext-pyexpat-shared: $(PYEXT_PYEXPAT_SHARED)
+pyext-pyexpat-static: $(PYEXT_PYEXPAT_STATIC)
+
+pyext-pyexpat-clean:
+ rm -f $(PYEXT_PYEXPAT_LOBJS)
+ rm -f $(PYEXT_PYEXPAT_OBJS)
+ rm -f $(PYEXT_PYEXPAT_SHARED)
+ rm -f $(PYEXT_PYEXPAT_STATIC)
+
+clean: pyext-pyexpat-clean
+
+.PHONY: pyext-pyexpat-shared
+.PHONY: pyext-pyexpat-static
+.PHONY: pyext-pyexpat-clean
+
+
+# zlib
+PYEXT_ZLIB_SRCS += Modules/zlibmodule.c
+
+PYEXT_ZLIB_LOBJS = $(PYEXT_ZLIB_SRCS:.c=.lo)
+PYEXT_ZLIB_OBJS = $(PYEXT_ZLIB_SRCS:.c=.o)
+
+
+PYEXT_ZLIB_SHARED = pyext/zlib$(OS_LIB_SUFFIX)
+PYEXT_ZLIB_STATIC = pyext/zlib$(OS_ARCHIVE_EXT)
+
+$(PYEXT_ZLIB_SHARED): LDFLAGS_DYNEXT += -lz
+$(PYEXT_ZLIB_SHARED): $(PYEXT_ZLIB_LOBJS)
+$(PYEXT_ZLIB_STATIC): $(PYEXT_ZLIB_OBJS)
+
+pyext-zlib-shared: $(PYEXT_ZLIB_SHARED)
+pyext-zlib-static: $(PYEXT_ZLIB_STATIC)
+
+pyext-zlib-clean:
+ rm -f $(PYEXT_ZLIB_LOBJS)
+ rm -f $(PYEXT_ZLIB_OBJS)
+ rm -f $(PYEXT_ZLIB_SHARED)
+ rm -f $(PYEXT_ZLIB_STATIC)
+
+clean: pyext-zlib-clean
+
+.PHONY: pyext-zlib-shared
+.PHONY: pyext-zlib-static
+.PHONY: pyext-zlib-clean
+
+
+# _ctypes
+PYEXT_CTYPES_SRCS += Modules/_ctypes/_ctypes.c
+PYEXT_CTYPES_SRCS += Modules/_ctypes/callbacks.c
+PYEXT_CTYPES_SRCS += Modules/_ctypes/callproc.c
+PYEXT_CTYPES_SRCS += Modules/_ctypes/stgdict.c
+PYEXT_CTYPES_SRCS += Modules/_ctypes/cfield.c
+
+PYEXT_CTYPES_LOBJS = $(PYEXT_CTYPES_SRCS:.c=.lo)
+PYEXT_CTYPES_OBJS = $(PYEXT_CTYPES_SRCS:.c=.o)
+
+
+PYEXT_CTYPES_SHARED = pyext/_ctypes$(OS_LIB_SUFFIX)
+PYEXT_CTYPES_STATIC = pyext/_ctypes$(OS_ARCHIVE_EXT)
+
+$(PYEXT_CTYPES_SHARED): LDFLAGS_DYNEXT += -lffi
+$(PYEXT_CTYPES_SHARED): $(PYEXT_CTYPES_LOBJS)
+$(PYEXT_CTYPES_STATIC): $(PYEXT_CTYPES_OBJS)
+
+pyext-ctypes-shared: $(PYEXT_CTYPES_SHARED)
+pyext-ctypes-static: $(PYEXT_CTYPES_STATIC)
+
+pyext-ctypes-clean:
+ rm -f $(PYEXT_CTYPES_LOBJS)
+ rm -f $(PYEXT_CTYPES_OBJS)
+ rm -f $(PYEXT_CTYPES_SHARED)
+ rm -f $(PYEXT_CTYPES_STATIC)
+
+clean: pyext-ctypes-clean
+
+.PHONY: pyext-ctypes-shared
+.PHONY: pyext-ctypes-static
+.PHONY: pyext-ctypes-clean
+
+
+# _io
+PYEXT_IO_SRCS += Modules/_io/bufferedio.c
+PYEXT_IO_SRCS += Modules/_io/bytesio.c
+PYEXT_IO_SRCS += Modules/_io/fileio.c
+PYEXT_IO_SRCS += Modules/_io/iobase.c
+PYEXT_IO_SRCS += Modules/_io/_iomodule.c
+PYEXT_IO_SRCS += Modules/_io/stringio.c
+PYEXT_IO_SRCS += Modules/_io/textio.c
+
+PYEXT_IO_LOBJS = $(PYEXT_IO_SRCS:.c=.lo)
+PYEXT_IO_OBJS = $(PYEXT_IO_SRCS:.c=.o)
+
+
+PYEXT_IO_SHARED = pyext/_io$(OS_LIB_SUFFIX)
+PYEXT_IO_STATIC = pyext/_io$(OS_ARCHIVE_EXT)
+
+$(PYEXT_IO_SHARED): $(PYEXT_IO_LOBJS)
+$(PYEXT_IO_STATIC): $(PYEXT_IO_OBJS)
+
+pyext-io-shared: $(PYEXT_IO_SHARED)
+pyext-io-static: $(PYEXT_IO_STATIC)
+
+pyext-io-clean:
+ rm -f $(PYEXT_IO_LOBJS)
+ rm -f $(PYEXT_IO_OBJS)
+ rm -f $(PYEXT_IO_SHARED)
+ rm -f $(PYEXT_IO_STATIC)
+
+clean: pyext-io-clean
+
+.PHONY: pyext-io-shared
+.PHONY: pyext-io-static
+.PHONY: pyext-io-clean
+
+
+# _multiprocessing
+PYEXT_MULTIPROCESSING_SRCS += Modules/_multiprocessing/multiprocessing.c
+PYEXT_MULTIPROCESSING_SRCS += Modules/_multiprocessing/socket_connection.c
+PYEXT_MULTIPROCESSING_SRCS += Modules/_multiprocessing/semaphore.c
+
+PYEXT_MULTIPROCESSING_LOBJS = $(PYEXT_MULTIPROCESSING_SRCS:.c=.lo)
+PYEXT_MULTIPROCESSING_OBJS = $(PYEXT_MULTIPROCESSING_SRCS:.c=.o)
+
+
+PYEXT_MULTIPROCESSING_SHARED = pyext/_multiprocessing$(OS_LIB_SUFFIX)
+PYEXT_MULTIPROCESSING_STATIC = pyext/_multiprocessing$(OS_ARCHIVE_EXT)
+
+$(PYEXT_MULTIPROCESSING_SHARED):$(PYEXT_MULTIPROCESSING_LOBJS)
+$(PYEXT_MULTIPROCESSING_STATIC):$(PYEXT_MULTIPROCESSING_OBJS)
+
+pyext-multiprocessing-shared: $(PYEXT_MULTIPROCESSING_SHARED)
+pyext-multiprocessing-static: $(PYEXT_MULTIPROCESSING_STATIC)
+
+pyext-multiprocessing-clean:
+ rm -f $(PYEXT_MULTIPROCESSING_LOBJS)
+ rm -f $(PYEXT_MULTIPROCESSING_OBJS)
+ rm -f $(PYEXT_MULTIPROCESSING_SHARED)
+ rm -f $(PYEXT_MULTIPROCESSING_STATIC)
+
+clean: pyext-multiprocessing-clean
+
+.PHONY: pyext-multiprocessing-shared
+.PHONY: pyext-multiprocessing-static
+.PHONY: pyext-multiprocessing-clean
+
+
+# _sqlite3
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/cache.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/connection.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/cursor.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/microprotocols.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/module.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/prepare_protocol.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/row.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/statement.c
+PYEXT_SQLITE3_SRCS += Modules/_sqlite/util.c
+
+PYEXT_SQLITE3_LOBJS = $(PYEXT_SQLITE3_SRCS:.c=.lo)
+PYEXT_SQLITE3_OBJS = $(PYEXT_SQLITE3_SRCS:.c=.o)
+
+$(PYEXT_SQLITE3_LOBJS): CFLAGS_CONFIG += $(CFLAGS_SQLITE)
+$(PYEXT_SQLITE3_OBJS): CFLAGS_CONFIG += $(CFLAGS_SQLITE)
+
+PYEXT_SQLITE3_SHARED = pyext/_sqlite3$(OS_LIB_SUFFIX)
+PYEXT_SQLITE3_STATIC = pyext/_sqlite3$(OS_ARCHIVE_EXT)
+
+$(PYEXT_SQLITE3_SHARED): LDFLAGS_DYNEXT += $(LDFLAGS_SQLITE)
+$(PYEXT_SQLITE3_SHARED): $(PYEXT_SQLITE3_LOBJS)
+$(PYEXT_SQLITE3_STATIC): $(PYEXT_SQLITE3_OBJS)
+
+pyext-sqlite3-shared: $(PYEXT_SQLITE3_SHARED)
+pyext-sqlite3-static: $(PYEXT_SQLITE3_STATIC)
+
+pyext-sqlite3-clean:
+ rm -f $(PYEXT_SQLITE3_LOBJS)
+ rm -f $(PYEXT_SQLITE3_OBJS)
+ rm -f $(PYEXT_SQLITE3_SHARED)
+ rm -f $(PYEXT_SQLITE3_STATIC)
+
+clean: pyext-sqlite3-clean
+
+.PHONY: pyext-sqlite3-shared
+.PHONY: pyext-sqlite3-static
+.PHONY: pyext-sqlite3-clean
+
+
+# dbm
+PYEXT_DBM_SRCS += Modules/dbmmodule.c
+
+PYEXT_DBM_LOBJS = $(PYEXT_DBM_SRCS:.c=.lo)
+PYEXT_DBM_OBJS = $(PYEXT_DBM_SRCS:.c=.o)
+
+$(PYEXT_DBM_LOBJS): CFLAGS_CONFIG += $(CFLAGS_DBM)
+$(PYEXT_DBM_OBJS): CFLAGS_CONFIG += $(CFLAGS_DBM)
+
+PYEXT_DBM_SHARED = pyext/dbm$(OS_LIB_SUFFIX)
+PYEXT_DBM_STATIC = pyext/dbm$(OS_ARCHIVE_EXT)
+
+$(PYEXT_DBM_SHARED): LDFLAGS_DYNEXT += $(LDFLAGS_DBM)
+$(PYEXT_DBM_SHARED): $(PYEXT_DBM_LOBJS)
+$(PYEXT_DBM_STATIC): $(PYEXT_DBM_OBJS)
+
+pyext-dbm-shared: $(PYEXT_DBM_SHARED)
+pyext-dbm-static: $(PYEXT_DBM_STATIC)
+
+pyext-dbm-clean:
+ rm -f $(PYEXT_DBM_LOBJS)
+ rm -f $(PYEXT_DBM_OBJS)
+ rm -f $(PYEXT_DBM_SHARED)
+ rm -f $(PYEXT_DBM_STATIC)
+
+clean: pyext-dbm-clean
+
+.PHONY: pyext-dbm-shared
+.PHONY: pyext-dbm-static
+.PHONY: pyext-dbm-clean
+
+
+# linuxaudiodev
+PYEXT_LINUXAUDIODEV_SRCS += Modules/linuxaudiodev.c
+
+PYEXT_LINUXAUDIODEV_LOBJS = $(PYEXT_LINUXAUDIODEV_SRCS:.c=.lo)
+PYEXT_LINUXAUDIODEV_OBJS = $(PYEXT_LINUXAUDIODEV_SRCS:.c=.o)
+
+$(PYEXT_LINUXAUDIODEV_LOBJS): CFLAGS_LAST += -std=gnu99
+$(PYEXT_LINUXAUDIODEV_OBJS): CFLAGS_LAST += -std=gnu99
+
+PYEXT_LINUXAUDIODEV_SHARED = pyext/linuxaudiodev$(OS_LIB_SUFFIX)
+PYEXT_LINUXAUDIODEV_STATIC = pyext/linuxaudiodev$(OS_ARCHIVE_EXT)
+
+$(PYEXT_LINUXAUDIODEV_SHARED): $(PYEXT_LINUXAUDIODEV_LOBJS)
+$(PYEXT_LINUXAUDIODEV_STATIC): $(PYEXT_LINUXAUDIODEV_OBJS)
+
+pyext-linuxaudiodev-shared: $(PYEXT_LINUXAUDIODEV_SHARED)
+pyext-linuxaudiodev-static: $(PYEXT_LINUXAUDIODEV_STATIC)
+
+pyext-linuxaudiodev-clean:
+ rm -f $(PYEXT_LINUXAUDIODEV_LOBJS)
+ rm -f $(PYEXT_LINUXAUDIODEV_OBJS)
+ rm -f $(PYEXT_LINUXAUDIODEV_SHARED)
+ rm -f $(PYEXT_LINUXAUDIODEV_STATIC)
+
+clean: pyext-linuxaudiodev-clean
+
+.PHONY: pyext-linuxaudiodev-shared
+.PHONY: pyext-linuxaudiodev-static
+.PHONY: pyext-linuxaudiodev-clean
+
+