From 85393b6fa4a6ff5dbc9e599e88d273cf0362b2b8 Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 25 Feb 2008 14:10:17 +0000 Subject: Extended rules.mk with code for building extra (tool) executables, and changed some of the tools to make use of this svn-id: r30962 --- rules.mk | 51 +++++++++++++++++++++++++++++++++++------- tools/create_igortbl/module.mk | 18 +++++++-------- tools/create_kyradat/module.mk | 24 ++++++++++---------- tools/create_lure/module.mk | 20 ++++++++--------- tools/module.mk | 5 ++++- tools/qtable/module.mk | 18 +++++++-------- tools/skycpt/module.mk | 28 +++++++++++------------ 7 files changed, 101 insertions(+), 63 deletions(-) diff --git a/rules.mk b/rules.mk index 9524ee4b30..2fea7ccb36 100644 --- a/rules.mk +++ b/rules.mk @@ -1,4 +1,10 @@ +############################################### # Common build rules, used by the sub modules and their module.mk files +# +# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $ +# $Id$ +############################################### + # 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 @@ -9,23 +15,50 @@ MODULE_OBJS-$(MODULE) := $(addprefix $(MODULE)/, $(MODULE_OBJS)) MODULE_DIRS += $(sort $(dir $(MODULE_OBJS-$(MODULE)))) + +ifdef TOOL_EXECUTABLE +################################################ +# Build rule for (tool) executables. +# TODO: Refactor this, so that even our master executable can use this rule? +################################################ +TOOL-$(MODULE) := $(MODULE)/$(TOOL_EXECUTABLE)$(EXEEXT) +$(TOOL-$(MODULE)): $(MODULE_OBJS-$(MODULE)) + $(CXX) $(LDFLAGS) $+ -o $@ + +# Reset TOOL_EXECUTABLE var +TOOL_EXECUTABLE:= + +# Add to "tools" target +tools: $(TOOL-$(MODULE)) + +# Pseudo target for comfort, allows for "make tools/skycpt", etc. +$(MODULE): $(TOOL-$(MODULE)) +clean-tools: clean-$(MODULE) + +else 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 +################################################ +# Build rule for dynamic (loadable) plugins +################################################ PLUGIN-$(MODULE) := plugins/$(PLUGIN_PREFIX)$(notdir $(MODULE))$(PLUGIN_SUFFIX) $(PLUGIN-$(MODULE)): $(MODULE_OBJS-$(MODULE)) $(PLUGIN_EXTRA_DEPS) $(MKDIR) plugins $(CXX) $(filter-out $(PLUGIN_EXTRA_DEPS),$+) $(PLUGIN_LDFLAGS) -o $@ + +# Reset PLUGIN var PLUGIN:= + +# Add to "plugins" target plugins: $(PLUGIN-$(MODULE)) # Pseudo target for comfort, allows for "make common", "make gui" etc. $(MODULE): $(PLUGIN-$(MODULE)) +clean-plugins: clean-$(MODULE) else - +################################################ +# Build rule for static modules/plugins +################################################ MODULE_LIB-$(MODULE) := $(MODULE)/lib$(notdir $(MODULE)).a # If not building as a plugin, add the object files to the main OBJS list @@ -40,14 +73,16 @@ $(MODULE_LIB-$(MODULE)): $(MODULE_OBJS-$(MODULE)) # Pseudo target for comfort, allows for "make common", "make gui" etc. $(MODULE): $(MODULE_LIB-$(MODULE)) -endif - +endif # PLUGIN +endif # TOOL_EXECUTABLE +############################################### # 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-$*) + -$(RM) $(MODULE_OBJS-$*) $(MODULE_LIB-$*) $(PLUGIN-$*) $(TOOL-$*) .PHONY: clean-$(MODULE) $(MODULE) diff --git a/tools/create_igortbl/module.mk b/tools/create_igortbl/module.mk index 3c68382600..bd5a7176f1 100644 --- a/tools/create_igortbl/module.mk +++ b/tools/create_igortbl/module.mk @@ -1,13 +1,13 @@ -MODULE := tools/create_igortbl - -MODULE_DIRS += \ - tools/create_igortbl/ +# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $ +# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $ -TOOLS += \ - $(MODULE)/create_igortbl$(EXEEXT) +MODULE := tools/create_igortbl MODULE_OBJS := \ - $(MODULE)/create_igortbl.o + create_igortbl.o + +# Set the name of the executable +TOOL_EXECUTABLE := create_igortbl -$(MODULE)/create_igortbl$(EXEEXT): $(MODULE_OBJS) - $(CXX) $(LDFLAGS) $+ -o $@ +# Include common rules +include $(srcdir)/rules.mk diff --git a/tools/create_kyradat/module.mk b/tools/create_kyradat/module.mk index c8df680c40..557871ce4a 100644 --- a/tools/create_kyradat/module.mk +++ b/tools/create_kyradat/module.mk @@ -1,16 +1,16 @@ -MODULE := tools/create_kyradat - -MODULE_DIRS += \ - tools/create_kyradat/ +# $URL$ +# $Id$ -TOOLS += \ - $(MODULE)/create_kyradat$(EXEEXT) +MODULE := tools/create_kyradat MODULE_OBJS := \ - $(MODULE)/create_kyradat.o \ - $(MODULE)/pak.o \ - $(MODULE)/md5.o \ - $(MODULE)/util.o + create_kyradat.o \ + pak.o \ + md5.o \ + util.o + +# Set the name of the executable +TOOL_EXECUTABLE := create_kyradat -$(MODULE)/create_kyradat$(EXEEXT): $(MODULE_OBJS) - $(CXX) $(LDFLAGS) $+ -o $@ +# Include common rules +include $(srcdir)/rules.mk diff --git a/tools/create_lure/module.mk b/tools/create_lure/module.mk index 7fa5bafa7f..c5ab6dfef8 100644 --- a/tools/create_lure/module.mk +++ b/tools/create_lure/module.mk @@ -1,14 +1,14 @@ -MODULE := tools/create_lure - -MODULE_DIRS += \ - tools/create_lure/ +# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $ +# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $ -TOOLS += \ - $(MODULE)/create_lure$(EXEEXT) +MODULE := tools/create_lure MODULE_OBJS := \ - $(MODULE)/create_lure_dat.o \ - $(MODULE)/process_actions.o + create_lure_dat.o \ + process_actions.o + +# Set the name of the executable +TOOL_EXECUTABLE := create_lure -$(MODULE)/create_lure$(EXEEXT): $(MODULE_OBJS) - $(CXX) $(LDFLAGS) $+ -o $@ +# Include common rules +include $(srcdir)/rules.mk diff --git a/tools/module.mk b/tools/module.mk index 97cc5d0b9a..34d8dc771a 100644 --- a/tools/module.mk +++ b/tools/module.mk @@ -1,3 +1,6 @@ +# $URL$ +# $Id$ + MODULE := tools MODULE_DIRS += \ @@ -15,7 +18,7 @@ TOOLS := \ include $(srcdir)/tools/*/module.mk # Make sure the 'all' / 'clean' targets build/clean the tools, too -all: +#all: clean: clean-tools # Main target diff --git a/tools/qtable/module.mk b/tools/qtable/module.mk index f9d6b81604..dc01000a4d 100644 --- a/tools/qtable/module.mk +++ b/tools/qtable/module.mk @@ -1,13 +1,13 @@ -MODULE := tools/qtable - -MODULE_DIRS += \ - tools/qtable/ +# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $ +# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $ -TOOLS += \ - $(MODULE)/qtable$(EXEEXT) +MODULE := tools/qtable MODULE_OBJS := \ - $(MODULE)/qtable.o + qtable.o + +# Set the name of the executable +TOOL_EXECUTABLE := qtable -$(MODULE)/qtable$(EXEEXT): $(MODULE_OBJS) - $(CXX) $(LDFLAGS) $+ -o $@ +# Include common rules +include $(srcdir)/rules.mk diff --git a/tools/skycpt/module.mk b/tools/skycpt/module.mk index 5ce9217b54..c892cd8c35 100644 --- a/tools/skycpt/module.mk +++ b/tools/skycpt/module.mk @@ -1,18 +1,18 @@ -MODULE := tools/skycpt - -MODULE_DIRS += \ - tools/skycpt/ +# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $ +# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $ -TOOLS += \ - $(MODULE)/skycpt$(EXEEXT) +MODULE := tools/skycpt MODULE_OBJS := \ - $(MODULE)/AsciiCptCompile.o \ - $(MODULE)/KmpSearch.o \ - $(MODULE)/TextFile.o \ - $(MODULE)/cptcompiler.o \ - $(MODULE)/cpthelp.o \ - $(MODULE)/idFinder.o + AsciiCptCompile.o \ + KmpSearch.o \ + TextFile.o \ + cptcompiler.o \ + cpthelp.o \ + idFinder.o + +# Set the name of the executable +TOOL_EXECUTABLE := skycpt -$(MODULE)/skycpt$(EXEEXT): $(MODULE_OBJS) - $(CXX) $(LDFLAGS) $+ -o $@ +# Include common rules +include $(srcdir)/rules.mk -- cgit v1.2.3