"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "INSTALL" between
mpg123-1.26.4.tar.bz2 and mpg123-1.26.5.tar.bz2

About: mpg123 is a fast console MPEG Audio Player and decoder library (MPEG 1.0/2.0/2.5, Layer 1,2 and 3 support).

INSTALL  (mpg123-1.26.4.tar.bz2):INSTALL  (mpg123-1.26.5.tar.bz2)
mpg123 install hints mpg123 install hints
-------------------- --------------------
(This file has very long lines - die-hard terminal nostalgists can be satisfied
by `fmt -s -w 75 < INSTALL | less`. I think it's better to let the reader's pref
erence rule than to preformat the stuff to some arbitrary width.)
0. Prerequesites 0. Prerequesites
You really need: You really need:
- a C compiler; we try to keep the code ANSI C89/ISO C90 compatible - a C compiler; we try to keep the code ANSI C89/ISO C90 compatible
gcc from 2.95 on should work, others, too - please report any issues gcc from 2.95 on should work, others, too - please report any issues
Actually, we have a confirmed working build (svn trunk leading to release 0.67 Actually, we have a confirmed working build (svn trunk leading to
) on SunOS 4.1.4 with gcc-2.7.0 . release 0.67) on SunOS 4.1.4 with gcc-2.7.0 .
- an (UNIX-like) operating system with standard tools; MinGW32 and Cygwin are wo - an (UNIX-like) operating system with standard tools; MinGW32 and
rking for Microsoft Windows, too. We also have users happily on OS/2. Cygwin are working for Microsoft Windows, too. We also have users happily
- For the library only, you may get lucky with MSVC++ using the project files un on OS/2.
der ports/ - For the library only, you may get lucky with MSVC++ using the project
files under ports/
- For other exotic platforms, also see ports/ - For other exotic platforms, also see ports/
- If building from direct SCM checkout, you need GNU autotools installed (see be - If building from direct SCM checkout, you need GNU autotools installed
low). (see below).
You want: You want:
- working assembler (recent GNU binutils) if using certain CPU optimizations - working assembler (recent GNU binutils) if using certain CPU
- headers and lib for certain audio output drivers (libasound for alsa, sdl for optimizations
sdl...) - headers and lib for certain audio output drivers (libasound for alsa,
sdl for sdl...)
1. Build 1. Build
There is one main supported way to get your mpg123 installation consisting of There is one main supported way to get your mpg123 installation
consisting of
a) the mpg123 binary file a) the mpg123 binary file
- with libmpg123 as shared library or statically linked - with libmpg123, libout123, and libsyn123 as shared libraries or
- with audio output plugins, or one statically linked statically linked
b) a man page - with audio output plugins for libout123, or one statically linked
b) a man page
(you may want to copy some of the documentation - README, etc - to /usr/share/do (you may want to copy some of the documentation - README, etc - to
c/mpg123 or the like, too) /usr/share/doc/mpg123 or the like, too)
This way is the usual GNU 3-step procedure: This way is the usual GNU 3-step procedure:
./configure ./configure
make make
make install make install
Run Run
./configure --help ./configure --help
for a list of possible parameters you can specify in the configuration step. The for a list of possible parameters you can specify in the configuration
obvious are --prefix and the normal GNU autotool bunch, but others include what step. The obvious are --prefix and the normal GNU autotool bunch, but
audio subsystem to use and what CPU optimizations to build in. others include what audio subsystem to use and what CPU optimizations
For the optimizations (decoder choice), the default is a build that combines all to build in.
usable optimizations for the platform and chooses one at runtime (see --cpu, -- For the optimizations (decoder choice), the default is a build that
list-cpu and --test-cpu parameters). combines all usable optimizations for the platform and chooses one at
runtime (see --cpu, --list-cpu and --test-cpu parameters).
There are various parameters you can tune, but of course the defaults are what i
s mainly tested. There are various parameters you can tune, but of course the defaults
are what is mainly tested.
Also, various library features can be left out via --disable options (like outpu
t formats, resampling modes). That way, you can strive for a minimal build that Also, various library features can be left out via --disable options
only does what you really need. Not every combination of library features is tes (like output formats, resampling modes). That way, you can strive for a
ted regularily, so you might hit some speed bumps, but usually stuff that is eas minimal build that only does what you really need. Not every combination
ily worked out (at least for the mpg123 team when you report it). of library features is tested regularily, so you might hit some speed
bumps, but usually stuff that is easily worked out (at least for the
mpg123 team when you report it).
An example (working on mpg123 trunk r3062): An example (working on mpg123 trunk r3062):
CFLAGS="-Os -s" ./configure --with-cpu=generic --disable-id3v2 --disable CFLAGS="-Os -s" ./configure --with-cpu=generic --disable-id3v2
-lfs-alias --disable-feature-report --with-seektable=0 --disable-16bit --disable --disable-lfs-alias --disable-feature-report --with-seektable=0
-32bit --disable-8bit --disable-messages --disable-feeder --disable-ntom --disab --disable-16bit --disable-32bit --disable-8bit --disable-messages
le-downsample --disable-icy && make --disable-feeder --disable-ntom --disable-downsample --disable-icy
&& make
That, and further application of `strip --strip-unneeded`, yields a lean 93 KiB
shared library for MPEG layer I/II/III decoding to floating point on my x86-64 s That, and further application of `strip --strip-unneeded`, yields a lean
ystem (it should be a bit smaller on 32 bit systems). When disabling layers I an 93 KiB shared library for MPEG layer I/II/III decoding to floating point
d II, too, that goes down to 81 KiB. on my x86-64 system (it should be a bit smaller on 32 bit systems). When
disabling layers I and II, too, that goes down to 81 KiB.
The shared library of a full build weighs 170 KiB after stripping. The shared library of a full build weighs 170 KiB after stripping.
2. Developer build 2. Developer build
This project uses GNU autotools (no specific version, but they should be fairly This project uses GNU autotools (no specific version, but they should
recent), also libtool. You need to have those installed, as it is usually the ca be fairly recent), also libtool. You need to have those installed, as
se for build environments based on the GNU toolchain. it is usually the case for build environments based on the GNU toolchain.
One a fresh SCM checkout, or after changing things in configure.ac, you need to One a fresh SCM checkout, or after changing things in configure.ac,
run you need to run
autoreconf -iv autoreconf -iv
to prepare the configure script. Then you can build as per point 1. to prepare the configure script. Then you can build as per point 1.
3. Library-only build 3. Library-only build
If you do not want to build the whole thing, but only the library, run Mpg123 uses a non-recursive build. If you want to build only one of the
libraries, specify it as a target:
./configure ./configure
cd src/libmpg123 make src/libmpg123/libmpg123.la
make make src/libsyn123/libsyn123.la
make src/libout123/libout123.la
You can then find the library itself under src/libmpg123/.libs (libtool likes to You can then find the library itself under src/lib*123/.libs (libtool
hide things there). likes to hide things there).
4. Exotic platforms 4. Exotic platforms
See the ports/ directory for some help for building at least libmpg123 without t See the ports/ directory for some help for building at least libmpg123
he UNIX shell / autotools. The main strategy is to write a config.h to replace w without the UNIX shell / autotools. The main strategy is to write
hat configure would generate and then have a correct listing of all source files a config.h to replace what configure would generate and then have a
involved in that configuration (there are optional files for different decoder correct listing of all source files involved in that configuration
choices, for example). (there are optional files for different decoder choices, for example).
Then compile objects, link. Then compile objects, link.
Instead of manually curated MSVC project files, there is a CMake port
now in ports/cmake to build mpg123 with the MS compilers. It might be
helpful for other platforms, too. But the main build system for
POSIX-like systems is the autotools one.
4a. Preparing Win32 binary packages. 4a. Preparing Win32 binary packages.
Caution: You should make sure to use some gcc >= 4.2.0, even if it's still the e Caution: You should make sure to use some gcc >= 4.2.0, even if it's
xperimental package for MinGW32. still the experimental package for MinGW32.
This helps preventing incompatibilities between generated DLL files and other co This helps preventing incompatibilities between generated DLL files and
mpilers (it's about stack alignment). other compilers (it's about stack alignment).
Get MinGW/MSYS installed, run the MSYS shell. Get MinGW/MSYS installed, run the MSYS shell.
Enter the mpg123 source directory. Enter the mpg123 source directory.
Execute sh ./windows-builds.sh . Execute sh ./windows-builds.sh .
After some time, you should have some relevant files under releases/ (or release After some time, you should have some relevant files under releases/
s\, for Windows people;-). (or releases\, for Windows people;-).
You don't just get one build -- there are several variants, corresponding to wha You don't just get one build -- there are several variants, corresponding
t usually is to be found under http://mpg123.org/download/win32 . to what usually is to be found under http://mpg123.org/download/win32 .
5. Note on large file support 5. Note on large file support
The libmpg123 API includes the generic off_t type for file offsets and thus is s The libmpg123 API includes the generic off_t type for file offsets and
ubject to shape-shifting on systems that change off_t depending on build flags. thus is subject to shape-shifting on systems that change off_t depending
To deal with the incompatibilities that can cause, the library needs to separate on build flags.
code paths for small and large off_t. To deal with the incompatibilities that can cause, the library needs to
Since version 1.12.0, a large-file-enabled libmpg123 (the default set by configu separate code paths for small and large off_t.
re) provides a dual-mode ABI. Depending on _FILE_OFFSET_BITS, the mpg123.h heade Since version 1.12.0, a large-file-enabled libmpg123 (the default set
r file selects different library symbols to use for your app. by configure) provides a dual-mode ABI. Depending on _FILE_OFFSET_BITS,
In both large-file and normal mode, the library should just work for your app. the mpg123.h header file selects different library symbols to use for
your app.
In both large-file and normal mode, the library should just work for
your app.
6. Security 6. Security
If you consider installing the mpg123 binary or any program using libout123 as s If you consider installing the mpg123 binary or any program using
uid root, please don't. Apart from evaluating MPG123_MODDIR from the environment libout123 as suid root, please don't. Apart from evaluating MPG123_MODDIR
and thus possibly loading any code, the purpose of libout123 is to write audio from the environment and thus possibly loading any code, the purpose of
data to somewhere. That includes writing raw data to files. Any files you specif libout123 is to write audio data to somewhere. That includes writing raw
y to the program. You do not install dd or gzip suid root, do you? data to files. Any files you specify to the program. You do not install
dd or gzip suid root, do you?
Programs using libmpg123 should be fine, as that one does not load runtime modul
es and also only has code to read files, not write them. Still, if your task inv Programs using libmpg123 should be fine, as that one does not load runtime
olves decoding random MPEG audio files from anywhere, it is only sensible to lim modules and also only has code to read files, not write them. Still,
it the damage of a possible bug triggered by certain crafted files. This is not if your task involves decoding random MPEG audio files from anywhere,
specific to libmpg123 but generally a good idea working with data from untrusted it is only sensible to limit the damage of a possible bug triggered by
sources. certain crafted files. This is not specific to libmpg123 but generally
a good idea working with data from untrusted sources.
 End of changes. 21 change blocks. 
77 lines changed or deleted 90 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)