1 ###############################################################################
2 # vlc (VideoLAN Client) main Makefile - (c)1998 VideoLAN
3 ###############################################################################
5 ifeq ($(shell [ ! -r Makefile.opts
] && echo
1),)
9 ###############################################################################
11 ###############################################################################
14 # All possible plugin directories, needed for make clean
16 PLUGINS_DIR
:= alsa beos darwin directx dsp dummy dvd esd fb ggi glide gtk downmix idct imdct kde macosx mga motion mpeg qt sdl text x11 yuv
19 # All possible plugin objects
21 PLUGINS_TARGETS
:= alsa
/alsa beos
/beos darwin
/darwin directx
/directx dsp
/dsp dummy
/dummy dummy
/null dvd
/dvd esd
/esd fb
/fb ggi
/ggi glide
/glide gtk
/gnome gtk
/gtk downmix
/downmix downmix
/downmixsse downmix
/downmix3dn idct
/idct idct
/idctclassic idct
/idctmmx idct
/idctmmxext imdct
/imdct imdct
/imdct3dn imdct
/imdctsse kde
/kde macosx
/macosx mga
/mga motion
/motion motion
/motionmmx motion
/motionmmxext mpeg
/es mpeg
/ps mpeg
/ts qt
/qt sdl
/sdl text
/ncurses text
/rc x11
/x11 x11
/xvideo yuv
/yuv yuv
/yuvmmx
26 INTERFACE
:= main interface intf_msg intf_playlist intf_channels
27 INPUT
:= input input_ext-dec input_ext-intf input_dec input_programs input_netlist input_clock mpeg_system
28 VIDEO_OUTPUT
:= video_output video_text video_spu video_yuv
29 AUDIO_OUTPUT
:= audio_output aout_ext-dec aout_u8 aout_s8 aout_u16 aout_s16 aout_spdif
30 AC3_DECODER
:= ac3_decoder_thread ac3_decoder ac3_parse ac3_exponent ac3_bit_allocate ac3_mantissa ac3_rematrix ac3_imdct
31 AC3_SPDIF
:= ac3_spdif ac3_iec958
32 LPCM_DECODER
:= lpcm_decoder_thread
33 AUDIO_DECODER
:= audio_decoder adec_generic adec_layer1 adec_layer2 adec_math
34 SPU_DECODER
:= spu_decoder
35 VIDEO_DECODER
:= video_parser vpar_headers vpar_blocks vpar_synchro vpar_pool video_decoder
36 MISC
:= mtime tests modules netutils
38 C_OBJ
:= $(INTERFACE
:%=src
/interface
/%.o
) \
39 $(INPUT
:%=src
/input
/%.o
) \
40 $(VIDEO_OUTPUT
:%=src
/video_output
/%.o
) \
41 $(AUDIO_OUTPUT
:%=src
/audio_output
/%.o
) \
42 $(AC3_DECODER
:%=src
/ac3_decoder
/%.o
) \
43 $(AC3_SPDIF
:%=src
/ac3_spdif
/%.o
) \
44 $(LPCM_DECODER
:%=src
/lpcm_decoder
/%.o
) \
45 $(AUDIO_DECODER
:%=src
/audio_decoder
/%.o
) \
46 $(SPU_DECODER
:%=src
/spu_decoder
/%.o
) \
47 $(VIDEO_DECODER
:%=src
/video_decoder
/%.o
) \
48 $(MISC
:%=src
/misc
/%.o
)
54 C_OBJ
+= extras
/GNUgetopt
/getopt.o extras
/GNUgetopt
/getopt1.o
58 CPP_OBJ
:= src
/misc
/beos_specific.o
61 ifneq (,$(findstring darwin
,$(SYS
)))
62 C_OBJ
+= src
/misc
/darwin_specific.o
65 ifneq (,$(findstring mingw32
,$(SYS
)))
66 RESOURCE_OBJ
:= share
/vlc_win32_rc.o
72 H_OBJ
:= src
/misc
/modules_builtin.h
75 # Other lists of files
77 C_DEP
:= $(C_OBJ
:%.o
=.dep
/%.d
)
78 CPP_DEP
:= $(CPP_OBJ
:%.o
=.dep
/%.dpp
)
81 # Translate plugin names
84 PLUGIN_OBJ
:= $(shell for i in
$(PLUGINS
) ; do echo
" "$(PLUGINS_TARGETS
)" " | sed
-e
's@.*/\('$$i'\) .*@plugins/\1.so@' -e
's@^ .*@@' ; done
)
87 BUILTIN_OBJ
:= $(shell for i in
$(BUILTINS
) ; do echo
" "$(PLUGINS_TARGETS
)" " | sed
-e
's@.*/\('$$i'\) .*@plugins/\1.a@' -e
's@^ .*@@' ; done
)
93 VLC_QUICKVERSION
:= $(shell grep
'VLC_VERSION=' configure.in | cut
-f2
-d
=)
94 LIBDVDCSS_QUICKVERSION
:= $(shell grep
'LIBDVDCSS_VERSION=' configure.in | cut
-f2
-d
=)
97 # All symbols must be exported
100 ###############################################################################
102 ###############################################################################
107 all: Makefile.opts vlc
${ALIASES} vlc.app
110 @echo
"**** No configuration found, running ./configure..."
112 $(MAKE
) $(MAKECMDGOALS
)
117 @echo CFLAGS
: $(CFLAGS
)
118 @echo DCFLAGS
: $(DCFLAGS
)
119 @echo LCFLAGS
: $(LCFLAGS
)
120 @echo PCFLAGS
: $(PCFLAGS
)
121 @echo PLCFLAGS
: $(PLCFLAGS
)
122 @echo C_OBJ
: $(C_OBJ
)
123 @echo CPP_OBJ
: $(CPP_OBJ
)
124 @echo PLUGIN_OBJ
: $(PLUGIN_OBJ
)
125 @echo BUILTIN_OBJ
: $(BUILTIN_OBJ
)
130 clean: libdvdcss-clean plugins-clean vlc-clean
131 rm -f src
/*/*.o extras
/*/*.o
132 rm -f lib
/*.so
* lib
/*.a
133 rm -f plugins
/*.so plugins
/*.a
136 -cd extras
/libdvdcss
&& $(MAKE
) clean
139 for
dir in
$(PLUGINS_DIR
) ; do \
140 ( cd plugins
/$${dir} && $(MAKE
) clean ) ; done
141 rm -f plugins
/*/*.o plugins
/*/*.moc plugins
/*/*.bak
144 rm -f
$(C_OBJ
) $(CPP_OBJ
)
145 rm -f vlc gnome-vlc gvlc kvlc qvlc vlc.exe
149 rm -f
**/*.o
**/*~
*.log
151 rm -f
include/defs.h
include/config.h
include/modules_builtin.h
152 rm -f src
/misc
/modules_builtin.h
153 rm -f config
*status config
*cache config
*log
154 rm -f gmon.out core build-stamp
159 # Install/uninstall rules
161 install: libdvdcss-install vlc-install plugins-install
163 uninstall: libdvdcss-uninstall vlc-uninstall plugins-uninstall
166 mkdir
-p
$(DESTDIR
)$(bindir)
167 $(INSTALL
) vlc
$(DESTDIR
)$(bindir)
169 for alias in
$(ALIASES
) ; do if
test $$alias ; then
rm -f
$(DESTDIR
)$(bindir)/$$alias && ln
-s vlc
$(DESTDIR
)$(bindir)/$$alias ; fi
; done
171 mkdir
-p
$(DESTDIR
)$(datadir)/videolan
172 $(INSTALL
) -m
644 share
/*.psf
$(DESTDIR
)$(datadir)/videolan
173 $(INSTALL
) -m
644 share
/*.png
$(DESTDIR
)$(datadir)/videolan
174 $(INSTALL
) -m
644 share
/*.xpm
$(DESTDIR
)$(datadir)/videolan
177 rm vlc
$(DESTDIR
)$(bindir)/vlc
179 for alias in
$(ALIASES
) ; do if
test $$alias ; then
rm -f
$(DESTDIR
)$(bindir)/$$alias ; fi
; done
181 rm -f
$(DESTDIR
)$(datadir)/videolan
/*.psf
182 rm -f
$(DESTDIR
)$(datadir)/videolan
/*.png
183 rm -f
$(DESTDIR
)$(datadir)/videolan
/*.xpm
186 mkdir
-p
$(DESTDIR
)$(libdir)/videolan
/vlc
188 $(INSTALL
) -m
644 $(PLUGINS
:%=plugins
/%.so
) $(DESTDIR
)$(libdir)/videolan
/vlc
192 rm -f
$(DESTDIR
)$(libdir)/videolan
/vlc
/*.so
195 -cd extras
/libdvdcss
&& $(MAKE
) install
198 -cd extras
/libdvdcss
&& $(MAKE
) uninstall
201 # Package generation rules
203 snapshot-common
: clean
205 # Copy directory structure in /tmp
206 find
-type d | grep
-v CVS | grep
-v
'\.dep' | while read i
; \
207 do mkdir
-p
/tmp
/vlc
/$$i ; \
209 find debian
-mindepth
1 -maxdepth
1 -type d | \
210 while read i
; do
rm -Rf
/tmp
/vlc
/$$i ; done
211 # Copy .c .h .in .cpp and .glade files
212 find
include src plugins
-type f
-name
'*.[chig]*' | while read i
; \
213 do cp
$$i /tmp
/vlc
/$$i ; done
214 # Copy plugin Makefiles
215 find plugins
-type f
-name Makefile | while read i
; \
216 do cp
$$i /tmp
/vlc
/$$i ; done
217 # Copy extra programs and documentation
218 cp
-a extras
/* /tmp
/vlc
/extras
219 cp
-a doc
/* /tmp
/vlc
/doc
220 find
/tmp
/vlc
/extras
/tmp
/vlc
/doc \
221 -type d
-name CVS
-o
-type f
-name
'.*' | while read i
; \
224 cp vlc.spec AUTHORS COPYING TODO todo.pl ChangeLog README
* INSTALL
* \
225 Makefile Makefile.opts.in Makefile.dep Makefile.modules \
226 configure configure.in install-sh config.sub config.guess \
228 # Copy Debian control files
229 for file in debian
/*dirs debian
/*docs debian
/*menu debian
/*desktop \
230 debian
/*copyright
; do cp
$$file /tmp
/vlc
/debian
; done
231 for file in control changelog rules
; do \
232 cp debian
/$$file /tmp
/vlc
/debian
/ ; done
233 # Copy fonts and icons
234 for file in share
/*png share
/*xpm share
/*psf
; do \
235 cp
$$file /tmp
/vlc
/share
; done
236 for file in vlc_beos.rsrc vlc.icns gvlc_win32.ico vlc_win32_rc.rc
; do \
237 cp share
/$$file /tmp
/vlc
/share
/ ; done
239 snapshot
: snapshot-common
240 # Build archives and clean up
241 F
=vlc-
${VLC_QUICKVERSION}; \
242 rm -Rf
/tmp
/$$F ; mv
/tmp
/vlc
/tmp
/$$F; \
243 (cd
/tmp
; tar cf
$$F.
tar $$F ; bzip2
-f
-9 < $$F.
tar > $$F.
tar.bz2
; \
244 gzip
-f
-9 $$F.
tar ); mv
/tmp
/$$F.
tar.gz
/tmp
/$$F.
tar.bz2 ..
; \
247 snapshot-nocss
: snapshot-common
249 rm -Rf
/tmp
/vlc
/extras
/libdvdcss
250 rm -f
/tmp
/vlc
/*.libdvdcss
251 # Fix debian information
252 rm -f
/tmp
/vlc
/debian
/libdvdcss
*
253 rm -f
/tmp
/vlc
/debian
/control
254 sed
-e
's#^ DVDs# unencrypted DVDs#' < debian
/control \
255 | awk
'{if(gsub("Package: libdvdcss",$$0))a=1;if(a==0)print $$0;if(a==1&&$$0=="")a=0}' \
256 > /tmp
/vlc
/debian
/control
257 rm -f
/tmp
/vlc
/debian
/rules
258 sed
-e
's#^\(export LIBDVDCSS_FLAGS=\).*#\1"--without-dvdcss"#' < debian
/rules \
259 | awk
'{if($$0=="# libdvdcss start")a=1;if(a==0)print $$0;if($$0=="# libdvdcss stop")a=0}' \
260 > /tmp
/vlc
/debian
/rules
261 chmod
+x
/tmp
/vlc
/debian
/rules
262 # Build css-disabled archives and clean up
263 F
=vlc-
${VLC_QUICKVERSION}; G
=vlc-
${VLC_QUICKVERSION}-nocss
; \
264 rm -Rf
/tmp
/$$F ; mv
/tmp
/vlc
/tmp
/$$F; \
265 (cd
/tmp
; tar cf
$$G.
tar $$F ; bzip2
-f
-9 < $$G.
tar > $$G.
tar.bz2
; \
266 gzip
-f
-9 $$G.
tar ); mv
/tmp
/$$G.
tar.gz
/tmp
/$$G.
tar.bz2 ..
; \
269 libdvdcss-snapshot
: snapshot-common
270 # Remove vlc sources and icons, doc, debian directory...
271 rm -Rf
/tmp
/vlc
/src
/tmp
/vlc
/share
/tmp
/vlc
/plugins
/tmp
/vlc
/doc
272 rm -Rf
/tmp
/vlc
/extras
/GNUgetopt
/tmp
/vlc
/extras
/MacOSX_app
273 rm -Rf
/tmp
/vlc
/debian
274 # Remove useless headers
275 rm -f
/tmp
/vlc
/include/*
276 for file in defs.h.in config.h.in common.h int_types.h
; \
277 do cp
include/$$file /tmp
/vlc
/include/ ; done
278 # Remove misc files (??? - maybe not really needed)
279 rm -f
/tmp
/vlc
/vlc.spec
/tmp
/vlc
/INSTALL-win32.txt
280 mv
/tmp
/vlc
/INSTALL.libdvdcss
/tmp
/vlc
/INSTALL
281 mv
/tmp
/vlc
/README.libdvdcss
/tmp
/vlc
/README
283 rm -f
/tmp
/vlc
/Makefile
284 sed
-e
's#^install:#install-unused:#' \
285 -e
's#^uninstall:#uninstall-unused:#' \
286 -e
's#^clean:#clean-unused:#' \
287 -e
's#^all:.*#all: libdvdcss#' \
288 -e
's#^libdvdcss-install:#install:#' \
289 -e
's#^libdvdcss-uninstall:#uninstall:#' \
290 -e
's#^libdvdcss-clean:#clean:#' \
291 < Makefile
> /tmp
/vlc
/Makefile
292 # Build archives and clean up
293 F
=libdvdcss-
${LIBDVDCSS_QUICKVERSION}; \
294 rm -Rf
/tmp
/$$F ; mv
/tmp
/vlc
/tmp
/$$F; \
295 (cd
/tmp
; tar cf
$$F.
tar $$F ; bzip2
-f
-9 < $$F.
tar > $$F.
tar.bz2
; \
296 gzip
-f
-9 $$F.
tar ); mv
/tmp
/$$F.
tar.gz
/tmp
/$$F.
tar.bz2 ..
; \
300 dpkg-buildpackage
-rfakeroot
-us
-uc
303 # Gtk/Gnome/* aliases and OS X application
305 gnome-vlc gvlc kvlc qvlc
: vlc
306 rm -f
$@
&& ln
-s vlc
$@
309 vlc.app
: Makefile.opts
310 ifneq (,$(findstring darwin
,$(SYS
)))
312 mkdir
-p vlc.app
/Contents
/Resources
313 mkdir
-p vlc.app
/Contents
/MacOS
/lib
314 mkdir
-p vlc.app
/Contents
/MacOS
/share
315 $(INSTALL
) -m
644 extras
/MacOSX_app
/Contents
/Info.plist vlc.app
/Contents
/
316 $(INSTALL
) -m
644 extras
/MacOSX_app
/Contents
/PkgInfo vlc.app
/Contents
/
317 $(INSTALL
) vlc vlc.app
/Contents
/MacOS
/
318 $(INSTALL
) share
/vlc.icns vlc.app
/Contents
/Resources
/
320 $(INSTALL
) $(PLUGINS
:%=plugins
/%.so
) vlc.app
/Contents
/MacOS
/plugins
322 $(INSTALL
) -m
644 share
/*.psf vlc.app
/Contents
/MacOS
/share
328 # Generic rules (see below)
331 @
$(MAKE
) -s
--no-print-directory
-f Makefile.dep
$@
333 $(CPP_DEP
): %.dpp
: FORCE
334 @
$(MAKE
) -s
--no-print-directory
-f Makefile.dep
$@
336 $(H_OBJ
): Makefile.opts Makefile.dep Makefile
337 rm -f
$@
&& cp
$@.in
$@
339 for i in
$(BUILTINS
) ; do \
340 echo
"int module_"$$i"_InitModule( module_t* );" >> $@
; \
341 echo
"int module_"$$i"_ActivateModule( module_t* );" >> $@
; \
342 echo
"int module_"$$i"_DeactivateModule( module_t* );" >> $@
; \
345 printf
"#define ALLOCATE_ALL_BUILTINS() do { " >> $@
;
346 for i in
$(BUILTINS
) ; do \
347 printf
"ALLOCATE_BUILTIN("$$i"); " >> $@
; \
349 echo
"} while( 0 );" >> $@
;
353 $(C_OBJ
): %.o
: Makefile.opts Makefile.dep Makefile
354 $(C_OBJ
): %.o
: .dep
/%.d
356 $(CC
) $(CFLAGS
) -c
-o
$@
$<
358 $(CPP_OBJ
): %.o
: Makefile.opts Makefile.dep Makefile
359 $(CPP_OBJ
): %.o
: .dep
/%.dpp
360 $(CPP_OBJ
): %.o
: %.
cpp
361 $(CC
) $(CFLAGS
) -c
-o
$@
$<
363 $(RESOURCE_OBJ
): %.o
: Makefile.dep Makefile
364 ifneq (,(findstring mingw32
,$(SYS
)))
365 $(RESOURCE_OBJ
): %.o
: %.rc
366 $(WINDRES
) -i
$< -o
$@
370 # Main application target
372 vlc
: Makefile.opts Makefile.dep Makefile
$(H_OBJ
) $(C_OBJ
) $(CPP_OBJ
) $(BUILTIN_OBJ
) $(RESOURCE_OBJ
) plugins
373 $(CC
) $(CFLAGS
) -o
$@
$(C_OBJ
) $(CPP_OBJ
) $(BUILTIN_OBJ
) $(RESOURCE_OBJ
) $(LCFLAGS
)
375 xres
-o
$@ .
/share
/vlc_beos.rsrc
382 plugins
: Makefile.modules Makefile.opts Makefile.dep Makefile
$(PLUGIN_OBJ
)
384 cd
$(shell echo
" "$(PLUGINS_TARGETS
)" " | sed
-e
's@.* \([^/]*/\)'$(@
:plugins
/%.so
=%)' .*@plugins/\1@' -e
's@^ .*@@') && $(MAKE
) $(@
:plugins
/%=..
/%)
387 # Built-in modules target
389 builtins
: Makefile.modules Makefile.opts Makefile.dep Makefile
$(BUILTIN_OBJ
)
390 $(BUILTIN_OBJ
): FORCE
391 cd
$(shell echo
" "$(PLUGINS_TARGETS
)" " | sed
-e
's@.* \([^/]*/\)'$(@
:plugins
/%.a
=%)' .*@plugins/\1@' -e
's@^ .*@@') && $(MAKE
) $(@
:plugins
/%=..
/%)
396 libdvdcss
: Makefile.opts
397 cd extras
/libdvdcss
&& $(MAKE
)