X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=common.mak;h=1fbdf2b489e68a175c78b2037f338dc64a14e04e;hb=4b1131a075696a3153e03dac7c9a01714cc3a372;hp=8069d21f9d691d604a8f6dfe39635d038f03d8e8;hpb=afa615327b0176609975b2015892a74ef20aa28e;p=ffmpeg diff --git a/common.mak b/common.mak index 8069d21f9d6..1fbdf2b489e 100644 --- a/common.mak +++ b/common.mak @@ -2,27 +2,18 @@ # common bits used by all libraries # -SRC_DIR = $(SRC_PATH)/lib$(NAME) -VPATH = $(SRC_DIR) +all: # make "all" default target -SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S) $(CPPOBJS:.o=.cpp) -OBJS := $(OBJS) $(ASM_OBJS) $(CPPOBJS) -STATIC_OBJS := $(OBJS) $(STATIC_OBJS) -SHARED_OBJS := $(OBJS) $(SHARED_OBJS) +ifndef SUBDIR +vpath %.c $(SRC_DIR) +vpath %.h $(SRC_DIR) +vpath %.S $(SRC_DIR) -all: $(EXTRADEPS) $(LIB) $(SLIBNAME) +ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale -$(LIB): $(STATIC_OBJS) - rm -f $@ - $(AR) rc $@ $^ $(EXTRAOBJS) - $(RANLIB) $@ - -$(SLIBNAME): $(SLIBNAME_WITH_MAJOR) - ln -sf $^ $@ - -$(SLIBNAME_WITH_MAJOR): $(SHARED_OBJS) - $(CC) $(SHFLAGS) $(LDFLAGS) -o $@ $^ $(EXTRALIBS) $(EXTRAOBJS) - $(SLIB_EXTRA_CMD) +CFLAGS = -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ + -D_ISOC9X_SOURCE -I$(BUILD_ROOT) -I$(SRC_PATH) \ + $(addprefix -I$(SRC_PATH)/lib,$(ALLFFLIBS)) $(OPTFLAGS) %.o: %.c $(CC) $(CFLAGS) $(LIBOBJFLAGS) -c -o $@ $< @@ -30,75 +21,75 @@ $(SLIBNAME_WITH_MAJOR): $(SHARED_OBJS) %.o: %.S $(CC) $(CFLAGS) $(LIBOBJFLAGS) -c -o $@ $< -# BeOS: remove -Wall to get rid of all the "multibyte constant" warnings -%.o: %.cpp - g++ $(subst -Wall,,$(CFLAGS)) -c -o $@ $< +%.ho: %.h + $(CC) $(CFLAGS) $(LIBOBJFLAGS) -Wno-unused -c -o $@ -x c $< -depend: $(SRCS) - $(CC) -MM $(CFLAGS) $^ 1>.depend +%.d: %.c + $(DEPEND_CMD) > $@ -dep: depend +%.d: %.S + $(DEPEND_CMD) > $@ -clean:: - rm -f *.o *.d *~ *.a *.lib *.so *.so.* *.dylib *.dll \ - *.lib *.def *.dll.a *.exp +%.d: %.cpp + $(DEPEND_CMD) > $@ -distclean: clean - rm -f .depend +install: install-libs install-headers -ifeq ($(BUILD_SHARED),yes) -INSTLIBTARGETS += install-lib-shared -endif -ifeq ($(BUILD_STATIC),yes) -INSTLIBTARGETS += install-lib-static +uninstall: uninstall-libs uninstall-headers + +.PHONY: all depend dep clean distclean install* uninstall* tests endif -install: install-libs install-headers +CFLAGS += $(CFLAGS-yes) +OBJS += $(OBJS-yes) +ASM_OBJS += $(ASM_OBJS-yes) +CPP_OBJS += $(CPP_OBJS-yes) +FFLIBS := $(FFLIBS-yes) $(FFLIBS) +TESTS += $(TESTS-yes) -install-libs: $(INSTLIBTARGETS) - -install-lib-shared: $(SLIBNAME) - install -d "$(shlibdir)" -ifeq ($(CONFIG_MINGW),yes) - install $(INSTALLSTRIP) -m 755 $(SLIBNAME) "$(prefix)" -else - install $(INSTALLSTRIP) -m 755 $(SLIBNAME) \ - "$(shlibdir)/$(SLIBNAME_WITH_VERSION)" - ln -sf $(SLIBNAME_WITH_VERSION) \ - "$(shlibdir)/$(SLIBNAME_WITH_MAJOR)" - ln -sf $(SLIBNAME_WITH_VERSION) \ - "$(shlibdir)/$(SLIBNAME)" -endif +FFEXTRALIBS := $(addprefix -l,$(addsuffix $(BUILDSUF),$(FFLIBS))) $(EXTRALIBS) +FFLDFLAGS := $(addprefix -L$(BUILD_ROOT)/lib,$(FFLIBS)) $(LDFLAGS) -install-lib-static: $(LIB) - install -d "$(libdir)" - install -m 644 $(LIB) "$(libdir)" +SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S) $(CPP_OBJS:.o=.cpp) +OBJS := $(OBJS) $(ASM_OBJS) $(CPP_OBJS) -install-headers: - install -d "$(incdir)" - install -d "$(libdir)/pkgconfig" - install -m 644 $(addprefix "$(SRC_DIR)"/,$(HEADERS)) "$(incdir)" - install -m 644 $(BUILD_ROOT)/lib$(NAME).pc "$(libdir)/pkgconfig" +SRCS := $(addprefix $(SUBDIR),$(SRCS)) +OBJS := $(addprefix $(SUBDIR),$(OBJS)) +TESTS := $(addprefix $(SUBDIR),$(TESTS)) -uninstall: uninstall-libs uninstall-headers +DEP_LIBS:=$(foreach NAME,$(FFLIBS),lib$(NAME)/$($(BUILD_SHARED:yes=S)LIBNAME)) -uninstall-libs: -ifeq ($(CONFIG_MINGW),yes) - -rm -f "$(prefix)/$(SLIBNAME)" -else - -rm -f "$(shlibdir)/$(SLIBNAME_WITH_MAJOR)" \ - "$(shlibdir)/$(SLIBNAME)" \ - "$(shlibdir)/$(SLIBNAME_WITH_VERSION)" -endif - -rm -f "$(libdir)/$(LIB)" +ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h)) +checkheaders: $(filter-out %_template.ho,$(ALLHEADERS:.h=.ho)) -uninstall-headers: - rm -f "$(addprefix $(incdir)/,$(HEADERS))" - rm -f "$(libdir)/pkgconfig/lib$(NAME).pc" +DEPS := $(OBJS:.o=.d) +depend dep: $(DEPS) -# -# include dependency files if they exist -# -ifneq ($(wildcard .depend),) -include .depend -endif +CLEANSUFFIXES = *.o *~ *.ho +LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp *.map +DISTCLEANSUFFIXES = *.d + +define RULES +$(SUBDIR)%: $(SUBDIR)%.o $(LIBNAME) + $(CC) $(FFLDFLAGS) -o $$@ $$^ $(FFEXTRALIBS) + +$(SUBDIR)%-test$(EXESUF): $(SUBDIR)%.c $(LIBNAME) + $(CC) $(CFLAGS) $(FFLDFLAGS) -DTEST -o $$@ $$^ $(FFEXTRALIBS) + +clean:: + rm -f $(TESTS) $(addprefix $(SUBDIR),$(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \ + $(addprefix $(SUBDIR), $(foreach suffix,$(CLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS)))) + +distclean:: clean + rm -f $(addprefix $(SUBDIR),$(DISTCLEANSUFFIXES)) \ + $(addprefix $(SUBDIR), $(foreach suffix,$(DISTCLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS)))) +endef + +$(eval $(RULES)) + +# Clear DIRS variable so that it is not used in other subdirectories. +DIRS = + +tests: $(TESTS) + +-include $(DEPS)