Bibliotecas estáticas / compartilhadas fáceis com distutils

Mesmo que, em retrospecto, os documentos da API estivessem sempre lá, de alguma forma olhar para as entranhas do distutils me levou a uma direção estranha por muito tempo. Dados alguns arquivos de origem, o caso de uso básico real é muito simples:

from distutils.ccompiler import new_compiler

# Create compiler with default options
c
= new_compiler()
workdir
= "."

# Optionally add include directories etc.
# c.add_include_dir("some/include")

# Compile into .o files
objects
= c.compile(["a.c", "b.c"])

# Create static or shared library
c
.create_static_lib(objects, "foo", output_dir=workdir)
c
.link_shared_lib(objects, "foo", output_dir=workdir)