Blob Blame History Raw
# _multibytecodec
PYEXT_MULTIBYTECODEC_SRCS	+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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	+= pyext/obj/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		+= pyext/obj/_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		+= pyext/obj/_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			+= pyext/obj/_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		+= pyext/obj/_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		+= pyext/obj/_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		+= pyext/obj/_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		+= pyext/obj/_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			+= pyext/obj/_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		+= pyext/obj/_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		+= pyext/obj/_lsprof.c
PYEXT_LSPROF_SRCS		+= pyext/obj/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		+= pyext/obj/_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		+= pyext/obj/socketmodule.c
PYEXT_SOCKET_SRCS		+= pyext/obj/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		+= pyext/obj/_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		+= pyext/obj/_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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/cmathmodule.c
PYEXT_CMATH_SRCS		+= pyext/obj/_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		+= pyext/obj/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		+= pyext/obj/datetimemodule.c
PYEXT_DATETIME_SRCS		+= pyext/obj/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		+= pyext/obj/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	+= pyext/obj/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			+= pyext/obj/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		+= pyext/obj/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			+= pyext/obj/mathmodule.c
PYEXT_MATH_SRCS			+= pyext/obj/_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			+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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			+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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			+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/_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		+= pyext/obj/_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		+= pyext/obj/_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		+= pyext/obj/_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			+= pyext/obj/_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			+= pyext/obj/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			+= pyext/obj/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		+= pyext/obj/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		+= pyext/obj/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			+= pyext/obj/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		+= pyext/obj/_ctypes/_ctypes.c
PYEXT_CTYPES_SRCS		+= pyext/obj/_ctypes/callbacks.c
PYEXT_CTYPES_SRCS		+= pyext/obj/_ctypes/callproc.c
PYEXT_CTYPES_SRCS		+= pyext/obj/_ctypes/stgdict.c
PYEXT_CTYPES_SRCS		+= pyext/obj/_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			+= pyext/obj/_io/bufferedio.c
PYEXT_IO_SRCS			+= pyext/obj/_io/bytesio.c
PYEXT_IO_SRCS			+= pyext/obj/_io/fileio.c
PYEXT_IO_SRCS			+= pyext/obj/_io/iobase.c
PYEXT_IO_SRCS			+= pyext/obj/_io/_iomodule.c
PYEXT_IO_SRCS			+= pyext/obj/_io/stringio.c
PYEXT_IO_SRCS			+= pyext/obj/_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	+= pyext/obj/_multiprocessing/multiprocessing.c
PYEXT_MULTIPROCESSING_SRCS	+= pyext/obj/_multiprocessing/socket_connection.c
PYEXT_MULTIPROCESSING_SRCS	+= pyext/obj/_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		+= pyext/obj/_sqlite/cache.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_sqlite/connection.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_sqlite/cursor.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_sqlite/microprotocols.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_sqlite/module.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_sqlite/prepare_protocol.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_sqlite/row.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_sqlite/statement.c
PYEXT_SQLITE3_SRCS		+= pyext/obj/_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			+= pyext/obj/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	+= pyext/obj/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