Commit Graph

3 Commits

Author SHA1 Message Date
Rintaro Ishizaki
f25af9f491 [Macros] Update executable plugin test to use the python running 'lit'
Also, update 'mock_plugin.py' to support python2

rdar://105870339
2023-02-24 09:27:01 -08:00
Rintaro Ishizaki
fdafe04b83 [Test] Disable macro executable plugin test (#63885)
Temporality disable the test while investigating
rdar://105870339
2023-02-24 09:57:00 -06:00
Rintaro Ishizaki
0e31393024 [Macros] Add executable plugin support
Executable compiler plugins are programs invoked by the host compiler
and communicate with the host with IPC via standard IO (stdin/stdout.)
Each message is serialized in JSON, prefixed with a header which is a
64bit little-endian integer indicating the size of the message.

* Basic/ExecuteWithPipe: External program invocation. Lik
  llvm::sys::ExecuteNoWait() but establishing pipes to the child's
  stdin/stdout
* Basic/Sandbox: Sandboxed execution helper. Create command line
  arguments to be executed in sandbox environment (similar to SwiftPM's
  pluging sandbox)
* AST/PluginRepository: ASTContext independent plugin manager
* ASTGen/PluginHost: Communication with the plugin. Messages are
  serialized by ASTGen/LLVMJSON

rdar://101508815
2023-02-22 10:22:14 -08:00