1# Makefile
2# author: iOS-Software
3# July 2004
4
5###############
6# Settings
7
8ENABLE_AUDIO=true
9ENABLE_OPENGL=false
10ENABLE_DGA=false
11
12DEBUG_MODE=false
13
14# Unix/Linux settings
15DATADIR=$(PREFIX)/share/flobopuyo
16INSTALL_BINDIR=$(DESTDIR)/$(PREFIX)/bin
17INSTALL_DATADIR=$(DESTDIR)/$(DATADIR)
18
19# Mac settings
20macimage_name=FloBoPuyo\ $(VERSION)
21bundle_name=FloboPuyo.app
22
23# Win32 settings
24CYGWIN_VERSION=CYGWIN_NT-5.1
25WINZIP_NAME=flobopuyowin32
26WINSDLINCLUDE=/home/$(USER)/SDL-1.2.7/include
27WINSDLDEVLIBS=/home/$(USER)/SDL-1.2.7/lib
28WINSDLRUNTIME=/home/$(USER)/SDL-1.2.7/lib
29#
30##########
31
32
33##############
34# Autodetection
35
36PLATFORM=$(shell uname -s)
37
38VERSION=$(shell grep "\#define FLOBOPUYOVERSION" PuyoVersion.c  | cut -d "\"" -f 2)
39#
40##############
41
42CC=${CXX}
43
44CFLAGS+= -DDATADIR=\"${DATADIR}\"
45
46ifneq ($(PLATFORM), $(CYGWIN_VERSION))
47CFLAGS:=$(CFLAGS) `$(SDL_CONFIG) --cflags`
48LDFLAGS:=$(LDFLAGS) `$(SDL_CONFIG) --cflags --libs`
49endif
50
51HFILES= HiScores.h IosException.h IosImgProcess.h IosVector.h PuyoCommander.h\
52        PuyoGame.h PuyoAnimations.h AnimatedPuyo.h PuyoIA.h PuyoPlayer.h     \
53        PuyoStory.h PuyoView.h SDL_prim.h audio.h menu.h menuitems.h         \
54        preferences.h scrollingtext.h sofont.h SDL_Painter.h PuyoVersion.h   \
55        InputManager.h GameControls.h HiScores.h IosImgProcess.h PuyoStarter.h
56
57
58OBJFILES= SDL_prim.o HiScores.o scenar.y.o scenar.l.o PuyoCommander.o        \
59          IosException.o IosVector.o main.o PuyoGame.o PuyoVersion.o         \
60          PuyoView.o PuyoAnimations.o AnimatedPuyo.o PuyoIA.o sofont.o       \
61          menu.o menuitems.o audio.o scrollingtext.o preferences.o           \
62          PuyoStory.o SDL_Painter.o InputManager.o GameControls.o            \
63          PuyoDoomMelt.o IosImgProcess.o corona32.o corona.o corona_palette.o\
64	  PuyoStarter.o
65
66
67################
68# Mac OS X
69ifeq ($(PLATFORM), Darwin)
70CFLAGS:=$(CFLAGS) -DMACOSX -UDATADIR
71endif
72
73################
74# Win32
75ifeq ($(PLATFORM), $(CYGWIN_VERSION))
76CFLAGS:=$(CFLAGS) -mno-cygwin -mwindows -DWIN32 -DYY_NEVER_INTERACTIVE=1 -I$(WINSDLINCLUDE)
77LDFLAGS:=$(LDFLAGS) -L$(WINSDLDEVLIBS) -lmingw32 -ljpeg -lzlib -lpng1 -lSDL_image -lSDL_mixer -lSDL -lSDLmain
78endif
79
80ifeq ($(ENABLE_AUDIO), true)
81CFLAGS:=$(CFLAGS) -DUSE_AUDIO=1
82OBJFILES:=$(OBJFILES)
83endif
84
85ifeq ($(ENABLE_OPENGL), true)
86CFLAGS:=$(CFLAGS) -DHAVE_OPENGL=1
87OBJFILES:=$(OBJFILES) glSDL.o
88ifeq ($(PLATFORM), Linux)
89LDFLAGS:=$(LDFLAGS) -lGL
90endif
91endif
92
93ifeq ($(ENABLE_DGA), true)
94ifeq ($(PLATFORM), Linux)
95CFLAGS:=$(CFLAGS) -DUSE_DGA=1
96endif
97endif
98
99ifeq ($(DEBUG), true)
100CFLAGS:=$(CFLAGS) -DDEBUG=1 -g
101LDFLAGS:=$(LDFLAGS) -g
102endif
103
104CXXFLAGS=${CFLAGS}
105
106all: prelude flobopuyo
107
108flobopuyo: ${OBJFILES}
109	@echo "[flobopuyo]" && ${CXX} $(CFLAGS) $(LDFLAGS) -o flobopuyo -lSDL_mixer -lSDL_image ${OBJFILES}
110	@echo "--------------------------------------"
111	@echo " Compilation finished"
112	@[ "x`cat WARNINGS | wc -l`" != "x0" ] && echo -e "--------------------------------------\n There have been some warnings:\n" && cat WARNINGS && rm -f WARNINGS && echo "--------------------------------------" || true
113	@echo
114	@echo " Type ./flobopuyo to play."
115	@echo "--------------------------------------"
116
117prelude:
118	@rm -f WARNINGS
119	@touch WARNINGS
120	@echo "Compiling with CFLAGS=$(CFLAGS)"
121	@echo "Compiling with LDFLAGS=$(LDFLAGS)"
122
123%.o:%.c
124	@echo "[$@]" && $(CC) $(CFLAGS) -c $< 2>> WARNINGS || (cat WARNINGS && false)
125
126%.o:%.cpp
127	@echo "[$@]" && $(CXX) $(CFLAGS) -c $< 2>> WARNINGS || (cat WARNINGS && false)
128
129PuyoDoomMelt.o:PuyoDoomMelt.c ${HFILES}
130HiScores.o:HiScores.cpp HiScores.h preferences.h
131PuyoCommander.o:PuyoCommander.cpp ${HFILES}
132PuyoGame.o:PuyoGame.cpp ${HFILES}
133PuyoIA.o:PuyoIA.cpp ${HFILES}
134PuyoStory.o:PuyoStory.cpp ${HFILES}
135PuyoView.o:PuyoView.cpp ${HFILES}
136AnimatedPuyo.o: AnimatedPuyo.cpp ${HFILES}
137PuyoAnimations.o: PuyoAnimations.cpp ${HFILES}
138main.o:main.cpp ${HFILES}
139preferences.o:preferences.c preferences.h
140scenar.l.o:scenar.l.c ${HFILES}
141scenar.y.o:scenar.y.c ${HFILES}
142InputManager.o:InputManager.cpp ${HFILES}
143GameControls.o:GameControls.cpp ${HFILES}
144IosImgProcess.o:IosImgProcess.cpp ${HFILES}
145SDL_Painter.o:SDL_Painter.cpp SDL_Painter.h
146audio.o:audio.c audio.h
147menu.o:menu.c menu.h menuitems.h
148menuitems.o:menuitems.c menu.h menuitems.h
149scrollingtext.o:scrollingtext.c
150sofont.o:sofont.c
151IosException.o:IosException.cpp
152IosVector.o:IosVector.cpp
153glSDL.o:glSDL.c
154	@echo "[$@]" && $(CC) $(CFLAGS) -c $< 2>> EXT_WARNINGS
155	@rm -f EXT_WARNINGS
156SDL_prim.o:SDL_prim.c
157	@echo "[$@]" && $(CC) $(CFLAGS) -c $< 2>> EXT_WARNINGS
158	@rm -f EXT_WARNINGS
159corona.o:corona.cpp
160corona32.o:corona32.cpp
161corona_palette.o:corona_palette.cpp
162
163scenar.l.c:scenar.l ${HFILES}
164	@echo "[$@]" && flex -oscenar.l.c scenar.l
165scenar.y.c:scenar.y ${HFILES}
166	@echo "[$@]" && bison -y -d -o scenar.y.c scenar.y
167
168clean:
169	rm -f *~ scenar.y.c scenar.y.h scenar.l.c *.o flobopuyo* WARNINGS
170	rm -rf .xvpics data/.xvpics    data/*/.xvpics
171	rm -rf $(bundle_name)
172	rm -rf $(macimage_name)
173	rm -f  $(macimage_name).dmg
174	rm -f  .DS_Store */.DS_Store */*/.DS_Store .gdb_history
175
176install: flobopuyo
177	strip flobopuyo
178	mkdir -p ${INSTALL_BINDIR}
179	mkdir -p ${INSTALL_DATADIR}
180	cp -r data/* ${INSTALL_DATADIR}
181	chmod a+rx ${INSTALL_DATADIR}
182	chmod a+rx ${INSTALL_DATADIR}/sfx
183	chmod a+rx ${INSTALL_DATADIR}/gfx
184	chmod a+rx ${INSTALL_DATADIR}/story
185	chmod -R a+r ${INSTALL_DATADIR}
186	cp ./flobopuyo ${INSTALL_BINDIR}/flobopuyo
187	chmod a+rx ${INSTALL_BINDIR}/flobopuyo
188
189flobopuyo-static: prelude  ${OBJFILES}
190	@echo "[flobopuyo-static]" && g++ $(CFLAGS) -o flobopuyo-static ${OBJFILES}\
191        /sw/lib/libSDL_mixer.a /sw/lib/libvorbisfile.a /sw/lib/libvorbis.a /sw/lib/libogg.a /sw/lib/libsmpeg.a /sw/lib/libSDL_image.a /sw/lib/libjpeg.a /sw/lib/libpng.a -lz `$(SDL_CONFIG) --static-libs`
192	@echo "--------------------------------------"
193	@echo " Compilation finished"
194
195bundle: flobopuyo-static
196	mkdir -p $(bundle_name)/Contents/MacOS
197	mkdir -p $(bundle_name)/Contents/Resources
198	echo "APPL????" > $(bundle_name)/Contents/PkgInfo
199	sed "s/@@VERSION@@/$(VERSION)/" mac/Info.plist > $(bundle_name)/Contents/Info.plist
200	cp mac/icon.icns $(bundle_name)/Contents/Resources/
201	cp flobopuyo-static $(bundle_name)/Contents/MacOS/flobopuyo
202	cp -r data $(bundle_name)/Contents/Resources
203	rm -rf $(bundle_name)/Contents/Resources/data/CVS $(bundle_name)/Contents/Resources/data/*/CVS
204	rm -rf $(bundle_name)/Contents/Resources/data/.xvpics $(bundle_name)/Contents/Resources/data/*/.xvpics
205	rm -f $(bundle_name)/Contents/Resources/data/.DS_Store $(bundle_name)/Contents/Resources/data/*/.DS_Store
206	strip $(bundle_name)/Contents/MacOS/flobopuyo
207
208mac-package: bundle
209	mkdir -p $(macimage_name)
210	cp -r $(bundle_name) $(macimage_name)
211	cp COPYING $(macimage_name)
212	hdiutil create -srcfolder $(macimage_name) $(macimage_name).dmg
213	hdiutil internet-enable $(macimage_name).dmg
214
215win-package: flobopuyo
216	mkdir -p $(WINZIP_NAME)
217	cp -r data $(WINZIP_NAME)
218	cp flobopuyo.exe $(WINZIP_NAME)
219	cp COPYING $(WINZIP_NAME)
220	cp $(WINSDLRUNTIME)/*.dll $(WINZIP_NAME)
221	zip -r $(WINZIP_NAME) $(WINZIP_NAME)
222