# Build

Before build and launch client, we need build godot-cpp (lib to connect c++ code to godot engine) and build crypt (c++ module use to authentification with khaganat)

## Build module

```
mkdir build
cd build
# Disable build directory on godot editor
touch .gdignore
# clone godot
git clone https://github.com/godotengine/godot.git
cd godot
# switch on release
git checkout 3.1.2-stable
# Create link with our module (or copy file to godot/modules - as you like)
cd modules
for file in ../../../modules/*
do
   if [ -d $file ]
   then
      echo "$file"
      ln -s $file .
   fi
done
cd ..
# Copy modules doc to godot
cp modules/*/doc_classes/* doc/classes/.
# Clean project (if you build before)
scons -j$(nproc) -c
# Build
scons -j$(nproc) platform=x11
cd ../..
```

### Generate doc
If you want, you can regenerate doc.
(Normally it's generated)
```
cd build/godot
./bin/godot.x11.tools.64 --doctool .
cp modules/*/doc_classes/* doc/classes/.
```

### Launch godot with module
```
cd build/godot
bin/godot.x11.tools.64
cd ../..
```

## Build godot-cpp

### Initialize

Load git submodule (godot-cpp & godot_header)

```
git submodule update --init --recursive
```

### Build on 64bits

```
godot --gdnative-generate-json-api godot-cpp/godot_headers/api.json
scons -C godot-cpp platform=linux generate_bindings=yes custom_api_file=godot_headers/api.json bits=64 
```

### Build on 32bits

```
godot --gdnative-generate-json-api godot-cpp/godot_headers/api.json
scons -C godot-cpp platform=linux generate_bindings=yes custom_api_file=godot_headers/api.json bits=32
```

## Build gdnative (crypt / bitstream / bitset)

### Build on 64bits

```
scons -C gdnative platform=linux bits=64 target=debug
scons -C gdnative platform=linux bits=64 target=release
```

### Build on 32bits

```
scons -C gdnative platform=linux bits=32 target=debug
scons -C gdnative platform=linux bits=64 target=release
```

## Package client khaganat

### Configure export
Configure on project export (or edit file export_presets.cfg)

Ex.: export_presets.cfg
```
[preset.0]

name="khaganat.linux.64"
platform="Linux/X11"
runnable=true
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
patch_list=PoolStringArray(  )
script_export_mode=1
script_encryption_key=""

[preset.0.options]

texture_format/bptc=false
texture_format/s3tc=true
texture_format/etc=false
texture_format/etc2=false
texture_format/no_bptc_fallbacks=true
binary_format/64_bits=true
custom_template/release=""
custom_template/debug=""
```

### Generate package

```
godot --path . --export khaganat.linux.64 khaganat.linux64.bin
```

## Launch client khaganat

### With godot

```
godot login_scene/login_scene.tsc
```