code: def build_extension(self, ext):
      extdir = os.path.abspath(
          os.path.dirname(self.get_ext_fullpath(ext.name))
      )
      # required for auto-detection of auxiliary "native" libs
      if not extdir.endswith(os.path.sep):
          extdir += os.path.sep
  
      cmake_args = [
          "-DCMAKE_LIBRARY_OUTPUT_DIRECTORY=" + extdir,
          "-DKOMPUTE_OPT_BUILD_PYTHON=ON",
          "-DKOMPUTE_OPT_LOG_LEVEL=Off",
          "-DKOMPUTE_OPT_USE_SPDLOG=Off",
          "-DKOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK=ON"
          "-DPYTHON_EXECUTABLE=" + sys.executable,
          "-DPYTHON_INCLUDE_DIR=" + sysconfig.get_path("include"),
          "-DPYTHON_LIBRARY=" + sysconfig.get_path("stdlib"),
      ]
  
      cfg = "Debug" if self.debug else "Release"
      build_args = ["--config", cfg]
  
      env = os.environ.copy()
      oldCxxFlags = env.get("CXXFLAGS", "")
      env[
          "CXXFLAGS"
      ] = f'{oldCxxFlags} -DVERSION_INFO=\\"{self.distribution.get_version()}\\"'
  
      if platform.system() == "Windows":
          cmake_args += [
              f"-DCMAKE_LIBRARY_OUTPUT_DIRECTORY_{cfg.upper()}={extdir}"
          ]
          if sys.maxsize > 2**32:
              cmake_args += ["-A", "x64"]
          build_args += ["--", "/m"]
      else:
          env["CXXFLAGS"] += " -fPIC"
          cmake_args += ["-DCMAKE_BUILD_TYPE=" + cfg]
          build_args += ["--", "-j"]
          # Optional environment variable to limit the number of parallel jobs for GitHub actions to reduce RAM usage
          if "KOMPUTE_PYTHON_NUM_PARALLEL_THREADS" in env:
              build_args += env["KOMPUTE_PYTHON_NUM_PARALLEL_THREADS"]
  
      if not os.path.exists(self.build_temp):
          os.makedirs(self.build_temp)
  
      subprocess.check_call(
          ["cmake", ext.sourcedir] + cmake_args,
          cwd=self.build_temp,
          env=env,
      )
      subprocess.check_call(
          ["cmake", "--build", "."] + build_args, cwd=self.build_temp
      )
  
file_path: kompute/setup.py
imports: import os
  import re
  import platform
  import sys
  import sysconfig
  import subprocess
  from setuptools import setup, Extension
  from setuptools.command.build_ext import build_ext
  from distutils.version import LooseVersion
label_desc: Use image node_id 2 for calling the CMakeBuild obj's underlying member method code with example usage: obj.build_extension(ext) without return types