class_docstr: A class that invokes NVCC or HIPCC.
class_docstr_tok: ["A","class","that","invokes","NVCC","or","HIPCC","."]
code: def _get_preprocess_options(self, ext: Extension) -> List[str]:
      # https://setuptools.pypa.io/en/latest/deprecated/distutils/apiref.html#distutils.core.Extension
      # https://github.com/pypa/setuptools/blob/v60.0.0/setuptools/_distutils/command/build_ext.py#L524-L526
      incdirs = ext.include_dirs[:]
      macros: List[Any] = ext.define_macros[:]
      for undef in ext.undef_macros:
          macros.append((undef,))
      return distutils.ccompiler.gen_preprocess_options(macros, incdirs)
  
imports: import distutils.ccompiler
  import os
  import os.path
  import platform
  import shutil
  import sys
  import subprocess
  from typing import Any, Optional, List
  import setuptools
  import setuptools.msvc
  from setuptools import Extension
  from cupy_builder._context import Context
  import cupy_builder.install_build
label_desc: Use image node_id 2 for calling the DeviceCompilerBase obj's underlying member method code with example usage: obj._get_preprocess_options(ext) and returns: distutils