Extended rules.mk with code for building extra (tool) executables, and changed some of the tools to make use of this

svn-id: r30962
This commit is contained in:
Max Horn 2008-02-25 14:10:17 +00:00
parent ff79a8cd39
commit 85393b6fa4
7 changed files with 101 additions and 63 deletions

View File

@ -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)

View File

@ -1,13 +1,13 @@
# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $
# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $
MODULE := tools/create_igortbl
MODULE_DIRS += \
tools/create_igortbl/
TOOLS += \
$(MODULE)/create_igortbl$(EXEEXT)
MODULE_OBJS := \
$(MODULE)/create_igortbl.o
create_igortbl.o
$(MODULE)/create_igortbl$(EXEEXT): $(MODULE_OBJS)
$(CXX) $(LDFLAGS) $+ -o $@
# Set the name of the executable
TOOL_EXECUTABLE := create_igortbl
# Include common rules
include $(srcdir)/rules.mk

View File

@ -1,16 +1,16 @@
# $URL$
# $Id$
MODULE := tools/create_kyradat
MODULE_DIRS += \
tools/create_kyradat/
TOOLS += \
$(MODULE)/create_kyradat$(EXEEXT)
MODULE_OBJS := \
$(MODULE)/create_kyradat.o \
$(MODULE)/pak.o \
$(MODULE)/md5.o \
$(MODULE)/util.o
create_kyradat.o \
pak.o \
md5.o \
util.o
$(MODULE)/create_kyradat$(EXEEXT): $(MODULE_OBJS)
$(CXX) $(LDFLAGS) $+ -o $@
# Set the name of the executable
TOOL_EXECUTABLE := create_kyradat
# Include common rules
include $(srcdir)/rules.mk

View File

@ -1,14 +1,14 @@
# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $
# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $
MODULE := tools/create_lure
MODULE_DIRS += \
tools/create_lure/
TOOLS += \
$(MODULE)/create_lure$(EXEEXT)
MODULE_OBJS := \
$(MODULE)/create_lure_dat.o \
$(MODULE)/process_actions.o
create_lure_dat.o \
process_actions.o
$(MODULE)/create_lure$(EXEEXT): $(MODULE_OBJS)
$(CXX) $(LDFLAGS) $+ -o $@
# Set the name of the executable
TOOL_EXECUTABLE := create_lure
# Include common rules
include $(srcdir)/rules.mk

View File

@ -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

View File

@ -1,13 +1,13 @@
# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $
# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $
MODULE := tools/qtable
MODULE_DIRS += \
tools/qtable/
TOOLS += \
$(MODULE)/qtable$(EXEEXT)
MODULE_OBJS := \
$(MODULE)/qtable.o
qtable.o
$(MODULE)/qtable$(EXEEXT): $(MODULE_OBJS)
$(CXX) $(LDFLAGS) $+ -o $@
# Set the name of the executable
TOOL_EXECUTABLE := qtable
# Include common rules
include $(srcdir)/rules.mk

View File

@ -1,18 +1,18 @@
# $URL: https://scummvm.svn.sourceforge.net/svnroot/scummvm/tools/trunk/Makefile $
# $Id: Makefile 30664 2008-01-27 19:47:41Z jvprat $
MODULE := tools/skycpt
MODULE_DIRS += \
tools/skycpt/
TOOLS += \
$(MODULE)/skycpt$(EXEEXT)
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
$(MODULE)/skycpt$(EXEEXT): $(MODULE_OBJS)
$(CXX) $(LDFLAGS) $+ -o $@
# Set the name of the executable
TOOL_EXECUTABLE := skycpt
# Include common rules
include $(srcdir)/rules.mk