added support for cross-compiling to Windows 64-bit platform
[rocksndiamonds.git] / Makefile
1 # =============================================================================
2 # Rocks'n'Diamonds - McDuffin Strikes Back!
3 # -----------------------------------------------------------------------------
4 # (c) 1995-2015 by Artsoft Entertainment
5 #                  Holger Schemel
6 #                  info@artsoft.org
7 #                  http://www.artsoft.org/
8 # -----------------------------------------------------------------------------
9 # Makefile
10 # =============================================================================
11
12 # -----------------------------------------------------------------------------
13 # configuration
14 # -----------------------------------------------------------------------------
15
16 # command name of your favorite ANSI C compiler
17 # (this must be set to "cc" for some systems)
18 CC = gcc
19
20 # command name of GNU make on your system
21 # (this must be set to "gmake" for some systems)
22 MAKE = make
23
24 # directory for read-only game data (like graphics, sounds, levels)
25 # (this directory is usually the game's installation directory)
26 # default is '.' to be able to run program without installation
27 # RO_GAME_DIR = .
28 # use the following setting for Debian / Ubuntu installations:
29 # RO_GAME_DIR = /usr/share/games/rocksndiamonds
30
31 # directory for writable game data (like highscore files)
32 # (if no "scores" directory exists, scores are saved in user data directory)
33 # default is '.' to be able to run program without installation
34 # RW_GAME_DIR = .
35 # use the following setting for Debian / Ubuntu installations:
36 # RW_GAME_DIR = /var/games/rocksndiamonds
37
38 # uncomment if system has no joystick include file
39 # JOYSTICK = -DNO_JOYSTICK
40
41 # path for cross-compiling (only needed for non-native Windows build)
42 CROSS_PATH_WIN32 = /usr/local/cross-tools/i686-w64-mingw32
43 CROSS_PATH_WIN64 = /usr/local/cross-tools/x86_64-w64-mingw32
44
45
46 # -----------------------------------------------------------------------------
47 # there should be no need to change anything below
48 # -----------------------------------------------------------------------------
49
50 .EXPORT_ALL_VARIABLES:
51
52 SRC_DIR = src
53 ANDROID_DIR ?= build-projects/android
54
55 MAKE_CMD = $(MAKE) -C $(SRC_DIR)
56 MAKE_CMD_ANDROID = $(MAKE) -C $(ANDROID_DIR)
57
58
59 # -----------------------------------------------------------------------------
60 # build targets
61 # -----------------------------------------------------------------------------
62
63 all:
64         @$(MAKE_CMD)
65
66 sdl:
67         @$(MAKE_CMD) TARGET=sdl
68
69 sdl2:
70         @$(MAKE_CMD) TARGET=sdl2
71
72 mac:
73         @$(MAKE_CMD) PLATFORM=macosx
74
75 cross-win32:
76         @PATH=$(CROSS_PATH_WIN32)/bin:${PATH} $(MAKE_CMD) PLATFORM=cross-win32
77
78 cross-win64:
79         @PATH=$(CROSS_PATH_WIN64)/bin:${PATH} $(MAKE_CMD) PLATFORM=cross-win64
80
81 android-compile:
82         @$(MAKE_CMD_ANDROID) compile
83
84 android-package:
85         @$(MAKE_CMD_ANDROID) package
86
87 android-install:
88         @$(MAKE_CMD_ANDROID) install
89
90 android-assets-toc:
91         @$(MAKE_CMD_ANDROID) assets-toc
92
93 android-clean:
94         @$(MAKE_CMD_ANDROID) clean
95
96 android: android-package
97
98 clean:
99         @$(MAKE_CMD) clean
100
101 clean-git:
102         @$(MAKE_CMD) clean-git
103
104 clean-android: android-clean
105
106
107 # -----------------------------------------------------------------------------
108 # development targets
109 # -----------------------------------------------------------------------------
110
111 MAKE_ENGINETEST = ./Scripts/make_enginetest.sh
112 MAKE_LEVELSKETCH = ./Scripts/make_levelsketch_images.sh
113
114 auto-conf:
115         @$(MAKE_CMD) auto-conf
116
117 run: all
118         @$(MAKE_CMD) run
119
120 gdb: all
121         @$(MAKE_CMD) gdb
122
123 valgrind: all
124         @$(MAKE_CMD) valgrind
125
126 tags:
127         $(MAKE_CMD) tags
128
129 depend dep:
130         $(MAKE_CMD) depend
131
132 enginetest: all
133         $(MAKE_ENGINETEST)
134
135 enginetestcustom: all
136         $(MAKE_ENGINETEST) custom
137
138 enginetestfast: all
139         $(MAKE_ENGINETEST) fast
140
141 enginetestnew: all
142         $(MAKE_ENGINETEST) new
143
144 leveltest: all
145         $(MAKE_ENGINETEST) leveltest
146
147 levelsketch_images: all
148         $(MAKE_LEVELSKETCH)
149
150
151 # -----------------------------------------------------------------------------
152 # distribution targets
153 # -----------------------------------------------------------------------------
154
155 MAKE_DIST = ./Scripts/make_dist.sh
156
157 dist-clean:
158         @$(MAKE_CMD) dist-clean
159
160 dist-clean-android:
161         @$(MAKE_CMD_ANDROID) dist-clean
162
163 dist-build-unix:
164         @BUILD_DIST=TRUE $(MAKE)
165
166 dist-build-win32:
167         @BUILD_DIST=TRUE $(MAKE) cross-win32
168
169 dist-build-win64:
170         @BUILD_DIST=TRUE $(MAKE) cross-win64
171
172 dist-build-macosx:
173         @BUILD_DIST=TRUE $(MAKE)
174
175 dist-build-android:
176         @BUILD_DIST=TRUE $(MAKE) android
177
178 dist-package-unix:
179         $(MAKE_DIST) package unix
180
181 dist-package-win32:
182         $(MAKE_DIST) package win32
183
184 dist-package-win64:
185         $(MAKE_DIST) package win64
186
187 dist-package-macosx:
188         $(MAKE_DIST) package mac
189
190 dist-package-android:
191         $(MAKE_DIST) package android
192
193 dist-copy-package-unix:
194         $(MAKE_DIST) copy-package unix
195
196 dist-copy-package-win32:
197         $(MAKE_DIST) copy-package win32
198
199 dist-copy-package-win64:
200         $(MAKE_DIST) copy-package win64
201
202 dist-copy-package-macosx:
203         $(MAKE_DIST) copy-package mac
204
205 dist-copy-package-android:
206         $(MAKE_DIST) copy-package android
207
208 dist-upload-unix:
209         $(MAKE_DIST) upload unix
210
211 dist-upload-win32:
212         $(MAKE_DIST) upload win32
213
214 dist-upload-win64:
215         $(MAKE_DIST) upload win64
216
217 dist-upload-macosx:
218         $(MAKE_DIST) upload mac
219
220 dist-upload-android:
221         $(MAKE_DIST) upload android
222
223 dist-package-all:
224         $(MAKE) dist-package-unix
225         $(MAKE) dist-package-win32
226         $(MAKE) dist-package-win64
227         $(MAKE) dist-package-macosx
228         $(MAKE) dist-package-android
229
230 dist-copy-package-all:
231         $(MAKE) dist-copy-package-unix
232         $(MAKE) dist-copy-package-win32
233         $(MAKE) dist-copy-package-win64
234         $(MAKE) dist-copy-package-macosx
235         $(MAKE) dist-copy-package-android
236
237 dist-upload-all:
238         $(MAKE) dist-upload-unix
239         $(MAKE) dist-upload-win32
240         $(MAKE) dist-upload-win64
241         $(MAKE) dist-upload-macosx
242         $(MAKE) dist-upload-android
243
244 dist-release-all: dist-package-all dist-copy-package-all dist-upload-all
245
246 package-all: dist-package-all
247
248 copy-package-all: dist-copy-package-all
249
250 upload-all: dist-upload-all
251
252 release-all: dist-release-all