Makefile.am 9.36 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 = $(CLEANFILES)
13
CLEANFILES = misc/modules_builtin.h
14
MOSTLYCLEANFILES = $(DATA_noinst_libvlc)
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37

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 \
Clément Stenac's avatar
Clément Stenac committed
38 39 40 41 42 43 44 45 46
	../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 \
47
	../include/vlc_streaming.h \
Clément Stenac's avatar
Clément Stenac committed
48 49
	../include/vlc_variables.h \
	../include/vlc_aout.h \
50
	../include/vlc_access.h \
51
	../include/vlc_arrays.h \
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
	../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 \
Clément Stenac's avatar
Clément Stenac committed
67
	../include/vlc_devices.h \
68 69 70
	../include/vlc_image.h \
	../include/vlc_input.h \
	../include/vlc_interface.h \
71
	../include/vlc_intf_strings.h \
72 73 74 75 76 77 78
	../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 \
79
	../include/vlc_strings.h \
80 81 82 83
	../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
84
	../include/vlc_url.h \
Clément Stenac's avatar
Clément Stenac committed
85
	../include/vlc_vout.h \
86 87 88
	../include/vlc_vlm.h \
	../include/vlc_vod.h \
	../include/vlc_xml.h \
Clément Stenac's avatar
Clément Stenac committed
89
	../include/vlc_vout_synchro.h \
90 91
	$(NULL)

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

misc/modules.c: misc/modules_builtin.h

###############################################################################
# Building libvlc
###############################################################################

102
libvlc_a_SOURCES = $(SOURCES_libvlc) $(SOURCES_libvlc_control)
103
nodist_libvlc_a_SOURCES = misc/version.c
Clément Stenac's avatar
Clément Stenac committed
104 105 106
libvlc_a_CFLAGS = `$(VLC_CONFIG) --cflags libvlc pic` -DUSE_BUILTINS
libvlc_a_CXXFLAGS = `$(VLC_CONFIG) --cxxflags libvlc pic`
libvlc_a_OBJCFLAGS = `$(VLC_CONFIG) --objcflags libvlc pic`
107

108
libvlc_la_SOURCES = $(SOURCES_libvlc)
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
109
libvlc_la_LIBADD = $(INCLUDED_LIBINTL)
Clément Stenac's avatar
Clément Stenac committed
110 111 112 113
libvlc_la_CFLAGS = `$(VLC_CONFIG) --cflags libvlc`
libvlc_la_CXXFLAGS = `$(VLC_CONFIG) --cxxflags libvlc`
libvlc_la_OBJCFLAGS = `$(VLC_CONFIG) --objcflags libvlc`
libvlc_la_LDFLAGS = `$(VLC_CONFIG) --libs libvlc` \
114
	-no-undefined -export-symbols $(srcdir)/libvlc.sym -version-info 1:0:0
115
libvlc_la_DEPENDENCIES = libvlc.sym
116

117
libvlc_control_la_SOURCES = $(SOURCES_libvlc_control)
118
libvlc_control_la_LIBADD = libvlc.la
Clément Stenac's avatar
Clément Stenac committed
119
libvlc_control_la_CFLAGS = `$(VLC_CONFIG) --cflags libvlc`
120 121 122
libvlc_control_la_LDFLAGS = \
	-no-undefined -export-symbols-regex '_?(libvlc|mediacontrol)_.*' \
	-version-info 0:0:0
123

124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
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
144
if USE_LIBTOOL
145
lib_LTLIBRARIES = libvlc.la libvlc-control.la
146
else
147
lib_LIBRARIES = libvlc.a
148 149
endif

Sam Hocevar's avatar
Sam Hocevar committed
150 151 152 153 154 155
if HAVE_WIN32
pic =
else
pic = pic
endif

156
if HAVE_WIN32
157
if BUILD_SHARED
158
DATA_noinst_libvlc = libvlc$(LIBEXT) libvlc$(LIBEXT).a
159 160
endif

161
libvlc.dll.a: libvlc$(LIBEXT)
162
	$(DLLTOOL) --export-all-symbols -l $@ -D $< $(libvlc_a_OBJECTS)
163

164 165 166
libvlc$(LIBEXT): $(OBJECTS_libvlc_so)
	@ldfl="`$(VLC_CONFIG) --libs plugin vlc pic` $(INCLUDED_LIBINTL)" ; \
	case `$(VLC_CONFIG) --linkage vlc` in \
167 168 169 170
	  c++)  ld="$(CXXLINK)" ;; \
	  objc) ld="$(OBJCLINK)" ;; \
	  c|*)  ld="$(LINK)" ;; \
	esac ; \
171
	echo $$ld $(OBJECTS_libvlc_so) $(LDFLAGS_libvlc_so) $$ldfl; \
172
	$$ld $(libvlc_a_OBJECTS) \
173
		$$ldfl
