code: def get_preprocessor():
      # findout which compiler to use
      compiler_name = distutils.ccompiler.get_default_compiler()
      compiler = distutils.ccompiler.new_compiler(
          compiler=compiler_name
      )
      try:
          customize_compiler(compiler)
      except AttributeError as e:
          print(
              "Warning: failed customizing compiler ({:s})".format(
                  repr(e)
              )
          )
  
      if hasattr(compiler, "initialize"):
          try:
              compiler.initialize()
          except ValueError as e:
              print(
                  "Warning: failed initializing compiler ({:s})".format(
                      repr(e)
                  )
              )
  
      cpp_cmd = None
      if hasattr(compiler, "preprocessor"):  # for unixccompiler
          cpp_cmd = compiler.preprocessor
      elif hasattr(compiler, "compiler"):  # for ccompiler
          cpp_cmd = compiler.compiler.split()
          cpp_cmd += ["-E"]
      elif hasattr(compiler, "cc"):  # for msvccompiler
          cpp_cmd = compiler.cc.split()
          cpp_cmd += ["-E"]
  
      # On win-amd64 (py3.x), the default compiler is cross-compiling, from x86
      # to amd64 with %WIN_SDK_ROOT%\x86_amd64\cl.exe, but using this binary as a
      # pre-processor generates no output, so we use %WIN_SDK_ROOT%\cl.exe
      # instead.
      if len(cpp_cmd) > 1 and "cl.exe" in cpp_cmd[-2]:
          plat = os.path.basename(os.path.dirname(cpp_cmd[-2]))
          if plat == "x86_amd64":
              print(
                  "workaround on win64 to avoid empty pre-processor output"
              )
              cpp_cmd[-2] = cpp_cmd[-2].replace("x86_amd64", "")
          elif True in ["amd64" in f for f in cpp_cmd]:
              print(
                  "warning: not using workaround for", cpp_cmd[0], plat
              )
  
      if not cpp_cmd:
          print("Warning: could not guess preprocessor, using env's CC")
          cpp_cmd = os.environ.get("CC", "cc").split()
          cpp_cmd += ["-E"]
      if "emcc" in cpp_cmd:
          cpp_cmd += [
              "-x",
              "c",
          ]  # emcc defaults to c++, force C language
      return cpp_cmd
  
file_path: aubio/python/lib/gen_external.py
imports: import distutils.ccompiler
  import sys
  import os
  import subprocess
  import glob
  from distutils.sysconfig import customize_compiler
  from gen_code import MappedObject
label_desc: Use image node_id 1 for calling a global function with example usage: get_preprocessor() and returns: cpp_cmd