summaryrefslogtreecommitdiff
path: root/RELNOTES.txt
diff options
context:
space:
mode:
Diffstat (limited to 'RELNOTES.txt')
-rw-r--r--RELNOTES.txt369
1 files changed, 369 insertions, 0 deletions
diff --git a/RELNOTES.txt b/RELNOTES.txt
new file mode 100644
index 0000000..be4df57
--- /dev/null
+++ b/RELNOTES.txt
@@ -0,0 +1,369 @@
+Release notes for Open Source OSS version v4.2-build2006
+==================================================
+
+
+What is the open sourced version
+--------------------------------
+
+It is an open source version of the Open Sound System (OSS) sound subsystem
+software released under the GPL license. The only difference between the
+"commercial" version and the open source version of OSS is the commercial
+version contains certain drivers that contain code encumbered under NDA.
+
+There are three source packages released by 4Front Technologies:
+
+ * GPL version contains the source code for Linux
+ * CDDL version contains the source code for Solaris
+ * BSD version contains the source code for FreeBSD (and other BSD OSs)
+
+See www.opensound.com for more information about OSS. Our developer web site
+(http://developer.opensound.com) will give additional information for
+application developers and OSS contributors.
+
+NOTICE! In general it is not possible to mix binary modules from the commercial
+OSS package with rest of the software compiled from open source OSS sources
+because certain header files and core data structures are incompatible. If you
+need to use one of the drivers missing from the open source version you will
+have to use the retail version of OSS instead.
+
+Build system requirements
+-------------------------
+
+To be able to extract the source files from the tarball you will
+need the bunzip2 command in the system. It's usually available by default
+but otherwise you will need to download the sources from the net and compile it.
+
+OSS is currently compatible with the following operating systems and processor
+architectures. Other environments may be supported later.
+
+Operating system Version Processor architecture
+
+Solaris/OpenSolaris 10 or later x86, amd64, Sparc (64 bit)
+Linux 2.6 or later x86, x86_64
+FreeBSD 6 or later x86, x86_64
+SCO UnixWare 7 or later x86
+SCO OpenServer 6 or later x86
+
+Note that the very latest kernel versions may not be supported out of box.
+Changes may be needed to OSS before it supports them.
+
+The system used to build OSS should have full kernel/driver development
+environment installed (C/C++ compiler, linker, make, kernel headers, etc).
+Please refer to the documentation of the operating system you are using
+
+Under Linux and FreeBSD the C compiler to use is GCC (_MUST_ be v3.0 or later).
+With the other operating systems you need to use the C compiler provided by
+the operating system vendor.
+
+In addition GNU awk needs to be available in the system as gwak. Otherwise the
+manual pages will not be created correctly (otherwise OSS will compile and
+work OK).
+
+The stock make command shipped with some operating systems (SCO UnixWare and
+OpenServer) is not capable to compile OSS. In such systems you will have to
+install GNU make and use it instead. The make utilities shipped with Linux,
+Solaris and FreeBSD are OK.
+
+
+GTK 1.2 or GTK 2.0 development libraries must also be installed for the
+GUI apps like ossxmix. GTK 2.0 must be installed and registered via pkgconfig
+or GTK-1.2 must be installed and gtk-config must be there in the path.
+
+
+Target system requirements
+--------------------------
+
+OSS can be installed in a different computer system than where the
+software was compiled (OTOH in many cases these systems are the same machine).
+
+Under Linux and FreeBSD some parts of the software need to be compiled in
+the target system to handle differences between different kernel versions. For
+this reason it's necessary to have a functional kernel development system
+installed in the target machine too. In FreeBSD this is the default.
+
+Under Linux systems the target machine should have the following packages
+installed (unfortunatgely they are not installed by default.
+
+- Kernel sources and/or headers for the currently active kernel.
+- C compiler (gcc or cc)
+- make (gmake or make)
+- GNU binutils (ld, as)
+- GNU awk (gawk)
+- Standard C library (libc/glibc) headers.
+- GTK+ (either v1.2 or v2.0)
+
+Source directory structure
+--------------------------
+
+The directory scheme of OSS is different from most other software packages.
+Instead of storing source files in the "build" tree we have separated
+the build (object) directory from the source directory. In this way the sources
+can be located in a common directory on a (NFS) server and shared between
+several "build" machines possibly running different operating systems. Any
+number of build machines can be used to compile OSS at the same time without
+disturbing each other. However nothing prevents from having the source
+directory located in the local machine or even on CD-ROM or some other
+read-only media.
+
+There is nothing special in the source directory. Its contents are distributed
+in the source tarball (oss-v4.2-build2006-src-gpl.tar.bz2).
+
+The build directory is a special directory that contains symbolic links to
+the corresponding files in the source directory. Files in the build directory
+can be edited and the changes will be directed to the original file in the
+source directory (provided that it is writeable). However the object files will
+only be created in the local build directory only.
+
+Note that there is also some C code (.c and .inc) files that are not built in
+the source system but in the target. These files are located in the
+setup/`uname`/oss directory. This is necessary because certain kernel data
+structures depend on the kernel version being installed in the target system.
+The goal of this mechanism is that majority of the code can be compiled in
+any system. Only the kernel version dependent parts (wrappers) need to be
+compiled in the target system (this mechanism will become unnecessary in the
+future when these operating systems (Linux in particular) get a proper
+device driver interface.
+
+
+Installing the sources
+----------------------
+
+Save the tarball containing the source files in /tmp (or some other
+directory in the development system). In this document we will assume
+that you have stored the sources in /tmp/oss-v4.2-build2006-src-gpl.tar.bz2.
+
+Go to the directory where you would like to create the source directory.
+For example:
+
+ cd /usr/src
+
+Next restore the files in the tarball by executing the following command:
+
+ bunzip2 -c /tmp/oss-v4.2-build2006-src-gpl.tar.bz2 | tar xvf -
+
+(Or if you have GNU make (Linux, FreeBSD) you simply use
+tar xvfj /tmp/oss-v4.2-build2006-src-gpl.tar.bz2).
+
+After restoring the files they will appear in the oss-v4.2-build2006-src-gpl
+subdirectory under the current directory.
+
+Note! bunzip2 command is part of the bzip2 package.
+
+Compiling obsolete drivers
+--------------------------
+
+Drivers for few sound cards are no longer actively maintained and they will
+not be compiled by default. These devices have been out of production for
+about 10 years and we don't expect that anybody has them any more:
+
+ oss_allegro
+ oss_als3xx
+ oss_als4k
+ oss_digi32
+ oss_maestro
+ oss_neomagic
+ oss_s3vibes
+ oss_vortex
+
+The above drivers are located in the attic/drv subdirectory and they will not
+get compiled by default. However you can compile any of them after creating
+a symbolic link (this needs to be done in the source directory before running
+the configure script. For example if you would like to compile the oss_digi32
+driver then you can do the following:
+
+ cd kernel/drv
+ ln -s ../../attic/drv/oss_digi32 .
+
+Creating the build environment
+------------------------------
+
+If you have an earlier OSS build directory in the system it's recommended that
+you remove it before creating the build directory for v4.2-build2006
+alternatively you may create separate build directories for different
+OSS versions.
+
+Before you can build OSS you will need to create an empty "build" directory
+and run the configure script. This as well as the actual compile/build step can
+be done by any user (ie super user capabilities are not required).
+
+NOTE! THE BUILD DIRECTORY MUST BE OUTSIDE THE SOURCE DIRECTORY. Otherwise
+ the configure script will go to endless loop and fail. You need to give
+ absolute path to the source directory when running configure. Relative
+ paths (such as ../$TARGETDIR/configure) will not work properly.
+
+The build directory can be located anywhere (say in your home directory).
+However the directory must be completely empty (no files in it). For example
+you can create and initialize the build directory in the following way
+(assuming that the source directory is /usr/src/$TARGETDIR):
+
+ mkdir oss
+ cd oss
+ /usr/src/$TARGETDIR/configure
+
+The configure script will perform slightly different steps depending on the
+current operating system.
+
+SCO OpenServer and SCO UnixWare are regarded as the same plattform and the
+same OSS package will work under both of them.
+
+Solaris environment differs from the other operating systems because the
+same build will compile both 32 and 64 bit drivers. So there will be two
+almost identical subdirectory trees (i386 and amd64) under Solaris.
+
+Some drivers only work under x86 or certain operating systems. For this reason
+not all drivers will get compiled in some environments.
+
+Command line arguments of the configure script
+----------------------------------------------
+
+In most cases you should execute the configure script without any command
+line arguments. The following switches are available but they are mostly
+untested and should only be used in special situations.
+
+
+--regparm
+--no-regparm
+
+These switches are only defined for Linux. They control if OSS is to be built
+for a kernel compiled with or without the CONFIG_REGPARM setting. By default
+OSS drivers will be compiled for both alternatives and the right one will be
+selected automatically when OSS is installed.
+
+--target=uclinux-blackfin
+
+Experimental an incompletely implemented hack for cross compiling OSS for
+uClinux/Blackfin. Do not use.
+
+--copy-files
+
+By default the configure script will create symbolic links from the build
+directory to the original files in the source directory. This switch can be
+used to force copying of files instead of linking. This will result in multiple
+copies of the same file in the source tree (under Linux and Solaris/x86).
+For this reason this switch should not be used.
+
+--config-vmix=FLOAT | FIXEDPOINT | NO
+
+By default the virtual mixer (vmix) subsystem will be enabled. Depending on the target operating system
+it will use floating point (Linux) or fixed point arithmetic. This command line switch can be used
+to disable vmix (NO) or to enforce fixed point (FIXEDPOINT). Note that floating point is not supported
+under other that x86/x86_64 processors. Also some operating systems don't support it.
+
+--config-midi=NO|YES
+
+By default (in OSS v4.1) MIDI support is disabled. If you like to do hacking with MIDI you can enable it
+by using --config-midi=YES.
+
+Compiling OSS
+-------------
+
+You can compile OSS by running make under the build directory. This will
+only compile the C source files to binary objects but doesn't actually build
+the installable files. There are few make targets that are used to
+build the software in different ways:
+
+make build:
+
+This command compiles the binaries and runs the ./build.sh script
+(OS dependent) to create the full prototype tree (./prototype). This directory
+contains a copy of the files to be installed in the target system (relative
+to the / directory).
+
+make install:
+
+This command does "make build" and then copies the files/directories located
+in the ./prototype subdirectory to their proper places (under /). After that
+the script performs the (OS dependent) steps required to install the drivers
+in the local system. It may be necessary to run soundoff and soundon to reload
+the drivers in the kernel after running "make install".
+
+This method is a fast way to recompile and install OSS in the system
+when hacking with the drivers. However it's necessary to create the proper
+installation package and install it when installing a new OSS version
+for the first time.
+
+make package:
+
+This command will compile the OSS software and buil a proper installation
+package (.rpm, .pkg or something else depending on the operating system).
+This package (from the local directory) can then be installed in the target
+system (local computer or somewhere else) using the usual software installation
+and management tools (pkgadd/pkgrm, rpm) provided by the operating system.
+
+Notice that this command may not work properly in all Linux systems because
+most Linux distributions are incompatible with each other. So the
+files/scripts used to create the RPM package may need to be edited if you are
+using any other distribution than SuSE or Redhat/Fedora. In particular Debian
+style package management is not supported. If you are installing OSS in a
+noncompatible system you will have to use "make install" (or to move the
+files using a tar package and then run the install script
+(cd /usr/lib/oss/build;sh install.sh).
+
+Summary: (This is how we build OSS at 4front)
+---------------------------------------------
+1) cd /usr/src; tar -jxvf oss-v4.2-build2006-src-gpl.tar.bz2
+2) mkdir /usr/src/oss; cd /usr/src/oss
+3) /usr/src/$TARGETDIR/configure
+4) make install
+ This step compiles the software and copies the files to their right
+ places. Finally it starts the drivers using the soundon script.
+
+Installing the compiled (binary) package in the target system
+-------------------------------------------------------------
+
+After running make package the install package (.pkg/.rpm) will be created in
+the build directory. This package can be moved to the target system and
+installed using the pkgadd or rpm commands.
+
+Managing OSS installation
+-------------------------
+
+OSS can be started and stopped by using the soundon and soundoff commands
+(respectively). Soundon will create a log file (/usr/lib/oss/logs/soundon.log)
+that contains debugging information that helps in solving problems with OSS.
+
+Installing the OSS package will also install a startup script (usually
+/etc/rc3.d/S89oss) that will start OSS automatically when the system gets
+rebooted. So running soundoff or soundon is manually is rarely necessary.
+
+Information about the devices in the system can be printed using
+the ossinfo command (ossinfo -v3 for most detailed output).
+
+When new hardware is installed in ths system it is usually necessary to
+run the ossdetect utility (ossdetect -v for verbose output) to find the new
+devices in the system. After running ossdetect you will need to run soundoff
+and soundon to reload the drivers (not necessary under Solaris).
+
+Configuration options
+---------------------
+
+The /usr/lib/oss/conf directory will contain various configuration
+files (or actually symbolic links to the actual files in system dependent
+directories). These files can be edited using any text editor to change the
+settings. However there is rarely need to change these settings.
+
+You need to run soundoff and soundon to make the config option changes
+to take effect. Under SCO OpenServer and UnixWare you will also need to run
+the following commands _before_ doing soundoff;soundon:
+
+ cd /usr/lib/oss/build
+ sh install.sh
+
+Developing OSS compatible applications
+--------------------------------------
+
+The OSS API is documented in the OSS Programmer's Guide
+(http://manuals.opensound.com/developer).
+
+Making modifications to Open Sound System
+-----------------------------------------
+
+If you plan to make modifications to Open Sound System, please check
+our developer web site (http://developer.opensound.com) before doing anything.
+Also it's recommended that you join the oss-devel mailing list and describe
+the changes you are planning to do. We will accept contributions to the code.
+However there are certain rules the contributions must follow before they can
+be accepted. First of all the contributions must not cause any compatibility
+problems between different OSS versions. Also changes that may increase
+complexity of the OSS API or could cause incompatibilities between devices will
+probably not be accepted.