#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐
#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘

# this file contains the recipes for the C extensions 
# that are included with the Python source distribution
# the list of modules are also provided in Modules/config.c
# so any changes here must be reflected there as well


# these modules are always required

# _elementtree
EXTMODULE_ELEMENTTREE_SRCS_C =						\
	third_party/python/Modules/_elementtree.c

EXTMODULE_ELEMENTTREE_OBJS = 						\
	$(EXTMODULE_ELEMENTTREE_SRCS_C:%.c=o/$(MODE)/%.o)

# _io 
EXTMODULE_IO_SRCS_C	=								\
	$(wildcard third_party/python/Modules/_io/*.c)

EXTMODULE_IO_OBJS =									\
	$(EXTMODULE_IO_SRCS_C:%.c=o/$(MODE)/%.o)

# _tracemalloc
EXTMODULE_TRACEMALLOC_SRCS_C	=						\
	third_party/python/Modules/_tracemalloc.c		\
	third_party/python/Modules/hashtable.c

# these modules don't rely on POSIX
EXTMODULE_BASE_INDEP_SRCS_C =						\
	third_party/python/Modules/gcmodule.c			\
	third_party/python/Modules/arraymodule.c		\
	third_party/python/Modules/cmathmodule.c		\
	third_party/python/Modules/mathmodule.c			\
	third_party/python/Modules/_math.c				\
	third_party/python/Modules/_struct.c			\
	third_party/python/Modules/_weakref.c			\
	third_party/python/Modules/_testcapimodule.c		\
	third_party/python/Modules/_randommodule.c			\
	third_party/python/Modules/_pickle.c				\
	third_party/python/Modules/_datetimemodule.c		\
	third_party/python/Modules/_bisectmodule.c			\
	third_party/python/Modules/_heapqmodule.c			\
	third_party/python/Modules/unicodedata.c			\
	$(EXTMODULE_TRACEMALLOC_SRCS_C)						\
	$(EXTMODULE_ELEMENTTREE_SRCS_C)						

	
# these modules require POSIX-compliant libs
EXTMODULE_BASE_POSIX_SRCS_C =						\
	third_party/python/Modules/main.c				\
	third_party/python/Modules/posixmodule.c		\
	third_party/python/Modules/errnomodule.c		\
	third_party/python/Modules/pwdmodule.c			\
	third_party/python/Modules/_sre.c				\
	third_party/python/Modules/_codecsmodule.c		\
	third_party/python/Modules/_functoolsmodule.c	\
	third_party/python/Modules/_operator.c			\
	third_party/python/Modules/_collectionsmodule.c	\
	third_party/python/Modules/itertoolsmodule.c	\
	third_party/python/Modules/atexitmodule.c		\
	third_party/python/Modules/signalmodule.c		\
	third_party/python/Modules/_stat.c				\
	third_party/python/Modules/timemodule.c			\
	third_party/python/Modules/zipimport.c			\
	third_party/python/Modules/faulthandler.c		\
	third_party/python/Modules/symtablemodule.c		\
	third_party/python/Modules/fcntlmodule.c		\
	third_party/python/Modules/grpmodule.c			\
	third_party/python/Modules/selectmodule.c		\
	third_party/python/Modules/mmapmodule.c			\
	third_party/python/Modules/_csv.c				\
	third_party/python/Modules/_localemodule.c		\
	$(EXTMODULE_IO_SRCS_C)

# optional modules

# _blake
EXTMODULE_BLAKE_SRCS_C = 								\
	$(wildcard third_party/python/Modules/_blake2/*.c)

EXTMODULE_BLAKE_OBJS = 									\
	$(EXTMODULE_BLAKE_SRCS_C:%.c=o/$(MODE)/%.o)

# pyexpat
EXTMODULE_PYEXPAT_SRCS_C =								\
	third_party/python/Modules/expat/xmlparse.c			\
	third_party/python/Modules/expat/xmlrole.c			\
	third_party/python/Modules/expat/xmltok.c			\
	third_party/python/Modules/pyexpat.c

EXTMODULE_PYEXPAT_OBJS =			\
	$(EXTMODULE_PYEXPAT_SRCS_C:%.c=o/$(MODE)/%.o)

# lsprof
EXTMODULE_LSPROF_SRCS_C =								\
	third_party/python/Modules/_lsprof.c				\
	third_party/python/Modules/rotatingtree.c			

# CJK codecs
EXTMODULE_CJKCODECS_SRCS_C =								\
	$(wildcard third_party/python/Modules/cjkcodecs/*.c)

# sqlite

# bz2

# readline

# ctypes

# _ssl

# _hashlib


# _decimal module (w/libmpdec)
EXTMODULE_DECIMAL_SRCS_C = 						\
	$(wildcard third_party/python/Modules/_decimal/libmpdec/*.c) \
	third_party/python/Modules/_decimal/_decimal.c

EXTMODULE_DECIMAL_OBJS =							\
	$(EXTMODULE_DECIMAL_SRCS_C:%.c=o/$(MODE)/%.o)

EXTMODULE_OPT_SRCS_C =									\
	$(EXTMODULE_CJKCODECS_SRCS_C)						\
	$(EXTMODULE_LSPROF_SRCS_C)							\
	$(EXTMODULE_BLAKE_SRCS_C)							\
	$(EXTMODULE_LSPROF_SRCS_C)							\
	$(EXTMODULE_DECIMAL_SRCS_C)							\
	$(EXTMODULE_PYEXPAT_SRCS_C)							\
	third_party/python/Modules/socketmodule.c			\
	third_party/python/Modules/md5module.c				\
	third_party/python/Modules/sha1module.c				\
	third_party/python/Modules/sha256module.c			\
	third_party/python/Modules/sha512module.c			\
	third_party/python/Modules/_sha3/sha3module.c		\
	third_party/python/Modules/resource.c				\
	third_party/python/Modules/_posixsubprocess.c		\
	third_party/python/Modules/syslogmodule.c			\
	third_party/python/Modules/binascii.c				\
	third_party/python/Modules/parsermodule.c			\
	third_party/python/Modules/syslogmodule.c			\
	third_party/python/Modules/fpectlmodule.c			\
	third_party/python/Modules/zlibmodule.c				\
	third_party/python/Modules/_json.c					\
	third_party/python/Modules/_opcode.c				


# add all of the module source files together to use in python.mk
THIRD_PARTY_PYTHON_MODULES_SRCS_C =			 				\
		third_party/python/Modules/config.c					\
		third_party/python/Modules/getbuildinfo.c			\
		third_party/python/Modules/getpath.c				\
		$(EXTMODULE_BASE_INDEP_SRCS_C)						\
		$(EXTMODULE_BASE_POSIX_SRCS_C)						\
		$(EXTMODULE_OPT_SRCS_C)

THIRD_PARTY_PYTHON_MODULES_OBJS =							\
		$(THIRD_PARTY_PYTHON_MODULES_SRCS_C:%.c=o/$(MODE)/%.o)


THIRD_PARTY_PYTHON_MODULES_DIRECTDEPS =						\
			THIRD_PARTY_ZLIB
# add sqlite if needed here

$(THIRD_PARTY_PYTHON_MODULES_OBJS):							\
	OVERRIDE_CFLAGS	+=		\
		-Ithird_party/python/Modules

o/$(MODE)/third_party/python/Modules/getbuildinfo.o:		\
	OVERRIDE_CFLAGS +=			\
		-DGITVERSION='"3.6"'		\
		-DGITTAG='"3.6"'			\
		-DGITBRANCH='"cosmo"'

$(EXTMODULE_ELEMENTTREE_OBJS):						\
	OVERRIDE_CFLAGS += 			\
		-DUSE_PYEXPAT_CAPI		\
		-DHAVE_EXPAT_CONFIG_H	\
		-Ithird_party/python/Modules/expat/

$(EXTMODULE_IO_OBJS):								\
	OVERRIDE_CFLAGS +=					\
	-Ithird_party/python/Modules/_io 	

$(EXTMODULE_BLAKE_OBJS):									\
	OVERRIDE_CFLAGS +=			\
		-DBLAKE_USE_SSE=1

$(EXTMODULE_PYEXPAT_OBJS):								\
	OVERRIDE_CFLAGS +=			\
		-DXML_POOR_ENTROPY		\
		-DHAVE_EXPAT_CONFIG_H	\
		-DUSE_PYEXPAT_CAPI		\
		-Ithird_party/python/Modules/expat

$(EXTMODULE_DECIMAL_OBJS):									\
	OVERRIDE_CFLAGS += 										\
		-Ithird_party/python/Modules/_decimal/	 			\
		-Ithird_party/python/Modules/_decimal/libmpdec	 	\
		-DASM=1												\
		-DCONFIG_64=1

o/$(MODE)/third_party/python/Modules/_decimal/libmpdec/transpose.o:	\
	OVERRIDE_CFLAGS += -DSTACK_FRAME_UNLIMITED