Makefile.am 10.3 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

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/mediacontrol.h \
	../include/vlc/mediacontrol_structures.h \
	$(NULL)

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

HEADERS_include = \
	../include/iso_lang.h \
	../include/main.h \
	../include/mmx.h \
zorglub's avatar
zorglub committed
39
40
41
42
43
44
45
46
47
	../include/vlc_modules.h \
	../include/vlc_modules_macros.h \
	../include/vlc_os_specific.h \
	../include/vlc_mtime.h \
	../include/vlc_network.h \
	../include/vlc_codecs.h \
	../include/vlc_configuration.h \
	../include/vlc_charset.h \
	../include/vlc_sout.h \
48
	../include/vlc_streaming.h \
zorglub's avatar
zorglub committed
49
50
	../include/vlc_variables.h \
	../include/vlc_aout.h \
51
	../include/vlc_access.h \
52
	../include/vlc_arrays.h \
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
	../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_demux.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
68
	../include/vlc_devices.h \
69
70
71
	../include/vlc_image.h \
	../include/vlc_input.h \
	../include/vlc_interface.h \
72
	../include/vlc_intf_strings.h \
73
74
75
76
77
78
79
	../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_stream.h \
80
	../include/vlc_strings.h \
81
82
83
84
	../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
85
	../include/vlc_url.h \
zorglub's avatar
zorglub committed
86
	../include/vlc_vout.h \
87
88
89
	../include/vlc_vlm.h \
	../include/vlc_vod.h \
	../include/vlc_xml.h \
zorglub's avatar
zorglub committed
90
	../include/vlc_vout_synchro.h \
91
92
	$(NULL)

93
misc/modules_builtin.h: misc/modules_builtin.h.in
94
95
96
97
98
	$(TOOLBOX) --update-includes
	touch $@

misc/modules.c: misc/modules_builtin.h

99
100
101
102
103
104
105
106
107
###############################################################################
# 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.

108

109
if BUILD_SHARED
110
stamp-builtins: Makefile ../vlc-config ../config.status
111
	@for c in `$(VLC_CONFIG) --libs builtin`; do \
