blob: 8f47d7020529986b801d27f1d493d80f7796222c [file] [log] [blame]
Josh Coalson6b05bc52001-06-08 00:13:21 +00001/* FLAC - Free Lossless Audio Codec
Josh Coalson1152f9f2002-01-26 18:05:12 +00002 * Copyright (C) 2001,2002 Josh Coalson
Josh Coalson6b05bc52001-06-08 00:13:21 +00003 *
4 * This program is part of FLAC; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version 2
7 * of the License, or (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 */
18
19
20FLAC (http://flac.sourceforge.net/) is an Open Source lossless audio
21codec developed by Josh Coalson.
22
Josh Coalsonbc869502002-06-14 06:36:16 +000023FLAC is comprised of
24 * `libFLAC', a library which implements reference encoders and
25 decoders, and a metadata interface, licensed under the GNU
26 Lesser General Public License (LGPL)
27 * `libFLAC++', a C++ object wrapper library around libFLAC
28 * `flac', a command-line program for encoding and decoding files,
29 licensed under the GNU General public License (GPL)
30 * `metaflac', a command-line program for editing FLAC metadata,
31 licensed under the GPL
32 * player plugins for XMMS and Winamp, licensed under the GPL
33 * documentation, licensed under the GNU Free Documentation License.
Josh Coalson6b05bc52001-06-08 00:13:21 +000034
Josh Coalson123f1e92001-11-11 04:00:27 +000035============
Josh Coalson0d0d7732002-07-02 22:23:55 +000036FLAC - 1.0.3
Josh Coalson123f1e92001-11-11 04:00:27 +000037============
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000038
Josh Coalson6b05bc52001-06-08 00:13:21 +000039This is the source release for the FLAC project. See
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000040
41 doc/index.html
42
43for full documentation.
44
45A brief description of the directory tree:
46
Josh Coalson917df862002-07-03 07:39:05 +000047 doc/ the HTML documentation
48 flac.pbproj/ the Mac OS X Project Builder project
49 include/ public include files for libFLAC and libFLAC++
50 man/ the man page for `flac'
51 src/ the source code and private headers
52 test/ the test scripts
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000053
54
55=============================
56Building in a GNU environment
57=============================
58
Josh Coalson172ac002001-10-31 18:30:19 +000059FLAC uses autoconf and libtool for configuring and building.
60Better documentation for these will be forthcoming, but in
61general, this should work:
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000062
Josh Coalson172ac002001-10-31 18:30:19 +000063./configure && make && make install
Josh Coalsonbfe42f12000-12-22 22:42:25 +000064
Josh Coalson917df862002-07-03 07:39:05 +000065NOTE: Despite our best efforts it's entirely possible to have
66problems when using older versions of autoconf, automake, or
67libtool. If you have the latest versions and still can't get it
68to work, see the next section on Makefile.lite.
Josh Coalson04032562001-07-20 23:43:15 +000069
Josh Coalson3643db32001-07-18 00:23:06 +000070There are a few FLAC-specific arguments you can give to
71`configure':
72
73--enable-debug : Builds everything with debug symbols and some
74extra (and more verbose) error checking.
75
76--disable-asm-optimizations : Disables the compilation of the
77assembly routines. Many routines have assembly versions for
78speed and `configure' is pretty good about knowing what is
79supported, but you can use this option to build only from the
80C sources.
81
Josh Coalsone3268482001-12-04 06:46:12 +000082--enable-sse : If you are building for an x86 CPU that supports
Josh Coalson3643db32001-07-18 00:23:06 +000083SSE instructions, you can enable some of the faster routines
84if your operating system also supports SSE instructions. flac
85can tell if the CPU supports the instructions but currently has
86no way to test if the OS does, so if it does, you must pass
87this argument to configure to use the SSE routines. If flac
88crashes when built with this option you will have to go back and
Josh Coalsone3268482001-12-04 06:46:12 +000089configure without --enable-sse. Note that
90--disable-asm-optimizations implies --disable-sse.
Josh Coalson9e6efb62001-05-29 18:48:42 +000091
Josh Coalsone3268482001-12-04 06:46:12 +000092--enable-3dnow : If you are building for an AMD CPU which has 3DNOW!
Josh Coalsonc69f8782001-11-13 23:08:22 +000093support, you can use this flag to enable some assembly routines
94which use 3DNOW! instructions. There have been some reports that
95they may cause flac to crash, which is why it is not turned on
Josh Coalson7140a1c2001-11-13 23:11:51 +000096by default. Note that --disable-asm-optimizations overrides
Josh Coalsone3268482001-12-04 06:46:12 +000097--enable-3dnow.
Josh Coalsonc69f8782001-11-13 23:08:22 +000098
Josh Coalsonbb7f6b92000-12-10 04:09:52 +000099
Josh Coalson04032562001-07-20 23:43:15 +0000100===========================
101Building with Makefile.lite
102===========================
103
104There is a more lightweight build system for do-it-yourself-ers.
105It is also useful if configure isn't working, which may be the
106case since lately we've had some problems with different versions
107of automake and libtool. The Makefile.lite system should work
Josh Coalsonb83801e2002-03-13 04:11:05 +0000108on Gnu systems with few or no adjustments.
Josh Coalson04032562001-07-20 23:43:15 +0000109
110From the top level just 'make -f Makefile.lite'. You can
111specify zero or one optional target from 'release', 'debug',
112'test', or 'clean'. The default is 'release'. There is no
113'install' target but everything you need will end up in the
114obj/ directory.
115
116If you are not on an x86 system or you don't have nasm, you
117may have to change the DEFINES in src/libFLAC/Makefile.lite. If
118you don't have nasm, remove -DFLAC__HAS_NASM. If your target is
119not an x86, change -DFLAC__CPU_IA32 to -DFLAC__CPU_UNKNOWN.
120
121
Josh Coalsonbb7f6b92000-12-10 04:09:52 +0000122==================
123Building with MSVC
124==================
125
126There is no overall make system for MSVC but the individual
127source directories with a 'Makefile.vc' file in them allow
Josh Coalson9e6efb62001-05-29 18:48:42 +0000128building with MSVC. Just 'nmake /f Makefile.vc'. Currently
129the Makefile.vc for libFLAC is hardcoded to use nasm. If
130you don't have nasm, or don't want any assembly optimizations,
Josh Coalsonb83801e2002-03-13 04:11:05 +0000131edit the makefile, adding '/D FLAC__NO_ASM', and delete the
Josh Coalsonbc869502002-06-14 06:36:16 +0000132rules which compile the .nasm files.
Josh Coalson5676eb12001-11-09 19:23:50 +0000133
134
135====================
136Building on Mac OS X
137====================
138
Josh Coalsonb83801e2002-03-13 04:11:05 +0000139If you have Fink, the Gnu flow above should work. Otherwise,
140there is a Project Builder project in the top-level source
Josh Coalson5676eb12001-11-09 19:23:50 +0000141directory to build libFLAC and the command-line utilities on
142Mac OS X. In a terminal, cd to the top-level directory (the
143one that contains this README file) and type:
144
145 pbxbuild -alltargets
146
Josh Coalsonb83801e2002-03-13 04:11:05 +0000147This will create everything and leave it in the build/ directory.
148Don't worry about the rest of the stuff that is in build/ or
Josh Coalson5676eb12001-11-09 19:23:50 +0000149the stuff that was already there before building.
150
151There currently is no install procedure; you will have to
152manually copy the tools to wherever you need them.