I am building a toy language here with the main goal of entertaining myself. You're invited to talk, exchange ideas, contribute, ... in case it entertains you, too.
To run the compiler on Ubuntu, install llvm-18
and lld-18
so that e.g. llc-18
is available as a command.
The windows distributions of LLVM don't include some important tools, e.g. a linker (lld
). This project
contains a GitHub action to compile a windows build of LLVM
that includes the lld
linker as a Windows executable. You need to copy the build outputs of that action
to the Windows machine you want to run the compiler on and then point the emerge compiler to that LLVM
distribution. Say you extract the files to F:\LLVM\18.1.5
so that e.g. llc
is located at
F:\LLVM\18.1.5\bin\llc.exe
. Then you need to set the Java system property emerge.backend.llvm.llvm-18-dir
to F:\LLVM\18.1.5
:
-Demerge.backend.llvm.llvm-18-dir=F:\LLVM\18.1.5
This being a Kotlin/JVM codebase, you need the typical tools for that:
As this project works with binaries entirely outside the JVM world, its not possible to satisfy all dependencies from there. You need a couple more things:
For all linux targets you need some binaries from GNU libc and gcc, so the emerge compiler can link them
into the linux executables. You can grab them from linux distro images compatible with the target, or build
them yourself (see the GitHub Actions Workflow).
Store the binaries in you development/build environment (e.g. in /local-resources
) and put their paths
into external-deps.properties
in the project root (copy from )
With the dependencies available, you can use standard maven commands:
# compile and package
mvn clean package
# compile, package and run all tests
mvn clean verify