上傳檔案到「/」
This commit is contained in:
63
build.sh
Normal file
63
build.sh
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
# ============================================================================
|
||||
# build.sh —— 編譯 rix2midi(《大富翁 2》RIX → MIDI 轉換器)
|
||||
# ----------------------------------------------------------------------------
|
||||
# 會做的事:
|
||||
# 1. 找到 AdPlug(負責 RIX 解碼 + OPL 晶片模擬)與 libbinio(AdPlug 依賴的
|
||||
# 小型 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"
|
||||
Reference in New Issue
Block a user