Better option parsing/ignoring
[tennix.git] / makefile
blob9c152475471dd80978f79e103961a6bd59c22e0e
3 # Tennix! SDL Port
4 # Copyright (C) 2003, 2007 Thomas Perl <thp@perli.net>
5 #
6 # This program is free software; you can redistribute it and/or
7 # modify it under the terms of the GNU General Public License
8 # as published by the Free Software Foundation; either version 2
9 # of the License, or (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 # MA 02110-1301, USA.
22 CC = gcc
23 RELEASE = 0.4.2
25 TARGET ?= default
27 PREFIX ?= usr/local/
29 LIBS =
30 CFLAGS += -Wall -DVERSION=\"$(RELEASE)\"
32 ifeq ($(DEBUG),1)
33 CFLAGS += -DDEBUG
34 endif
36 ifeq ($(TARGET),cocoa)
37 LIBS += SDLmain.m -framework SDL -framework Cocoa -framework SDL_image -framework SDL_mixer
38 CFLAGS += -I/Library/Frameworks/SDL.framework/Headers -I/Library/Frameworks/SDL_image.framework/Headers -I/Library/Frameworks/SDL_mixer.framework/Headers -DMACOSX
39 else
40 LIBS += $$(sdl-config --libs) -lSDL_mixer -lSDL_image
41 CFLAGS += $$(sdl-config --cflags)
42 endif
44 SRC = tennix.c game.c graphics.c input.c sound.c
45 OBJ = tennix.o game.o graphics.o input.o sound.o
46 ifeq ($(MSYSTEM),MINGW32)
47 OBJ += tennixres.o
48 endif
50 WIN32LIBS = *.dll
51 OSXAPP = Tennix.app
53 DATAFILES = README README.*
54 ifeq ($(TARGET),cocoa)
55 DATAFILES += data/Tennix.icns
56 endif
58 tennix: $(OBJ)
59 $(CC) $(CFLAGS) -o tennix $(OBJ) $(LIBS)
60 test -f tennix.exe && upx tennix.exe || true
62 install: tennix
63 install -d $(DESTDIR)/$(PREFIX)/bin $(DESTDIR)/$(PREFIX)/share/pixmaps $(DESTDIR)/$(PREFIX)/share/applications
64 install -s tennix $(DESTDIR)/$(PREFIX)/bin/tennix
65 install -m644 data/icon.png $(DESTDIR)/$(PREFIX)/share/pixmaps/tennix.png
66 install -m644 tennix.desktop $(DESTDIR)/$(PREFIX)/share/applications/
68 tennix.o: tennix.c tennix.h game.h graphics.h input.h sound.h
69 graphics.o: graphics.c graphics.h tennix.h input.h data/graphics_data.c
70 game.o: game.c game.h graphics.h tennix.h sound.h
71 sound.o: sound.c sound.h tennix.h data/sounds_data.c
73 data/graphics_data.c: data/*.png
74 make -C data graphics_data.c
76 data/sounds_data.c: data/*.wav
77 make -C data sounds_data.c
79 # Mac OS X-specific targets
80 release-osx: tennix
81 mkdir -p $(OSXAPP)/Contents/{MacOS,/Resources}
82 cp -rpv tennix $(OSXAPP)/Contents/MacOS/Tennix
83 cp -rpv $(DATAFILES) $(OSXAPP)/Contents/Resources/
84 cp -rpv osxapp.plist $(OSXAPP)/Contents/Info.plist
85 echo 'APPL????' >$(OSXAPP)/Contents/PkgInfo
86 zip -r tennix-$(RELEASE)-macosx.zip $(OSXAPP)
87 # End Mac OS X-specific targets
89 # Windows-specific targets
90 release-win32: tennix
91 zip tennix-$(RELEASE)-win32.zip tennix.exe $(WIN32LIBS) $(DATAFILES)
93 tennix-installer.iss: tennix-installer.iss.in
94 sed tennix-installer.iss.in -e 's/{version}/$(RELEASE)/g' >tennix-installer.iss
96 release-win32-setup: tennix tennix-installer.iss
97 iscc tennix-installer.iss
99 tennixres.o: tennix.res
100 windres tennix.res tennixres.o
101 # End Windows-specific targets
103 release-bin: tennix
104 tar czvf tennix-$(RELEASE)-bin.tar.gz tennix $(DATAFILES)
106 clean:
107 rm -f *.o tennix{,.exe}
108 rm -rf $(OSXAPP)
109 rm -f tennixres.o tennix-installer.iss tennix-*-win32-setup.exe
110 make -C data clean
112 distclean: clean
113 rm -f tennix-$(RELEASE).zip tennix-$(RELEASE)-bin.tar.gz
115 .PHONY: distclean clean release-bin release-win32 release-win32-setup release-osx install