diff options
Diffstat (limited to 'Makefile.new')
-rw-r--r-- | Makefile.new | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/Makefile.new b/Makefile.new new file mode 100644 index 0000000000..58ce1a0319 --- /dev/null +++ b/Makefile.new @@ -0,0 +1,93 @@ +BUILDDIR = build + +include $(BUILDDIR)/config.mak +include $(ROOT)/TOOLS/makefile_common.mak + +PROJNAME = mpv + +.PHONY: .force + +$(BUILD)/generated/version.h: $(ROOT)/version.sh .force + $(LOG) "VERSION" $@ + $(Q) mkdir -p $(@D) + $(Q) $(ROOT)/version.sh --versionh=$@ + +$(BUILD)/generated/ebml_types.h $(BUILD)/generated/ebml_defs.c: $(ROOT)/TOOLS/matroska.py + $(LOG) "EBML" "$(BUILD)/generated/ebml_types.h $(BUILD)/generated/ebml_defs.c" + $(Q) mkdir -p $(@D) + $(Q) $< --generate-header > $(BUILD)/generated/ebml_types.h + $(Q) $< --generate-definitions > $(BUILD)/generated/ebml_defs.c + +$(BUILD)/generated/%.inc: $(ROOT)/TOOLS/file2string.py $(ROOT)/% + $(LOG) "INC" $@ + $(Q) mkdir -p $(@D) + $(Q) $^ > $@ + +# Dependencies for generated files unfortunately need to be declared manually. +# This is because dependency scanning is a gross shitty hack by concept, and +# requires that the compiler successfully compiles a file to get its +# dependencies. This results in a chicken-and-egg problem, and in conclusion +# it works for static header files only. +# If any headers include generated headers, you need to manually set +# dependencies on all source files that include these headers! +# And because make is fucking shit, you actually need to set these on all files +# that are generated from these sources, instead of the source files. Make rules +# specify recipes, not dependencies. +# (Possible counter measures: always generate them with an order dependency, or +# introduce separate dependency scanner step for creating .d files.) + +$(BUILD)/common/version.o: $(BUILD)/generated/version.h + +$(BUILD)/osdep/mpv.o: $(BUILD)/generated/version.h + +$(BUILD)/demux/demux_mkv.o $(BUILD)/demux/ebml.o: \ + $(BUILD)/generated/ebml_types.h $(BUILD)/generated/ebml_defs.c + +$(BUILD)/video/out/x11_common.o: $(BUILD)/generated/etc/mpv-icon-8bit-16x16.png.inc \ + $(BUILD)/generated/etc/mpv-icon-8bit-32x32.png.inc \ + $(BUILD)/generated/etc/mpv-icon-8bit-64x64.png.inc \ + $(BUILD)/generated/etc/mpv-icon-8bit-128x128.png.inc + +$(BUILD)/input/input.o: $(BUILD)/generated/etc/input.conf.inc + +$(BUILD)/player/main.o: $(BUILD)/generated/etc/builtin.conf.inc + +$(BUILD)/sub/osd_libass.o: $(BUILD)/generated/sub/osd_font.otf.inc + +$(BUILD)/player/lua.o: $(BUILD)/generated/player/lua/defaults.lua.inc \ + $(BUILD)/generated/player/lua/assdraw.lua.inc \ + $(BUILD)/generated/player/lua/options.lua.inc \ + $(BUILD)/generated/player/lua/osc.lua.inc \ + $(BUILD)/generated/player/lua/ytdl_hook.lua.inc \ + $(BUILD)/generated/player/lua/stats.lua.inc \ + $(BUILD)/generated/player/lua/console.lua.inc \ + +$(BUILD)/player/javascript.o: $(BUILD)/generated/player/javascript/defaults.js.inc + +$(BUILD)/osdep/macosx_application.m $(BUILD)/video/out/cocoa_common.m: \ + $(BUILD)/generated/TOOLS/osxbundle/mpv.app/Contents/Resources/icon.icns.inc + +# Why doesn't wayland just provide fucking libraries like anyone else, instead +# of overly complex XML generation bullshit? +# And fuck make too. + +# $(1): path prefix to the protocol, $(1)/$(2).xml is the full path. +# $(2): the name of the protocol, without path or extension +define generate_trash = +$$(BUILD)/video/out/wayland_common.o \ +$$(BUILD)/video/out/opengl/context_wayland.o \ +: $$(BUILD)/generated/wayland/$(2).c $$(BUILD)/generated/wayland/$(2).h +$$(BUILD)/generated/wayland/$(2).c: $(1)/$(2).xml + $$(LOG) "WAYSHC" $$@ + $$(Q) mkdir -p $$(@D) + $$(Q) $$(WAYSCAN) private-code $$< $$@ +$$(BUILD)/generated/wayland/$(2).h: $(1)/$(2).xml + $$(LOG) "WAYSHH" $$@ + $$(Q) mkdir -p $$(@D) + $$(Q) $$(WAYSCAN) client-header $$< $$@ +endef + +$(eval $(call generate_trash,$(WL_PROTO_DIR)/unstable/idle-inhibit/,idle-inhibit-unstable-v1)) +$(eval $(call generate_trash,$(WL_PROTO_DIR)/stable/presentation-time/,presentation-time)) +$(eval $(call generate_trash,$(WL_PROTO_DIR)/stable/xdg-shell/,xdg-shell)) +$(eval $(call generate_trash,$(WL_PROTO_DIR)/unstable/xdg-decoration/,xdg-decoration-unstable-v1)) |