JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Friction doesn't make sense any more, dropped that.
[vor.git] / Makefile
index bc7c6ad..c2efa12 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,5 +1,5 @@
-#   Rock Dodger! Avoid the rocks as long as you can!
-#   Copyright (C) 2001  Paul Holt <pad@pcholt.com>
+#   Variations on Rockdodger
+#   Copyright (C) 2004  Joshua Grams <josh@qualdan.com>
 
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
 #   along with this program; if not, write to the Free Software
 #   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
-debug := $(if $(DEBUG),1,0)
-ldflags := $(shell sdl-config --libs) -lSDL_image -lSDL_mixer
-cflags := $(shell sdl-config --cflags) -Wall -DDEBUG=$(debug) -ggdb
+DATA_PREFIX := /usr/share/vor
+PROGRAM_PREFIX := /usr/games/bin
 
-my_objects := file.o score.o shape.o sound.o main.o $(if $(DEBUG),debug.o)
+debug := $(if $(DEBUG),-DDEBUG=1)
+paths := -DDATA_PREFIX=\"$(DATA_PREFIX)\"
+sdl-cflags := $(shell sdl-config --cflags)
+sdl-ldflags := $(shell sdl-config --libs)
+
+ldflags := $(sdl-ldflags) -lSDL_image -lSDL_mixer
+cflags := $(sdl-cflags) $(debug) $(paths) $(CFLAGS)
+
+my_objects := args.o file.o rocks.o score.o shape.o sound.o
+my_objects += $(if $(DEBUG),debug.o) main.o
 libs := SFont.o
 objects := $(libs) $(my_objects)
 
@@ -28,38 +36,50 @@ rocks += 10 11 12 13 14 15 16 17 18 19
 rocks += 20 21 22 23 24 25 26 27 28 29
 rocks += 30 31 32 33 34 35 36 37 38 39
 rocks += 40 41 42 43 44 45 46 47 48 49
+rocks := $(rocks:%=data/sprites/rock%.png)
+graphics := data/sprites/ship.png data/indicators/life.png $(rocks)
 
-graphics := data/sprites/ship.png data/indicators/life.png $(rocks:%=data/sprites/rock%.png)
+INSTALL := install
+INSTALL_PROGRAM := $(INSTALL) -o games -g games
+INSTALL_DATA := $(INSTALL) -m 644
 
-INSTALL = install
-INSTALL_PROGRAM = $(INSTALL) -o games -g games
-INSTALL_DATA = $(INSTALL) -m 644
 
-DATA_PREFIX = /usr/share/vor
-PROGRAM_PREFIX = /usr/games/bin
+.PHONY: all clean maintainer-clean install uninstall
+.PHONY: mkinstalldirs rminstalldirs
+.PHONY: program program-clean install-program uninstall-program
+.PHONY: data data-clean install-data uninstall-data
 
+all: program data
 
-all: vor $(graphics)
+data: $(graphics)
+
+program: vor
 
 %.o: %.c
-       $(CC) $(cflags) -c -o $@ $<
+       @echo compiling $@ from $<
+       @$(CC) $(cflags) -c -o $@ $<
 
 $(my_objects): config.h
 
 main.o file.o: file.h
 
 vor: $(objects)
-       $(CC) $(ldflags) -o $@ $^ $(LIBRARIES)
-
-pnmoutline: pnmoutline.c
-       $(CC) -lnetpbm -o $@ $<
+       @echo linking $@ from $^
+       @$(CC) $(ldflags) -o $@ $^ $(LIBRARIES)
 
 include gfx.mk
 
-clean:
-       rm -f *.o vor pnmoutline $(graphics)
+clean: program-clean
 
-install:       all
+maintainer-clean: program-clean data-clean
+
+program-clean:
+       rm -f *.o vor
+
+data-clean:
+       rm -f $(graphics)
+
+mkinstalldirs:
        if [ ! -d $(DATA_PREFIX) ]; then mkdir $(DATA_PREFIX); fi
        if [ ! -d $(DATA_PREFIX)/banners ]; then mkdir $(DATA_PREFIX)/banners; fi
        if [ ! -d $(DATA_PREFIX)/fonts ]; then mkdir $(DATA_PREFIX)/fonts; fi
