1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
SHELL = /bin/sh
CC = gcc
INSTALL = install
EXEC_NCURSES = curseofwar
EXEC_SDL = curseofwar-sdl
GAME_TITLE = $(EXEC_NCURSES)
PREFIX ?= /usr
MANPREFIX = $(PREFIX)/share/man
BINDIR = $(DESTDIR)$(PREFIX)/bin
MANDIR = $(DESTDIR)$(MANPREFIX)/man6
DOCDIR = $(DESTDIR)$(PREFIX)/share/doc/$(GAME_TITLE)
# Game resources directories
INSTALL_DATA ?= $(DESTDIR)$(PREFIX)/share/$(GAME_TITLE)
IMAGESDIR = images
# Sources
SRCS_INDEP = grid.c state.c king.c network.c client.c server.c output-common.c path.c main-common.c
SRCS_NCURSES = output.c main.c
SRCS_SDL = output-sdl.c main-sdl.c
HDRS_INDEP = common.h messaging.h $(SRCS_INDEP:.c=.h)
HDRS_NCURSES = output.h
HDRS_SDL = output-sdl.h
OBJS_INDEP = $(SRCS_INDEP:.c=.o)
OBJS_NCURSES = $(SRCS_NCURSES:.c=.o)
OBJS_SDL = $(SRCS_SDL:.c=.o)
EXECS = $(EXEC_NCURSES) $(EXEC_SDL)
CFLAGS += -Wall -O2
LDLIBS += -lm
# Common sources and header
OBJS = $(OBJS_INDEP)
HDRS = $(HDRS_INDEP)
# SDL or ncurses
ifdef SDL
OBJS += $(OBJS_SDL)
HDRS += $(HDRS_SDL)
CFLAGS += $(shell sdl-config --cflags)
LDLIBS += $(shell sdl-config --libs)
EXEC = $(EXEC_SDL)
# Version-specific
INSTALL_OPTIONAL = install-sdl-manpage
UNINSTALL_OPTIONAL = uninstall-sdl-manpage
ifdef INSTALL_DATA
INSTALL_OPTIONAL += install-images
UNINSTALL_OPTIONAL += uninstall-images
endif
else
OBJS += $(OBJS_NCURSES)
HDRS += $(HDRS_NCURSES)
LDLIBS += -lncurses
EXEC = $(EXEC_NCURSES)
# Version-specific
INSTALL_OPTIONAL = install-manpage install-changelog
UNINSTALL_OPTIONAL = uninstall-manpage uninstall-changelog
endif
VERSION=$(shell cat VERSION)
CPPFLAGS += -DVERSION="\"$(VERSION)\""
CPPFLAGS += -DINSTALL_DATA="\"$(INSTALL_DATA)/\""
.PHONY: all clean cleanall
# Build
all: $(EXEC)
clean:
-rm -f $(OBJS_INDEP) $(OBJS_NCURSES) $(OBJS_SDL) $(EXECS)
%.o: %.c $(HDRS)
$(CC) $(CPPFLAGS) $(CFLAGS) -c $<
$(EXEC): $(OBJS) $(HDRS)
$(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(EXEC)
# Install
install-manpage:
$(INSTALL) -m 755 -d $(MANDIR)
-sed "s/%VERSION%/$(VERSION)/g" $(GAME_TITLE).6 > $(MANDIR)/$(GAME_TITLE).6
-chmod 644 $(MANDIR)/$(GAME_TITLE).6
install-changelog:
$(INSTALL) -m 755 -d $(DOCDIR)
-cat CHANGELOG | gzip -c > $(DOCDIR)/changelog.gz
-chmod 644 $(DOCDIR)/changelog.gz
install-images:
$(INSTALL) -m 755 -d $(INSTALL_DATA)/$(IMAGESDIR)
for file in $(IMAGESDIR)/*; do \
$(INSTALL) -m 0644 $$file $(INSTALL_DATA)/$(IMAGESDIR); \
done
install-sdl-manpage:
$(INSTALL) -m 755 -d $(MANDIR)
-sed "s/%VERSION%/$(VERSION)/g" $(EXEC_SDL).6 > $(MANDIR)/$(EXEC_SDL).6
-chmod 644 $(MANDIR)/$(GAME_TITLE).6
install: all $(INSTALL_OPTIONAL)
$(INSTALL) -m 755 -D $(EXEC) $(BINDIR)/$(EXEC)
# Uninstall
uninstall-manpage:
-rm -f $(MANDIR)/$(GAME_TITLE).6.gz
uninstall-changelog:
-rm $(DOCDIR)/changelog.gz
-rmdir $(DOCDIR)
uninstall-images:
-rm -f $(INSTALL_DATA)/$(IMAGESDIR)/*
-rmdir $(INSTALL_DATA)/$(IMAGESDIR)
-rmdir $(INSTALL_DATA)
uninstall-sdl-manpage:
-rm -f $(MANDIR)/$(EXEC_SDL).6.gz
uninstall: $(UNINSTALL_OPTIONAL)
-rm -f $(BINDIR)/$(EXEC)
show-path:
@echo would install to ${BINDIR}
|