blob: 81cabcc54585f61995c207d5e0f19c91da641a80 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#!/bin/bash
# builds the language server: src/tools/mklsp.sh [outdir] leaves outdir/zclsp.
# the server is the real compiler (src/compiler/, listed in parts) in check mode plus
# src/lsp/server.zc. its memory map is sized to that program by src/tools/automap.sh,
# so the genome slot is as big as it needs to be and no bigger. the image carries
# the doc comments (DOCS=1) and, through embed declarations in server.zc, its own
# sources, so hover and go to definition work on built-ins. the core takes the
# image in with #embed as lsp_genome.bin.
set -e
case "${1:-}" in
--help|-h) printf '%s\n' 'usage: src/tools/mklsp.sh [OUTDIR]' 'builds the native language server in OUTDIR/zclsp; defaults to build/lsp.' 'environment: CC selects the c compiler (one with #embed).'; exit 0 ;;
-*) echo "mklsp: unknown option $1; use --help for usage" >&2; exit 2 ;;
esac
cd "$(dirname "$0")/../.."
O=${1:-build/lsp}; CC=${CC:-$(sh src/tools/findcc.sh)}
export CC
mkdir -p "$O"
DOCS=1 bash src/tools/automap.sh lsp "$O" src/lsp/server.zc >/dev/null
cp "$O/genome.bin" "$O/lsp_genome.bin"
$CC -O2 -w -fwrapv -pthread -DJTYPE=int -DZY_SANDBOX -DUSE_LSP_GENOME src/core/core.c src/core/io_linux.c -Isrc/core -I"$O" --embed-dir="$O" -o "$O/zclsp"
|