code: def build_object(
      self, compiler, source, target, flags, macros, include, env=None
  ):
      if os.path.exists(target):
          return target
      if not os.path.exists(source):
          raise IOError("Cannot find source file: %s" % source)
      command = compiler.split()
      command.extend(["-c", source, "-o", target])
      command.extend(flags)
      command.extend(macros)
      command.extend(include)
      print("[COMMAND]", " ".join(command))
      # TODO: change this to subprocess.run etc. once we drop 2.7
      subprocess.check_call(command, cwd=BLIS_DIR)
      return target
  
imports: import shutil
  import os
  from setuptools import Extension, setup
  import contextlib
  import io
  import os.path
  import json
  import tempfile
  from setuptools.command.build_ext import build_ext, new_compiler
  from Cython.Build import cythonize
  import subprocess
  import sys
  import platform
  import numpy
label_desc: Use image node_id 8 for calling the ExtensionBuilder obj's underlying member method code with example usage: obj.build_object(compiler, source, target, flags, macros, include, env) and returns: target, target