code: def run_setup(*, with_binary, with_cuda):
      ext_modules = []
      if with_binary:
          compile_args = []
          if sys.platform == "zos":
              compile_args.append("-qlonglong")
          if sys.platform == "win32":
              compile_args.append("/MD")
  
          ext_modules.append(
              Extension(
                  "shap._cext",
                  sources=["shap/cext/_cext.cc"],
                  include_dirs=[np.get_include()],
                  extra_compile_args=compile_args,
              )
          )
      if with_cuda:
          try:
              cuda_home, _ = get_cuda_path()
              if sys.platform == "win32":
                  cudart_path = cuda_home + "/lib/x64"
              else:
                  cudart_path = cuda_home + "/lib64"
                  compile_args.append("-fPIC")
  
              lib_dir, lib = compile_cuda_module(compile_args)
  
              ext_modules.append(
                  Extension(
                      "shap._cext_gpu",
                      sources=["shap/cext/_cext_gpu.cc"],
                      extra_compile_args=compile_args,
                      include_dirs=[np.get_include()],
                      library_dirs=[lib_dir, cudart_path],
                      libraries=[lib, "cudart"],
                      depends=[
                          "shap/cext/_cext_gpu.cu",
                          "shap/cext/gpu_treeshap.h",
                          "setup.py",
                      ],
                  )
              )
          except Exception as e:
              raise Exception(
                  "Error building cuda module: " + repr(e)
              ) from e
  
      setup(ext_modules=ext_modules)
  
file_path: shap/setup.py
imports: import os
  import platform
  import subprocess
  import sys
  import sysconfig
  import numpy
  from packaging.version import Version, parse
  from setuptools import Extension, setup
label_desc: Use image node_id 4 for calling a global function with example usage: run_setup() without return types