Clang - это синтаксический анализатор для C-подобных языков, включая C ++. Если ваш язык достаточно похож на C (т. Е. Java - нет), вы можете добавить поддержку своего языка в clang, который знает, как создавать IR LLVM.
LLVM не требует JIT и обычно статически связан. LLVM предоставляет библиотеки, которые выполняют оптимизацию и генерацию кода LLVM IR. Для JIT это просто генерировать код в память, а не на диск. Обычное использование Clang + LLVM является заменой GCC, генерирующим код для файлов .o.
Насколько большой это будет зависеть от того, что вам нужно. Хотите ли вы все оптимизации? Хотите ли вы все цели (в отличие от GCC, LLVM может быть построен с таким количеством бэкэндов в одном двоичном файле, как вы хотите). Так как вы упомянули встроенный, одним примером является Android, использующий LLVM на мобильных телефонах: http://android -developers.blogspot.com / 2011/02 / introduction-renderscript.html
Windows поддерживается довольно хорошо, вы можете собрать LLVM с MSVC ++, используя нашу систему сборки CMake или mingw32. Поддержка Solaris более сомнительна, мы периодически использовали патчи для ее исправления, но я некоторое время их не видел.
Наконец, вы можете прочитать учебник по http://llvm.org/docs/tutorial. Это ведет хронику построения языка JITted REPL, но основа та же для статически скомпилированного языка. Вместо использования объекта llvm :: JIT вы вызываете Target.addPassesToEmitFile и передаете ему выходной поток для записи. См. Llvm / tools / llc / llc.cpp для полностью проработанного примера (он длинный; требуется лишь небольшая часть этого, если вы не хотите поддерживать все параметры, которые поддерживает llc).