Many compilers need special flags to compile *.h files as regular
source code, if they will do so at all.  Rather than hoping all
compilers will have such a flag and adding mappings for it, create
wrapper .c files for test building single headers.

This allows using the regular rule for compiling C files without the
need for special flags, and it also provides proper dependency tracking
for these objects.

Signed-off-by: Mans Rullgard <[email protected]>
---
 Makefile    | 4 ++--
 common.mak  | 8 +++++---
 library.mak | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/Makefile b/Makefile
index 20e6a38..682eda7 100644
--- a/Makefile
+++ b/Makefile
@@ -45,8 +45,8 @@ COMPILE_S = $(call COMPILE,AS)
 %.o: %.S
        $(COMPILE_S)
 
-%.ho: %.h
-       $(CC) $(CCFLAGS) -c $(CC_O) -x c $<
+%.h.c:
+       $(Q)echo '#include "$*.h"' >$@
 
 %.ver: %.v
        $(Q)sed 's/$$MAJOR/$($(basename $(@F))_VERSION_MAJOR)/' $^ > $@
diff --git a/common.mak b/common.mak
index aed11f7..f94a43d 100644
--- a/common.mak
+++ b/common.mak
@@ -28,7 +28,9 @@ DEP_LIBS := $(foreach 
NAME,$(FFLIBS),lib$(NAME)/$($(CONFIG_SHARED:yes=S)LIBNAME)
 ALLHEADERS := $(subst $(SRC_DIR)/,$(SUBDIR),$(wildcard $(SRC_DIR)/*.h 
$(SRC_DIR)/$(ARCH)/*.h))
 SKIPHEADERS += $(ARCH_HEADERS:%=$(ARCH)/%) $(SKIPHEADERS-)
 SKIPHEADERS := $(SKIPHEADERS:%=$(SUBDIR)%)
-checkheaders: $(filter-out $(SKIPHEADERS:.h=.ho),$(ALLHEADERS:.h=.ho))
+HOBJS        = $(filter-out $(SKIPHEADERS:.h=.h.o),$(ALLHEADERS:.h=.h.o))
+checkheaders: $(HOBJS)
+.SECONDARY:   $(HOBJS:.o=.c)
 
 alltools: $(TOOLS)
 
@@ -45,8 +47,8 @@ $(TOOLOBJS): | tools
 
 OBJDIRS := $(OBJDIRS) $(dir $(OBJS) $(HOSTOBJS) $(TESTOBJS))
 
-CLEANSUFFIXES     = *.d *.o *~ *.ho *.map *.ver
+CLEANSUFFIXES     = *.d *.o *~ *.h.c *.map *.ver
 DISTCLEANSUFFIXES = *.pc
 LIBSUFFIXES       = *.a *.lib *.so *.so.* *.dylib *.dll *.def *.dll.a
 
--include $(wildcard $(OBJS:.o=.d) $(HOSTOBJS:.o=.d) $(TESTOBJS:.o=.d))
+-include $(wildcard $(OBJS:.o=.d) $(HOSTOBJS:.o=.d) $(TESTOBJS:.o=.d) 
$(HOBJS:.o=.d))
diff --git a/library.mak b/library.mak
index cd3fdc2..3045640 100644
--- a/library.mak
+++ b/library.mak
@@ -20,7 +20,7 @@ $(SUBDIR)x86/%.o: $(SUBDIR)x86/%.asm
        $(DEPYASM) $(YASMFLAGS) -I $(<D)/ -M -o $@ $< > $(@:.o=.d)
        $(YASM) $(YASMFLAGS) -I $(<D)/ -o $@ $<
 
-$(OBJS) $(SUBDIR)%.ho $(TESTOBJS): CPPFLAGS += -DHAVE_AV_CONFIG_H
+$(OBJS) $(SUBDIR)%.h.o $(TESTOBJS): CPPFLAGS += -DHAVE_AV_CONFIG_H
 $(TESTOBJS): CPPFLAGS += -DTEST
 
 $(SUBDIR)$(LIBNAME): $(OBJS)
-- 
1.7.11.1

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to