text: import glob
  from os import path
  
  
  # This file will look in src/cedar/bindings/*.cpp for all binding files
  # and generate a single file in src/cedar/binding_init.cpp with all the correct
  # funciton calls to create the builtin modules
  
  header = """
  // generated by tools/scripts/generate_binding_init.py. DO NOT MODIFY
  
  namespace cedar { void bind_stdlib(void); }
  using namespace cedar;
  
  
  """
  
  
  with open('src/cedar/binding_init.cpp', 'w') as f:
      f.write(header)
  
  
      files = [i for i in glob.iglob('src/cedar/bindings/*.cpp')]
  
      names = []
  
      for p in files:
          name = path.splitext(path.basename(p))[0]
          names.append(name)
  
  
      # declare all the functions
      for name in names:
          f.write(f'void bind_{name}(void);\n')
  
      f.write('\n\nvoid cedar::bind_stdlib(void) {\n')
  
      for name in names:
          f.write(f'\tbind_{name}();\n')
      f.write('}\n')
  