text: # Generated by pypy/tool/import_cffi.py
  import cffi
  
  ffi = cffi.FFI()
  
  ffi.embedding_api("""
      extern int (*my_callback)(int);
      int add_rec(int, int);
  """)
  
  ffi.embedding_init_code(r"""
      from _add_recursive_cffi import ffi, lib
      import sys
      print("preparing REC")
      sys.stdout.flush()
  
      @ffi.def_extern()
      def add_rec(x, y):
          print("adding %d and %d" % (x, y))
          sys.stdout.flush()
          return x + y
  
      x = lib.my_callback(400)
      print('<<< %d >>>' % (x,))
  """)
  
  ffi.set_source("_add_recursive_cffi", """
  /* use CFFI_DLLEXPORT: on windows, it expands to __declspec(dllexport),
     which is needed to export a variable from a dll */
  CFFI_DLLEXPORT int (*my_callback)(int);
  """)
  
  fn = ffi.compile(verbose=True)
  print('FILENAME: %s' % (fn,))
  