112
113
114
115
		case $$c in \
			../modules/*.a) echo $$c ;; \
		esac ; \
	done | \
116
	sed -e 's,^\(.*\)/\([^/]*\)\.a$$,cd \1 \&\& $(MAKE) \2,g' | \
117
	while read cmd; do echo $$cmd.a; eval "($$cmd.a)" || exit $$? ; done
118
	touch $@
119
endif
120

121
122
123
124
###############################################################################
# Building libvlc
###############################################################################

125
libvlc_a_SOURCES = $(SOURCES_libvlc) $(SOURCES_libvlc_control)
126
nodist_libvlc_a_SOURCES = misc/version.c
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
127
libvlc_a_CFLAGS = `$(VLC_CONFIG) --cflags vlc pic` -DUSE_BUILTINS
128
129
libvlc_a_CXXFLAGS = `$(VLC_CONFIG) --cxxflags vlc pic`
libvlc_a_OBJCFLAGS = `$(VLC_CONFIG) --objcflags vlc pic`
130

131
libvlc_la_SOURCES = $(SOURCES_libvlc)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
132
libvlc_la_LIBADD = $(INCLUDED_LIBINTL)
133
134
135
libvlc_la_CFLAGS = `$(VLC_CONFIG) --cflags vlc`
libvlc_la_CXXFLAGS = `$(VLC_CONFIG) --cxxflags vlc`
libvlc_la_OBJCFLAGS = `$(VLC_CONFIG) --objcflags vlc`
136
libvlc_la_LDFLAGS = `$(VLC_CONFIG) --libs vlc` \
137
	-no-undefined -export-symbols libvlc.sym -version-info 1:0:0
138
libvlc_la_DEPENDENCIES = libvlc.sym
139

140
libvlc_control_la_SOURCES = $(SOURCES_libvlc_control)
141
142
143
144
145
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
146

147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
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
167
if USE_LIBTOOL
168
lib_LTLIBRARIES = libvlc.la libvlc-control.la
169
else
170
lib_LIBRARIES = libvlc.a
171
172
endif

Sam Hocevar's avatar
Sam Hocevar committed
173
174
175
176
177
178
if HAVE_WIN32
pic =
else
pic = pic
endif

179
if HAVE_WIN32
180
if BUILD_SHARED
181
DATA_noinst_libvlc = libvlc$(LIBEXT) libvlc$(LIBEXT).a
182
183
endif

184
libvlc.dll.a: libvlc$(LIBEXT)
185
	$(DLLTOOL) --export-all-symbols -l $@ -D $< $(libvlc_a_OBJECTS)
186

187
libvlc$(LIBEXT): $(OBJECTS_libvlc_so) stamp-builtins
188
	@ldfl="`$(VLC_CONFIG) --libs plugin vlc builtin pic` $(INCLUDED_LIBINTL)" ; \
189
	case `$(VLC_CONFIG) --linkage vlc builtin` in \
190
191
192
193
	  c++)  ld="$(CXXLINK)" ;; \
	  objc) ld="$(OBJCLINK)" ;; \
	  c|*)  ld="$(LINK)" ;; \
	esac ; \
194
	echo $$ld $(OBJECTS_libvlc_so) $(LDFLAGS_libvlc_so) $$ldfl; \
195
	$$ld $(libvlc_a_OBJECTS) \
196
		$$ldfl
197
198
199
200
# 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
201
# Cygwin libtool work-around
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
202
	@if test -f "$@.exe"; then mv -f "$@.exe" "$@"; fi
203
endif
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236

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
237
	libvlc-common.c \
238
	libvlc.h \
zorglub's avatar
zorglub committed
239
	interface/interface.h \
240
241
242
	interface/interface.c \
	interface/intf_eject.c \
	interface/interaction.c \
243
	playlist/playlist_internal.h \
244
245
246
	playlist/thread.c \
	playlist/control.c \
	playlist/engine.c \
247
248
	playlist/sort.c \
	playlist/loadsave.c \
249
	playlist/tree.c \
250
	playlist/item.c \
251
	playlist/search.c \
252
	playlist/services_discovery.c \
253
	input/item.c \
254
255
256
257
258
259
260
	input/access.c \
	input/clock.c \
	input/control.c \
	input/decoder.c \
	input/demux.c \
	input/es_out.c \
	input/input.c \
261
	input/meta.c \
262
263
264
265
266
267
268
269
270
271
272
273
274
	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 \
zorglub's avatar
zorglub committed
275
	audio_output/aout_internal.h \
276
277
278
	audio_output/common.c \
	audio_output/dec.c \
	audio_output/filters.c \
279
	audio_output/input.c \
280
281
282
283
	audio_output/mixer.c \
	audio_output/output.c \
	audio_output/intf.c \
	stream_output/stream_output.c \
zorglub's avatar
zorglub committed
284
	stream_output/stream_output.h \
285
	stream_output/announce.c \
286
	stream_output/profiles.c \
287
288
289
290
291
292
293
294
	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 \
295
	network/error.c \
296
297
298
299
300
	network/tcp.c \
	network/udp.c \
	network/httpd.c \
	network/rootwrap.c \
	network/tls.c \
301
302
303
304
305
	text/charset.c \
	text/strings.c \
	text/unicode.c \
	text/iso_lang.c \
	text/iso-639_def.h \
306
307
308
	misc/md5.c \
	misc/mtime.c \
	misc/block.c \
zorglub's avatar
zorglub committed
309
	misc/modules.h \
310
311
312
313
	misc/modules.c \
	misc/threads.c \
	misc/stats.c \
	misc/cpu.c \
zorglub's avatar
zorglub committed
314
	misc/configuration.h \
315
	misc/configuration.c \
316
	misc/configuration_chain.c \
317
318
319
	misc/image.c \
	misc/messages.c \
	misc/objects.c \
zorglub's avatar
zorglub committed
320
	misc/variables.h \
321
322
323
324
325
	misc/variables.c \
	misc/error.c \
	misc/update.c \
	misc/vlm.c \
	misc/xml.c \
zorglub's avatar
zorglub committed
326
	misc/dict.c \
327
	misc/devices.c \
328
329
330
331
332
333
334
335
336
337
338
339
	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)

340
SOURCES_libvlc_control = \
zorglub's avatar
zorglub committed
341
	control/libvlc_internal.h \
342
343
344
345
346
347
348
	control/core.c \
	control/log.c \
	control/playlist.c \
	control/vlm.c \
	control/input.c \
	control/video.c \
	control/audio.c \
zorglub's avatar
zorglub committed
349
	control/mediacontrol_internal.h \
350
351
352
353
	control/mediacontrol_core.c \
	control/mediacontrol_util.c \
	control/mediacontrol_audio_video.c

354
if !USE_LIBTOOL
355
if !BUILD_SHARED
356
CLEANFILES += misc/version.c
357
358
endif

359
# Install shared libvlc
360
361
362
363
364
365
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)"
366
endif
367

368
369
370
misc/version.c: FORCE
	$(TOOLBOX) --update-version

371
372
373
374
375
376
377
378
###############################################################################
# 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

379
380
381
382
383
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
384

385
386
387
388
###############################################################################
# Unit/regression test
###############################################################################
if USE_LIBTOOL
389
check_PROGRAMS = test_i18n_atof test_url
390
391
392
393
394
395
396
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)
397
398
399
400

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

403
FORCE: