Makefile.in 19.6 KB
Newer Older
Michel Kaempf's avatar
Michel Kaempf committed
1
2
3
4
5
6
7
8
9
10
11
################################################################################
# vlc (VideoLAN Client) main makefile
# (c)1998 VideoLAN
################################################################################
# This makefile is the main makefile for the VideoLAN client.
################################################################################

################################################################################
# Configuration
################################################################################

Vincent Seguin's avatar
Vincent Seguin committed
12
# Debugging mode on or off (set to 1 to activate)
13
14
15
DEBUG=@DEBUG@
STATS=@STATS@
OPTIMS=@OPTIMS@
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
16

17
SYS=@SYS@
18
PLUGINS=@PLUGINS@
19
INSTALL=@INSTALL@
20
ARCH=@ARCH@
Sam Hocevar's avatar
   
Sam Hocevar committed
21

Sam Hocevar's avatar
   
Sam Hocevar committed
22
exec_prefix=@exec_prefix@
23
prefix=@prefix@
Sam Hocevar's avatar
   
Sam Hocevar committed
24
25
26
27
bindir=@bindir@
datadir=@datadir@
libdir=@libdir@

Benoit Steiner's avatar
   
Benoit Steiner committed
28
29
30
CC=@CC@
SHELL=@SHELL@

Christophe Massiot's avatar
Christophe Massiot committed
31
32
33
LIB_SDL=@LIB_SDL@
LIB_GLIDE=@LIB_GLIDE@
LIB_GGI=@LIB_GGI@
34
35

#----------------- do not change anything below this line ----------------------
36

Vincent Seguin's avatar
Vincent Seguin committed
37
38
39
40
################################################################################
# Configuration pre-processing
################################################################################

Vincent Seguin's avatar
Vincent Seguin committed
41
# PROGRAM_OPTIONS is an identification string of the compilation options
42
PROGRAM_OPTIONS = $(SYS) $(ARCH)
Vincent Seguin's avatar
Vincent Seguin committed
43
ifeq ($(DEBUG),1)
Vincent Seguin's avatar
Vincent Seguin committed
44
PROGRAM_OPTIONS += DEBUG
45
46
47
48
49
DEFINE += -DDEBUG
endif
ifeq ($(STATS),1)
PROGRAM_OPTIONS += DEBUG
DEFINE += -DSTATS
Vincent Seguin's avatar
Vincent Seguin committed
50
51
52
endif

# PROGRAM_BUILD is a complete identification of the build
53
54
# (we can't use fancy options with date since OSes like Solaris
# or FreeBSD have strange date implementations)
55
PROGRAM_BUILD = `date` $(USER)
56
# XXX: beos does not support hostname (how lame...)
57
#PROGRAM_BUILD = `date` $(USER)@`hostname`
Vincent Seguin's avatar
Vincent Seguin committed
58
59

# DEFINE will contain some of the constants definitions decided in Makefile, 
60
# including SYS_xx. It will be passed to C compiler.
Christophe Massiot's avatar
Christophe Massiot committed
61
DEFINE += -DSYS_$(shell echo $(SYS) | sed 's/-.*//' | tr a-z. A-Z_)
Vincent Seguin's avatar
Vincent Seguin committed
62

63
64
65
66
67
# On Linux activate 64-bit off_t (by default under BSD)
ifneq (,$(findstring linux,$(SYS)))
DEFINE += -D_FILE_OFFSET_BITS=64 -D__USE_UNIX98
endif

Michel Kaempf's avatar
Michel Kaempf committed
68
################################################################################
69
# Tuning and other variables - do not change anything except if you know
Vincent Seguin's avatar
Vincent Seguin committed
70
# exactly what you are doing
Michel Kaempf's avatar
Michel Kaempf committed
71
72
73
74
75
################################################################################

#
# C headers directories
#
76
INCLUDE += -Iinclude -I/usr/local/include -I/usr/X11R6/include
Vincent Seguin's avatar
Vincent Seguin committed
77

Michel Kaempf's avatar
Michel Kaempf committed
78
79
80
#
# Libraries
#
81
ifeq ($(SYS),gnu)
82
83
84
LIB += -lthreads -ldl
endif

85
ifneq (,$(findstring bsd,$(SYS)))
86
87
LIB += -pthread -lgnugetopt
LIB += -L/usr/local/lib
88
endif
89

90
ifneq (,$(findstring linux,$(SYS)))
91
92
93
LIB += -lpthread -ldl
endif

Benoit Steiner's avatar
   
Benoit Steiner committed
94
ifneq (,$(findstring solaris,$(SYS)))
Benoit Steiner's avatar
Benoit Steiner committed
95
LIB += -ldl -lsocket -lnsl -lpthread
Benoit Steiner's avatar
   
Benoit Steiner committed
96
97
endif

98
ifeq ($(SYS),beos)
99
100
LIB += -lbe -lroot -lgame
else
101
LIB += -lm
102
endif
103

Michel Kaempf's avatar
Michel Kaempf committed
104
#
Benoit Steiner's avatar
   
Benoit Steiner committed
105
# C compiler flags: mainstream compilation
Michel Kaempf's avatar
Michel Kaempf committed
106
#
107
108
109
110
CFLAGS += $(DEFINE) $(INCLUDE)
CFLAGS += -Wall -Winline
CFLAGS += -D_REENTRANT
CFLAGS += -D_GNU_SOURCE
Michel Kaempf's avatar
Michel Kaempf committed
111

112
# flags needed for clean beos compilation
Sam Hocevar's avatar
Sam Hocevar committed
113
ifeq ($(SYS),beos)
114
CFLAGS += -Wno-multichar -Wno-ctor-dtor-privacy -Woverloaded-virtual
Sam Hocevar's avatar
Sam Hocevar committed
115
endif
116

