Files
rix2midi/build.sh
2026-08-22 05:52:55 +00:00

64 lines
2.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# ============================================================================
# build.sh —— 編譯 rix2midi《大富翁 2》RIX → MIDI 轉換器)
# ----------------------------------------------------------------------------
# 會做的事:
# 1. 找到 AdPlug負責 RIX 解碼 + OPL 晶片模擬)與 libbinioAdPlug 依賴的
# 小型 I/O 庫)——本機預設看 /tmp/AdPlug 與 /tmp/libbinio。
# 2. 若它們還沒編過,就現編一次。
# 3. 以「靜態連結」把 rix2midi 編出來 → 執行檔自給自足、不用設環境變數。
#
# 用法:
# ./build.sh
#
# 若想指定 AdPlug / binio 的位置(一般不必):
# ADPLUG=/path/to/AdPlug BINIO=/path/to/libbinio ./build.sh
#
# 編譯完成後:
# ./rix2midi ../RICHU.RIX # 轉單一個
# ./rix2midi ../ ../mid # 批次轉 ../ 裡所有 .RIX → ../mid/*.mid
# ============================================================================
set -e
cd "$(dirname "$0")"
# ---- 找到 AdPlug / libbinio優先用環境變數其次 /tmp 現成的)-----------
pick() { # pick VAR 預設值...
local v="$1"; shift
local d
for d in "$@"; do
[ -f "$d/Makefile" ] && { v="$d"; return 0; }
done
echo "$v"
}
ADPLUG="$(pick "${ADPLUG:-/tmp/AdPlug}" /tmp/AdPlug "$ADPLUG" ./vendor/AdPlug)"
BINIO="$(pick "${BINIO:-/tmp/libbinio}" /tmp/libbinio "$BINIO" ./vendor/libbinio)"
[ -f "$ADPLUG/Makefile" ] || ADPLUG=/tmp/AdPlug
[ -f "$BINIO/Makefile" ] || BINIO=/tmp/libbinio
echo "[build] AdPlug = $ADPLUG"
echo "[build] libbinio= $BINIO"
# ---- libbinio / AdPlug 若還沒編,就編(以靜態 .a 為準) ------------------
if [ ! -f "$BINIO/build/libbinio_local.a" ]; then
echo "[build] 編譯 libbinio …"
( cd "$BINIO" && make -j"$(nproc)" )
fi
if [ ! -f "$ADPLUG/build/libadplug.a" ]; then
echo "[build] 編譯 AdPlug約一分鐘…"
( cd "$ADPLUG" && make -j"$(nproc)" )
fi
[ -f "$ADPLUG/build/libadplug.a" ] || { echo "[X] 找不到 libadplug.a"; exit 1; }
[ -f "$BINIO/build/libbinio_local.a" ] || { echo "[X] 找不到 libbinio_local.a"; exit 1; }
# ---- 組編譯參數(全靜態、自給自足)-------------------------------------
INC="-I$ADPLUG/src -I$BINIO/build/inc -I$BINIO/src"
LIBS="-L$ADPLUG/build -ladplug -L$BINIO/build -lbinio_local"
echo "[build] 開始編譯 rix2midi.c++(實為 .cpp…"
g++ -std=c++14 -O1 -Wall $INC rix2midi.cpp -o rix2midi $LIBS
# ---- 驗證執行檔能跑 ------------------------------------------------------
echo
echo "[build] 完成!執行檔:$(pwd)/rix2midi"
./rix2midi --help | head -5
echo "範例: ./rix2midi ../RICHU.RIX 或 ./rix2midi ../ ../mid"