174 175 176 177
# 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
178
# Cygwin libtool work-around
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
179
	@if test -f "$@.exe"; then mv -f "$@.exe" "$@"; fi
180
endif
181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213

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
214
	libvlc-common.c \
215
	libvlc.h \
216
	libvlc-module.c \
Clément Stenac's avatar
Clément Stenac committed
217
	interface/interface.h \
218 219 220
	interface/interface.c \
	interface/intf_eject.c \
	interface/interaction.c \
221
	playlist/playlist_internal.h \
222 223 224
	playlist/thread.c \
	playlist/control.c \
	playlist/engine.c \
225 226
	playlist/sort.c \
	playlist/loadsave.c \
227
	playlist/tree.c \
228
	playlist/item.c \
229
	playlist/search.c \
230
	playlist/services_discovery.c \
231
	input/item.c \
232 233 234 235 236 237 238
	input/access.c \
	input/clock.c \
	input/control.c \
	input/decoder.c \
	input/demux.c \
	input/es_out.c \
	input/input.c \
239
	input/meta.c \
240 241 242 243 244 245 246 247 248 249 250 251 252
	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 \
Clément Stenac's avatar
Clément Stenac committed
253
	audio_output/aout_internal.h \
254 255 256
	audio_output/common.c \
	audio_output/dec.c \
	audio_output/filters.c \
257
	audio_output/input.c \
258 259 260 261
	audio_output/mixer.c \
	audio_output/output.c \
	audio_output/intf.c \
	stream_output/stream_output.c \
Clément Stenac's avatar
Clément Stenac committed
262
	stream_output/stream_output.h \
263
	stream_output/announce.c \
264
	stream_output/profiles.c \
265 266 267 268 269 270 271 272
	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 \
273
	network/error.c \
274 275 276 277 278
	network/tcp.c \
	network/udp.c \
	network/httpd.c \
	network/rootwrap.c \
	network/tls.c \
279 280 281 282 283
	text/charset.c \
	text/strings.c \
	text/unicode.c \
	text/iso_lang.c \
	text/iso-639_def.h \
284 285 286
	misc/md5.c \
	misc/mtime.c \
	misc/block.c \
Clément Stenac's avatar
Clément Stenac committed
287
	misc/modules.h \
288 289 290 291
	misc/modules.c \
	misc/threads.c \
	misc/stats.c \
	misc/cpu.c \
Clément Stenac's avatar
Clément Stenac committed
292
	misc/configuration.h \
293
	misc/configuration.c \
294
	misc/configuration_chain.c \
295 296 297
	misc/image.c \
	misc/messages.c \
	misc/objects.c \
Clément Stenac's avatar
Clément Stenac committed
298
	misc/variables.h \
299 300 301
	misc/variables.c \
	misc/error.c \
	misc/update.c \
Rémi Denis-Courmont's avatar
Rémi Denis-Courmont committed
302
	input/vlm.c \
303
	misc/xml.c \
Clément Stenac's avatar
Clément Stenac committed
304
	misc/dict.c \
305
	misc/devices.c \
306 307 308 309 310 311 312 313 314 315 316 317
	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)

318
SOURCES_libvlc_control = \
Clément Stenac's avatar
Clément Stenac committed
319
	control/libvlc_internal.h \
320 321 322 323 324 325 326
	control/core.c \
	control/log.c \
	control/playlist.c \
	control/vlm.c \
	control/input.c \
	control/video.c \
	control/audio.c \
Clément Stenac's avatar
Clément Stenac committed
327
	control/mediacontrol_internal.h \
328 329 330 331
	control/mediacontrol_core.c \
	control/mediacontrol_util.c \
	control/mediacontrol_audio_video.c

332
if !USE_LIBTOOL
333
if !BUILD_SHARED
334
CLEANFILES += misc/version.c
335 336
endif

337
# Install shared libvlc
338 339 340 341 342 343
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)"
344
endif
345

346 347 348
misc/version.c: FORCE
	$(TOOLBOX) --update-version

349 350 351
###############################################################################
# Stamp rules
###############################################################################
352 353 354

if !USE_LIBTOOL
if !BUILD_SHARED
355 356 357 358 359
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

360 361 362 363
CLEANFILES += stamp-api
endif
endif

364 365 366 367
###############################################################################
# Unit/regression test
###############################################################################
if USE_LIBTOOL
368
check_PROGRAMS = test_i18n_atof test_url
369 370
TESTS = $(check_PROGRAMS)

Clément Stenac's avatar
Clément Stenac committed
371
CFLAGS_tests = `$(VLC_CONFIG) --cflags libvlc`
372 373 374 375

test_i18n_atof_SOURCES = test/i18n_atof.c
test_i18n_atof_LDADD = libvlc.la
test_i18n_atof_CFLAGS = $(CFLAGS_tests)
376 377 378 379

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

382
FORCE: