summaryrefslogtreecommitdiff
path: root/scripts/setup.sh
blob: 2d693f0d9dbe1be61c44894747eb0ba6849b4ab8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/bash
# Готовит зависимости для сборки тулчейна: исходники plan9 + собранный plan9port.
# Требуется: git, gcc/clang, make, yacc (или plan9port-овский). Каталоги кладутся
# рядом со скриптом (или в $DEPS). После — экспортни PLAN9SRC/PLAN9PORT (печатает в конце).
set -e
DEPS="${DEPS:-$PWD/deps}"
mkdir -p "$DEPS"; cd "$DEPS"

# 1) дерево исходников plan9 (plan9foundation — тут живут cc/ и Xc/Xa/Xl)
if [ ! -d plan9foundation ]; then
  echo ">> клонирую plan9foundation ..."
  git clone --depth 1 https://github.com/plan9foundation/plan9.git plan9foundation \
    || git clone --depth 1 https://git.9front.org/plan9front/plan9front plan9foundation
fi

# 2) plan9port (даёт 9c/9l/9ar/yacc + lib9/libbio/libmach — ими и собираем kencc)
if [ ! -d plan9port ]; then
  echo ">> клонирую plan9port ..."
  git clone --depth 1 https://github.com/9fans/plan9port.git plan9port
fi
if [ ! -x plan9port/bin/9c ]; then
  echo ">> собираю plan9port (может занять пару минут) ..."
  ( cd plan9port && ./INSTALL -b )   # -b: только собрать, без установки в систему
fi

echo
echo "Готово. Экспортни:"
echo "  export PLAN9SRC=$DEPS/plan9foundation"
echo "  export PLAN9PORT=$DEPS/plan9port"
echo "  # если используешь musl-тулчейн: export MUSL_ENV=/path/to/env.sh"