1# 2# common bits used by all libraries 3# 4 5# first so "all" becomes default target 6all: all-yes 7 8OBJS-$(HAVE_MMX) += $(MMX-OBJS-yes) 9 10OBJS += $(OBJS-yes) 11FFLIBS := $(FFLIBS-yes) $(FFLIBS) 12TESTPROGS += $(TESTPROGS-yes) 13 14FFEXTRALIBS := $(FFLIBS:%=-l%$(BUILDSUF)) $(EXTRALIBS) 15 16EXAMPLES := $(EXAMPLES:%=$(SUBDIR)%-example$(EXESUF)) 17OBJS := $(sort $(OBJS:%=$(SUBDIR)%)) 18TESTOBJS := $(TESTOBJS:%=$(SUBDIR)%) $(TESTPROGS:%=$(SUBDIR)%-test.o) 19TESTPROGS := $(TESTPROGS:%=$(SUBDIR)%-test$(EXESUF)) 20HOSTOBJS := $(HOSTPROGS:%=$(SUBDIR)%.o) 21HOSTPROGS := $(HOSTPROGS:%=$(SUBDIR)%$(HOSTEXESUF)) 22TOOLS += $(TOOLS-yes) 23TOOLOBJS := $(TOOLS:%=tools/%.o) 24TOOLS := $(TOOLS:%=tools/%$(EXESUF)) 25 26DEP_LIBS := $(foreach NAME,$(FFLIBS),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME)) 27 28ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h $(SRC_DIR)/$(ARCH)/*.h)) 29SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-) 30SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%) 31checkheaders: $(filter-out $(SKIPHEADERS:.h=.ho),$(ALLHEADERS:.h=.ho)) 32 33alltools: $(TOOLS) 34 35$(HOSTOBJS): %.o: %.c 36 $(HOSTCC) $(HOSTCFLAGS) -c -o $@ $< 37 38$(HOSTPROGS): %$(HOSTEXESUF): %.o 39 $(HOSTCC) $(HOSTLDFLAGS) -o $@ $< $(HOSTLIBS) 40 41$(OBJS): | $(sort $(dir $(OBJS))) 42$(HOSTOBJS): | $(sort $(dir $(HOSTOBJS))) 43$(TESTOBJS): | $(sort $(dir $(TESTOBJS))) 44$(TOOLOBJS): | tools 45 46OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOSTOBJS) $(TESTOBJS)) 47 48CLEANSUFFIXES = *.d *.o *~ *.ho *.map *.ver 49DISTCLEANSUFFIXES = *.pc 50LIBSUFFIXES = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a *.exp 51 52define RULES 53clean:: 54 $(RM) $(OBJS) $(OBJS:.o=.d) 55 $(RM) $(HOSTPROGS) 56 $(RM) $(TOOLS) 57endef 58 59$(eval $(RULES)) 60 61-include $(wildcard $(OBJS:.o=.d) $(TESTOBJS:.o=.d)) 62