Michel Kaempf's avatar
Michel Kaempf committed
117
# Optimizations : don't compile debug versions with them
118
ifeq ($(OPTIMS),1)
119
120
CFLAGS += -O3
CFLAGS += -ffast-math -funroll-loops
121
CFLAGS += -fomit-frame-pointer
122

123
# Optimizations for x86 familiy
124
ifneq (,$(findstring 86,$(ARCH)))
125
# Optional Pentium Pro optimizations
126
ifneq (,$(findstring ppro,$(ARCH)))
127
CFLAGS += -march=pentiumpro -mcpu=pentiumpro
128
else
129
CFLAGS += -march=pentium -mcpu=pentium
130
endif
Vincent Seguin's avatar
Vincent Seguin committed
131
endif
132

Vincent Seguin's avatar
Vincent Seguin committed
133
# Optimizations for PowerPC
134
135
136
137
138
139
140
ifneq (,$(findstring powerpc,$(ARCH)))
# 604e
CFLAGS += -mcpu=604e -mmultiple -mhard-float -mstring
# G3
#CFLAGS += -mcpu=750 -mmultiple -mhard-float -mstring
# G4
#CFLAGS += -mcpu=7400 -mmultiple -mhard-float -mstring
Vincent Seguin's avatar
Vincent Seguin committed
141
endif
Michel Kaempf's avatar
Michel Kaempf committed
142

143
# Optimizations for Sparc
144
ifneq (,$(findstring sparc,$(ARCH)))
145
CFLAGS += -mhard-float
146
147
endif

Benoit Steiner's avatar
   
Benoit Steiner committed
148
#end of optimisations
149
150
endif

151
# Optional MMX optimizations for x86
152
153
ifneq (,$(findstring mmx,$(ARCH)))
CFLAGS += -DHAVE_MMX
154
155
endif

Benoit Steiner's avatar
   
Benoit Steiner committed
156
157
158
159
#
# C compiler flags: plugin compilation
#
PCFLAGS += -fPIC
160

Michel Kaempf's avatar
Michel Kaempf committed
161
162
163
164
165
166
167
168
169
170
171
#
# C compiler flags: dependancies
#
DCFLAGS += $(INCLUDE)
DCFLAGS += -MM

#
# C compiler flags: linking
#
LCFLAGS += $(LIB)
LCFLAGS += -Wall
Vincent Seguin's avatar
Vincent Seguin committed
172
#LCFLAGS += -s
Michel Kaempf's avatar
Michel Kaempf committed
173
174

#
Benoit Steiner's avatar
   
Benoit Steiner committed
175
# Debugging and profiling support (unless optimisations are active)
Michel Kaempf's avatar
Michel Kaempf committed
176
#
Benoit Steiner's avatar
   
Benoit Steiner committed
177
ifneq ($(OPTIMS),1)
178
179
CFLAGS += -g
endif
Michel Kaempf's avatar
Michel Kaempf committed
180
181
182
183
184
185

#################################################################################
# Objects and files
#################################################################################

#
Vincent Seguin's avatar
Vincent Seguin committed
186
# C Objects
Michel Kaempf's avatar
Michel Kaempf committed
187
# 
Benoit Steiner's avatar
   
Benoit Steiner committed
188
189
190
191
192
INTERFACE =	src/interface/main.o \
		src/interface/interface.o \
		src/interface/intf_msg.o \
		src/interface/intf_cmd.o \
		src/interface/intf_ctrl.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
193
		src/interface/intf_plst.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
194
		src/interface/intf_channels.o \
Benoit Steiner's avatar
   
Benoit Steiner committed
195
196
		src/interface/intf_console.o

Sam Hocevar's avatar
   
Sam Hocevar committed
197
INPUT =		src/input/input_ext-dec.o \
198
		src/input/input_ext-intf.o \
199
		src/input/input_dec.o \
200
		src/input/input_programs.o \
Henri Fallon's avatar
   
Henri Fallon committed
201
		src/input/input_netlist.o \
202
		src/input/input_clock.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
203
204
		src/input/input.o \
		src/input/mpeg_system.o
Benoit Steiner's avatar
   
Benoit Steiner committed
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220

AUDIO_OUTPUT = 	src/audio_output/audio_output.o

VIDEO_OUTPUT = 	src/video_output/video_output.o \
		src/video_output/video_text.o \
		src/video_output/video_spu.o \
		src/video_output/video_yuv.o

AC3_DECODER =	src/ac3_decoder/ac3_decoder_thread.o \
		src/ac3_decoder/ac3_decoder.o \
		src/ac3_decoder/ac3_parse.o \
		src/ac3_decoder/ac3_exponent.o \
		src/ac3_decoder/ac3_bit_allocate.o \
		src/ac3_decoder/ac3_mantissa.o \
		src/ac3_decoder/ac3_rematrix.o \
		src/ac3_decoder/ac3_imdct.o \
221
222
		src/ac3_decoder/ac3_downmix.o \
		src/ac3_decoder/ac3_downmix_c.o
Benoit Steiner's avatar
   
Benoit Steiner committed
223
224
225
226

LPCM_DECODER =	src/lpcm_decoder/lpcm_decoder_thread.o \
		src/lpcm_decoder/lpcm_decoder.o

Sam Hocevar's avatar
   
Sam Hocevar committed
227
228
229
230
231
AUDIO_DECODER =	src/audio_decoder/audio_decoder.o \
		src/audio_decoder/adec_generic.o \
		src/audio_decoder/adec_layer1.o \
		src/audio_decoder/adec_layer2.o \
		src/audio_decoder/adec_math.o
Benoit Steiner's avatar
   
Benoit Steiner committed
232
233
234
235
236
237
238
239
240
241

SPU_DECODER =	src/spu_decoder/spu_decoder.o

#GEN_DECODER =	src/generic_decoder/generic_decoder.o

