2121from setuptools import Extension , setup
2222from setuptools .command .build_ext import build_ext
2323
24+ TYPE_CHECKING = False
25+ if TYPE_CHECKING :
26+ from setuptools import _BuildInfo
27+
2428configuration : dict [str , list [str ]] = {}
2529
2630# parse configuration from _custom_build/backend.py
@@ -1072,16 +1076,20 @@ def debug_build() -> bool:
10721076 return hasattr (sys , "gettotalrefcount" ) or FUZZING_BUILD
10731077
10741078
1079+ libraries : list [tuple [str , _BuildInfo ]] = [
1080+ ("pil_imaging_mode" , {"sources" : ["src/libImaging/Mode.c" ]}),
1081+ ]
1082+
10751083files : list [str | os .PathLike [str ]] = ["src/_imaging.c" ]
10761084for src_file in _IMAGING :
10771085 files .append ("src/" + src_file + ".c" )
10781086for src_file in _LIB_IMAGING :
10791087 files .append (os .path .join ("src/libImaging" , src_file + ".c" ))
10801088ext_modules = [
1081- Extension ("PIL._imaging" , files ),
1082- Extension ("PIL._imagingft" , ["src/_imagingft.c" ]),
1083- Extension ("PIL._imagingcms" , ["src/_imagingcms.c" ]),
1084- Extension ("PIL._webp" , ["src/_webp.c" ]),
1089+ Extension ("PIL._imaging" , files , libraries = [ "pil_imaging_mode" ] ),
1090+ Extension ("PIL._imagingft" , ["src/_imagingft.c" ], libraries = [ "pil_imaging_mode" ] ),
1091+ Extension ("PIL._imagingcms" , ["src/_imagingcms.c" ], libraries = [ "pil_imaging_mode" ] ),
1092+ Extension ("PIL._webp" , ["src/_webp.c" ], libraries = [ "pil_imaging_mode" ] ),
10851093 Extension ("PIL._avif" , ["src/_avif.c" ]),
10861094 Extension ("PIL._imagingtk" , ["src/_imagingtk.c" , "src/Tk/tkImaging.c" ]),
10871095 Extension ("PIL._imagingmath" , ["src/_imagingmath.c" ]),
@@ -1093,6 +1101,7 @@ def debug_build() -> bool:
10931101 setup (
10941102 cmdclass = {"build_ext" : pil_build_ext },
10951103 ext_modules = ext_modules ,
1104+ libraries = libraries ,
10961105 zip_safe = not (debug_build () or PLATFORM_MINGW ),
10971106 )
10981107except RequiredDependencyException as err :
0 commit comments