patch from div0 to make universal-binary builds of darkplaces possible on Mac OS X
[divverent/darkplaces.git] / makefile
1 #####  DP_MAKE_TARGET autodetection and arch specific variables #####
2
3 ifndef DP_MAKE_TARGET
4
5 # Win32
6 ifdef windir
7         DP_MAKE_TARGET=mingw
8 else
9
10 # UNIXes
11 DP_ARCH:=$(shell uname)
12 ifneq ($(filter %BSD,$(DP_ARCH)),)
13         DP_MAKE_TARGET=bsd
14 else
15 ifeq ($(DP_ARCH), Darwin)
16         DP_MAKE_TARGET=macosx
17 else
18 ifeq ($(DP_ARCH), SunOS)
19         DP_MAKE_TARGET=sunos
20 else
21         DP_MAKE_TARGET=linux
22
23 endif  # ifeq ($(DP_ARCH), SunOS)
24 endif  # ifeq ($(DP_ARCH), Darwin)
25 endif  # ifneq ($(filter %BSD,$(DP_ARCH)),)
26 endif  # ifdef windir
27 endif  # ifndef DP_MAKE_TARGET
28
29 CFLAGS_MAKEDEP=-MD
30
31 # If we're not on compiling for Win32, we need additional information
32 ifneq ($(DP_MAKE_TARGET), mingw)
33         DP_ARCH:=$(shell uname)
34         DP_MACHINE:=$(shell uname -m)
35 endif
36
37
38 # Command used to delete files
39 ifdef windir
40         CMD_RM=del
41 else
42         CMD_RM=$(CMD_UNIXRM)
43 endif
44
45 # 64bits AMD CPUs use another lib directory
46 ifeq ($(DP_MACHINE),x86_64)
47         UNIX_X11LIBPATH:=/usr/X11R6/lib64
48 else
49         UNIX_X11LIBPATH:=/usr/X11R6/lib
50 endif
51
52
53 # Linux configuration
54 ifeq ($(DP_MAKE_TARGET), linux)
55         DEFAULT_SNDAPI=ALSA
56         OBJ_CD=$(OBJ_LINUXCD)
57
58         OBJ_CL=$(OBJ_GLX)
59         OBJ_ICON=
60         OBJ_ICON_NEXUIZ=
61
62         LDFLAGS_CL=$(LDFLAGS_LINUXCL)
63         LDFLAGS_SV=$(LDFLAGS_LINUXSV)
64         LDFLAGS_SDL=$(LDFLAGS_LINUXSDL)
65
66         EXE_CL=$(EXE_UNIXCL)
67         EXE_SV=$(EXE_UNIXSV)
68         EXE_SDL=$(EXE_UNIXSDL)
69         EXE_CLNEXUIZ=$(EXE_UNIXCLNEXUIZ)
70         EXE_SVNEXUIZ=$(EXE_UNIXSVNEXUIZ)
71         EXE_SDLNEXUIZ=$(EXE_UNIXSDLNEXUIZ)
72 endif
73
74 # Mac OS X configuration
75 ifeq ($(DP_MAKE_TARGET), macosx)
76         DEFAULT_SNDAPI=COREAUDIO
77         OBJ_CD=$(OBJ_MACOSXCD)
78
79         OBJ_CL=$(OBJ_AGL)
80         OBJ_ICON=
81         OBJ_ICON_NEXUIZ=
82
83         LDFLAGS_CL=$(LDFLAGS_MACOSXCL)
84         LDFLAGS_SV=$(LDFLAGS_MACOSXSV)
85         LDFLAGS_SDL=$(LDFLAGS_MACOSXSDL)
86
87         EXE_CL=$(EXE_MACOSXCL)
88         EXE_SV=$(EXE_UNIXSV)
89         EXE_SDL=$(EXE_UNIXSDL)
90         EXE_CLNEXUIZ=$(EXE_MACOSXCLNEXUIZ)
91         EXE_SVNEXUIZ=$(EXE_UNIXSVNEXUIZ)
92         EXE_SDLNEXUIZ=$(EXE_UNIXSDLNEXUIZ)
93
94         ifeq ($(word 2, $(filter -arch, $(CC))), -arch)
95                 CFLAGS_MAKEDEP=
96         endif
97 endif
98
99 # SunOS configuration (Solaris)
100 ifeq ($(DP_MAKE_TARGET), sunos)
101         DEFAULT_SNDAPI=BSD
102         OBJ_CD=$(OBJ_SUNOSCD)
103
104         OBJ_CL=$(OBJ_GLX)
105         OBJ_ICON=
106         OBJ_ICON_NEXUIZ=
107
108         CFLAGS_EXTRA=$(CFLAGS_SUNOS)
109
110         LDFLAGS_CL=$(LDFLAGS_SUNOSCL)
111         LDFLAGS_SV=$(LDFLAGS_SUNOSSV)
112         LDFLAGS_SDL=$(LDFLAGS_SUNOSSDL)
113
114         EXE_CL=$(EXE_UNIXCL)
115         EXE_SV=$(EXE_UNIXSV)
116         EXE_SDL=$(EXE_UNIXSDL)
117         EXE_CLNEXUIZ=$(EXE_UNIXCLNEXUIZ)
118         EXE_SVNEXUIZ=$(EXE_UNIXSVNEXUIZ)
119         EXE_SDLNEXUIZ=$(EXE_UNIXSDLNEXUIZ)
120 endif
121
122 # BSD configuration
123 ifeq ($(DP_MAKE_TARGET), bsd)
124 ifeq ($(DP_ARCH),FreeBSD)
125         DEFAULT_SNDAPI=OSS
126 else
127         DEFAULT_SNDAPI=BSD
128 endif
129         OBJ_CD=$(OBJ_BSDCD)
130
131         OBJ_CL=$(OBJ_GLX)
132         OBJ_ICON=
133         OBJ_ICON_NEXUIZ=
134
135         LDFLAGS_CL=$(LDFLAGS_BSDCL)
136         LDFLAGS_SV=$(LDFLAGS_BSDSV)
137         LDFLAGS_SDL=$(LDFLAGS_BSDSDL)
138
139         EXE_CL=$(EXE_UNIXCL)
140         EXE_SV=$(EXE_UNIXSV)
141         EXE_SDL=$(EXE_UNIXSDL)
142         EXE_CLNEXUIZ=$(EXE_UNIXCLNEXUIZ)
143         EXE_SVNEXUIZ=$(EXE_UNIXSVNEXUIZ)
144         EXE_SDLNEXUIZ=$(EXE_UNIXSDLNEXUIZ)
145 endif
146
147 # Win32 configuration
148 ifeq ($(DP_MAKE_TARGET), mingw)
149         DEFAULT_SNDAPI=WIN
150         OBJ_CD=$(OBJ_WINCD)
151
152         OBJ_CL=$(OBJ_WGL)
153         OBJ_ICON=darkplaces.o
154         OBJ_ICON_NEXUIZ=nexuiz.o
155
156         LDFLAGS_CL=$(LDFLAGS_WINCL)
157         LDFLAGS_SV=$(LDFLAGS_WINSV)
158         LDFLAGS_SDL=$(LDFLAGS_WINSDL)
159
160         EXE_CL=$(EXE_WINCL)
161         EXE_SV=$(EXE_WINSV)
162         EXE_SDL=$(EXE_WINSDL)
163         EXE_CLNEXUIZ=$(EXE_WINCLNEXUIZ)
164         EXE_SVNEXUIZ=$(EXE_WINSVNEXUIZ)
165         EXE_SDLNEXUIZ=$(EXE_WINSDLNEXUIZ)
166 endif
167
168
169 ##### Sound configuration #####
170
171 ifndef DP_SOUND_API
172         DP_SOUND_API=$(DEFAULT_SNDAPI)
173 endif
174
175 # NULL: no sound
176 ifeq ($(DP_SOUND_API), NULL)
177         OBJ_SOUND=$(OBJ_SND_NULL)
178         LIB_SOUND=$(LIB_SND_NULL)
179 endif
180
181 # OSS: Open Sound System
182 ifeq ($(DP_SOUND_API), OSS)
183         OBJ_SOUND=$(OBJ_SND_OSS)
184         LIB_SOUND=$(LIB_SND_OSS)
185 endif
186
187 # ALSA: Advanced Linux Sound Architecture
188 ifeq ($(DP_SOUND_API), ALSA)
189         OBJ_SOUND=$(OBJ_SND_ALSA)
190         LIB_SOUND=$(LIB_SND_ALSA)
191 endif
192
193 # COREAUDIO: Core Audio
194 ifeq ($(DP_SOUND_API), COREAUDIO)
195         OBJ_SOUND=$(OBJ_SND_COREAUDIO)
196         LIB_SOUND=$(LIB_SND_COREAUDIO)
197 endif
198
199 # BSD: BSD / Sun audio API
200 ifeq ($(DP_SOUND_API), BSD)
201         OBJ_SOUND=$(OBJ_SND_BSD)
202         LIB_SOUND=$(LIB_SND_BSD)
203 endif
204
205 # WIN: DirectX and Win32 WAVE output
206 ifeq ($(DP_SOUND_API), WIN)
207         OBJ_SOUND=$(OBJ_SND_WIN)
208         LIB_SOUND=$(LIB_SND_WIN)
209 endif
210
211
212 ##### GNU Make specific definitions #####
213
214 DO_LD=$(CC) -o $@ $^ $(LDFLAGS)
215
216
217 ##### Definitions shared by all makefiles #####
218 include makefile.inc
219
220
221 ##### Dependency files #####
222
223 -include *.d