VIDEO_PARSER = 	src/video_parser/video_parser.o \
		src/video_parser/vpar_headers.o \
		src/video_parser/vpar_blocks.o \
		src/video_parser/vpar_synchro.o \
		src/video_parser/video_fifo.o
Sam Hocevar's avatar
Sam Hocevar committed
242

Sam Hocevar's avatar
   
Sam Hocevar committed
243
VIDEO_DECODER =	src/video_decoder/video_decoder.o
Benoit Steiner's avatar
   
Benoit Steiner committed
244
245
246
247

MISC =		src/misc/mtime.o \
		src/misc/tests.o \
		src/misc/rsc_files.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
248
		src/misc/modules.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
249
		src/misc/netutils.o
Benoit Steiner's avatar
   
Benoit Steiner committed
250
251
252
253
254
255
256
257
258


C_OBJ =		$(INTERFACE) \
		$(INPUT) \
		$(VIDEO_OUTPUT) \
		$(AUDIO_OUTPUT) \
		$(AC3_DECODER) \
		$(LPCM_DECODER) \
		$(AUDIO_DECODER) \
259
		$(SPU_DECODER) \
Benoit Steiner's avatar
   
Benoit Steiner committed
260
261
262
263
264
		$(GEN_DECODER) \
		$(VIDEO_PARSER) \
		$(VIDEO_DECODER) \
		$(MISC)

Michel Kaempf's avatar
Michel Kaempf committed
265

Benoit Steiner's avatar
   
Benoit Steiner committed
266
267
268
#
# CPP Objects
# 
269
ifeq ($(SYS),beos)
Benoit Steiner's avatar
   
Benoit Steiner committed
270
CPP_OBJ =	src/misc/beos_specific.o
271
272
endif

Vincent Seguin's avatar
Vincent Seguin committed
273
274
275
#
# Assembler Objects
# 
276
277
ifneq (,$(findstring 86,$(ARCH)))
ifneq (,$(findstring mmx,$(ARCH)))
278
ASM_OBJ =		
Vincent Seguin's avatar
Vincent Seguin committed
279
endif
280
endif
Vincent Seguin's avatar
Vincent Seguin committed
281

282
283
284
#
# Plugins
#
Sam Hocevar's avatar
   
Sam Hocevar committed
285
286
PLUGIN_ALSA =	plugins/alsa/alsa.o \
		plugins/alsa/aout_alsa.o
Sam Hocevar's avatar
   
Sam Hocevar committed
287

Benoit Steiner's avatar
   
Benoit Steiner committed
288
PLUGIN_BEOS =	plugins/beos/beos.o \
289
		plugins/beos/aout_beos.o \
290
		plugins/beos/intf_beos.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
291
292
293
		plugins/beos/vout_beos.o \
		plugins/beos/DrawingTidbits.o \
		plugins/beos/TransportButton.o
294

Benoit Steiner's avatar
   
Benoit Steiner committed
295
PLUGIN_DSP =	plugins/dsp/dsp.o \
296
297
		plugins/dsp/aout_dsp.o

Benoit Steiner's avatar
   
Benoit Steiner committed
298
PLUGIN_DUMMY =	plugins/dummy/dummy.o \
299
		plugins/dummy/aout_dummy.o \
300
301
302
		plugins/dummy/intf_dummy.o \
		plugins/dummy/vout_dummy.o

Sam Hocevar's avatar
   
Sam Hocevar committed
303
304
PLUGIN_DVD =	plugins/dvd/dvd.o \
		plugins/dvd/input_dvd.o \
305
		plugins/dvd/dvd_netlist.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
306
		plugins/dvd/dvd_ioctl.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
307
		plugins/dvd/dvd_ifo.o \
308
		plugins/dvd/dvd_udf.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
309
		plugins/dvd/dvd_css.o
Sam Hocevar's avatar
   
Sam Hocevar committed
310

Benoit Steiner's avatar
   
Benoit Steiner committed
311
PLUGIN_ESD =	plugins/esd/esd.o \
312
		plugins/esd/aout_esd.o
313

Benoit Steiner's avatar
   
Benoit Steiner committed
314
PLUGIN_FB =	plugins/fb/fb.o \
315
316
		plugins/fb/vout_fb.o

Benoit Steiner's avatar
   
Benoit Steiner committed
317
PLUGIN_GGI =	plugins/ggi/ggi.o \
318
319
		plugins/ggi/vout_ggi.o

Benoit Steiner's avatar
   
Benoit Steiner committed
320
PLUGIN_GLIDE =	plugins/glide/glide.o \
321
322
		plugins/glide/vout_glide.o

Sam Hocevar's avatar
   
Sam Hocevar committed
323
324
325
326
327
328
PLUGIN_GTK =	plugins/gtk/gtk.o \
		plugins/gtk/intf_gtk.o \
		plugins/gtk/gtk_callbacks.o \
		plugins/gtk/gtk_interface.o \
		plugins/gtk/gtk_support.o

Benoit Steiner's avatar
   
Benoit Steiner committed
329
PLUGIN_GNOME =	plugins/gnome/gnome.o \
330
		plugins/gnome/intf_gnome.o \
Sam Hocevar's avatar
   
Sam Hocevar committed
331
332
333
		plugins/gnome/gnome_callbacks.o \
		plugins/gnome/gnome_interface.o \
		plugins/gnome/gnome_support.o
334

Sam Hocevar's avatar
   
Sam Hocevar committed
335
336
337
338
PLUGIN_KDE =	plugins/kde/kde.o \
		plugins/kde/intf_kde.o \
		plugins/kde/kvlc.o

Sam Hocevar's avatar
   
Sam Hocevar committed
339
340
PLUGIN_IDCT =	plugins/idct/idct.o \
		plugins/idct/idct_common.o
341

Sam Hocevar's avatar
   
Sam Hocevar committed
342
343
PLUGIN_IDCTCLASSIC =	plugins/idct/idctclassic.o \
			plugins/idct/idct_common.o
