Verified Commit b64323fe authored by
Overhaul the build process and the CLI
All Make files have been merged into a single top-level Makefile, which in turn has been cleaned up. The CLI has also been revamped == Easier installation process The installation process has also been simplified into two steps: make build make install If files need to be installed in a different location, such as a packaging jail/chroot, you can run the following: make build make install DESTDIR=example/directory We also support the PREFIX variable better now. By default DESTDIR is set to PREFIX, but you can also set them separately. This way you can customise where the compiler will look for source files using PREFIX, while still being able to install the files into a (temporary) directory using DESTDIR. For example: make build make install PREFIX=/usr/local DESTDIR=/tmp/package-chroot == Removal of pre-compiled packages As part of these changes, we stop providing pre-compiled binaries in the S3 bucket releases.inko-lang.org. This is discussed in #218, but in short: 1. Few users are likely to use and benefit from these pre-compiled binaries. 2. Because of the compile-from-source fallback you still have to install all compile-time dependencies. 3. Focusing on package managers (e.g. including Inko in the AUR) is more useful. 4. The compiler packages may stop working in the future, if any of the OS' decide to change things such that previously compiled binaries have to be recompiled. 5. All of this requires a fair amount of complexity on our end, with little to no benefit. == New CLI This adds a new "inko" executable written in Rust, replacing the "inko-test", "inkoc", and "inko" Ruby executables, and the "ivm" executable. This new executable uses sub-commands for building Inko source files, running tests, etc. This executable has various paths, such as the path to the compiler, compiled into itself. This ensures that the "inko" executable always uses the correct version of the compiler, runtime, etc. Usage of the new CLI is as follows: inko test.inko # Compiles and runs test.inko inko run test.inko # Same thing inko run test.ibi # Run a bytecode image inko build test.inko # Just compiles test.inko inko test # Runs all unit tests in ./tests/test Since the compiler is still written in Ruby, the "inko" executable will spawn a sub-process to run the compiler. The VM is run in the same process as the CLI. To make developing the CLI a bit easier, we now use Cargo workspaces to separate the VM (= libinko) and the CLI.
Showing with 947 additions and 1103 deletions