@@ -69,7 +89,22 @@ install:     all
        if [ ! -d $(DATA_PREFIX)/sounds ]; then mkdir $(DATA_PREFIX)/sounds; fi
        if [ ! -d $(DATA_PREFIX)/sprites ]; then mkdir $(DATA_PREFIX)/sprites; fi
 
+rminstalldirs:
+       if [ -d $(DATA_PREFIX)/banners ]; then rmdir $(DATA_PREFIX)/banners; fi
+       if [ -d $(DATA_PREFIX)/fonts ]; then rmdir $(DATA_PREFIX)/fonts; fi
+       if [ -d $(DATA_PREFIX)/icons ]; then rmdir $(DATA_PREFIX)/icons; fi
+       if [ -d $(DATA_PREFIX)/indicators ]; then rmdir $(DATA_PREFIX)/indicators; fi
+       if [ -d $(DATA_PREFIX)/music ]; then rmdir $(DATA_PREFIX)/music; fi
+       if [ -d $(DATA_PREFIX)/sounds ]; then rmdir $(DATA_PREFIX)/sounds; fi
+       if [ -d $(DATA_PREFIX)/sprites ]; then rmdir $(DATA_PREFIX)/sprites; fi
+       if [ -d $(DATA_PREFIX) ]; then rmdir $(DATA_PREFIX); fi
+
+install: all mkinstalldirs install-program install-data
+
+install-program: program
        $(INSTALL_PROGRAM) ./vor $(PROGRAM_PREFIX)
+
+install-data: data
        $(INSTALL_DATA) ./data/banners/* $(DATA_PREFIX)/banners/
        $(INSTALL_DATA) ./data/fonts/* $(DATA_PREFIX)/fonts/
        $(INSTALL_DATA) ./data/icons/* $(DATA_PREFIX)/icons/
@@ -77,11 +112,13 @@ install:   all
        $(INSTALL_DATA) ./data/music/* $(DATA_PREFIX)/music/
        $(INSTALL_DATA) ./data/sounds/* $(DATA_PREFIX)/sounds/
        $(INSTALL_DATA) ./data/sprites/* $(DATA_PREFIX)/sprites/
-       touch $(DATA_PREFIX)/scores
-       chmod a+rw $(DATA_PREFIX)/scores
 
-uninstall:
+uninstall: uninstall-program uninstall-data rminstalldirs
+
+uninstall-program:
        rm -f $(PROGRAM_PREFIX)/vor
+
+uninstall-data:
        rm -f $(DATA_PREFIX)/banners/*
        rm -f $(DATA_PREFIX)/fonts/*
        rm -f $(DATA_PREFIX)/icons/*
@@ -89,13 +126,4 @@ uninstall:
        rm -f $(DATA_PREFIX)/music/*
        rm -f $(DATA_PREFIX)/sounds/*
        rm -f $(DATA_PREFIX)/sprites/*
-       rm -f $(DATA_PREFIX)/scores $(DATA_PREFIX)/.highscore
-
-       if [ -d $(DATA_PREFIX)/banners ]; then rmdir $(DATA_PREFIX)/banners; fi
-       if [ -d $(DATA_PREFIX)/fonts ]; then rmdir $(DATA_PREFIX)/fonts; fi
-       if [ -d $(DATA_PREFIX)/icons ]; then rmdir $(DATA_PREFIX)/icons; fi
-       if [ -d $(DATA_PREFIX)/indicators ]; then rmdir $(DATA_PREFIX)/indicators; fi
-       if [ -d $(DATA_PREFIX)/music ]; then rmdir $(DATA_PREFIX)/music; fi
-       if [ -d $(DATA_PREFIX)/sounds ]; then rmdir $(DATA_PREFIX)/sounds; fi
-       if [ -d $(DATA_PREFIX)/sprites ]; then rmdir $(DATA_PREFIX)/sprites; fi
-       if [ -d $(DATA_PREFIX) ]; then rmdir $(DATA_PREFIX); fi
+       rm -f $(DATA_PREFIX)/scores