344

Sam Hocevar's avatar
   
Sam Hocevar committed
345
346
PLUGIN_IDCTMMX =	plugins/idct/idctmmx.o \
			plugins/idct/idct_common.o
347

Sam Hocevar's avatar
   
Sam Hocevar committed
348
349
350
351
352
PLUGIN_IDCTMMXEXT =	plugins/idct/idctmmxext.o \
			plugins/idct/idct_common.o

PLUGIN_MGA =	plugins/mga/mga.o \
		plugins/mga/vout_mga.o
353

Sam Hocevar's avatar
   
Sam Hocevar committed
354
355
356
357
358
359
360
361
362
363
364
365
PLUGIN_MOTION =	plugins/motion/motion.o \
		plugins/motion/vdec_motion_common.o \
		plugins/motion/vdec_motion_inner.o

PLUGIN_MOTIONMMX =	plugins/motion/motionmmx.o \
			plugins/motion/vdec_motion_common.o \
			plugins/motion/vdec_motion_inner_mmx.o

PLUGIN_MOTIONMMXEXT =	plugins/motion/motionmmxext.o \
			plugins/motion/vdec_motion_common.o \
			plugins/motion/vdec_motion_inner_mmxext.o

Sam Hocevar's avatar
   
Sam Hocevar committed
366
367
368
PLUGIN_NCURSES =	plugins/text/ncurses.o \
			plugins/text/intf_ncurses.o

Sam Hocevar's avatar
   
Sam Hocevar committed
369
PLUGIN_NULL =	plugins/null/null.o
Sam Hocevar's avatar
   
Sam Hocevar committed
370

Sam Hocevar's avatar
   
Sam Hocevar committed
371
372
PLUGIN_PS =	plugins/mpeg/ps.o \
		plugins/mpeg/input_ps.o
Sam Hocevar's avatar
   
Sam Hocevar committed
373

Sam Hocevar's avatar
   
Sam Hocevar committed
374
375
376
PLUGIN_SDL =	plugins/sdl/sdl.o \
		plugins/sdl/vout_sdl.o \
		plugins/sdl/aout_sdl.o 
Sam Hocevar's avatar
   
Sam Hocevar committed
377

Sam Hocevar's avatar
   
Sam Hocevar committed
378
379
PLUGIN_TS =	plugins/mpeg/ts.o \
		plugins/mpeg/input_ts.o
380

Sam Hocevar's avatar
   
Sam Hocevar committed
381
382
PLUGIN_X11=	plugins/x11/x11.o \
		plugins/x11/vout_x11.o
Benoit Steiner's avatar
   
Benoit Steiner committed
383

Sam Hocevar's avatar
   
Sam Hocevar committed
384
385
386
387
388
389
390
391
392
393
PLUGIN_YUV =	plugins/yuv/yuv.o \
		plugins/yuv/video_yuv.o \
		plugins/yuv/transforms_yuv.o

PLUGIN_YUVMMX =	plugins/yuv/yuvmmx.o \
		plugins/yuv/video_yuvmmx.o \
		plugins/yuv/transforms_yuvmmx.o

STD_PLUGIN_OBJ = \
		$(PLUGIN_ALSA) \
Benoit Steiner's avatar
   
Benoit Steiner committed
394
395
		$(PLUGIN_DSP) \
		$(PLUGIN_DUMMY) \
Sam Hocevar's avatar
   
Sam Hocevar committed
396
		$(PLUGIN_DVD) \
Benoit Steiner's avatar
   
Benoit Steiner committed
397
398
399
		$(PLUGIN_ESD) \
		$(PLUGIN_FB) \
		$(PLUGIN_GGI) \
Sam Hocevar's avatar
   
Sam Hocevar committed
400
		$(PLUGIN_IDCT) \
401
		$(PLUGIN_IDCTCLASSIC) \
Sam Hocevar's avatar
   
Sam Hocevar committed
402
		$(PLUGIN_IDCTMMX) \
403
		$(PLUGIN_IDCTMMXEXT) \
Sam Hocevar's avatar
   
Sam Hocevar committed
404
405
406
407
		$(PLUGIN_MGA) \
		$(PLUGIN_MOTION) \
		$(PLUGIN_MOTIONMMX) \
		$(PLUGIN_MOTIONMMXEXT) \
Sam Hocevar's avatar
   
Sam Hocevar committed
408
		$(PLUGIN_NCURSES) \
Sam Hocevar's avatar
   
Sam Hocevar committed
409
410
		$(PLUGIN_NULL) \
		$(PLUGIN_PS) \
Benoit Steiner's avatar
   
Benoit Steiner committed
411
		$(PLUGIN_SDL) \
Sam Hocevar's avatar
   
Sam Hocevar committed
412
413
414
415
416
		$(PLUGIN_TS) \
		$(PLUGIN_X11) \
		$(PLUGIN_YUV) \
		$(PLUGIN_YUVMMX)

Sam Hocevar's avatar
   
Sam Hocevar committed
417
# list duplicates
Sam Hocevar's avatar
   
Sam Hocevar committed
418
419
STD_PLUGIN_COMMON =	plugins/idct/idct_common.o \
			plugins/motion/vdec_motion_common.o
Sam Hocevar's avatar
   
Sam Hocevar committed
420

Sam Hocevar's avatar
   
Sam Hocevar committed
421
# filter out duplicates from the plugin object lists
Sam Hocevar's avatar
   
Sam Hocevar committed
422
STD_PLUGIN_OBJ :=	$(filter-out $(STD_PLUGIN_COMMON), \
Sam Hocevar's avatar
   
Sam Hocevar committed
423
				 $(STD_PLUGIN_OBJ)) $(STD_PLUGIN_COMMON)
Sam Hocevar's avatar
   
