]> git.sesse.net Git - vlc/blobdiff - Makefile.modules
* New float32to* converter modules, courtesy of Xavier Maillard
[vlc] / Makefile.modules
index 866dbf1ad3b68e983d054cbd3af092a3e1a754fc..678747b8f0a60a978e0520f7644a2aa5cc4a53f7 100644 (file)
@@ -13,9 +13,7 @@ include Makefile
 #
 # Analyze the target we are asked to build
 #
-module_name := $(shell echo $(MAKECMDGOALS) | sed 's@.*/\(.*\)\..*@\1@')
-MODULE_NAME := $(shell echo $(module_name) | tr '[a-z]' '[A-Z]')
-
+module_name := $(shell echo $(MAKECMDGOALS) | sed 's@\..*@@')
 suff := $(shell echo $(MAKECMDGOALS) | sed 's@.*\.@@' | tr so/a lo/o)
 
 #
@@ -23,17 +21,22 @@ suff := $(shell echo $(MAKECMDGOALS) | sed 's@.*\.@@' | tr so/a lo/o)
 #
 SRC_C := $(filter %.c,$($(module_name)_SOURCES))
 SRC_CPP := $(filter %.cpp,$($(module_name)_SOURCES))
+SRC_M := $(filter %.m,$($(module_name)_SOURCES))
+
+plugins_CFLAGS += -D__PLUGIN__ -I$(PARENT)/include -I$(PARENT)/extras
+builtins_CFLAGS += -D__BUILTIN__ -I$(PARENT)/include -I$(PARENT)/extras
 
 ifeq (lo,$(suff))
-CFLAGS_EXTRA := -I../../include -I../../extras $(CFLAGS_$(MODULE_NAME)) \
+extra_CFLAGS := $(plugins_CFLAGS) $($(module_name)_CFLAGS) \
                 -DMODULE_NAME=$(module_name) -DMODULE_NAME_IS_$(module_name) \
-                -DPLUGIN $(CFLAGS_$(MODULE_NAME)_PLUGIN) $(PCFLAGS)
+               -DMODULE_PATH=$(MODULE_PATH) $($(module_name)_so_CFLAGS)
 OBJ_ALL := $(SRC_C:%.c=%.lo.$(module_name)) $(SRC_CPP:%.cpp=%.lo.$(module_name))
 else
-CFLAGS_EXTRA := -I../../include -I../../extras $(CFLAGS_$(MODULE_NAME)) \
+extra_CFLAGS := $(builtins_CFLAGS) $($(module_name)_CFLAGS) \
                 -DMODULE_NAME=$(module_name) -DMODULE_NAME_IS_$(module_name) \
-                -DBUILTIN $(CFLAGS_$(MODULE_NAME)_BUILTIN)
-OBJ_ALL := $(SRC_C:%.c=%.o.$(module_name)) $(SRC_CPP:%.cpp=%.o.$(module_name))
+               -DMODULE_PATH=$(MODULE_PATH) $($(module_name)_a_CFLAGS)
+OBJ_ALL := $(SRC_C:%.c=%.o.$(module_name)) $(SRC_CPP:%.cpp=%.o.$(module_name)) \
+               $(SRC_M:%.m=%.o.$(module_name))
 endif
 
 # 
@@ -41,6 +44,7 @@ endif
 #
 C_DEP := $(SRC_C:%.c=.dep/%.d)
 CPP_DEP := $(SRC_CPP:%.cpp=.dep/%.dpp)
+M_DEP := $(SRC_M:%.m=.dep/%.dm)
 
 export
 
@@ -51,30 +55,43 @@ all:
 
 clean:
 #      rm -f $(PLUGIN_ALL) $(BUILTIN_ALL)
-       rm -f *.o *.o.* *.lo *.lo.* *.moc *.moc.* *.bak
-       rm -rf .dep
+       rm -f *.a *.so *.o *.o.* *.lo.* *.obj *.moc *.moc.* *.bak
+       rm -Rf .dep
 
 FORCE:
 
-$(OBJ_ALL): ../../Makefile.modules ../../Makefile.dep ../../Makefile Makefile
+$(OBJ_ALL): $(PARENT)/Makefile.modules $(PARENT)/Makefile.dep $(PARENT)/Makefile $(PARENT)/Makefile.opts Makefile
+$(OBJ_ALL): $(H_DEP:%=$(PARENT)/include/%)
 
 $(C_DEP): %.d: FORCE
-       @$(MAKE) -s --no-print-directory -f ../../Makefile.dep $@ CFLAGS="$(CFLAGS) $(CFLAGS_EXTRA)"
+       @$(MAKE) -s --no-print-directory -f $(PARENT)/Makefile.dep $@ CFLAGS="$(CFLAGS) $(extra_CFLAGS)"
 
 $(CPP_DEP): %.dpp: FORCE
-       @$(MAKE) -s --no-print-directory -f ../../Makefile.dep $@ CFLAGS="$(CFLAGS) $(CFLAGS_EXTRA)"
+       @$(MAKE) -s --no-print-directory -f $(PARENT)/Makefile.dep $@ CFLAGS="$(CFLAGS) $(extra_CFLAGS)"
+
+$(M_DEP): %.dm: FORCE
+       @$(MAKE) -s --no-print-directory -f $(PARENT)/Makefile.dep $@ CFLAGS="$(CFLAGS) $(extra_CFLAGS)"
 
 $(SRC_C:%.c=%.$(suff).$(module_name)): %.$(suff).$(module_name): .dep/%.d
 $(SRC_C:%.c=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.c
-       $(CC) $(CFLAGS) $(CFLAGS_EXTRA) -c $< -o $@
+       $(CC) $(CFLAGS) $(extra_CFLAGS) -c $< -o $@
 
 $(SRC_CPP:%.cpp=%.$(suff).$(module_name)): %.$(suff).$(module_name): .dep/%.dpp
 $(SRC_CPP:%.cpp=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.cpp
-       $(CC) $(CFLAGS) $(CFLAGS_EXTRA) -c $< -o $@
+       $(CC) $(CFLAGS) $(extra_CFLAGS) -c $< -o $@
 
-../$(module_name).so: $(EXTRA_DEP) $(OBJ_ALL)
-       $(CC) $(OBJ_ALL) $(PLDFLAGS) $(LIB_$(MODULE_NAME)) -o $@
+$(SRC_M:%.m=%.$(suff).$(module_name)): %.$(suff).$(module_name): .dep/%.dm
+$(SRC_M:%.m=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.m
+       $(CC) $(CFLAGS) $(extra_CFLAGS) -c $< -o $@
 
-../$(module_name).a: $(EXTRA_DEP) $(OBJ_ALL)
-       rm -f $@ && ar rc $@ $(OBJ_ALL) && $(RANLIB) $@
+# foo_CUSTOM lets us override all target rules for foo.so and foo.a
+ifeq (,$($(module_name)_CUSTOM))
+$(module_name).so: $(EXTRA_DEP) $(OBJ_ALL)
+       $(CC) $(OBJ_ALL) $(LDFLAGS) $(plugins_LDFLAGS) $($(module_name)_LDFLAGS) -o $@
+
+$(module_name).a: $(EXTRA_DEP) $(OBJ_ALL)
+       rm -f $@
+       ar rc $@ $(OBJ_ALL)
+       $(RANLIB) $@
+endif