code: def compile(self):
      num_info = {}
      if num_info:
          self.include_dirs.extend(num_info.get("include_dirs", []))
      ext_args = {
          "name": self.modulename,
          "sources": self.sources,
          "include_dirs": self.include_dirs,
          "library_dirs": self.library_dirs,
          "libraries": self.libraries,
          "define_macros": self.define_macros,
          "undef_macros": self.undef_macros,
          "extra_objects": self.extra_objects,
          "f2py_options": self.f2py_flags,
      }
  
      if self.sysinfo_flags:
          for n in self.sysinfo_flags:
              i = get_info(n)
              if not i:
                  print(
                      f"No {repr(n)} resources found"
                      "in system (try `f2py --help-link`)"
                  )
              dict_append(ext_args, **i)
  
      ext = Extension(**ext_args)
  
      sys.argv = [sys.argv[0]] + self.setup_flags
      sys.argv.extend(
          [
              "build",
              "--build-temp",
              self.build_dir,
              "--build-base",
              self.build_dir,
              "--build-platlib",
              ".",
              "--disable-optimization",
          ]
      )
  
      if self.fc_flags:
          sys.argv.extend(["config_fc"] + self.fc_flags)
      if self.flib_flags:
          sys.argv.extend(["build_ext"] + self.flib_flags)
  
      setup(ext_modules=[ext])
  
      if self.remove_build_dir and os.path.exists(self.build_dir):
          print(f"Removing build directory {self.build_dir}")
          shutil.rmtree(self.build_dir)
  
file_path: numpy/numpy/f2py/_backends/_distutils.py
imports: from ._backend import Backend
  from numpy.distutils.core import setup, Extension
  from numpy.distutils.system_info import get_info
  from numpy.distutils.misc_util import dict_append
  from numpy.exceptions import VisibleDeprecationWarning
  import os
  import sys
  import shutil
  import warnings
label_desc: Use image node_id 2 for calling the DistutilsBackend obj's underlying member method code with example usage: obj.compile() without return types