2026-08-25 14:47:05 -04:00
|
|
|
DISC_LABEL := ADJUSTMENTS
|
|
|
|
|
DURATION ?= 24
|
|
|
|
|
|
|
|
|
|
BDJSDK_HOME := $(CURDIR)/vendor/bdj-sdk
|
|
|
|
|
JAVA8_HOME ?= $(BDJSDK_HOME)/host/jdk8
|
|
|
|
|
JAVAC := $(JAVA8_HOME)/bin/javac
|
|
|
|
|
JAR := $(JAVA8_HOME)/bin/jar
|
|
|
|
|
BDSIGNER := $(BDJSDK_HOME)/host/bin/bdsigner
|
|
|
|
|
MAKEFS := $(BDJSDK_HOME)/host/bin/makefs
|
|
|
|
|
TSMUXER := $(CURDIR)/tools/tsmuxer/tsMuxeR
|
|
|
|
|
|
|
|
|
|
BUILD_DIR := build
|
|
|
|
|
ASSET_DIR := assets/generated
|
|
|
|
|
MUX_DIR := $(BUILD_DIR)/muxed-bd
|
|
|
|
|
DISC_DIR := $(BUILD_DIR)/disc
|
|
|
|
|
CLASSES_DIR := $(BUILD_DIR)/classes
|
|
|
|
|
|
|
|
|
|
VIDEO_ES := $(ASSET_DIR)/feature.m2v
|
|
|
|
|
AUDIO_ES := $(ASSET_DIR)/feature.ac3
|
|
|
|
|
META_FILE := $(BUILD_DIR)/feature.meta
|
|
|
|
|
ISO_FILE := $(BUILD_DIR)/adjustments.iso
|
|
|
|
|
JAR_FILE := $(DISC_DIR)/BDMV/JAR/00000.jar
|
|
|
|
|
|
|
|
|
|
SOURCES := $(shell find src -name '*.java' -type f 2>/dev/null)
|
|
|
|
|
PERMISSIONS := $(shell find src -name '*.perm' -type f 2>/dev/null)
|
|
|
|
|
STUBS := $(BDJSDK_HOME)/target/lib/enhanced-stubs.zip:$(BDJSDK_HOME)/target/lib/sony-stubs.jar
|
|
|
|
|
|
|
|
|
|
export JAVA8_HOME
|
|
|
|
|
|
|
|
|
|
.PHONY: all bootstrap assets mux disc iso inspect run open clean distclean
|
|
|
|
|
|
|
|
|
|
all: $(ISO_FILE)
|
|
|
|
|
|
|
|
|
|
bootstrap:
|
|
|
|
|
scripts/bootstrap-tools.sh
|
|
|
|
|
|
|
|
|
|
assets: $(VIDEO_ES) $(AUDIO_ES)
|
|
|
|
|
|
|
|
|
|
mux: $(MUX_DIR)/BDMV/STREAM/00000.m2ts
|
|
|
|
|
|
|
|
|
|
disc: $(JAR_FILE)
|
|
|
|
|
|
|
|
|
|
iso: $(ISO_FILE)
|
|
|
|
|
|
|
|
|
|
$(VIDEO_ES):
|
|
|
|
|
mkdir -p $(ASSET_DIR)
|
|
|
|
|
ffmpeg -hide_banner -y \
|
|
|
|
|
-f lavfi -i "smptebars=size=1280x720:rate=24000/1001" \
|
|
|
|
|
-t $(DURATION) \
|
|
|
|
|
-c:v mpeg2video -pix_fmt yuv420p -g 12 -bf 2 \
|
|
|
|
|
-b:v 8000k -maxrate 15000k -bufsize 9781248 \
|
|
|
|
|
-f mpeg2video $@
|
|
|
|
|
|
|
|
|
|
$(AUDIO_ES):
|
|
|
|
|
mkdir -p $(ASSET_DIR)
|
|
|
|
|
ffmpeg -hide_banner -y \
|
|
|
|
|
-f lavfi -i "sine=frequency=73:sample_rate=48000" \
|
|
|
|
|
-t $(DURATION) \
|
|
|
|
|
-c:a ac3 -b:a 192k $@
|
|
|
|
|
|
|
|
|
|
$(META_FILE): $(VIDEO_ES) $(AUDIO_ES)
|
|
|
|
|
mkdir -p $(BUILD_DIR)
|
|
|
|
|
printf '%s\n' \
|
|
|
|
|
'MUXOPT --blu-ray --label="$(DISC_LABEL)"' \
|
|
|
|
|
'V_MPEG-2, $(CURDIR)/$(VIDEO_ES), fps=23.976, ar=16:9, lang=eng' \
|
|
|
|
|
'A_AC3, $(CURDIR)/$(AUDIO_ES), lang=eng' \
|
|
|
|
|
> $@
|
|
|
|
|
|
|
|
|
|
$(MUX_DIR)/BDMV/STREAM/00000.m2ts: $(META_FILE) $(TSMUXER)
|
|
|
|
|
rm -rf $(MUX_DIR)
|
|
|
|
|
mkdir -p $(MUX_DIR)
|
|
|
|
|
$(TSMUXER) $(META_FILE) $(MUX_DIR)
|
|
|
|
|
|
|
|
|
|
$(JAR_FILE): $(SOURCES) $(PERMISSIONS) $(MUX_DIR)/BDMV/STREAM/00000.m2ts
|
|
|
|
|
rm -rf $(DISC_DIR) $(CLASSES_DIR)
|
|
|
|
|
mkdir -p $(DISC_DIR) $(CLASSES_DIR) $(DISC_DIR)/BDMV/JAR
|
|
|
|
|
cp -a $(BDJSDK_HOME)/resources/AVCHD/. $(DISC_DIR)/
|
|
|
|
|
mkdir -p $(DISC_DIR)/BDMV/BACKUP/CLIPINF $(DISC_DIR)/BDMV/BACKUP/PLAYLIST
|
|
|
|
|
cp -a $(MUX_DIR)/BDMV/STREAM/00000.m2ts $(DISC_DIR)/BDMV/STREAM/00000.m2ts
|
|
|
|
|
cp -a $(MUX_DIR)/BDMV/CLIPINF/00000.clpi $(DISC_DIR)/BDMV/CLIPINF/00000.clpi
|
|
|
|
|
cp -a $(MUX_DIR)/BDMV/PLAYLIST/00000.mpls $(DISC_DIR)/BDMV/PLAYLIST/00000.mpls
|
|
|
|
|
cp -a $(MUX_DIR)/BDMV/CLIPINF/00000.clpi $(DISC_DIR)/BDMV/BACKUP/CLIPINF/00000.clpi
|
|
|
|
|
cp -a $(MUX_DIR)/BDMV/PLAYLIST/00000.mpls $(DISC_DIR)/BDMV/BACKUP/PLAYLIST/00000.mpls
|
|
|
|
|
$(JAVAC) -Xlint:-options -source 1.3 -target 1.3 -cp $(STUBS) -d $(CLASSES_DIR) $(SOURCES)
|
|
|
|
|
mkdir -p $(CLASSES_DIR)/org/homebrew
|
|
|
|
|
cp $(PERMISSIONS) $(CLASSES_DIR)/org/homebrew/
|
|
|
|
|
$(JAR) cf $@ -C $(CLASSES_DIR) .
|
|
|
|
|
$(BDSIGNER) -keystore $(BDJSDK_HOME)/resources/sig.ks $@
|
|
|
|
|
rm -rf META-INF
|
|
|
|
|
|
|
|
|
|
$(ISO_FILE): $(JAR_FILE) $(MAKEFS)
|
|
|
|
|
mkdir -p $(BUILD_DIR)
|
|
|
|
|
$(MAKEFS) -m 64m -t udf -o T=bdre,v=2.50,L=$(DISC_LABEL) $@ $(DISC_DIR)
|
|
|
|
|
|
|
|
|
|
$(TSMUXER):
|
|
|
|
|
scripts/bootstrap-tools.sh
|
|
|
|
|
|
|
|
|
|
$(MAKEFS):
|
|
|
|
|
scripts/bootstrap-tools.sh
|
|
|
|
|
|
|
|
|
|
inspect: $(ISO_FILE)
|
|
|
|
|
bd_info $(ISO_FILE)
|
|
|
|
|
bd_list_titles $(ISO_FILE) -a
|
|
|
|
|
|
2026-08-25 14:57:31 -04:00
|
|
|
# Preview the menu straight from the BDMV folder. libbluray loads the BD-J Xlet
|
|
|
|
|
# from a folder but not from a UDF .iso on this setup (see scripts/run-vlc.sh),
|
|
|
|
|
# so `run` intentionally does not depend on the ISO.
|
|
|
|
|
run: bootstrap $(JAR_FILE)
|
|
|
|
|
scripts/run-vlc.sh $(DISC_DIR)
|
2026-08-25 14:47:05 -04:00
|
|
|
|
|
|
|
|
open: run
|
|
|
|
|
|
|
|
|
|
clean:
|
|
|
|
|
rm -rf $(BUILD_DIR) $(ASSET_DIR)
|
|
|
|
|
find src -name '*.class' -delete
|
|
|
|
|
rm -rf META-INF
|
|
|
|
|
|
|
|
|
|
distclean: clean
|
|
|
|
|
rm -rf tools/tsmuxer tools/downloads
|