Reworked the make system to support multiple object files for different
architectures (cross-compiled..) to reside in different subdirectories. This allows arch-dependant build without having to do a full recycle each time.
This commit is contained in:
parent
5fa4ad8242
commit
c640f37416
17 changed files with 103 additions and 57 deletions
14
Common.mk
14
Common.mk
|
@ -27,35 +27,35 @@
|
|||
|
||||
all: $(OBJS)
|
||||
|
||||
doc: $(OBJS:.o=.doc) $(HDRS:.h=.doc)
|
||||
doc: $(SRCS:.c=.doc) $(CPPSRCS.cpp=.doc) $(HDRS:.h=.doc)
|
||||
|
||||
clean::
|
||||
$(RM) $(OBJS) core *.doc
|
||||
|
||||
clobber: clean
|
||||
$(RM) .depend .#* *~ *.o
|
||||
$(RM) .depend .#* *~ *.$(OE)
|
||||
|
||||
depend::
|
||||
@echo -n >.depend
|
||||
@for i in $(OBJS:.o=.c*) ; do\
|
||||
@for i in $(SRCS) $(CPPSRCS) ; do\
|
||||
$(CC) -MM $(IFLAGS) $(DFLAGS) $$i >>.depend ; done
|
||||
|
||||
tags::
|
||||
@for i in $(OBJS:.o=.c*) ; do\
|
||||
@for i in $(SRCS) $(CPPSRCS) ; do\
|
||||
cd .. ;\
|
||||
ctags $(CTAGSFLAGS) $(TAGS) $(MODULE)/$$i ;\
|
||||
cd $(MODULE) ;\
|
||||
done
|
||||
|
||||
ci::
|
||||
ci -l $(OBJS:.o=.c*) $(HDRS) Makefile
|
||||
ci -l $(SRCS) $(CPPSRCS) $(HDRS) Makefile
|
||||
|
||||
lockver::
|
||||
$(LOCKVER) $(OBJS:.o=.c*) $(HDRS) Makefile
|
||||
$(LOCKVER) $(SRCS) $(CPPSRCS) $(HDRS) Makefile
|
||||
|
||||
distlist::
|
||||
@echo >>$(DISTLIST)
|
||||
@for i in `echo $(OBJS:.o=.c*)` $(HDRS) Makefile $(EXTRA) ; do \
|
||||
@for i in $(SRCS) $(CPPSRCS) $(HDRS) Makefile $(EXTRA) ; do \
|
||||
echo src/$(MODULE)/$$i >>$(DISTLIST) ; done
|
||||
|
||||
$(OBJS): $(TOPDIR)/Rules.make
|
||||
|
|
31
Makefile
31
Makefile
|
@ -83,22 +83,31 @@ doc++::
|
|||
src::
|
||||
@$(MAKE) -C src all
|
||||
|
||||
etlib/hash.o: etlib/hash.c
|
||||
etlib/getopt.o: etlib/getopt.c
|
||||
etlib/prgname.o: etlib/prgname.c
|
||||
etlib/$(OBJDIR)hash.$(OE): etlib/hash.c
|
||||
@if [ ! -d etlib/$(OBJDIR) ]; then mkdir etlib/$(OBJDIR); fi
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
etlib/$(OBJDIR)getopt.$(OE): etlib/getopt.c
|
||||
@if [ ! -d etlib/$(OBJDIR) ]; then mkdir etlib/$(OBJDIR); fi
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
etlib/$(OBJDIR)prgname.$(OE): etlib/prgname.c
|
||||
@if [ ! -d etlib/$(OBJDIR) ]; then mkdir etlib/$(OBJDIR); fi
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
# UNIX-TARGET
|
||||
freecraft: src etlib/hash.o src/libclone.a
|
||||
$(CCLD) -o freecraft src/libclone.a $(CLONELIBS) -I. $(CFLAGS)
|
||||
freecraft: src etlib/$(OBJDIR)hash.$(OE) src/$(OBJDIR)libclone.a
|
||||
$(CCLD) -o freecraft src/$(OBJDIR)libclone.a etlib/$(OBJDIR)hash.$(OE) $(CLONELIBS) -I. $(CFLAGS)
|
||||
|
||||
# WIN32-TARGET
|
||||
freecraft.exe: src etlib/prgname.o etlib/getopt.o etlib/hash.o \
|
||||
src/freecraftrc.o src/libclone.a src/main.o
|
||||
$(CCLD) -o freecraft$(EXE) src/main.o src/libclone.a src/freecraftrc.o \
|
||||
freecraft.exe: src etlib/$(OBJDIR)prgname.$(OE) etlib/$(OBJDIR)getopt.$(OE) etlib/$(OBJDIR)hash.$(OE) \
|
||||
src/$(OBJDIR)freecraftrc.$(OE) src/$(OBJDIR)libclone.a src/$(OBJDIR)main.$(OE)
|
||||
$(CCLD) -o freecraft$(EXE) src/$(OBJDIR)main.$(OE) src/$(OBJDIR)libclone.a src/$(OBJDIR)freecraftrc.$(OE) \
|
||||
etlib/$(OBJDIR)prgname.$(OE) etlib/$(OBJDIR)getopt.$(OE) etlib/$(OBJDIR)hash.$(OE) \
|
||||
-lSDLmain $(CLONELIBS) -I. $(CFLAGS)
|
||||
|
||||
src/freecraftrc.o: src/freecraft.rc
|
||||
windres --include-dir contrib -osrc/freecraftrc.o src/freecraft.rc
|
||||
src/$(OBJDIR)freecraftrc.$(OE): src/freecraft.rc
|
||||
windres --include-dir contrib -osrc/$(OBJDIR)freecraftrc.$(OE) src/freecraft.rc
|
||||
|
||||
# -L. -lefence
|
||||
# -Lccmalloc-0.2.3/src -lccmalloc -ldl
|
||||
|
@ -112,7 +121,7 @@ tools::
|
|||
|
||||
clean::
|
||||
@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i clean ; done
|
||||
$(RM) core gmon.out cscope.out *.doc etlib/*.o .#*
|
||||
$(RM) core gmon.out cscope.out *.doc etlib/$(OBJDIR)*.$(OE) .#*
|
||||
|
||||
clobber: clean
|
||||
@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i clobber ; done
|
||||
|
|
14
setup
14
setup
|
@ -692,6 +692,7 @@ if test "$WIN32" = 1 ; then
|
|||
echo "OUTFILE=\$(TOPDIR)/freecraft\$(EXE)" >> $RULESFILE
|
||||
echo "ARCH=win32" >> $RULESFILE
|
||||
echo "OE=o" >> $RULESFILE
|
||||
echo "OBJDIR=winobj/" >> $RULESFILE
|
||||
else
|
||||
# LINUX
|
||||
echo "# Linux" >> $RULESFILE
|
||||
|
@ -699,6 +700,7 @@ else
|
|||
echo "OUTFILE=\$(TOPDIR)/freecraft" >> $RULESFILE
|
||||
echo "ARCH=linux" >> $RULESFILE
|
||||
echo "OE=o" >> $RULESFILE
|
||||
echo "OBJDIR=obj/" >> $RULESFILE
|
||||
fi
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
|
@ -744,19 +746,19 @@ echo >> $RULESFILE
|
|||
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
echo "%.o: %.c" >> $RULESFILE
|
||||
echo "\$(OBJDIR)%.\$(OE): %.c" >> $RULESFILE
|
||||
echo " \$(CC) -c \$(CFLAGS) \$< -o \$@" >> $RULESFILE
|
||||
echo " @\$(AR) cru \$(TOPDIR)/src/libclone.a \$@" >> $RULESFILE
|
||||
echo " @\$(AR) cru \$(TOPDIR)/src/\$(OBJDIR)libclone.a \$@" >> $RULESFILE
|
||||
if [ "$DARWIN" = "1" ] ; then
|
||||
echo " ranlib \$(TOPDIR)/src/libclone.a" >> $RULESFILE
|
||||
echo " ranlib \$(TOPDIR)/src/\$(OBJDIR)libclone.a" >> $RULESFILE
|
||||
fi
|
||||
echo >> $RULESFILE
|
||||
|
||||
echo "%.o: %.cpp" >> $RULESFILE
|
||||
echo "\$(OBJDIR)%.\$(OE): %.cpp" >> $RULESFILE
|
||||
echo " \$(CC) -c \$(CFLAGS) \$< -o \$@" >> $RULESFILE
|
||||
echo " @\$(AR) cru \$(TOPDIR)/src/libclone.a \$@" >> $RULESFILE
|
||||
echo " @\$(AR) cru \$(TOPDIR)/src/\$(OBJDIR)libclone.a \$@" >> $RULESFILE
|
||||
if [ "$DARWIN" = "1" ] ; then
|
||||
echo " ranlib \$(TOPDIR)/src/libclone.a" >> $RULESFILE
|
||||
echo " ranlib \$(TOPDIR)/src/\$(OBJDIR)libclone.a" >> $RULESFILE
|
||||
fi
|
||||
echo >> $RULESFILE
|
||||
|
||||
|
|
|
@ -34,14 +34,19 @@ MODULES= clone map unit action ai ui sound video network pathfinder siod \
|
|||
game beos missile libmodplug
|
||||
|
||||
all::
|
||||
@set -e; for i in $(MODULES) ; do $(MAKE) -C $$i all ; done
|
||||
@if [ ! -d ./$(OBJDIR) ] ; then mkdir ./$(OBJDIR) ; fi
|
||||
@set -e; for i in $(MODULES) ; do\
|
||||
if [ ! -d $$i/$(OBJDIR) ] ; then mkdir $$i/$(OBJDIR) ; fi ;\
|
||||
$(MAKE) -C $$i all ;\
|
||||
done
|
||||
|
||||
doc::
|
||||
@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i doc ; done
|
||||
|
||||
clean::
|
||||
@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i clean ; done
|
||||
$(RM) $(OBJS) libclone.a
|
||||
$(RM) $(OBJS) $(OBJDIR)libclone.a
|
||||
-@$(RM) $(OBJDIR)main.$(OE) $(OBJDIR)freecraftrc.$(OE)
|
||||
|
||||
clobber:: clean
|
||||
@set -e; for i in $(MODULES) include ; do $(MAKE) -C $$i clobber ; done
|
||||
|
|
|
@ -31,13 +31,15 @@ include $(TOPDIR)/Rules.make
|
|||
|
||||
MODULE = action
|
||||
|
||||
OBJS = command.$(OE) actions.$(OE) action_die.$(OE) action_patrol.$(OE) \
|
||||
action_still.$(OE) action_stand.$(OE) action_move.$(OE) \
|
||||
action_follow.$(OE) action_attack.$(OE) action_resource.$(OE) \
|
||||
action_board.$(OE) action_unload.$(OE) action_repair.$(OE) \
|
||||
action_harvest.$(OE) action_minegold.$(OE) \
|
||||
action_returngoods.$(OE) action_research.$(OE) action_demolish.$(OE) \
|
||||
action_build.$(OE) action_train.$(OE) action_upgradeto.$(OE) \
|
||||
action_spellcast.$(OE)
|
||||
SRCS = command.c actions.c action_die.c action_patrol.c \
|
||||
action_still.c action_stand.c action_move.c \
|
||||
action_follow.c action_attack.c action_resource.c \
|
||||
action_board.c action_unload.c action_repair.c \
|
||||
action_harvest.c action_minegold.c \
|
||||
action_returngoods.c action_research.c action_demolish.c \
|
||||
action_build.c action_train.c action_upgradeto.c \
|
||||
action_spellcast.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -33,7 +33,9 @@ MODULE = ai
|
|||
|
||||
HDRS = ai_local.h
|
||||
|
||||
OBJS = ai.$(OE) new_ai.$(OE) ccl_ai.$(OE) ai_resource.$(OE) \
|
||||
ai_building.$(OE) ai_force.$(OE)
|
||||
SRCS = ai.c new_ai.c ccl_ai.c ai_resource.c \
|
||||
ai_building.c ai_force.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -30,7 +30,10 @@ TOPDIR = ../..
|
|||
include $(TOPDIR)/Rules.make
|
||||
|
||||
MODULE = beos
|
||||
OBJS = beos.$(OE)
|
||||
|
||||
CPPSRCS = beos.cpp
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(CPPSRCS:.cpp=.$(OE)))
|
||||
|
||||
#distlist::
|
||||
# @echo src/$(MODULE)/beos.cpp >>$(DISTLIST)
|
||||
|
|
|
@ -31,6 +31,8 @@ include $(TOPDIR)/Rules.make
|
|||
|
||||
MODULE = game
|
||||
|
||||
OBJS = game.$(OE) savegame.$(OE) loadgame.$(OE)
|
||||
SRCS = game.c savegame.c loadgame.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -33,6 +33,8 @@ include $(TOPDIR)/Rules.make
|
|||
|
||||
MODULE = include
|
||||
|
||||
SRCS =
|
||||
|
||||
OBJS =
|
||||
|
||||
HDRS = actions.h ai.h ccl.h freecraft.h construct.h cursor.h font.h icons.h \
|
||||
|
|
|
@ -31,8 +31,10 @@ include $(TOPDIR)/Rules.make
|
|||
|
||||
MODULE = map
|
||||
|
||||
OBJS = map.$(OE) map_draw.$(OE) ccl_map.$(OE) \
|
||||
map_fog.$(OE) map_rock.$(OE) map_wood.$(OE) map_wall.$(OE) \
|
||||
minimap.$(OE) tileset.$(OE) ccl_tileset.$(OE) map_save.$(OE)
|
||||
SRCS = map.c map_draw.c ccl_map.c \
|
||||
map_fog.c map_rock.c map_wood.c map_wall.c \
|
||||
minimap.c tileset.c ccl_tileset.c map_save.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -30,6 +30,9 @@ TOPDIR = ../..
|
|||
include $(TOPDIR)/Rules.make
|
||||
|
||||
MODULE = network
|
||||
OBJS = network.$(OE) lowlevel.$(OE) netconnect.$(OE) commands.$(OE)
|
||||
|
||||
SRCS = network.c lowlevel.c netconnect.c commands.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -31,6 +31,8 @@ include $(TOPDIR)/Rules.make
|
|||
|
||||
MODULE = pathfinder
|
||||
|
||||
OBJS = pathfinder.$(OE) astar.$(OE) ccl_pathfinder.$(OE)
|
||||
SRCS = pathfinder.c astar.c ccl_pathfinder.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -30,7 +30,10 @@ TOPDIR = ../..
|
|||
include $(TOPDIR)/Rules.make
|
||||
|
||||
MODULE = sound
|
||||
OBJS = sound.$(OE) sound_server.$(OE) ccl_sound.$(OE) sound_id.$(OE) \
|
||||
unitsound.$(OE)
|
||||
|
||||
SRCS = sound.c sound_server.c ccl_sound.c sound_id.c \
|
||||
unitsound.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -31,9 +31,11 @@ include $(TOPDIR)/Rules.make
|
|||
|
||||
MODULE = clone
|
||||
|
||||
OBJS = clone.$(OE) mainloop.$(OE) goal.$(OE) selection.$(OE) groups.$(OE) \
|
||||
unit.$(OE) unit_draw.$(OE) unitcache.$(OE) unit_find.$(OE) \
|
||||
construct.$(OE) player.$(OE) pud.$(OE) ccl.$(OE) iolib.$(OE) \
|
||||
spells.$(OE) ccl_player.$(OE)
|
||||
SRCS = clone.c mainloop.c goal.c selection.c groups.c \
|
||||
unit.c unit_draw.c unitcache.c unit_find.c \
|
||||
construct.c player.c pud.c ccl.c iolib.c \
|
||||
spells.c ccl_player.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -36,8 +36,11 @@ include $(TOPDIR)/Rules.make
|
|||
##
|
||||
|
||||
MODULE = ui
|
||||
OBJS = mouse.$(OE) button_checks.$(OE) botpanel.$(OE) mainscr.$(OE) \
|
||||
icons.$(OE) ui.$(OE) ccl_ui.$(OE) menus.$(OE) console.$(OE) \
|
||||
interface.$(OE)
|
||||
|
||||
SRCS = mouse.c button_checks.c botpanel.c mainscr.c \
|
||||
icons.c ui.c ccl_ui.c menus.c console.c \
|
||||
interface.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -31,7 +31,9 @@ include $(TOPDIR)/Rules.make
|
|||
|
||||
MODULE = unit
|
||||
|
||||
OBJS = unittype.$(OE) ccl_unittype.$(OE) upgrade.$(OE) depend.$(OE) \
|
||||
ccl_unit.$(OE)
|
||||
SRCS = unittype.c ccl_unittype.c upgrade.c depend.c \
|
||||
ccl_unit.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
|
@ -33,8 +33,10 @@ MODULE = video
|
|||
|
||||
HDRS = _clip_rectangle intern_video.h
|
||||
|
||||
OBJS = video.$(OE) cursor.$(OE) sprite.$(OE) \
|
||||
graphic.$(OE) linedraw.$(OE) font.$(OE) png.$(OE) \
|
||||
sdl.$(OE) new_X11.$(OE) X11.$(OE) svgalib.$(OE) wince.$(OE)
|
||||
SRCS = video.c cursor.c sprite.c \
|
||||
graphic.c linedraw.c font.c png.c \
|
||||
sdl.c new_X11.c X11.c svgalib.c wince.c
|
||||
|
||||
OBJS = $(addprefix $(OBJDIR), $(SRCS:.c=.$(OE)))
|
||||
|
||||
include $(TOPDIR)/Common.mk
|
||||
|
|
Loading…
Add table
Reference in a new issue