CFLAGS=$(OPTFLAGS) -I$(BUILD_ROOT) -I$(SRC_PATH) -I$(SRC_PATH)/libavutil \
-I$(SRC_PATH)/libavcodec -I$(SRC_PATH)/libavformat -I$(SRC_PATH)/libswscale \
- -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE
+ -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_ISOC9X_SOURCE -DHAVE_AV_CONFIG_H
LDFLAGS+= -g
PROGS-$(CONFIG_FFMPEG) += ffmpeg
all: videohook
install: install-vhook
endif
+VHOOKCFLAGS += $(filter-out -mdynamic-no-pic,$(CFLAGS))
+HOOKS = vhook/null$(SLIBSUF) vhook/fish$(SLIBSUF) vhook/ppm$(SLIBSUF) vhook/watermark$(SLIBSUF)
+ALLHOOKS = $(HOOKS) vhook/imlib2$(SLIBSUF) vhook/drawtext$(SLIBSUF)
+ALLHOOKS_SRCS := $(ALLHOOKS:$(SLIBSUF)=.c)
+ifeq ($(HAVE_IMLIB2),yes)
+HOOKS += vhook/imlib2$(SLIBSUF)
+VHOOKCFLAGS += `imlib2-config --cflags`
+LIBS_imlib2$(SLIBSUF) = `imlib2-config --libs`
+endif
+ifeq ($(HAVE_FREETYPE2),yes)
+HOOKS += vhook/drawtext$(SLIBSUF)
+VHOOKCFLAGS += `freetype-config --cflags`
+LIBS_drawtext$(SLIBSUF) = `freetype-config --libs`
+endif
ifeq ($(BUILD_DOC),yes)
all: documentation
EXTRALIBS := -lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)
ifeq ($(CONFIG_SWSCALER),yes)
-LDFLAGS+=-L./libswscale
+LDFLAGS+=-L$(BUILD_ROOT)/libswscale
EXTRALIBS+=-lswscale$(BUILDSUF)
endif
ffmpeg.o ffplay.o ffserver.o: version.h
+videohook: .libs $(HOOKS)
+
+vhook/%$(SLIBSUF): vhook/%.o
+ $(CC) $(LDFLAGS) -o $@ $(VHOOKSHFLAGS) $< $(VHOOKLIBS) $(LIBS_$(@F))
+
+vhook/%.o: vhook/%.c
+ $(CC) $(VHOOKCFLAGS) -c -o $@ $<
+
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
-videohook: .libs
- $(MAKE) -C vhook all
-
documentation: $(addprefix doc/, ffmpeg-doc.html faq.html ffserver-doc.html \
ffplay-doc.html hooks.html $(ALLMANPAGES))
install -d "$(mandir)/man1"
install -m 644 $(MANPAGES) "$(mandir)/man1"
-install-vhook:
- $(MAKE) -C vhook install
+install-vhook: videohook
+ install -d "$(shlibdir)/vhook"
+ install -m 755 $(HOOKS) "$(shlibdir)/vhook"
install-libs:
$(MAKE) -C libavutil install-libs
rm -f $(addprefix $(mandir)/man1/,$(ALLMANPAGES))
uninstall-vhook:
- $(MAKE) -C vhook uninstall
+ rm -f $(addprefix $(shlibdir)/vhook/,$(ALLHOOKS))
+ -rmdir "$(shlibdir)/vhook/"
uninstall-libs:
$(MAKE) -C libavutil uninstall-libs
$(MAKE) -C libavformat uninstall-headers
$(MAKE) -C libpostproc uninstall-headers
-rmdir "$(incdir)"
- -rmdir "$(prefix)/include/postproc"
-depend dep: .depend
+depend dep: .depend .vhookdep
$(MAKE) -C libavutil depend
$(MAKE) -C libavcodec depend
$(MAKE) -C libavformat depend
ifeq ($(CONFIG_SWSCALER),yes)
$(MAKE) -C libswscale depend
endif
-ifeq ($(CONFIG_VHOOK),yes)
- $(MAKE) -C vhook depend
-endif
.depend: $(SRCS) version.h
$(CC) -MM $(CFLAGS) $(SDL_CFLAGS) $(filter-out %.h,$^) 1>.depend
+# gcc stupidly only outputs the basename of targets
+.vhookdep: $(ALLHOOKS_SRCS)
+ $(CC) $(VHOOKCFLAGS) -MM $^ | sed 's,^\([a-z]\),vhook/\1,' > $@
+
$(DEP_LIBS): lib
.libs: $(DEP_LIBS)
$(MAKE) -C libavformat clean
$(MAKE) -C libpostproc clean
$(MAKE) -C libswscale clean
- $(MAKE) -C vhook clean
- rm -f *.o *.d *~ .libs gmon.out TAGS $(ALLPROGS) $(ALLPROGS_G) \
+ rm -f *.o *~ .libs gmon.out TAGS $(ALLPROGS) $(ALLPROGS_G) \
output_example$(EXESUF) qt-faststart$(EXESUF) cws2fws$(EXESUF)
rm -f doc/*.html doc/*.pod doc/*.1
rm -rf tests/vsynth1 tests/vsynth2 tests/data tests/asynth1.sw tests/*~
rm -f $(addprefix tests/,$(addsuffix $(EXESUF),audiogen videogen rotozoom seek_test tiny_psnr))
+ rm -f vhook/*.o vhook/*~ vhook/*.so vhook/*.dylib vhook/*.dll
distclean: clean
$(MAKE) -C libavutil distclean
$(MAKE) -C libavformat distclean
$(MAKE) -C libpostproc distclean
$(MAKE) -C libswscale distclean
- $(MAKE) -C vhook distclean
rm -f .depend version.h config.* *.pc
TAGS:
.PHONY: mpeg4 mpeg ac3 snow snowll swscale-error
-include .depend
+-include .vhookdep