Sam Hocevar committed
424

Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
425
426
NONSTD_PLUGIN_OBJ = \
		$(PLUGIN_GLIDE) \
Sam Hocevar's avatar
   
Sam Hocevar committed
427
		$(PLUGIN_GTK) \
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
428
429
430
		$(PLUGIN_GNOME)

NONSTD_CPP_PLUGIN_OBJ = \
Sam Hocevar's avatar
   
Sam Hocevar committed
431
432
		$(PLUGIN_BEOS) \
		$(PLUGIN_KDE)
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
433

Michel Kaempf's avatar
Michel Kaempf committed
434
435
436
#
# Other lists of files
#
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
437
438
439
440
objects := $(C_OBJ) $(ASM_OBJ) $(STD_PLUGIN_OBJ) $(NONSTD_PLUGIN_OBJ)
cdependancies := $(objects:%.o=.dep/%.d)
cppobjects := $(CPP_OBJ) $(NONSTD_CPP_PLUGIN_OBJ)
cppdependancies := $(cppobjects:%.o=.dep/%.dpp)
Michel Kaempf's avatar
Michel Kaempf committed
441
442
443
444
445
446
447
448
449
450
451

# All symbols must be exported
export

################################################################################
# Targets
################################################################################

#
# Virtual targets
#
452
all: vlc @ALIASES@ plugins
Michel Kaempf's avatar
Michel Kaempf committed
453
454

clean:
455
	rm -f $(C_OBJ) $(CPP_OBJ) $(ASM_OBJ) $(STD_PLUGIN_OBJ)
Sam Hocevar's avatar
   
Sam Hocevar committed
456
	rm -f plugins/*/*.o src/*/*.o lib/*.so
Sam Hocevar's avatar
   
Sam Hocevar committed
457
	rm -f vlc kvlc gvlc
Michel Kaempf's avatar
Michel Kaempf committed
458
459

distclean: clean
460
	rm -f src/*/*.o plugins/*/*.o **/*~ *.log
461
462
	rm -f Makefile include/defs.h include/config.h
	rm -f config.status config.cache config.log
463
	rm -f gmon.out core build-stamp
464
	rm -rf .dep
465
466

install:
Sam Hocevar's avatar
   
Sam Hocevar committed
467
468
	mkdir -p $(DESTDIR)$(bindir)
	$(INSTALL) vlc $(DESTDIR)$(bindir)
Benoit Steiner's avatar
   
Benoit Steiner committed
469
# ugly
Sam Hocevar's avatar
   
