# These come from looking through setup.py

array arraymodule.c
cmath cmathmodule.c _math.c
math mathmodule.c _math.c
_contextvars _contextvarsmodule.c
time timemodule.c
_datetime _datetimemodule.c
_zoneinfo _zoneinfo.c
_random _randommodule.c
_bisect _bisectmodule.c
_heapq _heapqmodule.c
_pickle _pickle.c
atexit atexitmodule.c
_json _json.c
_lsprof _lsprof.c rotatingtree.c
unicodedata unicodedata.c
_opcode _opcode.c
_asyncio _asynciomodule.c
_abc _abc.c
_queue _queuemodule.c
_statistics _statisticsmodule.c
fcntl fcntlmodule.c
pwd pwdmodule.c
grp grpmodule.c
select selectmodule.c
parser parsermodule.c
mmap mmapmodule.c
syslog syslogmodule.c
_xxsubinterpreters _xxsubinterpretersmodule.c
_csv _csv.c
_posixsubprocess _posixsubprocess.c
_socket socketmodule.c
termios termios.c
resource resource.c
zlib zlibmodule.c
binascii binascii.c
pyexpat pyexpat.c
_multibytecodec cjkcodecs/multibytecodec.c
_codecs_kr cjkcodecs/_codecs_kr.c
_codecs_jp cjkcodecs/_codecs_jp.c
_codecs_cn cjkcodecs/_codecs_cn.c
_codecs_tw cjkcodecs/_codecs_tw.c
_codecs_hk cjkcodecs/_codecs_hk.c
_codecs_iso2022 cjkcodecs/_codecs_iso2022.c

_multiprocessing _multiprocessing/multiprocessing.c _multiprocessing/semaphore.c

_ctypes _ctypes/_ctypes.c _ctypes/callbacks.c _ctypes/callproc.c _ctypes/stgdict.c _ctypes/cfield.c

# TODO: get this working with boringssl
#_ssl _ssl.c _ssl/debughelpers.c
#_hashlib _hashopenssl.c

_blake2 _blake2/blake2module.c _blake2/blake2b_impl.c _blake2/blake2s_impl.c
_md5 md5module.c
_sha1 sha1module.c
_sha256 sha256module.c
_sha512 sha512module.c
_sha3 _sha3/sha3module.c

_struct _struct.c
