| 1 | # |
| 2 | # common bits used by all libraries |
| 3 | # |
| 4 | |
| 5 | all: # make "all" default target |
| 6 | |
| 7 | ifndef SUBDIR |
| 8 | vpath %.c $(SRC_DIR) |
| 9 | vpath %.h $(SRC_DIR) |
| 10 | vpath %.S $(SRC_DIR) |
| 11 | |
| 12 | ALLFFLIBS = avcodec avdevice avfilter avformat avutil postproc swscale |
| 13 | |
| 14 | CFLAGS = -DHAVE_AV_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE \ |
| 15 | -D_ISOC9X_SOURCE -I$(BUILD_ROOT) -I$(SRC_PATH) \ |
| 16 | $(addprefix -I$(SRC_PATH)/lib,$(ALLFFLIBS)) $(OPTFLAGS) |
| 17 | |
| 18 | %.o: %.c |
| 19 | $(CC) $(CFLAGS) $(LIBOBJFLAGS) -c -o $@ $< |
| 20 | |
| 21 | %.o: %.S |
| 22 | $(CC) $(CFLAGS) $(LIBOBJFLAGS) -c -o $@ $< |
| 23 | |
| 24 | %.ho: %.h |
| 25 | $(CC) $(CFLAGS) $(LIBOBJFLAGS) -Wno-unused -c -o $@ -x c $< |
| 26 | |
| 27 | %.d: %.c |
| 28 | $(DEPEND_CMD) > $@ |
| 29 | |
| 30 | %.d: %.S |
| 31 | $(DEPEND_CMD) > $@ |
| 32 | |
| 33 | %.d: %.cpp |
| 34 | $(DEPEND_CMD) > $@ |
| 35 | |
| 36 | install: install-libs install-headers |
| 37 | |
| 38 | uninstall: uninstall-libs uninstall-headers |
| 39 | |
| 40 | .PHONY: all depend dep clean distclean install* uninstall* tests |
| 41 | endif |
| 42 | |
| 43 | CFLAGS += $(CFLAGS-yes) |
| 44 | OBJS += $(OBJS-yes) |
| 45 | ASM_OBJS += $(ASM_OBJS-yes) |
| 46 | CPP_OBJS += $(CPP_OBJS-yes) |
| 47 | FFLIBS := $(FFLIBS-yes) $(FFLIBS) |
| 48 | TESTS += $(TESTS-yes) |
| 49 | |
| 50 | FFEXTRALIBS := $(addprefix -l,$(addsuffix $(BUILDSUF),$(FFLIBS))) $(EXTRALIBS) |
| 51 | FFLDFLAGS := $(addprefix -L$(BUILD_ROOT)/lib,$(FFLIBS)) $(LDFLAGS) |
| 52 | |
| 53 | SRCS := $(OBJS:.o=.c) $(ASM_OBJS:.o=.S) $(CPP_OBJS:.o=.cpp) |
| 54 | OBJS := $(OBJS) $(ASM_OBJS) $(CPP_OBJS) |
| 55 | |
| 56 | SRCS := $(addprefix $(SUBDIR),$(SRCS)) |
| 57 | OBJS := $(addprefix $(SUBDIR),$(OBJS)) |
| 58 | TESTS := $(addprefix $(SUBDIR),$(TESTS)) |
| 59 | |
| 60 | DEP_LIBS:=$(foreach NAME,$(FFLIBS),lib$(NAME)/$($(BUILD_SHARED:yes=S)LIBNAME)) |
| 61 | |
| 62 | ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h)) |
| 63 | checkheaders: $(filter-out %_template.ho,$(ALLHEADERS:.h=.ho)) |
| 64 | |
| 65 | DEPS := $(OBJS:.o=.d) |
| 66 | depend dep: $(DEPS) |
| 67 | |
| 68 | CLEANSUFFIXES = *.o *~ *.ho |
| 69 | LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp *.map |
| 70 | |
| 71 | define RULES |
| 72 | $(SUBDIR)%: $(SUBDIR)%.o $(LIBNAME) |
| 73 | $(CC) $(FFLDFLAGS) -o $$@ $$^ $(FFEXTRALIBS) |
| 74 | |
| 75 | $(SUBDIR)%-test$(EXESUF): $(SUBDIR)%.c $(LIBNAME) |
| 76 | $(CC) $(CFLAGS) $(FFLDFLAGS) -DTEST -o $$@ $$^ $(FFEXTRALIBS) |
| 77 | |
| 78 | clean:: |
| 79 | rm -f $(TESTS) $(addprefix $(SUBDIR),$(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \ |
| 80 | $(addprefix $(SUBDIR), $(foreach suffix,$(CLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS)))) |
| 81 | |
| 82 | distclean:: clean |
| 83 | rm -f $(DEPS) |
| 84 | endef |
| 85 | |
| 86 | $(eval $(RULES)) |
| 87 | |
| 88 | tests: $(TESTS) |
| 89 | |
| 90 | -include $(DEPS) |