Sam Hocevar committed
470
471
472
473
474
475
	for alias in "" @ALIASES@ ; do if test $$alias ; then rm -f $(DESTDIR)$(bindir)/$$alias && ln -s vlc $(DESTDIR)$(bindir)/$$alias ; fi ; done
	mkdir -p $(DESTDIR)$(libdir)/videolan/vlc
	$(INSTALL) -m 644 $(PLUGINS:%=lib/%.so) $(DESTDIR)$(libdir)/videolan/vlc
	mkdir -p $(DESTDIR)$(datadir)/videolan
	$(INSTALL) -m 644 share/*.psf $(DESTDIR)$(datadir)/videolan
	$(INSTALL) -m 644 share/*.png $(DESTDIR)$(datadir)/videolan
Sam Hocevar's avatar
   
Sam Hocevar committed
476
	$(INSTALL) -m 644 share/*.xpm $(DESTDIR)$(datadir)/videolan
Michel Kaempf's avatar
Michel Kaempf committed
477

Vincent Seguin's avatar
Vincent Seguin committed
478
show:
479
	@echo CC: $(CC)
480
	@echo CFLAGS: $(CFLAGS)
481
	@echo DCFLAGS: $(DCFLAGS)
482
	@echo LCFLAGS: $(LCFLAGS)
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
483
484
	@echo C_OBJ: $(C_OBJ)
	@echo CPP_OBJ: $(CPP_OBJ)
Sam Hocevar's avatar
   
Sam Hocevar committed
485
	@echo STD_PLUGIN_OBJ: $(STD_PLUGIN_OBJ)
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
486
487
488
489
	@echo NONSTD_PLUGIN_OBJ: $(NONSTD_PLUGIN_OBJ)
	@echo NONSTD_CPP_PLUGIN_OBJ: $(NONSTD_CPP_PLUGIN_OBJ)
	@echo objects: $(objects)
	@echo cppobjects: $(cppobjects)
Vincent Seguin's avatar
Vincent Seguin committed
490

Sam Hocevar's avatar
Sam Hocevar committed
491
492
# ugliest of all, but I have no time to do it -- sam
snapshot:
Sam Hocevar's avatar
   
Sam Hocevar committed
493
	rm -rf /tmp/vlc-@VLC_VERSION@* /tmp/vlc-@VLC_VERSION@nocss*
Sam Hocevar's avatar
   
Sam Hocevar committed
494
	# copy archive in /tmp
Sam Hocevar's avatar
   
Sam Hocevar committed
495
	find -type d | grep -v CVS | grep -v '^\.dep' | while read i ; \
Sam Hocevar's avatar
   
Sam Hocevar committed
496
497
		do mkdir -p /tmp/vlc-@VLC_VERSION@/$$i ; \
	done
Sam Hocevar's avatar
   
Sam Hocevar committed
498
	find debian -mindepth 1 -maxdepth 1 -type d | \
Sam Hocevar's avatar
   
Sam Hocevar committed
499
		while read i ; do rm -rf /tmp/vlc-@VLC_VERSION@/$$i ; done
Sam Hocevar's avatar
   
Sam Hocevar committed
500
501
502
503
	# .c .h .in .cpp
	find include src plugins -type f -name '*.[chi]*' | while read i ; \
		do cp $$i /tmp/vlc-@VLC_VERSION@/$$i ; \
	done
504
	# copy misc files
Sam Hocevar's avatar
   
Sam Hocevar committed
505
	cp vlc.spec AUTHORS COPYING ChangeLog INSTALL README TODO \
Sam Hocevar's avatar
   
Sam Hocevar committed
506
507
508
		Makefile.in Makefile.dep configure configure.in install-sh \
		config.sub config.guess todo.pl \
			/tmp/vlc-@VLC_VERSION@/
Sam Hocevar's avatar
   
Sam Hocevar committed
509
510
511
	for file in control control-css vlc-gtk.menu vlc.copyright vlc.docs \
		changelog changelog-css rules rules-css vlc.1 vlc.dirs \
		vlc.menu ; do \
512
			cp debian/$$file /tmp/vlc-@VLC_VERSION@/debian/ ; done
Sam Hocevar's avatar
   
Sam Hocevar committed
513
514
515
	for file in default8x16.psf default8x9.psf gvlc.png vlc.png \
		gvlc.xpm vlc.xpm ; do \
			cp share/$$file /tmp/vlc-@VLC_VERSION@/share/ ; done
516
517

	# build css-enabled archives
Sam Hocevar's avatar
   
Sam Hocevar committed
518
519
520
521
522
523
	(cd /tmp ; tar cf vlc-@VLC_VERSION@.tar vlc-@VLC_VERSION@ ; \
		bzip2 -f -9 < vlc-@VLC_VERSION@.tar \
			> vlc-@VLC_VERSION@.tar.bz2 ; \
		gzip -f -9 vlc-@VLC_VERSION@.tar )
	mv /tmp/vlc-@VLC_VERSION@.tar.gz /tmp/vlc-@VLC_VERSION@.tar.bz2 ..

Sam Hocevar's avatar
   
Sam Hocevar committed
524
	# clean up
Sam Hocevar's avatar
   
Sam Hocevar committed
525
	rm -rf /tmp/vlc-@VLC_VERSION@*
Sam Hocevar's avatar
Sam Hocevar committed
526

527
plugins: $(PLUGINS:%=lib/%.so)
Michel Kaempf's avatar
Michel Kaempf committed
528

Benoit Steiner's avatar
   
Benoit Steiner committed
529
FORCE:
530

Sam Hocevar's avatar
Sam Hocevar committed
531
#
Sam Hocevar's avatar
   
Sam Hocevar committed
532
# GTK/Gnome and Framebuffer aliases - don't add new aliases which could bloat
Sam Hocevar's avatar
Sam Hocevar committed
533
534
# the namespace
#
Sam Hocevar's avatar
   
Sam Hocevar committed
535
gvlc kvlc: vlc
536
537
	rm -f $@ && ln -s vlc $@

Michel Kaempf's avatar
Michel Kaempf committed
538
539
540
541

#
# Generic rules (see below)
#
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
542
543
544
545
$(cdependancies): %.d: FORCE
	@$(MAKE) -s --no-print-directory -f Makefile.dep $@

$(cppdependancies): %.dpp: FORCE
546
	@$(MAKE) -s --no-print-directory -f Makefile.dep $@
Michel Kaempf's avatar
Michel Kaempf committed
547

548
$(C_OBJ): %.o: Makefile.dep
549
$(C_OBJ): %.o: .dep/%.d
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
550
$(C_OBJ): %.o: %.c
551
	$(CC) $(CFLAGS) -c -o $@ $<
Vincent Seguin's avatar
Vincent Seguin committed
552

Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
553
554
$(CPP_OBJ): %.o: Makefile.dep
$(CPP_OBJ): %.o: .dep/%.dpp
555
$(CPP_OBJ): %.o: %.cpp
556
	$(CC) $(CFLAGS) -c -o $@ $<
557

558
$(ASM_OBJ): %.o: Makefile.dep
Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
559
$(ASM_OBJ): %.o: %.S
560
	$(CC) $(CFLAGS) -c -o $@ $<
Michel Kaempf's avatar
Michel Kaempf committed
561

Benoit Steiner's avatar
   
Benoit Steiner committed
562
563
564
565
566
$(STD_PLUGIN_OBJ): %.o: Makefile.dep
$(STD_PLUGIN_OBJ): %.o: .dep/%.d
$(STD_PLUGIN_OBJ): %.o: %.c
	$(CC) $(CFLAGS) $(PCFLAGS) -c -o $@ $<

Sam Hocevar's avatar
   
Sam Hocevar committed
567
568
569
$(PLUGIN_GTK): %.o: Makefile.dep
$(PLUGIN_GTK): %.o: .dep/%.d
$(PLUGIN_GTK): %.o: %.c
570
	$(CC) $(CFLAGS) $(PCFLAGS) `glib-config --cflags glib` `gtk-config --cflags gtk` -c -o $@ $<
Sam Hocevar's avatar
   
Sam Hocevar committed
571

Benoit Steiner's avatar
   
Benoit Steiner committed
572
$(PLUGIN_GNOME): %.o: Makefile.dep
Sam Hocevar's avatar
   
Sam Hocevar committed
573
$(PLUGIN_GNOME): %.o: .dep/%.d
Benoit Steiner's avatar
   
Benoit Steiner committed
574
$(PLUGIN_GNOME): %.o: %.c
575
	$(CC) $(CFLAGS) $(PCFLAGS) `glib-config --cflags glib` `gnome-config --cflags gnomeui` -c -o $@ $<
Benoit Steiner's avatar
   
Benoit Steiner committed
576
577

$(PLUGIN_GLIDE): %.o: Makefile.dep
Sam Hocevar's avatar
   
Sam Hocevar committed
578
$(PLUGIN_GLIDE): %.o: .dep/%.d
Benoit Steiner's avatar
   
Benoit Steiner committed
579
$(PLUGIN_GLIDE): %.o: %.c
580
	$(CC) $(CFLAGS) $(PCFLAGS) -I/usr/include/glide -c -o $@ $<
Benoit Steiner's avatar
   
Benoit Steiner committed
581

Sam Hocevar's avatar
   
Sam Hocevar committed
582
583
584
585
586
$(PLUGIN_KDE): %.o: Makefile.dep
$(PLUGIN_KDE): %.o: .dep/%.dpp
$(PLUGIN_KDE): %.o: %.cpp
	$(CC) $(CFLAGS) $(PCFLAGS) -I/usr/include/kde -I/usr/include/qt -fno-rtti -c -o $@ $<

Jean-Marc Dressler's avatar
   
Jean-Marc Dressler committed
587
588
589
590
591
$(PLUGIN_BEOS): %.o: Makefile.dep
$(PLUGIN_BEOS): %.o: .dep/%.dpp
$(PLUGIN_BEOS): %.o: %.cpp
	$(CC) $(CFLAGS) $(PCFLAGS) -c -o $@ $<

Benoit Steiner's avatar
   
Benoit Steiner committed
592
#
Sam Hocevar's avatar
   
Sam Hocevar committed
593
# Main application target
Benoit Steiner's avatar
   
Benoit Steiner committed
594
#
Sam Hocevar's avatar
   
Sam Hocevar committed
595

Benoit Steiner's avatar
   
Benoit Steiner committed
596
597
598
599
600
601
vlc: $(C_OBJ) $(CPP_OBJ) $(ASM_OBJ)
ifeq ($(SYS),beos)
	$(CC) $(CFLAGS) $(LCFLAGS) -Xlinker -soname=_APP_ -o $@ $(C_OBJ) $(CPP_OBJ) $(ASM_OBJ)
	rm -f ./plugins/_APP_
	ln -s ../vlc ./plugins/_APP_
else
Sam Hocevar's avatar
   
Sam Hocevar committed
602
	$(CC) $(CFLAGS) $(LCFLAGS) --export-dynamic @DYNAMIC_FLAG@ -o $@ $(C_OBJ) $(CPP_OBJ) $(ASM_OBJ)	
Benoit Steiner's avatar
   
Benoit Steiner committed
603
endif
604

Sam Hocevar's avatar
   
Sam Hocevar committed
605
606
607
608
#
# Plugin targets
#

609
lib/beos.so: $(PLUGIN_BEOS)
Richard Shepherd's avatar
Richard Shepherd committed
610
	$(CC) $(PCFLAGS) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_ -lbe -lgame -lroot -ltracker
611

612
lib/esd.so: $(PLUGIN_ESD)
613
ifneq (,$(findstring bsd,$(SYS)))
Sam Hocevar's avatar
   
Sam Hocevar committed
614
	$(CC) $(PCFLAGS) -shared -o $@ $^ -lesd
615
else
Sam Hocevar's avatar
   
Sam Hocevar committed
616
	$(CC) $(PCFLAGS) -shared -o $@ $^ -laudiofile -lesd
617
endif
618

619
lib/dsp.so: $(PLUGIN_DSP)
Sam Hocevar's avatar
   
Sam Hocevar committed
620
	$(CC) $(PCFLAGS) -shared -o $@ $^
621

Sam Hocevar's avatar
   
Sam Hocevar committed
622
623
624
lib/kde.so: $(PLUGIN_KDE)
	$(CC) $(PCFLAGS) -shared -o $@ $^ -lkdeui -lkdecore -lqt -ldl

Henri Fallon's avatar
   
Henri Fallon committed
625
lib/alsa.so: $(PLUGIN_ALSA)
Henri Fallon's avatar
   
Henri Fallon committed
626
	$(CC) $(PCFLAGS) -shared -o $@ $^ -lasound
Henri Fallon's avatar
   
Henri Fallon committed
627

628
lib/fb.so: $(PLUGIN_FB)
Sam Hocevar's avatar
   
Sam Hocevar committed
629
	$(CC) $(PCFLAGS) -shared -o $@ $^
630

631
lib/x11.so: $(PLUGIN_X11)
Sam Hocevar's avatar
   
Sam Hocevar committed
632
	$(CC) $(PCFLAGS) -shared -o $@ $^ -L/usr/X11R6/lib -lX11 -lXext
633

634
lib/mga.so: $(PLUGIN_MGA)
Sam Hocevar's avatar
   
Sam Hocevar committed
635
	$(CC) $(PCFLAGS) -shared -o $@ $^ -L/usr/X11R6/lib -lX11 -lXext
636

Sam Hocevar's avatar
   
Sam Hocevar committed
637
638
639
lib/gtk.so: $(PLUGIN_GTK)
	$(CC) $(PCFLAGS) -shared -o $@ $^ `gtk-config --libs gtk | sed 's,-rdynamic,,'`

640
lib/gnome.so: $(PLUGIN_GNOME)
Sam Hocevar's avatar
   
Sam Hocevar committed
641
	$(CC) $(PCFLAGS) -shared -o $@ $^ `gnome-config --libs gnomeui | sed 's,-rdynamic,,'`
642

643
lib/glide.so: $(PLUGIN_GLIDE)
Sam Hocevar's avatar
   
Sam Hocevar committed
644
	$(CC) $(PCFLAGS) -shared -o $@ $^ $(LIB_GLIDE)
645

646
lib/ggi.so: $(PLUGIN_GGI)
Sam Hocevar's avatar
   
Sam Hocevar committed
647
	$(CC) $(PCFLAGS) -shared -o $@ $^ $(LIB_GGI)
648

Pierre Baillet's avatar
Pierre Baillet committed
649
lib/sdl.so: $(PLUGIN_SDL)
Sam Hocevar's avatar
   
Sam Hocevar committed
650
	$(CC) $(PCFLAGS) -shared -o $@ $^ $(LIB_SDL)
Pierre Baillet's avatar
Pierre Baillet committed
651

Sam Hocevar's avatar
   
Sam Hocevar committed
652
lib/ncurses.so: $(PLUGIN_NCURSES)
Sam Hocevar's avatar
   
Sam Hocevar committed
653
	$(CC) $(PCFLAGS) -shared -o $@ $^ -lncurses
Sam Hocevar's avatar
   
Sam Hocevar committed
654

655
ifeq ($(SYS),beos)
656
657
658
lib/null.so: $(PLUGIN_NULL)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

Sam Hocevar's avatar
   
Sam Hocevar committed
659
660
661
662
663
664
665
666
667
lib/ps.so: $(PLUGIN_PS)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

lib/ts.so: $(PLUGIN_TS)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

lib/dvd.so: $(PLUGIN_DVD)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

668
669
670
lib/dummy.so: $(PLUGIN_DUMMY)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

Sam Hocevar's avatar
   
Sam Hocevar committed
671
lib/yuv.so: $(PLUGIN_YUV)
Sam Hocevar's avatar
   
Sam Hocevar committed
672
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_
673
674

lib/yuvmmx.so: $(PLUGIN_YUVMMX)
Sam Hocevar's avatar
   
Sam Hocevar committed
675
676
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

Sam Hocevar's avatar
   
Sam Hocevar committed
677
678
679
680
681
682
683
684
685
686
687
688
lib/motion.so: $(PLUGIN_MOTION)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

lib/motionmmx.so: $(PLUGIN_MOTIONMMX)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

lib/motionmmxext.so: $(PLUGIN_MOTIONMMXEXT)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

lib/idct.so: $(PLUGIN_IDCT)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

Sam Hocevar's avatar
   
Sam Hocevar committed
689
690
691
lib/idctclassic.so: $(PLUGIN_IDCTCLASSIC)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_

Sam Hocevar's avatar
   
Sam Hocevar committed
692
lib/idctmmx.so: $(PLUGIN_IDCTMMX)
Sam Hocevar's avatar
   
Sam Hocevar committed
693
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_
694
695
696

lib/idctmmxext.so: $(PLUGIN_IDCTMMXEXT)
	$(CC) -nostart -Xlinker -soname=$@ -o $@ $^ plugins/_APP_
697
else
698
699
700
lib/null.so: $(PLUGIN_NULL)
	$(CC) $(PCFLAGS) -shared -o $@ $^

Sam Hocevar's avatar
   
Sam Hocevar committed
701
702
703
704
705
706
707
708
709
lib/ps.so: $(PLUGIN_PS)
	$(CC) $(PCFLAGS) -shared -o $@ $^

lib/ts.so: $(PLUGIN_TS)
	$(CC) $(PCFLAGS) -shared -o $@ $^

lib/dvd.so: $(PLUGIN_DVD)
	$(CC) $(PCFLAGS) -shared -o $@ $^

710
711
712
lib/dummy.so: $(PLUGIN_DUMMY)
	$(CC) $(PCFLAGS) -shared -o $@ $^

Sam Hocevar's avatar
   
Sam Hocevar committed
713
714
715
716
717
718
lib/yuv.so: $(PLUGIN_YUV)
	$(CC) $(PCFLAGS) -shared -o $@ $^

lib/yuvmmx.so: $(PLUGIN_YUVMMX)
	$(CC) $(PCFLAGS) -shared -o $@ $^

Sam Hocevar's avatar
   
Sam Hocevar committed
719
720
721
722
723
724
725
726
727
lib/motion.so: $(PLUGIN_MOTION)
	$(CC) $(PCFLAGS) -shared -o $@ $^

lib/motionmmx.so: $(PLUGIN_MOTIONMMX)
	$(CC) $(PCFLAGS) -shared -o $@ $^

lib/motionmmxext.so: $(PLUGIN_MOTIONMMXEXT)
	$(CC) $(PCFLAGS) -shared -o $@ $^

Sam Hocevar's avatar
   
Sam Hocevar committed
728
729
730
731
732
733
lib/idct.so: $(PLUGIN_IDCT)
	$(CC) $(PCFLAGS) -shared -o $@ $^

lib/idctclassic.so: $(PLUGIN_IDCTCLASSIC)
	$(CC) $(PCFLAGS) -shared -o $@ $^

Sam Hocevar's avatar
   
Sam Hocevar committed
734
lib/idctmmx.so: $(PLUGIN_IDCTMMX)
Sam Hocevar's avatar
   
Sam Hocevar committed
735
	$(CC) $(PCFLAGS) -shared -o $@ $^
736
737
738

lib/idctmmxext.so: $(PLUGIN_IDCTMMXEXT)
	$(CC) $(PCFLAGS) -shared -o $@ $^
739
endif
740

Michel Kaempf's avatar
Michel Kaempf committed
741
742
743
744
745
################################################################################
# Note on generic rules and dependancies
################################################################################

# Note on dependancies: each .c file is associated with a .d file, which
746
747
# depends of it. The .o file associated with a .c file depends of the .d, of the
# .c itself, and of Makefile. The .d files are stored in a separate .dep/
Michel Kaempf's avatar
Michel Kaempf committed
748
749
750
# directory.
# The dep directory should be ignored by CVS.

751
# Note on inclusions: depending of the target, the dependancies files must
Michel Kaempf's avatar
Michel Kaempf committed
752
# or must not be included. The problem is that if we ask make to include a file,
753
754
# and this file does not exist, it is made before it can be included. In a
# general way, a .d file should be included if and only if the corresponding .o
Michel Kaempf's avatar
Michel Kaempf committed
755
756
757
758
759
# needs to be re-made.

# Two makefiles are used: the main one (this one) has regular generic rules,
# except for .o files, for which it calls the object Makefile. Dependancies
# are not included in this file.
Michel Kaempf's avatar
Michel Kaempf committed
760
761
# The object Makefile known how to make a .o from a .c, and includes
# dependancies for the target, but only those required.