aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMans Rullgard <mans@mansr.com>2012-08-07 02:11:25 +0100
committerMans Rullgard <mans@mansr.com>2012-08-07 21:36:51 +0100
commitdfd9159f3db987e9115715cded7a4408179e3ed9 (patch)
tree82f135a2370113d8b91e74a0a372704ce3d0516e
parent00cb52c65cb2913f20dd3d0e6601d1b0db0b657b (diff)
downloadffmpeg-dfd9159f3db987e9115715cded7a4408179e3ed9.tar.gz
build: change checkheaders to use regular build rules
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 <mans@mansr.com>
-rw-r--r--.gitignore2
-rw-r--r--Makefile4
-rw-r--r--common.mak8
-rw-r--r--library.mak2
4 files changed, 9 insertions, 7 deletions
diff --git a/.gitignore b/.gitignore
index 56b304070d..19dbe88ff6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,7 +4,7 @@
*.def
*.dll
*.exe
-*.ho
+*.h.c
*.lib
*.pc
*.so
diff --git a/Makefile b/Makefile
index 20e6a3861b..682eda75a4 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 aed11f7891..f94a43d35a 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 cd3fdc28f9..3045640e0b 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)