aboutsummaryrefslogtreecommitdiff
path: root/rules.mk
diff options
context:
space:
mode:
authorMax Horn2006-06-24 08:48:11 +0000
committerMax Horn2006-06-24 08:48:11 +0000
commit9a955180a4179237d3474a73c6829a6554a9bc09 (patch)
tree0bd1edc157e90b6b71241ef2a03642f8a0b3c827 /rules.mk
parentd210b19aec69d34711e5d473e6e4e5081955b02e (diff)
downloadscummvm-rg350-9a955180a4179237d3474a73c6829a6554a9bc09.tar.gz
scummvm-rg350-9a955180a4179237d3474a73c6829a6554a9bc09.tar.bz2
scummvm-rg350-9a955180a4179237d3474a73c6829a6554a9bc09.zip
* Renamed config.mak to config.mk
* Renamed common.rules to rules.mk * Removed explicit declaration of MODULE_DIRS in various spots (instead we let rules.mk compute it) svn-id: r23275
Diffstat (limited to 'rules.mk')
-rw-r--r--rules.mk53
1 files changed, 53 insertions, 0 deletions
diff --git a/rules.mk b/rules.mk
new file mode 100644
index 0000000000..f1f1888095
--- /dev/null
+++ b/rules.mk
@@ -0,0 +1,53 @@
+# Common build rules, used by the sub modules and their module.mk files
+
+# Copy the list of objects to a new variable. The name of the new variable
+# contains the module name, a trick we use so we can keep multiple different
+# module object lists, one for each module.
+MODULE_OBJS-$(MODULE) := $(addprefix $(MODULE)/, $(MODULE_OBJS))
+
+# Add all involved directories to the MODULE_DIRS list
+MODULE_DIRS += $(sort $(dir $(MODULE_OBJS-$(MODULE))))
+
+
+ifdef PLUGIN
+# Plugin build rule
+# TODO: Right now, for Mac OS X only. We either will have to generate this
+# via the configure script, or put in some 'if' statements to choose from
+# one of several build rules
+PLUGIN-$(MODULE) := plugins/$(PLUGIN_PREFIX)$(notdir $(MODULE))$(PLUGIN_SUFFIX)
+$(PLUGIN-$(MODULE)): $(MODULE_OBJS-$(MODULE)) $(PLUGIN_EXTRA_DEPS)
+ $(MKDIR) plugins
+ $(CXX) $(PLUGIN_LDFLAGS) $(filter-out $(PLUGIN_EXTRA_DEPS),$+) -o $@
+PLUGIN:=
+plugins: $(PLUGIN-$(MODULE))
+
+# Pseudo target for comfort, allows for "make common", "make gui" etc.
+$(MODULE): $(PLUGIN-$(MODULE))
+
+else
+
+MODULE_LIB-$(MODULE) := $(MODULE)/lib$(notdir $(MODULE)).a
+
+# If not building as a plugin, add the object files to the main OBJS list
+OBJS += $(MODULE_LIB-$(MODULE))
+
+# Convenience library target
+$(MODULE_LIB-$(MODULE)): $(MODULE_OBJS-$(MODULE))
+ -$(RM) $@
+ $(AR) $@ $+
+ $(RANLIB) $@
+
+# Pseudo target for comfort, allows for "make common", "make gui" etc.
+$(MODULE): $(MODULE_LIB-$(MODULE))
+
+endif
+
+
+# Clean target, removes all object files. This looks a bit hackish, as we have to
+# copy the content of MODULE_OBJS to another unique variable (the next module.mk
+# will overwrite it after all). The same for the libMODULE.a library file.
+clean: clean-$(MODULE)
+clean-$(MODULE): clean-% :
+ -$(RM) $(MODULE_OBJS-$*) $(MODULE_LIB-$*) $(PLUGIN-$*)
+
+.PHONY: clean-$(MODULE) $(MODULE)