Makefile.am 10.6 KB
Newer Older
1
2
3
4
###############################################################################
# Automake targets and declarations
###############################################################################

5
6
AUTOMAKE_OPTIONS = subdir-objects

7
8
9
10
11
NULL =
SUBDIRS =

EXTRA_DIST = extras/COPYING misc/modules_builtin.h.in

12
BUILT_SOURCES = $(DISTCLEANFILES) $(CLEANFILES)
13
DISTCLEANFILES = stamp-api libvlc.sym
14
CLEANFILES = misc/modules_builtin.h
15
MOSTLYCLEANFILES = $(DATA_noinst_libvlc) stamp-builtins
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

TOOLBOX = srcdir=$(top_srcdir) builddir=$(top_builddir) $(top_srcdir)/toolbox

###############################################################################
# Headers
###############################################################################

pkgincludedir = $(includedir)/vlc

dist_pkginclude_HEADERS = \
	../include/vlc/vlc.h \
	../include/vlc/libvlc.h \
	../include/vlc/aout.h \
	../include/vlc/vout.h \
	../include/vlc/sout.h \
	../include/vlc/decoder.h \
	../include/vlc/input.h \
	../include/vlc/intf.h \
	../include/vlc/mediacontrol.h \
	../include/vlc/mediacontrol_structures.h \
	$(NULL)

noinst_HEADERS = $(HEADERS_include)
noinst_DATA = $(DATA_noinst_libvlc)

HEADERS_include = \
	../include/aout_internal.h \
	../include/audio_output.h \
	../include/beos_specific.h \
	../include/charset.h \
	../include/codecs.h \
	../include/configuration.h \
	../include/darwin_specific.h \
	../include/intf_eject.h \
	../include/iso_lang.h \
	../include/main.h \
	../include/mmx.h \
	../include/modules.h \
	../include/modules_inner.h \
	../include/mtime.h \
	../include/network.h \
	../include/os_specific.h \
	../include/snapshot.h \
	../include/stream_output.h \
60
	../include/vlc_streaming.h \
61
62
63
	../include/variables.h \
	../include/video_output.h \
	../include/vlc_access.h \
64
	../include/vlc_arrays.h \
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
	../include/vlc_acl.h \
	../include/vlc_bits.h \
	../include/vlc_block.h \
	../include/vlc_block_helper.h \
	../include/vlc_codec.h \
	../include/vlc_common.h \
	../include/vlc_config.h \
	../include/vlc_cpu.h \
	../include/vlc_demux.h \
	../include/vlc_error.h \
	../include/vlc_es.h \
	../include/vlc_es_out.h \
	../include/vlc_filter.h \
	../include/vlc_config_cat.h \
	../include/vlc_httpd.h \
	../include/vlc_tls.h \
	../include/vlc_md5.h \
zorglub's avatar
zorglub committed
82
	../include/vlc_devices.h \
83
84
85
86
	../include/vlc_image.h \
	../include/vlc_input.h \
	../include/vlc_interaction.h \
	../include/vlc_interface.h \
87
	../include/vlc_intf_strings.h \
88
89
90
91
92
93
94
95
	../include/vlc_keys.h \
	../include/vlc_messages.h \
	../include/vlc_meta.h \
	../include/vlc_objects.h \
	../include/vlc_osd.h \
	../include/vlc_playlist.h \
	../include/vlc_spu.h \
	../include/vlc_stream.h \
96
	../include/vlc_strings.h \
97
98
99
100
	../include/vlc_symbols.h \
	../include/vlc_threads_funcs.h \
	../include/vlc_threads.h \
	../include/vlc_update.h \
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
101
	../include/vlc_url.h \
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
	../include/vlc_video.h \
	../include/vlc_vlm.h \
	../include/vlc_vod.h \
	../include/vlc_xml.h \
	../include/vout_synchro.h \
	../include/win32_specific.h \
	../include/libvlc_internal.h \
	../include/mediacontrol_internal.h
	$(NULL)

misc/modules_builtin.h: Makefile misc/modules_builtin.h.in ../vlc-config
	$(TOOLBOX) --update-includes
	touch $@

