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 \
Clément Stenac's avatar
Clément Stenac 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 \
Clément Stenac's avatar
Clément Stenac 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 \
Clément Stenac's avatar
Clément Stenac 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: