Just another Lisp https://serene-lang.org
Go to file
Sameer Rahmani 5802e87121 Add CCache support to cmake list 2021-09-27 15:25:06 +01:00
bin Refactor the main cmake list file and fix the unused warns 2021-09-27 13:05:15 +01:00
docs Fix the fn slir generation proccess 2021-09-23 19:24:51 +01:00
include Refactor the main cmake list file and fix the unused warns 2021-09-27 13:05:15 +01:00
resources Add our own dianostic engine 2021-09-12 20:31:12 +01:00
scripts Add more logs to the pre commit hook 2021-09-17 13:51:30 +01:00
src Refactor the main cmake list file and fix the unused warns 2021-09-27 13:05:15 +01:00
.clang-format Reformat files with the new clang-format config 2021-06-13 22:58:46 +01:00
.gitignore Add CCache support to cmake list 2021-09-27 15:25:06 +01:00
.ignore_sanitize Add the IR generation facilities to Namespace and Expression 2021-06-13 22:40:58 +01:00
CMakeLists.txt Add CCache support to cmake list 2021-09-27 15:25:06 +01:00
LICENSE Merge branch 'mlir' 2021-04-13 12:03:27 +01:00
README.org Add the deck for episode 2 to videos.org 2021-07-03 16:52:57 +01:00
builder Add CCache support to cmake list 2021-09-27 15:25:06 +01:00
dev.org Refactor the main cmake list file and fix the unused warns 2021-09-27 13:05:15 +01:00

README.org

Serene lang

Setup development environment

Setup the githook and install dependencies using the following commands:

./builder setup

Dependencies

You would need the following dependencies to start get started with Serene development

  • LLVM (LLVM Instructions coming up.)
  • cmake
  • ninja
  • doxygen (If you want to build the docs as well)
  • Valgrind
  • CCache (If you want faster builds specially with the LLVM)

LLVM Installation

MLIR is a part of the LLVM project and in order to build it we need to build the LLVM itself as well. Here is a quick guide to build the latest version of the LLVM and MLIR.

  ## YES we're using the development version of MLIR
  git clone https://github.com/llvm/llvm-project.git

  mkdir llvm-project/build
  cd llvm-project/build

  cmake -G Ninja ../llvm \
        -DCMAKE_INSTALL_PREFIX=/your/target/path \
        -DLLVM_PARALLEL_COMPILE_JOBS=7 \
        -DLLVM_PARALLEL_LINK_JOBS=1 \
        -DLLVM_BUILD_EXAMPLES=ON \
        -DLLVM_TARGETS_TO_BUILD="X86" \
        -DCMAKE_BUILD_TYPE=Release \
        -DLLVM_ENABLE_ASSERTIONS=ON \
        -DLLVM_CCACHE_BUILD=ON \
        -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
        -DLLVM_ENABLE_PROJECTS='clang;lldb;lld;mlir;clang-tools-extra;compiler-rt' \
        -DCMAKE_C_COMPILER=clang \       # If you have clang installed already
        -DCMAKE_CXX_COMPILER=clang++ \   # If you have clang installed already
        -DLLVM_ENABLE_LLD=ON

  cmake --build .

  cmake --build . --target check-mlir

  cmake -DCMAKE_INSTALL_PREFIX=/your/target/location -P cmake_install.cmake

You need to have clang and lld installed to compile the LLVM with the above command. Also if you are not using ccache just remove the option related to it from the above command.

Emacs

If you're using Emacs as your development environment just install clangd and lsp.

How to build

In order to build for development (Debug mode) just use ./builder build to setup the build and build the project once and then you can just use ./builder compile to build the changed files only.

Check out the builder script for more subcommands and details.

Cheatsheets

Get Help

If you need help or you just want to hangout, you can find us at: