code: def run(self):
      cpu_cores = max(1, cpu_count() - 1)
      cmake_arg_list = [
          "cmake",
          "-DCMAKE_BUILD_TYPE=Release",
          "-DBUILD_PYTHON=ON",
          f"-DBUILD_PYTHON_VERSION={python_version}",
      ]
  
      env_cmake_args = os.getenv("VIZDOOM_CMAKE_ARGS")
      if env_cmake_args:
          cmake_arg_list += env_cmake_args.split()
          warnings.warn(
              f"VIZDOOM_CMAKE_ARGS is set, the following arguments will be added to cmake command: {env_cmake_args}"
          )
  
      # Windows specific version of the libraries
      if platform.startswith("win"):
          generator = os.getenv("VIZDOOM_BUILD_GENERATOR_NAME")
          if not generator:
              raise RuntimeError(
                  "VIZDOOM_BUILD_GENERATOR_NAME is not set"
              )  # TODO: Improve
  
          deps_root = os.getenv("VIZDOOM_WIN_DEPS_ROOT")
          if deps_root is None:
              raise RuntimeError(
                  "VIZDOOM_WIN_DEPS_ROOT is not set"
              )  # TODO: Improve
  
          mpg123_include = os.path.join(deps_root, "libmpg123")
          mpg123_lib = os.path.join(
              deps_root, "libmpg123/libmpg123-0.lib"
          )
          mpg123_dll = os.path.join(
              deps_root, "libmpg123/libmpg123-0.dll"
          )
  
          sndfile_include = os.path.join(
              deps_root, "libsndfile/include"
          )
          sndfile_lib = os.path.join(
              deps_root, "libsndfile/lib/libsndfile-1.lib"
          )
          sndfile_dll = os.path.join(
              deps_root, "libsndfile/bin/libsndfile-1.dll"
          )
  
          os.environ["OPENALDIR"] = str(
              os.path.join(deps_root, "openal-soft")
          )
          openal_dll = os.path.join(
              deps_root, "openal-soft/bin/Win64/OpenAL32.dll"
          )
  
          cmake_arg_list.extend(
              [
                  "-G",
                  generator,
                  f"-DMPG123_INCLUDE_DIR={mpg123_include}",
                  f"-DMPG123_LIBRARIES={mpg123_lib}",
                  f"-DSNDFILE_INCLUDE_DIR={sndfile_include}",
                  f"-DSNDFILE_LIBRARY={sndfile_lib}",
              ]
          )
  
          shutil.copy(mpg123_dll, build_output_path)
          shutil.copy(sndfile_dll, build_output_path)
          shutil.copy(openal_dll, build_output_path)
  
      python_root_dir = os.path.dirname(sys.executable)
      cmake_arg_list.append(f"-DPython_ROOT_DIR={python_root_dir}")
      cmake_arg_list.append("-DPython_FIND_STRATEGY=LOCATION")
  
      # Manually specified artifacts
      # python_executable = sys.executable
      # python_include = sysconfig.get_python_inc()
      # python_standard_lib = sysconfig.get_python_lib(standard_lib=True)
  
      if os.path.exists("CMakeCache.txt"):
          os.remove("CMakeCache.txt")
  
      cmake_arg_list.append(".")
      print(
          f"Running cmake with arguments: {cmake_arg_list}",
          file=sys.stderr,
      )
  
      try:
          if platform.startswith("win"):
              if os.path.exists(
                  "./src/lib_python/libvizdoom_python.dir"
              ):
                  shutil.rmtree(
                      "./src/lib_python/libvizdoom_python.dir"
                  )  # TODO: This is not very elegant, improve
              subprocess.check_call(cmake_arg_list)
              subprocess.check_call(
                  ["cmake", "--build", ".", "--config", "Release"]
              )
          else:
              subprocess.check_call(cmake_arg_list)
              subprocess.check_call(["make", "-j", str(cpu_cores)])
      except subprocess.CalledProcessError:
          sys.stderr.write(
              "\033[1m\nInstallation from source failed, you may be missing some dependencies. "
              "\nPlease check https://vizdoom.farama.org/introduction/pythonQuickstart for details.\n\n\033[0m"
          )
          raise
  
      build.run(self)
  
imports: import os
  import shutil
  import subprocess
  import sys
  import sysconfig
  import warnings
  from multiprocessing import cpu_count
  from setuptools import Distribution, setup
  from setuptools.command.install import install
  from wheel.bdist_wheel import bdist_wheel
label_desc: Use image node_id 1 for calling the BuildCommand obj's underlying member method code with example usage: obj.run() without return types