blob: 92e5822b01809678ef06c36a01a95cc47435f44b [file] [log] [blame]
Josh Coalson6b05bc52001-06-08 00:13:21 +00001# FLAC - Free Lossless Audio Codec
Josh Coalsone74bd952007-02-02 06:58:19 +00002# Copyright (C) 2001,2002,2003,2004,2005,2006,2007 Josh Coalson
Josh Coalson6b05bc52001-06-08 00:13:21 +00003#
Josh Coalsone8a76012003-02-07 00:14:32 +00004# This file is part the FLAC project. FLAC is comprised of several
5# components distributed under difference licenses. The codec libraries
6# are distributed under Xiph.Org's BSD-like license (see the file
7# COPYING.Xiph in this distribution). All other programs, libraries, and
8# plugins are distributed under the GPL (see COPYING.GPL). The documentation
9# is distributed under the Gnu FDL (see COPYING.FDL). Each file in the
10# FLAC distribution contains at the top the terms under which it may be
11# distributed.
Josh Coalson6b05bc52001-06-08 00:13:21 +000012#
Josh Coalsone8a76012003-02-07 00:14:32 +000013# Since this particular file is relevant to all components of FLAC,
14# it may be distributed under the Xiph.Org license, which is the least
15# restrictive of those mentioned above. See the file COPYING.Xiph in this
16# distribution.
Josh Coalson6b05bc52001-06-08 00:13:21 +000017
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000018#
19# GNU Makefile
20#
21# Useful targets
22#
23# all : build all libraries and programs in the default configuration (currently 'release')
24# debug : build all libraries and programs in debug mode
Josh Coalson34c1ea82002-12-04 04:57:33 +000025# valgrind: build all libraries and programs in debug mode, dynamically linked and ready for valgrind
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000026# release : build all libraries and programs in release mode
27# test : run the unit and stream tests
28# clean : remove all non-distro files
29#
30
Josh Coalsoncd0e3222002-10-23 22:08:13 +000031topdir = .
32
Josh Coalson44937a72007-09-12 02:42:05 +000033.PHONY: all doc src examples libFLAC libFLAC++ share plugin_common plugin_xmms flac metaflac test_grabbag test_libFLAC test_libFLAC++ test_seeking test_streams
34all: doc src examples
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000035
36DEFAULT_CONFIG = release
37
38CONFIG = $(DEFAULT_CONFIG)
39
40debug : CONFIG = debug
Josh Coalson34c1ea82002-12-04 04:57:33 +000041valgrind: CONFIG = valgrind
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000042release : CONFIG = release
43
44debug : all
Josh Coalson34c1ea82002-12-04 04:57:33 +000045valgrind: all
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000046release : all
47
Josh Coalsonef5c2f82002-07-24 06:13:41 +000048doc:
Josh Coalson44937a72007-09-12 02:42:05 +000049 (cd $@ && $(MAKE) -f Makefile.lite)
Josh Coalsonef5c2f82002-07-24 06:13:41 +000050
Josh Coalson21cd7b82002-12-28 07:03:01 +000051src:
Josh Coalson44937a72007-09-12 02:42:05 +000052 (cd $@ && $(MAKE) -f Makefile.lite $(CONFIG))
53
54examples: src
55 (cd $@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalson21cd7b82002-12-28 07:03:01 +000056
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000057libFLAC:
Josh Coalson44937a72007-09-12 02:42:05 +000058 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000059
Josh Coalsona86f8702002-08-20 04:03:24 +000060libFLAC++: libFLAC
Josh Coalson44937a72007-09-12 02:42:05 +000061 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalsonaae225a2002-05-17 06:07:26 +000062
Josh Coalson1565cb62002-11-19 06:21:42 +000063share: libFLAC
Josh Coalson44937a72007-09-12 02:42:05 +000064 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalsonaae225a2002-05-17 06:07:26 +000065
Josh Coalson8da98c82006-10-15 04:24:05 +000066flac: libFLAC share
Josh Coalson44937a72007-09-12 02:42:05 +000067 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000068
Josh Coalson57ba6f42002-06-07 05:27:37 +000069metaflac: libFLAC share
Josh Coalson44937a72007-09-12 02:42:05 +000070 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalson74766922001-02-23 23:15:00 +000071
Josh Coalson1f99eac2002-08-23 06:45:23 +000072plugin_common: libFLAC
Josh Coalson44937a72007-09-12 02:42:05 +000073 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalson1f99eac2002-08-23 06:45:23 +000074
75plugin_xmms: libFLAC plugin_common
Josh Coalson44937a72007-09-12 02:42:05 +000076 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalson614ba672000-12-22 22:49:09 +000077
Josh Coalson8da98c82006-10-15 04:24:05 +000078test_seeking: libFLAC
Josh Coalson44937a72007-09-12 02:42:05 +000079 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalson94b54992004-09-21 05:41:23 +000080
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000081test_streams: libFLAC
Josh Coalson44937a72007-09-12 02:42:05 +000082 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000083
Josh Coalson14cb7192002-11-27 04:45:48 +000084test_grabbag: share
Josh Coalson44937a72007-09-12 02:42:05 +000085 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalsondfdc8182002-11-22 06:25:16 +000086
Josh Coalson57ba6f42002-06-07 05:27:37 +000087test_libFLAC: libFLAC
Josh Coalson44937a72007-09-12 02:42:05 +000088 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalson57ba6f42002-06-07 05:27:37 +000089
90test_libFLAC++: libFLAC libFLAC++
Josh Coalson44937a72007-09-12 02:42:05 +000091 (cd src/$@ && $(MAKE) -f Makefile.lite $(CONFIG))
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000092
93test: debug
Josh Coalson44937a72007-09-12 02:42:05 +000094 (cd test && $(MAKE) -f Makefile.lite debug)
Josh Coalson34c1ea82002-12-04 04:57:33 +000095
96testv: valgrind
Josh Coalson44937a72007-09-12 02:42:05 +000097 (cd test && $(MAKE) -f Makefile.lite valgrind)
Josh Coalson34c1ea82002-12-04 04:57:33 +000098
99testr: release
Josh Coalson44937a72007-09-12 02:42:05 +0000100 (cd test && $(MAKE) -f Makefile.lite release)
Josh Coalsonbb7f6b92000-12-10 04:09:52 +0000101
102clean:
Josh Coalson44937a72007-09-12 02:42:05 +0000103 -(cd doc && $(MAKE) -f Makefile.lite clean)
104 -(cd src && $(MAKE) -f Makefile.lite clean)
105 -(cd examples && $(MAKE) -f Makefile.lite clean)
106 -(cd test && $(MAKE) -f Makefile.lite clean)