code: def build(input_file, compiler_args=(), force=False):
      """
      Build an executable program from a Cython module.
  
      Returns the name of the executable file.
      """
      basename = os.path.splitext(input_file)[0]
      exe_file = basename + EXE_EXT
      if not force and os.path.abspath(exe_file) == os.path.abspath(
          input_file
      ):
          raise ValueError(
              "Input and output file names are the same, refusing to overwrite"
          )
      if (
          not force
          and os.path.exists(exe_file)
          and os.path.exists(input_file)
          and os.path.getmtime(input_file) <= os.path.getmtime(exe_file)
      ):
          _debug("File is up to date, not regenerating %s", exe_file)
          return exe_file
      cycompile(input_file, compiler_args)
      ccompile(basename)
      clink(basename)
      return exe_file
  
file_path: catboost/contrib/tools/cython/Cython/Build/BuildExecutable.py
imports: from __future__ import absolute_import
  import sys
  import os
  from distutils import sysconfig
label_desc: Use image node_id 9 for calling a global function with example usage: build(input_file, compiler_args, force) and returns: exe_file, exe_file