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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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


# _asyncio
PYEXT_ASYNCIO_SRCS		+= pyext/obj/_asynciomodule.c

PYEXT_ASYNCIO_LOBJS		= $(PYEXT_ASYNCIO_SRCS:.c=.lo)
PYEXT_ASYNCIO_OBJS		= $(PYEXT_ASYNCIO_SRCS:.c=.o)

PYEXT_ASYNCIO_SHARED		= pyext/_asyncio$(PYTHON_SOEXT)
PYEXT_ASYNCIO_STATIC		= pyext/_asyncio$(OS_ARCHIVE_EXT)

$(PYEXT_ASYNCIO_SHARED):	$(PYEXT_ASYNCIO_LOBJS)
$(PYEXT_ASYNCIO_STATIC):	$(PYEXT_ASYNCIO_OBJS)

pyext-asyncio-shared:		$(PYEXT_ASYNCIO_SHARED)
pyext-asyncio-static:		$(PYEXT_ASYNCIO_STATIC)

pyext-asyncio-clean:
	rm -f $(PYEXT_ASYNCIO_LOBJS)
	rm -f $(PYEXT_ASYNCIO_OBJS)
	rm -f $(PYEXT_ASYNCIO_SHARED)
	rm -f $(PYEXT_ASYNCIO_STATIC)

clean:	pyext-asyncio-clean

.PHONY:	pyext-asyncio-shared
.PHONY:	pyext-asyncio-static
.PHONY:	pyext-asyncio-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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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


# _datetime
PYEXT_DATETIME_SRCS		+= pyext/obj/_datetimemodule.c

PYEXT_DATETIME_LOBJS		= $(PYEXT_DATETIME_SRCS:.c=.lo)
PYEXT_DATETIME_OBJS		= $(PYEXT_DATETIME_SRCS:.c=.o)

PYEXT_DATETIME_SHARED		= pyext/_datetime$(PYTHON_SOEXT)
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


# _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_SHARED	= pyext/_elementtree$(PYTHON_SOEXT)
PYEXT_ELEMENTTREE_STATIC	= pyext/_elementtree$(OS_ARCHIVE_EXT)