misc/modules.c: misc/modules_builtin.h

118
119
120
121
122
123
124
125
126
###############################################################################
# Building builtin modules
###############################################################################
#
# As long as we use builtins with a shared libvlc, we must build them before
# we build libvlc. Maybe one day, libvlc will handle multiple modules per
# shared object, which will make builtins fairly redumdant. Until then, we
# need this workaround.

127

128
if BUILD_SHARED
129
stamp-builtins: Makefile ../vlc-config ../config.status
130
	@for c in `$(VLC_CONFIG) --libs builtin`; do \
131
132
133
134
		case $$c in \
			../modules/*.a) echo $$c ;; \
		esac ; \
	done | \
135
	sed -e 's,^\(.*\)/\([^/]*\)\.a$$,cd \1 \&\& $(MAKE) \2,g' | \
136
	while read cmd; do echo $$cmd.a; eval "($$cmd.a)" || exit $$? ; done
137
	touch $@
138
endif
139

140
141
142
143
###############################################################################
# Building libvlc
###############################################################################

144
libvlc_a_SOURCES = $(SOURCES_libvlc) $(SOURCES_libvlc_control)
145
nodist_libvlc_a_SOURCES = misc/version.c
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
146
libvlc_a_CFLAGS = `$(VLC_CONFIG) --cflags vlc pic` -DUSE_BUILTINS
147
148
libvlc_a_CXXFLAGS = `$(VLC_CONFIG) --cxxflags vlc pic`
libvlc_a_OBJCFLAGS = `$(VLC_CONFIG) --objcflags vlc pic`
149

150
libvlc_la_SOURCES = $(SOURCES_libvlc)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
151
libvlc_la_LIBADD = $(INCLUDED_LIBINTL)
152
153
154
libvlc_la_CFLAGS = `$(VLC_CONFIG) --cflags vlc`
libvlc_la_CXXFLAGS = `$(VLC_CONFIG) --cxxflags vlc`
libvlc_la_OBJCFLAGS = `$(VLC_CONFIG) --objcflags vlc`
155
156
libvlc_la_LDFLAGS = `$(VLC_CONFIG) --libs vlc` \
	-no-undefined -export-symbols libvlc.sym -version-info 0:0:0
157
libvlc_la_DEPENDENCIES = libvlc.sym
158

159
libvlc_control_la_SOURCES = $(SOURCES_libvlc_control)
160
161
162
163
164
libvlc_control_la_LIBADD = libvlc.la
libvlc_control_la_CFLAGS = `$(VLC_CONFIG) --cflags vlc`
libvlc_control_la_LDFLAGS = \
	-no-undefined -export-symbols-regex '_?(libvlc|mediacontrol)_.*' \
	-version-info 0:0:0
165

166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
if HAVE_BEOS
OPT_SOURCES_libvlc_beos = $(SOURCES_libvlc_beos)
endif
if HAVE_DARWIN
OPT_SOURCES_libvlc_darwin = $(SOURCES_libvlc_darwin)
endif
if HAVE_WIN32
OPT_SOURCES_libvlc_win32 = $(SOURCES_libvlc_win32)
endif
if HAVE_WINCE
OPT_SOURCES_libvlc_win32 = $(SOURCES_libvlc_win32)
endif
if BUILD_DIRENT
OPT_SOURCES_libvlc_dirent = $(SOURCES_libvlc_dirent)
endif
if BUILD_GETOPT
OPT_SOURCES_libvlc_getopt = $(SOURCES_libvlc_getopt)
endif

# Build libvlc as a shared library
186
if USE_LIBTOOL
187
lib_LTLIBRARIES = libvlc.la libvlc-control.la
188
else
189
lib_LIBRARIES = libvlc.a
190
191
endif

Sam Hocevar's avatar
Sam Hocevar committed
192
193
194
195
196
197
if HAVE_WIN32
pic =
else
pic = pic
endif

198
if HAVE_WIN32
199
if BUILD_SHARED
200
DATA_noinst_libvlc = libvlc$(LIBEXT) libvlc$(LIBEXT).a
201
202
endif

203
libvlc.dll.a: libvlc$(LIBEXT)
204
	$(DLLTOOL) --export-all-symbols -l $@ -D $< $(libvlc_a_OBJECTS)
205

206
libvlc$(LIBEXT): $(OBJECTS_libvlc_so) stamp-builtins
207
	@ldfl="`$(VLC_CONFIG) --libs plugin vlc builtin pic` $(INCLUDED_LIBINTL)" ; \
208
	case `$(VLC_CONFIG) --linkage vlc builtin` in \
209
210
211
212
	  c++)  ld="$(CXXLINK)" ;; \
	  objc) ld="$(OBJCLINK)" ;; \
	  c|*)  ld="$(LINK)" ;; \
	esac ; \
213
	echo $$ld $(OBJECTS_libvlc_so) $(LDFLAGS_libvlc_so) $$ldfl; \
214
	$$ld $(libvlc_a_OBJECTS) \
215
		$$ldfl
216
217
218
219
# It sucks big time, but we have to do that to link vlc properly
# on non-PIC OSes, otherwise ld will favor builtins-less libvlc.a over
# libvlc$(LIBEXT)
	rm -f libvlc.a
220
# Cygwin libtool work-around
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
221
	@if test -f "$@.exe"; then mv -f "$@.exe" "$@"; fi
222
endif
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255

EXTRA_DIST += \
	$(SOURCES_libvlc_beos) \
	$(SOURCES_libvlc_darwin) \
	$(SOURCES_libvlc_win32) \
	$(SOURCES_libvlc_dirent) \
	$(SOURCES_libvlc_getopt) \
	$(NULL)

SOURCES_libvlc_beos = \
	misc/beos_specific.cpp \
	$(NULL)

SOURCES_libvlc_darwin = \
	misc/darwin_specific.m \
	$(NULL)

SOURCES_libvlc_win32 = \
	misc/win32_specific.c \
	$(NULL)

SOURCES_libvlc_dirent = \
	extras/dirent.c \
	$(NULL)

SOURCES_libvlc_getopt = \
	extras/getopt.c \
	extras/getopt.h \
	extras/getopt1.c \
	$(NULL)

SOURCES_libvlc_common = \
	libvlc.c \
zorglub's avatar
zorglub committed
256
	libvlc-common.c \
257
258
259
260
	libvlc.h \
	interface/interface.c \
	interface/intf_eject.c \
	interface/interaction.c \
261
	playlist/playlist_internal.h \
262
263
264
	playlist/thread.c \
	playlist/control.c \
	playlist/engine.c \
265
266
	playlist/sort.c \
	playlist/loadsave.c \
267
	playlist/tree.c \
268
	playlist/item.c \
269
	playlist/search.c \
270
	playlist/services_discovery.c \
271
	input/item.c \
272
273
274
275
276
277
278
	input/access.c \
	input/clock.c \
	input/control.c \
	input/decoder.c \
	input/demux.c \
	input/es_out.c \
	input/input.c \
279
	input/meta.c \
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
	input/input_internal.h \
	input/stream.c \
	input/mem_stream.c \
	input/subtitles.c \
	input/var.c \
	video_output/video_output.c \
	video_output/vout_pictures.c \
	video_output/vout_pictures.h \
	video_output/video_text.c \
	video_output/video_widgets.c \
	video_output/vout_subpictures.c \
	video_output/vout_synchro.c \
	video_output/vout_intf.c \
	audio_output/common.c \
	audio_output/dec.c \
	audio_output/filters.c \
296
	audio_output/input.c \
297
298
299
300
301
	audio_output/mixer.c \
	audio_output/output.c \
	audio_output/intf.c \
	stream_output/stream_output.c \
	stream_output/announce.c \
302
	stream_output/profiles.c \
303
304
305
306
307
308
309
310
	stream_output/sap.c \
	osd/osd.c \
	osd/osd_parser.c \
	osd/osd_text.c \
	osd/osd_widgets.c \
	network/acl.c \
	network/getaddrinfo.c \
	network/io.c \
311
	network/error.c \
312
313
314
315
316
317
318
319
320
321
322
323
	network/tcp.c \
	network/udp.c \
	network/httpd.c \
	network/rootwrap.c \
	network/tls.c \
	misc/charset.c \
	misc/md5.c \
	misc/mtime.c \
	misc/block.c \
	misc/modules.c \
	misc/threads.c \
	misc/stats.c \
324
	misc/strings.c \
325
326
327
	misc/unicode.c \
	misc/cpu.c \
	misc/configuration.c \
328
	misc/configuration_chain.c \
329
330
331
332
333
334
335
336
337
338
	misc/image.c \
	misc/iso_lang.c \
	misc/iso-639_def.h \
	misc/messages.c \
	misc/objects.c \
	misc/variables.c \
	misc/error.c \
	misc/update.c \
	misc/vlm.c \
	misc/xml.c \
zorglub's avatar
zorglub committed
339
	misc/dict.c \
340
	misc/devices.c \
341
342
343
344
345
346
347
348
349
350
351
352
	extras/libc.c \
	$(NULL)

SOURCES_libvlc = \
	$(SOURCES_libvlc_common) \
	$(OPT_SOURCES_libvlc_beos) \
	$(OPT_SOURCES_libvlc_darwin) \
	$(OPT_SOURCES_libvlc_win32) \
	$(OPT_SOURCES_libvlc_dirent) \
	$(OPT_SOURCES_libvlc_getopt) \
	$(NULL)

353
354
355
356
357
358
359
360
361
362
363
364
SOURCES_libvlc_control = \
	control/core.c \
	control/log.c \
	control/playlist.c \
	control/vlm.c \
	control/input.c \
	control/video.c \
	control/audio.c \
	control/mediacontrol_core.c \
	control/mediacontrol_util.c \
	control/mediacontrol_audio_video.c

365
if !USE_LIBTOOL
366
if !BUILD_SHARED
367
CLEANFILES += misc/version.c
368
369
endif

370
# Install shared libvlc
371
372
373
374
375
376
install-exec-local:
	test -z "$(DATA_noinst_libvlc)" || $(INSTALL_PROGRAM) "$(DATA_noinst_libvlc)" "$(DESTDIR)$(libdir)"

# the opposite of install-{data,exec}-local
uninstall-local:
	test -z "$(DATA_noinst_libvlc)" || rm -f "$(DESTDIR)$(libdir)/$(DATA_noinst_libvlc)"
377
endif
378

379
380
381
misc/version.c: FORCE
	$(TOOLBOX) --update-version

382
383
384
385
386
387
388
389
###############################################################################
# Stamp rules
###############################################################################
stamp-api: Makefile.in $(HEADERS_include) ../vlc-api.pl
	( cd $(srcdir) && cat $(HEADERS_include) ) | \
	  top_srcdir="$(top_srcdir)" perl $(top_srcdir)/vlc-api.pl
	touch stamp-api

390
391
392
393
394
libvlc.sym: $(HEADERS_include)
	rm -f libvlc.sym
	(cd $(srcdir) && cat $(HEADERS_include) ) | \
	sed -ne 's/^.*VLC_EXPORT\s*(\s*\w.*\S\s*,\s*\(\w*\)\s*,\s*(\s*\w.*\S\s*)\s*)[^)]*$$/\1/p' \
		> libvlc.sym
395

396
397
398
399
###############################################################################
# Unit/regression test
###############################################################################
if USE_LIBTOOL
400
check_PROGRAMS = test_i18n_atof test_url
401
402
403
404
405
406
407
TESTS = $(check_PROGRAMS)

CFLAGS_tests = `$(VLC_CONFIG) --cflags vlc`

test_i18n_atof_SOURCES = test/i18n_atof.c
test_i18n_atof_LDADD = libvlc.la
test_i18n_atof_CFLAGS = $(CFLAGS_tests)
408
409
410
411

test_url_SOURCES = test/url.c
test_url_LDADD = libvlc.la
test_url_CFLAGS = $(CFLAGS_tests)
412
413
endif

414
FORCE: