# fiatlux

### Cloning

```bash
git clone --recursive https://git.neulandlabor.de/j3d1/fiatlux.git
```
or after cloning normally
```bash
git submodule update --init --recursive
```

### Build Requirements

 - make
 - bash gawk
 - g++ gcc
 - libc6-dev
 - flex bison
 - automake autoconf
 - gperf
 - wget
 - git
 - bzip2 unzip zip unrar-free
 - help2man texinfo
 - libtool libtool-bin
 - ncurses-dev libexpat-dev
 - python3 python3-serial python-dev
   
 - pip install websocket-client (for otaflash.py, optional)

### Build Steps

#### Workarounds for submodules   
```bash
sed -i 's/GNU bash, version (3\\\.\[1-9\]|4)/GNU bash, version (3.[1-9]|4|5)/g' modules/sdk/crosstool-NG/configure.ac
mkdir -p modules/sdk/crosstool-NG/.build/tarballs
wget https://github.com/libexpat/libexpat/releases/download/R_2_1_0/expat-2.1.0.tar.gz -O modules/sdk/crosstool-NG/.build/tarballs/expat-2.1.0.tar.gz
```

#### Build Toolchain
```bash
make -C modules/sdk standalone=y -j$(nproc)
export PATH=$(pwd)/modules/sdk/xtensa-lx106-elf/bin:$PATH
```

#### Compile Firmware
```bash
make firmware -j$(nproc)
```

#### Flash
```bash
make flash
```

### Build Steps (using docker)

install `docker` on your platform and buil with

```bash
make firmware_docker -j$(nproc)
```

### Build Steps (using nixos)  

In the project root run:
```
nix-shell --option sandbox false
make firmware -j$(nproc)
```