$(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


# _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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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


# _md5
PYEXT_MD5_SRCS			+= pyext/obj/md5module.c

PYEXT_MD5_LOBJS			= $(PYEXT_MD5_SRCS:.c=.lo)
PYEXT_MD5_OBJS			= $(PYEXT_MD5_SRCS:.c=.o)

PYEXT_MD5_SHARED		= pyext/_md5$(PYTHON_SOEXT)
PYEXT_MD5_STATIC		= pyext/_md5$(OS_ARCHIVE_EXT)

$(PYEXT_MD5_SHARED):		$(PYEXT_MD5_LOBJS)
$(PYEXT_MD5_STATIC):		$(PYEXT_MD5_OBJS)

pyext-md5-shared:		$(PYEXT_MD5_SHARED)
pyext-md5-static:		$(PYEXT_MD5_STATIC)

pyext-md5-clean:
	rm -f $(PYEXT_MD5_LOBJS)
	rm -f $(PYEXT_MD5_OBJS)
	rm -f $(PYEXT_MD5_SHARED)
	rm -f $(PYEXT_MD5_STATIC)

clean:	pyext-md5-clean

.PHONY:	pyext-md5-shared
.PHONY:	pyext-md5-static
.PHONY:	pyext-md5-clean


# _opcode
PYEXT_OPCODE_SRCS		+= pyext/obj/_opcode.c

PYEXT_OPCODE_LOBJS		= $(PYEXT_OPCODE_SRCS:.c=.lo)
PYEXT_OPCODE_OBJS		= $(PYEXT_OPCODE_SRCS:.c=.o)

PYEXT_OPCODE_SHARED		= pyext/_opcode$(PYTHON_SOEXT)
PYEXT_OPCODE_STATIC		= pyext/_opcode$(OS_ARCHIVE_EXT)

$(PYEXT_OPCODE_SHARED):		$(PYEXT_OPCODE_LOBJS)
$(PYEXT_OPCODE_STATIC):		$(PYEXT_OPCODE_OBJS)

pyext-opcode-shared:		$(PYEXT_OPCODE_SHARED)
pyext-opcode-static:		$(PYEXT_OPCODE_STATIC)

pyext-opcode-clean:
	rm -f $(PYEXT_OPCODE_LOBJS)
	rm -f $(PYEXT_OPCODE_OBJS)
	rm -f $(PYEXT_OPCODE_SHARED)
	rm -f $(PYEXT_OPCODE_STATIC)

clean:	pyext-opcode-clean

.PHONY:	pyext-opcode-shared
.PHONY:	pyext-opcode-static
.PHONY:	pyext-opcode-clean


# _pickle
PYEXT_PICKLE_SRCS		+= pyext/obj/_pickle.c

PYEXT_PICKLE_LOBJS		= $(PYEXT_PICKLE_SRCS:.c=.lo)
PYEXT_PICKLE_OBJS		= $(PYEXT_PICKLE_SRCS:.c=.o)

PYEXT_PICKLE_SHARED		= pyext/_pickle$(PYTHON_SOEXT)
PYEXT_PICKLE_STATIC		= pyext/_pickle$(OS_ARCHIVE_EXT)

$(PYEXT_PICKLE_SHARED):		$(PYEXT_PICKLE_LOBJS)
$(PYEXT_PICKLE_STATIC):		$(PYEXT_PICKLE_OBJS)

pyext-pickle-shared:		$(PYEXT_PICKLE_SHARED)
pyext-pickle-static:		$(PYEXT_PICKLE_STATIC)

pyext-pickle-clean:
	rm -f $(PYEXT_PICKLE_LOBJS)
	rm -f $(PYEXT_PICKLE_OBJS)
	rm -f $(PYEXT_PICKLE_SHARED)
	rm -f $(PYEXT_PICKLE_STATIC)

clean:	pyext-pickle-clean

.PHONY:	pyext-pickle-shared
.PHONY:	pyext-pickle-static
.PHONY:	pyext-pickle-clean


# _posixsubprocess
PYEXT_POSIXSUBPROCESS_SRCS	+= pyext/obj/_posixsubprocess.c

PYEXT_POSIXSUBPROCESS_LOBJS	= $(PYEXT_POSIXSUBPROCESS_SRCS:.c=.lo)
PYEXT_POSIXSUBPROCESS_OBJS	= $(PYEXT_POSIXSUBPROCESS_SRCS:.c=.o)

PYEXT_POSIXSUBPROCESS_SHARED	= pyext/_posixsubprocess$(PYTHON_SOEXT)
PYEXT_POSIXSUBPROCESS_STATIC	= pyext/_posixsubprocess$(OS_ARCHIVE_EXT)

$(PYEXT_POSIXSUBPROCESS_SHARED):$(PYEXT_POSIXSUBPROCESS_LOBJS)
$(PYEXT_POSIXSUBPROCESS_STATIC):$(PYEXT_POSIXSUBPROCESS_OBJS)

pyext-posixsubprocess-shared:	$(PYEXT_POSIXSUBPROCESS_SHARED)
pyext-posixsubprocess-static:	$(PYEXT_POSIXSUBPROCESS_STATIC)

pyext-posixsubprocess-clean:
	rm -f $(PYEXT_POSIXSUBPROCESS_LOBJS)
	rm -f $(PYEXT_POSIXSUBPROCESS_OBJS)
	rm -f $(PYEXT_POSIXSUBPROCESS_SHARED)
	rm -f $(PYEXT_POSIXSUBPROCESS_STATIC)

clean:	pyext-posixsubprocess-clean

.PHONY:	pyext-posixsubprocess-shared
.PHONY:	pyext-posixsubprocess-static
.PHONY:	pyext-posixsubprocess-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$(PYTHON_SOEXT)
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


# _sha1
PYEXT_SHA1_SRCS			+= pyext/obj/sha1module.c

PYEXT_SHA1_LOBJS		= $(PYEXT_SHA1_SRCS:.c=.lo)
PYEXT_SHA1_OBJS			= $(PYEXT_SHA1_SRCS:.c=.o)

PYEXT_SHA1_SHARED		= pyext/_sha1$(PYTHON_SOEXT)
PYEXT_SHA1_STATIC		= pyext/_sha1$(OS_ARCHIVE_EXT)

$(PYEXT_SHA1_SHARED):		$(PYEXT_SHA1_LOBJS)
$(PYEXT_SHA1_STATIC):		$(PYEXT_SHA1_OBJS)

pyext-sha1-shared:		$(PYEXT_SHA1_SHARED)
pyext-sha1-static:		$(PYEXT_SHA1_STATIC)

pyext-sha1-clean:
	rm -f $(PYEXT_SHA1_LOBJS)
	rm -f $(PYEXT_SHA1_OBJS)
	rm -f $(PYEXT_SHA1_SHARED)
	rm -f $(PYEXT_SHA1_STATIC)

clean:	pyext-sha1-clean

.PHONY:	pyext-sha1-shared
.PHONY:	pyext-sha1-static
.PHONY:	pyext-sha1-clean


# _sha256
PYEXT_SHA256_SRCS		+= pyext/obj/sha256module.c

PYEXT_SHA256_LOBJS		= $(PYEXT_SHA256_SRCS:.c=.lo)
PYEXT_SHA256_OBJS		= $(PYEXT_SHA256_SRCS:.c=.o)

PYEXT_SHA256_SHARED		= pyext/_sha256$(PYTHON_SOEXT)
PYEXT_SHA256_STATIC		= pyext/_sha256$(OS_ARCHIVE_EXT)

$(PYEXT_SHA256_SHARED):		$(PYEXT_SHA256_LOBJS)
$(PYEXT_SHA256_STATIC):		$(PYEXT_SHA256_OBJS)

pyext-sha256-shared:		$(PYEXT_SHA256_SHARED)
pyext-sha256-static:		$(PYEXT_SHA256_STATIC)

pyext-sha256-clean:
	rm -f $(PYEXT_SHA256_LOBJS)
	rm -f $(PYEXT_SHA256_OBJS)
	rm -f $(PYEXT_SHA256_SHARED)
	rm -f $(PYEXT_SHA256_STATIC)

clean:	pyext-sha256-clean

.PHONY:	pyext-sha256-shared
.PHONY:	pyext-sha256-static
.PHONY:	pyext-sha256-clean


# _sha3
PYEXT_SHA3_SRCS			+= pyext/obj/_sha3/sha3module.c

PYEXT_SHA3_LOBJS		= $(PYEXT_SHA3_SRCS:.c=.lo)
PYEXT_SHA3_OBJS			= $(PYEXT_SHA3_SRCS:.c=.o)

PYEXT_SHA3_SHARED		= pyext/_sha3$(PYTHON_SOEXT)
PYEXT_SHA3_STATIC		= pyext/_sha3$(OS_ARCHIVE_EXT)

$(PYEXT_SHA3_SHARED):		$(PYEXT_SHA3_LOBJS)
$(PYEXT_SHA3_STATIC):		$(PYEXT_SHA3_OBJS)

pyext-sha3-shared:		$(PYEXT_SHA3_SHARED)
pyext-sha3-static:		$(PYEXT_SHA3_STATIC)

pyext-sha3-clean:
	rm -f $(PYEXT_SHA3_LOBJS)
	rm -f $(PYEXT_SHA3_OBJS)
	rm -f $(PYEXT_SHA3_SHARED)
	rm -f $(PYEXT_SHA3_STATIC)

clean:	pyext-sha3-clean

.PHONY:	pyext-sha3-shared
.PHONY:	pyext-sha3-static
.PHONY:	pyext-sha3-clean


# _sha512
PYEXT_SHA512_SRCS		+= pyext/obj/sha512module.c

PYEXT_SHA512_LOBJS		= $(PYEXT_SHA512_SRCS:.c=.lo)
PYEXT_SHA512_OBJS		= $(PYEXT_SHA512_SRCS:.c=.o)

PYEXT_SHA512_SHARED		= pyext/_sha512$(PYTHON_SOEXT)
PYEXT_SHA512_STATIC		= pyext/_sha512$(OS_ARCHIVE_EXT)

$(PYEXT_SHA512_SHARED):		$(PYEXT_SHA512_LOBJS)
$(PYEXT_SHA512_STATIC):		$(PYEXT_SHA512_OBJS)

pyext-sha512-shared:		$(PYEXT_SHA512_SHARED)
pyext-sha512-static:		$(PYEXT_SHA512_STATIC)

pyext-sha512-clean:
	rm -f $(PYEXT_SHA512_LOBJS)
	rm -f $(PYEXT_SHA512_OBJS)
	rm -f $(PYEXT_SHA512_SHARED)
	rm -f $(PYEXT_SHA512_STATIC)

clean:	pyext-sha512-clean

.PHONY:	pyext-sha512-shared
.PHONY:	pyext-sha512-static
.PHONY:	pyext-sha512-clean


# _socket
PYEXT_SOCKET_SRCS		+= pyext/obj/socketmodule.c

PYEXT_SOCKET_LOBJS		= $(PYEXT_SOCKET_SRCS:.c=.lo)
PYEXT_SOCKET_OBJS		= $(PYEXT_SOCKET_SRCS:.c=.o)

PYEXT_SOCKET_SHARED		= pyext/_socket$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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


# _testbuffer
PYEXT_TESTBUFFER_SRCS		+= pyext/obj/_testbuffer.c

PYEXT_TESTBUFFER_LOBJS		= $(PYEXT_TESTBUFFER_SRCS:.c=.lo)
PYEXT_TESTBUFFER_OBJS		= $(PYEXT_TESTBUFFER_SRCS:.c=.o)

PYEXT_TESTBUFFER_SHARED		= pyext/_testbuffer$(PYTHON_SOEXT)
PYEXT_TESTBUFFER_STATIC		= pyext/_testbuffer$(OS_ARCHIVE_EXT)

$(PYEXT_TESTBUFFER_SHARED):	$(PYEXT_TESTBUFFER_LOBJS)
$(PYEXT_TESTBUFFER_STATIC):	$(PYEXT_TESTBUFFER_OBJS)

pyext-testbuffer-shared:	$(PYEXT_TESTBUFFER_SHARED)
pyext-testbuffer-static:	$(PYEXT_TESTBUFFER_STATIC)

pyext-testbuffer-clean:
	rm -f $(PYEXT_TESTBUFFER_LOBJS)
	rm -f $(PYEXT_TESTBUFFER_OBJS)
	rm -f $(PYEXT_TESTBUFFER_SHARED)
	rm -f $(PYEXT_TESTBUFFER_STATIC)

clean:	pyext-testbuffer-clean

.PHONY:	pyext-testbuffer-shared
.PHONY:	pyext-testbuffer-static
.PHONY:	pyext-testbuffer-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$(PYTHON_SOEXT)
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


# _testimportmultiple
PYEXT_TESTIMPORTMULTIPLE_SRCS	+= pyext/obj/_testimportmultiple.c

PYEXT_TESTIMPORTMULTIPLE_LOBJS	= $(PYEXT_TESTIMPORTMULTIPLE_SRCS:.c=.lo)
PYEXT_TESTIMPORTMULTIPLE_OBJS	= $(PYEXT_TESTIMPORTMULTIPLE_SRCS:.c=.o)

PYEXT_TESTIMPORTMULTIPLE_SHARED	= pyext/_testimportmultiple$(PYTHON_SOEXT)
PYEXT_TESTIMPORTMULTIPLE_STATIC	= pyext/_testimportmultiple$(OS_ARCHIVE_EXT)

$(PYEXT_TESTIMPORTMULTIPLE_SHARED):$(PYEXT_TESTIMPORTMULTIPLE_LOBJS)
$(PYEXT_TESTIMPORTMULTIPLE_STATIC):$(PYEXT_TESTIMPORTMULTIPLE_OBJS)

pyext-testimportmultiple-shared:	$(PYEXT_TESTIMPORTMULTIPLE_SHARED)
pyext-testimportmultiple-static:	$(PYEXT_TESTIMPORTMULTIPLE_STATIC)

pyext-testimportmultiple-clean:
	rm -f $(PYEXT_TESTIMPORTMULTIPLE_LOBJS)
	rm -f $(PYEXT_TESTIMPORTMULTIPLE_OBJS)
	rm -f $(PYEXT_TESTIMPORTMULTIPLE_SHARED)
	rm -f $(PYEXT_TESTIMPORTMULTIPLE_STATIC)

clean:	pyext-testimportmultiple-clean

.PHONY:	pyext-testimportmultiple-shared
.PHONY:	pyext-testimportmultiple-static
.PHONY:	pyext-testimportmultiple-clean


# _testmultiphase
PYEXT_TESTMULTIPHASE_SRCS	+= pyext/obj/_testmultiphase.c

PYEXT_TESTMULTIPHASE_LOBJS	= $(PYEXT_TESTMULTIPHASE_SRCS:.c=.lo)
PYEXT_TESTMULTIPHASE_OBJS	= $(PYEXT_TESTMULTIPHASE_SRCS:.c=.o)

PYEXT_TESTMULTIPHASE_SHARED	= pyext/_testmultiphase$(PYTHON_SOEXT)
PYEXT_TESTMULTIPHASE_STATIC	= pyext/_testmultiphase$(OS_ARCHIVE_EXT)

$(PYEXT_TESTMULTIPHASE_SHARED):	$(PYEXT_TESTMULTIPHASE_LOBJS)
$(PYEXT_TESTMULTIPHASE_STATIC):	$(PYEXT_TESTMULTIPHASE_OBJS)

pyext-testmultiphase-shared:	$(PYEXT_TESTMULTIPHASE_SHARED)
pyext-testmultiphase-static:	$(PYEXT_TESTMULTIPHASE_STATIC)

pyext-testmultiphase-clean:
	rm -f $(PYEXT_TESTMULTIPHASE_LOBJS)
	rm -f $(PYEXT_TESTMULTIPHASE_OBJS)
	rm -f $(PYEXT_TESTMULTIPHASE_SHARED)
	rm -f $(PYEXT_TESTMULTIPHASE_STATIC)

clean:	pyext-testmultiphase-clean

.PHONY:	pyext-testmultiphase-shared
.PHONY:	pyext-testmultiphase-static
.PHONY:	pyext-testmultiphase-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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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


# xxlimited
PYEXT_XXLIMITED_SRCS		+= pyext/obj/xxlimited.c

PYEXT_XXLIMITED_LOBJS		= $(PYEXT_XXLIMITED_SRCS:.c=.lo)
PYEXT_XXLIMITED_OBJS		= $(PYEXT_XXLIMITED_SRCS:.c=.o)

PYEXT_XXLIMITED_SHARED		= pyext/xxlimited$(PYTHON_SOEXT)
PYEXT_XXLIMITED_STATIC		= pyext/xxlimited$(OS_ARCHIVE_EXT)

$(PYEXT_XXLIMITED_SHARED):	$(PYEXT_XXLIMITED_LOBJS)
$(PYEXT_XXLIMITED_STATIC):	$(PYEXT_XXLIMITED_OBJS)

pyext-xxlimited-shared:		$(PYEXT_XXLIMITED_SHARED)
pyext-xxlimited-static:		$(PYEXT_XXLIMITED_STATIC)

pyext-xxlimited-clean:
	rm -f $(PYEXT_XXLIMITED_LOBJS)
	rm -f $(PYEXT_XXLIMITED_OBJS)
	rm -f $(PYEXT_XXLIMITED_SHARED)
	rm -f $(PYEXT_XXLIMITED_STATIC)

clean:	pyext-xxlimited-clean

.PHONY:	pyext-xxlimited-shared
.PHONY:	pyext-xxlimited-static
.PHONY:	pyext-xxlimited-clean


# _blake2
PYEXT_BLAKE2_SRCS		+= pyext/obj/_blake2/blake2module.c
PYEXT_BLAKE2_SRCS		+= pyext/obj/_blake2/blake2b_impl.c
PYEXT_BLAKE2_SRCS		+= pyext/obj/_blake2/blake2s_impl.c

PYEXT_BLAKE2_LOBJS		= $(PYEXT_BLAKE2_SRCS:.c=.lo)
PYEXT_BLAKE2_OBJS		= $(PYEXT_BLAKE2_SRCS:.c=.o)

PYEXT_BLAKE2_SHARED		= pyext/_blake2$(PYTHON_SOEXT)
PYEXT_BLAKE2_STATIC		= pyext/_blake2$(OS_ARCHIVE_EXT)

$(PYEXT_BLAKE2_SHARED):		$(PYEXT_BLAKE2_LOBJS)
$(PYEXT_BLAKE2_STATIC):		$(PYEXT_BLAKE2_OBJS)

pyext-blake2-shared:		$(PYEXT_BLAKE2_SHARED)
pyext-blake2-static:		$(PYEXT_BLAKE2_STATIC)

pyext-blake2-clean:
	rm -f $(PYEXT_BLAKE2_LOBJS)
	rm -f $(PYEXT_BLAKE2_OBJS)
	rm -f $(PYEXT_BLAKE2_SHARED)
	rm -f $(PYEXT_BLAKE2_STATIC)

clean:	pyext-blake2-clean

.PHONY:	pyext-blake2-shared
.PHONY:	pyext-blake2-static
.PHONY:	pyext-blake2-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$(PYTHON_SOEXT)
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


# _multiprocessing
PYEXT_MULTIPROCESSING_SRCS	+= pyext/obj/_multiprocessing/multiprocessing.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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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$(PYTHON_SOEXT)
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


# _decimal
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/_decimal.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/basearith.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/constants.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/context.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/convolute.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/crt.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/difradix2.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/fnt.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/fourstep.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/io.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/memory.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/mpdecimal.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/numbertheory.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/sixstep.c
PYEXT_DECIMAL_SRCS		+= pyext/obj/_decimal/libmpdec/transpose.c

PYEXT_DECIMAL_LOBJS		= $(PYEXT_DECIMAL_SRCS:.c=.lo)
PYEXT_DECIMAL_OBJS		= $(PYEXT_DECIMAL_SRCS:.c=.o)

$(PYEXT_DECIMAL_LOBJS):		CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec
$(PYEXT_DECIMAL_OBJS):		CFLAGS_CONFIG += -I$(SOURCE_DIR)/Modules/_decimal/libmpdec

PYEXT_DECIMAL_SHARED		= pyext/_decimal$(PYTHON_SOEXT)
PYEXT_DECIMAL_STATIC		= pyext/_decimal$(OS_ARCHIVE_EXT)

$(PYEXT_DECIMAL_SHARED):	$(PYEXT_DECIMAL_LOBJS)
$(PYEXT_DECIMAL_STATIC):	$(PYEXT_DECIMAL_OBJS)

pyext-decimal-shared:		$(PYEXT_DECIMAL_SHARED)
pyext-decimal-static:		$(PYEXT_DECIMAL_STATIC)

pyext-decimal-clean:
	rm -f $(PYEXT_DECIMAL_LOBJS)
	rm -f $(PYEXT_DECIMAL_OBJS)
	rm -f $(PYEXT_DECIMAL_SHARED)
	rm -f $(PYEXT_DECIMAL_STATIC)

clean:	pyext-decimal-clean

.PHONY:	pyext-decimal-shared
.PHONY:	pyext-decimal-static
.PHONY:	pyext-decimal-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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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


# _lzma
PYEXT_LZMA_SRCS			+= pyext/obj/_lzmamodule.c

PYEXT_LZMA_LOBJS		= $(PYEXT_LZMA_SRCS:.c=.lo)
PYEXT_LZMA_OBJS			= $(PYEXT_LZMA_SRCS:.c=.o)


PYEXT_LZMA_SHARED		= pyext/_lzma$(PYTHON_SOEXT)
PYEXT_LZMA_STATIC		= pyext/_lzma$(OS_ARCHIVE_EXT)

$(PYEXT_LZMA_SHARED):		LDFLAGS_DYNEXT += -llzma
$(PYEXT_LZMA_SHARED):		$(PYEXT_LZMA_LOBJS)
$(PYEXT_LZMA_STATIC):		$(PYEXT_LZMA_OBJS)

pyext-lzma-shared:		$(PYEXT_LZMA_SHARED)
pyext-lzma-static:		$(PYEXT_LZMA_STATIC)

pyext-lzma-clean:
	rm -f $(PYEXT_LZMA_LOBJS)
	rm -f $(PYEXT_LZMA_OBJS)
	rm -f $(PYEXT_LZMA_SHARED)
	rm -f $(PYEXT_LZMA_STATIC)

clean:	pyext-lzma-clean

.PHONY:	pyext-lzma-shared
.PHONY:	pyext-lzma-static
.PHONY:	pyext-lzma-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$(PYTHON_SOEXT)
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


# _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$(PYTHON_SOEXT)
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


# _tkinter
PYEXT_TKINTER_SRCS		+= pyext/obj/_tkinter.c
PYEXT_TKINTER_SRCS		+= pyext/obj/tkappinit.c

PYEXT_TKINTER_LOBJS		= $(PYEXT_TKINTER_SRCS:.c=.lo)
PYEXT_TKINTER_OBJS		= $(PYEXT_TKINTER_SRCS:.c=.o)

$(PYEXT_TKINTER_LOBJS):		CFLAGS_CONFIG += $(CFLAGS_TCLTK)
$(PYEXT_TKINTER_OBJS):		CFLAGS_CONFIG += $(CFLAGS_TCLTK)

PYEXT_TKINTER_SHARED		= pyext/_tkinter$(PYTHON_SOEXT)
PYEXT_TKINTER_STATIC		= pyext/_tkinter$(OS_ARCHIVE_EXT)

$(PYEXT_TKINTER_SHARED):	LDFLAGS_DYNEXT += $(LDFLAGS_TCLTK)
$(PYEXT_TKINTER_SHARED):	$(PYEXT_TKINTER_LOBJS)
$(PYEXT_TKINTER_STATIC):	$(PYEXT_TKINTER_OBJS)

pyext-tkinter-shared:		$(PYEXT_TKINTER_SHARED)
pyext-tkinter-static:		$(PYEXT_TKINTER_STATIC)

pyext-tkinter-clean:
	rm -f $(PYEXT_TKINTER_LOBJS)
	rm -f $(PYEXT_TKINTER_OBJS)
	rm -f $(PYEXT_TKINTER_SHARED)
	rm -f $(PYEXT_TKINTER_STATIC)

clean:	pyext-tkinter-clean

.PHONY:	pyext-tkinter-shared
.PHONY:	pyext-tkinter-static
.PHONY:	pyext-tkinter-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$(PYTHON_SOEXT)
PYEXT_BINASCII_STATIC		= pyext/binascii$(OS_ARCHIVE_EXT)

$(PYEXT_BINASCII_SHARED):	LDFLAGS_DYNEXT += -lz
$(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


# 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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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


# 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$(PYTHON_SOEXT)
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