%.ho: %.h
$(CC) $(CFLAGS) $(LIBOBJFLAGS) -Wno-unused -c -o $@ -x c $<
+%.d: %.c
+ $(DEPEND_CMD) > $@
+
+%.d: %.S
+ $(DEPEND_CMD) > $@
+
+%.d: %.cpp
+ $(DEPEND_CMD) > $@
+
install: install-libs install-headers
uninstall: uninstall-libs uninstall-headers
OBJS := $(addprefix $(SUBDIR),$(OBJS))
TESTS := $(addprefix $(SUBDIR),$(TESTS))
+DEP_LIBS:=$(foreach NAME,$(FFLIBS),lib$(NAME)/$($(BUILD_SHARED:yes=S)LIBNAME))
+
ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h))
checkheaders: $(filter-out %_template.ho,$(ALLHEADERS:.h=.ho))
-depend dep: $(SUBDIR).depend
+DEPS := $(OBJS:.o=.d)
+depend dep: $(DEPS)
-CLEANFILES += *.o *~ *.a *.lib *.so *.so.* *.dylib *.dll \
- *.def *.dll.a *.exp *.ho *.map
+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)%$(EXESUF): $(SUBDIR)%.o
+ $(CC) $(FFLDFLAGS) -o $$@ $$^ $(SUBDIR)$(LIBNAME) $(FFEXTRALIBS)
-$(SUBDIR)%-test$(EXESUF): $(SUBDIR)%.c $(LIBNAME)
- $(CC) $(CFLAGS) $(FFLDFLAGS) -DTEST -o $$@ $$^ $(FFEXTRALIBS)
+$(SUBDIR)%-test.o: $(SUBDIR)%.c
+ $(CC) $(CFLAGS) -DTEST -c -o $$@ $$^
-$(SUBDIR).depend: $(SRCS)
- $(DEPEND_CMD) > $$@
+$(SUBDIR)%-test.o: $(SUBDIR)%-test.c
+ $(CC) $(CFLAGS) -DTEST -c -o $$@ $$^
clean::
- rm -f $(TESTS) $(addprefix $(SUBDIR),$(CLEANFILES))
+ rm -f $(TESTS) $(addprefix $(SUBDIR),$(CLEANFILES) $(CLEANSUFFIXES) $(LIBSUFFIXES)) \
+ $(addprefix $(SUBDIR), $(foreach suffix,$(CLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS))))
distclean:: clean
- rm -f $(SUBDIR).depend
+ rm -f $(addprefix $(SUBDIR),$(DISTCLEANSUFFIXES)) \
+ $(addprefix $(SUBDIR), $(foreach suffix,$(DISTCLEANSUFFIXES),$(addsuffix /$(suffix),$(DIRS))))
endef
$(eval $(RULES))
tests: $(TESTS)
--include $(SUBDIR).depend
+-include $(DEPS)