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 # 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) 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