sljit-sys 0.4.0

System crate for sljit using bindgen and ast-grep
Documentation
---
sidebar_position: 1
description: Setting up SLJIT.
---

# Setup

## Prerequisites

To compile SLJIT, you need a C/C++ compiler with support for the `C99` standard.

In case you want to build [the tests](#building-the-tests) or [the examples](#building-the-examples), you additionally need [GNU Make](https://www.gnu.org/software/make/). If you are using the MSVC toolchain on Windows (where GNU Make is not available), you can use [CMake](https://cmake.org/) to build the tests instead.

## Using SLJIT in Your Project

Place the contents of the [`sljit_src` folder](https://github.com/zherczeg/sljit/tree/master/sljit_src) in a suitable location in your project's source directory.

SLJIT can be used in one of two ways:

### SLJIT as a Library

Compile `sljitLir.c` as a separate translation unit. Be sure to add `sljit_src` to the list of include directories, e.g. by specifying `-Ipath/to/sljit` when compiling with GCC / Clang.

To use SLJIT, include `sljitLir.h` and link against `sljitLir.o`.

### SLJIT All-in-one

In case you want to avoid exposing SLJIT's interface to other translation units, you can also embed SLJIT as a hidden implementation detail. To do so, define `SLJIT_CONFIG_STATIC` before including `sljitLir.c` (yes, the C file):

```c title="hidden.c"
#define SLJIT_CONFIG_STATIC 1
#include "sljitLir.c"

// SLJIT can be used in hidden.c, but not in other translation units
```

This technique can also be used to generate code for multiple target architectures:

```c title="x86-32.c"
#define SLJIT_CONFIG_STATIC 1
#define SLJIT_CONFIG_X86_32 1
#include "sljitLir.c"

// Generate code for x86 32-bit
```

```c title="x86-64.c"
#define SLJIT_CONFIG_STATIC 1
#define SLJIT_CONFIG_X86_64 1
#include "sljitLir.c"

// Generate code for x86 64-bit
```

Both `x86-32.c` and `x86-64.c` can be linked together into the same binary / library without running into issues due to clashing symbols.

## Building the Tests

### Using GNU Make

Navigate to the root directory of the SLJIT repository and build the default target with GNU Make:

```bash
make
```

The test executable `sljit_test` can be found in the `bin` directory. To run the tests, simply execute it.

### Using CMake

> [!NOTE]
> CMake support is currently only intended as a crutch for Windows systems where GNU Make is not available.

To build the tests on Windows using MSVC and NMake, do the following:

1. Open a suitable [developer command prompt]https://learn.microsoft.com/en-us/visualstudio/ide/reference/command-prompt-powershell?view=vs-2022 and navigate into the root directory of the SLJIT repository
2. Execute the following:
    ```bash
    cmake -B bin -G "NMake Makefiles"
    cmake --build bin
    ```

The test executable `sljit_test.exe` can be found in the `bin` directory.

## Building the Examples

> [!NOTE]
> You cannot currently build the examples on Windows using MSVC / CMake.

Build the `examples` target with GNU Make:

```bash
make examples
```

The different example executables can be found in the `bin` directory.