summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--00-Building.cygwin.txt432
-rw-r--r--00-Building.linux.txt498
-rw-r--r--00-Building.osx.txt591
-rw-r--r--doc/module.defs18
-rw-r--r--doc/module.rules37
-rw-r--r--doc/texi/Building.cygwin.texi2
-rw-r--r--doc/texi/Building.linux.texi2
7 files changed, 4 insertions, 1576 deletions
diff --git a/00-Building.cygwin.txt b/00-Building.cygwin.txt
deleted file mode 100644
index 70cbd53dd..000000000
--- a/00-Building.cygwin.txt
+++ /dev/null
@@ -1,432 +0,0 @@
-Guide to Building HandBrake svn2241 (2009030801) on Cygwin
-**********************************************************
-
-Table of Contents
-*****************
-
-1 Introduction
-2 Prerequisites
-3 QuickStart
-4 Overview
-5 Building via Terminal
- 5.1 Checkout Sources
- 5.2 Configure
- 5.3 Build
- 5.4 Make Targets
- 5.4.1 Global
- 5.4.2 General Modules
- 5.4.3 Contrib Modules
- 5.4.4 Contrib Touch and Untouch
- 5.4.5 Contrib Aggregates
- 5.5 Customizing Make
-
-
-1 Introduction
-**************
-
-This guide documents the recommended process to build HandBrake on
-Cygwin hosts from the official source-code repository. Building from
-any other source is not supported.
-
-2 Prerequisites
-***************
-
-The following are the recommended specifications for building on
-Cygwin; but is not necessarily the only configuration that is possible:
-
- * Intel 32-bit or 64-bit hardware (only 32-bit product binaries are
- supported)
-
- * Cygwin, gcc 4.2.4
-
- * yasm 0.7.2.2153 (for i386 or x86_64 architectures)
-
- Note: It is recommended to use the platform distribution's bundled
- compiler for maximum C++ compatibility. If you build with a custom
- compiler it will likely introduce non-standard runtime
- requirements. There are of course many valid reasons to build with
- unbundled compilers, but be aware it is generally unsupported and
- left as an exercise to the reader.
-
- Note: As of this writing, Cygwin has available to it several
- versions of gcc; only one of which may be found and used in the
- path as `gcc' and `g++'. Configure will thus find what is probably
- the older version of gcc in a typical Cygwin environment. If you
- desire to build with the newer gcc, it is found in the path as
- `gcc-4' and `g++-4' respectively and you must indicate to
- configure the desired versions. The following syntax should do the
- trick:
-
- ../configure --gcc=gcc-4
-
-The following general tools are used on various platforms and it is
-recommended you use these versions or similar:
-
- * subversion - 1.5.5
-
- * python - Python 2.4.6
-
- * curl - curl 7.19.3 (or wget)
-
- * m4 - GNU M4 1.4.6
-
- * make - GNU Make 3.81
-
- * patch - Patch 2.5.8
-
- * tar - GNU tar 1.15.1
-
- * wget - GNU Wget 1.11.4 (or curl)
-
-3 QuickStart
-************
-
-This chapter is for building from a terminal/shell environment in as
-few commands as possible. Upon completion of the following commands you
-should have a fresh build of HandBrake. Further instructions are
-available beginning with *Note overview:: which describes procedures
-suitable for repeating builds. This chapter should be skipped by those
-seeking more than a minimalist build.
-
- svn checkout svn://svn.handbrake.fr/HandBrake/trunk hb-trunk
- cd hb-trunk
- ./configure --launch
-
-The special option `--launch' selects launch mode and performs the
-following steps:
-
- * assert scratch directory `build/' does not exist
-
- * create scratch directory `build/'
-
- * change to directory `build/'
-
- * launch `make'
-
- * capture build output to `build/log/build.txt'
-
- * echo build output
-
- * print elapsed time
-
- * indicate if build ultimately succeeded or failed
-
-4 Overview
-**********
-
-Cygwin builds are performed from a terminal. There is no support for
-building from any IDEs.
-
-5 Building via Terminal
-***********************
-
-5.1 Checkout Sources
-====================
-
-Checkout HandBrake from the official source-code repository.
-
- svn checkout svn://svn.handbrake.fr/HandBrake/trunk hb-trunk
- cd hb-trunk
-
-Sources are checked out from the `trunk' branch. This document was
-generated from that very branch, and for example purposes, we will use
-exactly the same branch.
-
-If you have write-access to the repository, then you may add the
-appropriate login/password information as needed. It is recommended to
-use Subversion 1.5.0 or higher. Lower versions should also work.
-
-5.2 Configure
-=============
-
-Configure the build system.
-
- ./configure
-
-Configure will automatically create a scratch build directory `build'
-unless you use GNU-style build procedures and first `cd' to a directory
-other than top-level source. Additionally you may specify use `--build'
-to specify the directory. The name of the directory is arbitrary but it
-is recommended to use something which indicates transient files which
-are not checked into the repository.
-
-The `configure' utility accepts many options. It is recommended that
-you specify `--help' for the complete list of options. The following
-options are also documented here:
-
-`--help'
- List available options.
-
-`--src=DIR'
- Specify top-level source directory for HandBrake sources.
-
-`--build=DIR'
- Specify destination directory for final product install. The
- default is to use either `build' if in the top-level source
- directory, otherwise `.'
-
-`--prefix=DIR'
- Specify destination directory for final product install. This
- defaults to a reasonable platform-specific value.
-
-`--launch'
- All-in-one option which launches the build and logs output
- automatically. Useful for novices and quickstart procedures.
-
-`--disable-xcode'
- Disable shunting the build through Xcode. If this option is
- applied, `HandBrakeCLI' will be produced in a similare fashion as
- it is on other platforms; sans Xcode. Mac OS X only.
-
-`--disable-gtk'
- Disable building the GTK GUI on applicable platforms such as
- Linux.
-
-`--debug=MODE'
- Select debug mode. Must be one of `none', `min', `std', `max'.
- This generally maps to gcc options `-g0', `-g1', `-g2', `-g3'.
-
-`--optimize=MODE'
- Select optimize mode. Must be one of `none', `speed', `size'.
- This generally maps to gcc options `-g0', `-O0', `-O3', `-Os'.
-
-`--arch=MODE'
- Select build architecture. The available architectures vary by
- platform. Most platforms support exactly one architecture except
- Mac OS X which has support for various universal binary
- architectures. The available choices are hard-coded per platform
- and no sanity checks for the required tools are performed.
-
-
-Clean-room procedures dictate that when certain factors change, old
-builds should be scrapped and new builds configured. This is the main
-reason for requiring a scratch directory; to promote consistent,
-reliable and clean software builds. The following is a short list of
-some of the reasons why someone may choose to scrap an existing build:
-
- * configure with different options
-
- * subversion working dir is updated and you want configure to
- re-evaluate working dir metadata.
-
- * build corruption is suspected
-
-There are generally two methods for scrapping a build. The `build'
-directory can be recusrively removed which has the effect of loosing
-your existing configuration but does guarantee no residuals are left
-behind. The other method is to ask the build system to perform an `make
-xclean'. This is known to work well but will leave empty directories
-behind. However, the configuration is left intact.
-
-5.3 Build
-=========
-
-Build main product. All necessary dependencies are also built if
-required.
-
- make
-
-Parallel builds may optionally be enabled. Be aware that while a
-parallel build may save time on systems with additional cores, the
-output is often mixed, overlapped and sometimes even corrupted with
-binary characters. Thus if you experience a build issue, you should
-clean and redo the build in default serial mode to produce a readable
-log. The following command allows for up to 4 concurrent jobs via make:
-
- make -j4
-
-5.4 Make Targets
-================
-
-The build system supports passing many kinds of targets some of which
-become very useful in normal development cycles. The targets by
-convention are lower-case words passed to `make'. Global targets are
-one-word targets. Scoped targets are usually two-words seperated by a
-period.
-
-5.4.1 Global
-------------
-
-`make'
- Alias for `make build'.
-
-`make build'
- Build main product. All necessary dependencies are also built if
- required.
-
-`make clean'
- Clean all build output excluding contrib modules. Configuration is
- retained.
-
-`make install'
- Perform final product(s) install. This will install build
- products to a standard directory or one specified via `configure
- --prefix' option.
-
-`make uninstall'
- Perform final product(s) uninstall. This will uninstall any
- products which may have been previously installed.
-
-`make xclean'
- Clean all build output including contrib modules. Configuration is
- retained.
-
-`make doc'
- Build auto-generated project documentation. Various articles are
- produced and may be found in `build/doc/articles'.
-
-`make report.help'
- Print list of available makefile vars report targets. These
- reports detail var definitions and expanded values used by the
- build system. For experts only.
-
-`make report.all'
- Convenience target which aggregates all reports. For experts only.
-
-5.4.2 General Modules
----------------------
-
-General modules such as `libhb', `test' and `gtk' have the following
-scoped targets:
-
-`make MODULE.build'
- Build MODULE.
-
-`make MODULE.clean'
- Clean build output for MODULE.
-
-5.4.3 Contrib Modules
----------------------
-
-Contrib modules such as `a52dec', `bzip2', `faac', `faad2', `ffmpeg',
-`lame', `libdca', `libdvdread', `libmkv', `libmp4v2', `libogg',
-`libsamplerate', `libtheora', `libvorbis', `mpeg2dec', `x264',
-`xvidcore' and `zlib' have the following scoped targets:
-
-`make MODULE.fetch'
- Download source tarball from the Internet and save to
- `TOP/downloads' directory. No checksumming is performed.
-
-`make MODULE.extract'
- Extract source tarball into `build' tree.
-
-`make MODULE.patch'
- Apply appropriate patches (if any) to module sources.
-
-`make MODULE.configure'
- Configure module sources. This usually invokes autotool configure.
-
-`make MODULE.build'
- Build module. This usually invokes autotool build.
-
-`make MODULE.install'
- Install module products such as headers and libraries into `build'
- tree. This usually invokes autotool install.
-
-`make MODULE.uninstall'
- Uninstall module products; generally the reverse of install. This
- usually invokes autotool uninstall.
-
-`make MODULE.clean'
- Clean module; generally the reverse of build. This usually
- invokes autotool clean.
-
-`make MODULE.xclean'
- Extra clean module; first invokes uninstall then recursively
- removes the module build directory.
-
-5.4.4 Contrib Touch and Untouch
--------------------------------
-
-Also available are some very granular targets which help force builds
-from specific cycle points. The following targets are available to
-touch and untouch the respective module target; this will force the
-build system to treat the target as satisfied after a touch or
-unsatisfied after an untouch:
-
- * make MODULE.extract.touch
-
- * make MODULE.extract.untouch
-
- * make MODULE.patch.touch
-
- * make MODULE.patch.untouch
-
- * make MODULE.configure.touch
-
- * make MODULE.configure.untouch
-
- * make MODULE.build.touch
-
- * make MODULE.build.untouch
-
- * make MODULE.install.touch
-
- * make MODULE.install.untouch
-
-5.4.5 Contrib Aggregates
-------------------------
-
-For convenience, the following targets aggregate the all contrib
-modules' respective targets together:
-
- * make contrib.fetch
-
- * make contrib.extract
-
- * make contrib.patch
-
- * make contrib.configure
-
- * make contrib.build
-
- * make contrib.install
-
- * make contrib.uninstall
-
- * make contrib.clean
-
- * make contrib.xclean
-
-5.5 Customizing Make
-====================
-
-If the need arises to override settings in the build system
-(essentially gnu-make variables) the recommended method is to create
-optional include files which are automatically included if present and
-follow this naming convention; Do not check these files into the
-respository:
-
-`_SRC_/custom.defs'
- Custom makevar definitions outside `build'. Suitable for settings
- which apply across all builds for a particular checkout; or which
- survives manual removal of `build'.
-
-`_SRC_/custom.rules'
- Custom make rules outside `build'. Suitable for settings which
- apply across all builds for a particular checkout; or which
- survives manual removal of `build'.
-
-`_BUILD_/GNUmakefile.custom.defs'
- Custom makevar definitions specific to a `build' directory.
-
-`_BUILD_/GNUmakefile.custom.rules'
- Custom makevar rules specific to a `build' directory.
-
-
-The purpose is to allow a place to store local build settings for
-testing, tweaking, and experimenting with build configuration without
-losing your settings if `configure' is invoked; ie: `configure' would
-overwrite `GNUmakefile' and any customizations contained therein would
-be lost. Here is a short example of what the contents of
-`_SRC_/custom.defs' might contain:
-
- ## bump to gcc-4.2 in current path
- GCC.gcc = gcc-4.2
-
- ## replace optimize for 'speed' with more agressive settings
- GCC.args.O.speed = -O3 -fomit-frame-pointer -msse4.2
-
-See also `make report.help' which displays a set of reports used to
-dump makefile vars.
-
diff --git a/00-Building.linux.txt b/00-Building.linux.txt
deleted file mode 100644
index 955e4cd4a..000000000
--- a/00-Building.linux.txt
+++ /dev/null
@@ -1,498 +0,0 @@
-Guide to Building HandBrake svn2241 (2009030801) on Linux
-*********************************************************
-
-Table of Contents
-*****************
-
-1 Introduction
-2 Prerequisites
-3 QuickStart
-4 Overview
-5 Building via Terminal
- 5.1 Checkout Sources
- 5.2 Configure
- 5.3 Build
- 5.4 Make Targets
- 5.4.1 Global
- 5.4.2 General Modules
- 5.4.3 Contrib Modules
- 5.4.4 Contrib Touch and Untouch
- 5.4.5 Contrib Aggregates
- 5.5 Customizing Make
-
-
-1 Introduction
-**************
-
-This guide documents the recommended process to build HandBrake on
-Linux hosts from the official source-code repository. Building from any
-other source is not supported.
-
-2 Prerequisites
-***************
-
-The following are the recommended specifications for building on
-Linux; but is not necessarily the only configuration that is possible:
-
- * Intel 32-bit or 64-bit kernel
-
- * Ubuntu 8.0.4, gcc 4.3.0, yasm 0.7.1.2093
-
- * Ubuntu 8.10, gcc 4.3.2, yasm 0.7.1.2093
-
- * Fedora 9, gcc 4.3.0, yasm 0.7.1.2093
-
- * Fedora 10, gcc 4.3.2, yasm 0.7.1.2093
-
- * gcc 4.0.0 or higher is reported to work
-
- Note: It is recommended to use the platform distribution's bundled
- compiler for maximum C++ compatibility. If you build with a custom
- compiler it will likely introduce non-standard runtime
- requirements. There are of course many valid reasons to build with
- unbundled compilers, but be aware it is generally unsupported and
- left as an exercise to the reader.
-
-The following general tools are used on various platforms and it is
-recommended you use these versions or similar:
-
- * subversion - 1.5.5
-
- * python - Python 2.4.6
-
- * curl - curl 7.19.3 (or wget)
-
- * m4 - GNU M4 1.4.6
-
- * make - GNU Make 3.81
-
- * patch - Patch 2.5.8
-
- * tar - GNU tar 1.15.1
-
- * wget - GNU Wget 1.11.4 (or curl)
-
-The GTK UI introduces some significant extra build requirements. If you
-intend to disable building the GUI with `configure --disable-gtk' you
-will not need many of these packages installed:
-
-Ubuntu 8.10 packages:
- * build-essential
-
- * autoconf (gui)
-
- * intltool (gui)
-
- * libtool (gui)
-
- * zlib1g-dev (gui)
-
- * libbz2-dev
-
- * libglib2.0-dev (gui)
-
- * libdbus-glib-1-dev (gui)
-
- * libgtk2.0-dev (gui)
-
- * libhal-dev (gui)
-
- * libhal-storage-dev (gui)
-
- * libgtkhtml3.14-dev (gui)
-
- * libgstreamer0.10-dev (gui)
-
- * libgstreamer-plugins-base0.10-dev (gui)
-
-To install these packages:
- sudo apt-get install subversion yasm build-essential \
- autoconf intltool libtool zlib1g-dev libbz2-dev libglib2.0-dev \
- libdbus-glib-1-dev libgtk2.0-dev libhal-dev libhal-storage-dev \
- libgtkhtml3.14-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
-
-Fedora 10 package groups:
- * Development Tools
-
- * Development Libraries
-
- * X Software Development (gui)
-
- * GNOME Software Development (gui)
-
-To install these package groups:
- sudo yum groupinstall "Development Tools" "Development Libraries" \
- "X Software Development" "GNOME Software Development"
-
-Additional Fedora 10 packages:
- * zlib-devel (gui)
-
- * bzip2-devel
-
- * dbus-glib-devel (gui)
-
- * hal-devel (gui)
-
- * gtkhtml3-devel (gui)
-
- * gstreamer-devel (gui)
-
- * gstreamer-plugins-base-devel (gui)
-
-To install these packages:
- sudo yum install yasm zlib-devel bzip2-devel \
- dbus-glib-devel hal-devel gtkhtml3-devel \
- gstreamer-devel gstreamer-plugins-base-devel
-
-3 QuickStart
-************
-
-This chapter is for building from a terminal/shell environment in as
-few commands as possible. Upon completion of the following commands you
-should have a fresh build of HandBrake. Further instructions are
-available beginning with *Note overview:: which describes procedures
-suitable for repeating builds. This chapter should be skipped by those
-seeking more than a minimalist build.
-
- svn checkout svn://svn.handbrake.fr/HandBrake/trunk hb-trunk
- cd hb-trunk
- ./configure --launch
-
-The special option `--launch' selects launch mode and performs the
-following steps:
-
- * assert scratch directory `build/' does not exist
-
- * create scratch directory `build/'
-
- * change to directory `build/'
-
- * launch `make'
-
- * capture build output to `build/log/build.txt'
-
- * echo build output
-
- * print elapsed time
-
- * indicate if build ultimately succeeded or failed
-
-4 Overview
-**********
-
-Linux builds are performed from a terminal. There is no support for
-building from any IDEs.
-
-5 Building via Terminal
-***********************
-
-5.1 Checkout Sources
-====================
-
-Checkout HandBrake from the official source-code repository.
-
- svn checkout svn://svn.handbrake.fr/HandBrake/trunk hb-trunk
- cd hb-trunk
-
-Sources are checked out from the `trunk' branch. This document was
-generated from that very branch, and for example purposes, we will use
-exactly the same branch.
-
-If you have write-access to the repository, then you may add the
-appropriate login/password information as needed. It is recommended to
-use Subversion 1.5.0 or higher. Lower versions should also work.
-
-5.2 Configure
-=============
-
-Configure the build system.
-
- ./configure
-
-Configure will automatically create a scratch build directory `build'
-unless you use GNU-style build procedures and first `cd' to a directory
-other than top-level source. Additionally you may specify use `--build'
-to specify the directory. The name of the directory is arbitrary but it
-is recommended to use something which indicates transient files which
-are not checked into the repository.
-
-The `configure' utility accepts many options. It is recommended that
-you specify `--help' for the complete list of options. The following
-options are also documented here:
-
-`--help'
- List available options.
-
-`--src=DIR'
- Specify top-level source directory for HandBrake sources.
-
-`--build=DIR'
- Specify destination directory for final product install. The
- default is to use either `build' if in the top-level source
- directory, otherwise `.'
-
-`--prefix=DIR'
- Specify destination directory for final product install. This
- defaults to a reasonable platform-specific value.
-
-`--launch'
- All-in-one option which launches the build and logs output
- automatically. Useful for novices and quickstart procedures.
-
-`--disable-xcode'
- Disable shunting the build through Xcode. If this option is
- applied, `HandBrakeCLI' will be produced in a similare fashion as
- it is on other platforms; sans Xcode. Mac OS X only.
-
-`--disable-gtk'
- Disable building the GTK GUI on applicable platforms such as
- Linux.
-
-`--debug=MODE'
- Select debug mode. Must be one of `none', `min', `std', `max'.
- This generally maps to gcc options `-g0', `-g1', `-g2', `-g3'.
-
-`--optimize=MODE'
- Select optimize mode. Must be one of `none', `speed', `size'.
- This generally maps to gcc options `-g0', `-O0', `-O3', `-Os'.
-
-`--arch=MODE'
- Select build architecture. The available architectures vary by
- platform. Most platforms support exactly one architecture except
- Mac OS X which has support for various universal binary
- architectures. The available choices are hard-coded per platform
- and no sanity checks for the required tools are performed.
-
-
-Clean-room procedures dictate that when certain factors change, old
-builds should be scrapped and new builds configured. This is the main
-reason for requiring a scratch directory; to promote consistent,
-reliable and clean software builds. The following is a short list of
-some of the reasons why someone may choose to scrap an existing build:
-
- * configure with different options
-
- * subversion working dir is updated and you want configure to
- re-evaluate working dir metadata.
-
- * build corruption is suspected
-
-There are generally two methods for scrapping a build. The `build'
-directory can be recusrively removed which has the effect of loosing
-your existing configuration but does guarantee no residuals are left
-behind. The other method is to ask the build system to perform an `make
-xclean'. This is known to work well but will leave empty directories
-behind. However, the configuration is left intact.
-
-5.3 Build
-=========
-
-Build main product. All necessary dependencies are also built if
-required.
-
- make
-
-Parallel builds may optionally be enabled. Be aware that while a
-parallel build may save time on systems with additional cores, the
-output is often mixed, overlapped and sometimes even corrupted with
-binary characters. Thus if you experience a build issue, you should
-clean and redo the build in default serial mode to produce a readable
-log. The following command allows for up to 4 concurrent jobs via make:
-
- make -j4
-
-5.4 Make Targets
-================
-
-The build system supports passing many kinds of targets some of which
-become very useful in normal development cycles. The targets by
-convention are lower-case words passed to `make'. Global targets are
-one-word targets. Scoped targets are usually two-words seperated by a
-period.
-
-5.4.1 Global
-------------
-
-`make'
- Alias for `make build'.
-
-`make build'
- Build main product. All necessary dependencies are also built if
- required.
-
-`make clean'
- Clean all build output excluding contrib modules. Configuration is
- retained.
-
-`make install'
- Perform final product(s) install. This will install build
- products to a standard directory or one specified via `configure
- --prefix' option.
-
-`make uninstall'
- Perform final product(s) uninstall. This will uninstall any
- products which may have been previously installed.
-
-`make xclean'
- Clean all build output including contrib modules. Configuration is
- retained.
-
-`make doc'
- Build auto-generated project documentation. Various articles are
- produced and may be found in `build/doc/articles'.
-
-`make report.help'
- Print list of available makefile vars report targets. These
- reports detail var definitions and expanded values used by the
- build system. For experts only.
-
-`make report.all'
- Convenience target which aggregates all reports. For experts only.
-
-5.4.2 General Modules
----------------------
-
-General modules such as `libhb', `test' and `gtk' have the following
-scoped targets:
-
-`make MODULE.build'
- Build MODULE.
-
-`make MODULE.clean'
- Clean build output for MODULE.
-
-5.4.3 Contrib Modules
----------------------
-
-Contrib modules such as `a52dec', `bzip2', `faac', `faad2', `ffmpeg',
-`lame', `libdca', `libdvdread', `libmkv', `libmp4v2', `libogg',
-`libsamplerate', `libtheora', `libvorbis', `mpeg2dec', `x264',
-`xvidcore' and `zlib' have the following scoped targets:
-
-`make MODULE.fetch'
- Download source tarball from the Internet and save to
- `TOP/downloads' directory. No checksumming is performed.
-
-`make MODULE.extract'
- Extract source tarball into `build' tree.
-
-`make MODULE.patch'
- Apply appropriate patches (if any) to module sources.
-
-`make MODULE.configure'
- Configure module sources. This usually invokes autotool configure.
-
-`make MODULE.build'
- Build module. This usually invokes autotool build.
-
-`make MODULE.install'
- Install module products such as headers and libraries into `build'
- tree. This usually invokes autotool install.
-
-`make MODULE.uninstall'
- Uninstall module products; generally the reverse of install. This
- usually invokes autotool uninstall.
-
-`make MODULE.clean'
- Clean module; generally the reverse of build. This usually
- invokes autotool clean.
-
-`make MODULE.xclean'
- Extra clean module; first invokes uninstall then recursively
- removes the module build directory.
-
-5.4.4 Contrib Touch and Untouch
--------------------------------
-
-Also available are some very granular targets which help force builds
-from specific cycle points. The following targets are available to
-touch and untouch the respective module target; this will force the
-build system to treat the target as satisfied after a touch or
-unsatisfied after an untouch:
-
- * make MODULE.extract.touch
-
- * make MODULE.extract.untouch
-
- * make MODULE.patch.touch
-
- * make MODULE.patch.untouch
-
- * make MODULE.configure.touch
-
- * make MODULE.configure.untouch
-
- * make MODULE.build.touch
-
- * make MODULE.build.untouch
-
- * make MODULE.install.touch
-
- * make MODULE.install.untouch
-
-5.4.5 Contrib Aggregates
-------------------------
-
-For convenience, the following targets aggregate the all contrib
-modules' respective targets together:
-
- * make contrib.fetch
-
- * make contrib.extract
-
- * make contrib.patch
-
- * make contrib.configure
-
- * make contrib.build
-
- * make contrib.install
-
- * make contrib.uninstall
-
- * make contrib.clean
-
- * make contrib.xclean
-
-5.5 Customizing Make
-====================
-
-If the need arises to override settings in the build system
-(essentially gnu-make variables) the recommended method is to create
-optional include files which are automatically included if present and
-follow this naming convention; Do not check these files into the
-respository:
-
-`_SRC_/custom.defs'
- Custom makevar definitions outside `build'. Suitable for settings
- which apply across all builds for a particular checkout; or which
- survives manual removal of `build'.
-
-`_SRC_/custom.rules'
- Custom make rules outside `build'. Suitable for settings which
- apply across all builds for a particular checkout; or which
- survives manual removal of `build'.
-
-`_BUILD_/GNUmakefile.custom.defs'
- Custom makevar definitions specific to a `build' directory.
-
-`_BUILD_/GNUmakefile.custom.rules'
- Custom makevar rules specific to a `build' directory.
-
-
-The purpose is to allow a place to store local build settings for
-testing, tweaking, and experimenting with build configuration without
-losing your settings if `configure' is invoked; ie: `configure' would
-overwrite `GNUmakefile' and any customizations contained therein would
-be lost. Here is a short example of what the contents of
-`_SRC_/custom.defs' might contain:
-
- ## bump to gcc-4.2 in current path
- GCC.gcc = gcc-4.2
-
- ## replace optimize for 'speed' with more agressive settings
- GCC.args.O.speed = -O3 -fomit-frame-pointer -msse4.2
-
-See also `make report.help' which displays a set of reports used to
-dump makefile vars.
-
diff --git a/00-Building.osx.txt b/00-Building.osx.txt
deleted file mode 100644
index 0d91d75a8..000000000
--- a/00-Building.osx.txt
+++ /dev/null
@@ -1,591 +0,0 @@
-Guide to Building HandBrake svn2241 (2009030801) on Mac OS X
-************************************************************
-
-Table of Contents
-*****************
-
-1 Introduction
-2 Prerequisites
-3 QuickStart
-4 Overview
-5 Building via Terminal
- 5.1 Checkout Sources
- 5.2 Configure
- 5.3 Build
- 5.4 Make Targets
- 5.4.1 Global
- 5.4.2 General Modules
- 5.4.3 Contrib Modules
- 5.4.4 Contrib Touch and Untouch
- 5.4.5 Contrib Aggregates
- 5.5 Customizing Make
- 5.6 Universal Binaries
-6 Building via Xcode
- 6.1 Checkout Sources
- 6.2 Build
- 6.3 External Targets
- 6.4 User-Defined Settings
-
-
-1 Introduction
-**************
-
-This guide documents the recommended process to build HandBrake on
-Mac OS X hosts from the official source-code repository. Building from
-any other source is not supported.
-
-2 Prerequisites
-***************
-
-Building on Mac OS X is well supported. It is the reference platform
-for HandBrake. The following are the recommended specifications for
-this platform; but is not necessarily the only configuration that is
-possible:
-
- * Mac Intel hardware
-
- * Mac OS X 10.5.6
-
- * Xcode-3.1.2
-
- * gcc 4.0.1 (Apple Inc. build 5490)
-
- * yasm 0.7.2.2153 (for i386 and x86_64 architectures)
-
- Note: It is recommended to use the platform distribution's bundled
- compiler for maximum C++ compatibility. If you build with a custom
- compiler it will likely introduce non-standard runtime
- requirements. There are of course many valid reasons to build with
- unbundled compilers, but be aware it is generally unsupported and
- left as an exercise to the reader.
-
-The following general tools are used on various platforms and it is
-recommended you use these versions or similar:
-
- * subversion - 1.5.5
-
- * python - Python 2.4.6
-
- * curl - curl 7.19.3 (or wget)
-
- * m4 - GNU M4 1.4.6
-
- * make - GNU Make 3.81
-
- * patch - Patch 2.5.8
-
- * tar - GNU tar 1.15.1
-
- * wget - GNU Wget 1.11.4 (or curl)
-
-3 QuickStart
-************
-
-This chapter is for building from a terminal/shell environment in as
-few commands as possible. Upon completion of the following commands you
-should have a fresh build of HandBrake. Further instructions are
-available beginning with *Note overview:: which describes procedures
-suitable for repeating builds. This chapter should be skipped by those
-seeking more than a minimalist build.
-
- svn checkout svn://svn.handbrake.fr/HandBrake/trunk hb-trunk
- cd hb-trunk
- ./configure --launch
-
-The special option `--launch' selects launch mode and performs the
-following steps:
-
- * assert scratch directory `build/' does not exist
-
- * create scratch directory `build/'
-
- * change to directory `build/'
-
- * launch `make'
-
- * capture build output to `build/log/build.txt'
-
- * echo build output
-
- * print elapsed time
-
- * indicate if build ultimately succeeded or failed
-
-4 Overview
-**********
-
-The two general methods to build on Mac OS X are building from terminal
-or Xcode. The preferred method for automated and repeatable builds is
-to use the terminal. Otherwise the choice is generally up to the
-individual. In essence, the terminal actually invokes `xcodebuild' to
-build the very same targets contained in the Xcode project.
-
-5 Building via Terminal
-***********************
-
-5.1 Checkout Sources
-====================
-
-Checkout HandBrake from the official source-code repository.
-
- svn checkout svn://svn.handbrake.fr/HandBrake/trunk hb-trunk
- cd hb-trunk
-
-Sources are checked out from the `trunk' branch. This document was
-generated from that very branch, and for example purposes, we will use
-exactly the same branch.
-
-If you have write-access to the repository, then you may add the
-appropriate login/password information as needed. It is recommended to
-use Subversion 1.5.0 or higher. Lower versions should also work.
-
-5.2 Configure
-=============
-
-Configure the build system.
-
- ./configure
-
-Configure will automatically create a scratch build directory `build'
-unless you use GNU-style build procedures and first `cd' to a directory
-other than top-level source. Additionally you may specify use `--build'
-to specify the directory. The name of the directory is arbitrary but it
-is recommended to use something which indicates transient files which
-are not checked into the repository.
-
-The `configure' utility accepts many options. It is recommended that
-you specify `--help' for the complete list of options. The following
-options are also documented here:
-
-`--help'
- List available options.
-
-`--src=DIR'
- Specify top-level source directory for HandBrake sources.
-
-`--build=DIR'
- Specify destination directory for final product install. The
- default is to use either `build' if in the top-level source
- directory, otherwise `.'
-
-`--prefix=DIR'
- Specify destination directory for final product install. This
- defaults to a reasonable platform-specific value.
-
-`--launch'
- All-in-one option which launches the build and logs output
- automatically. Useful for novices and quickstart procedures.
-
-`--disable-xcode'
- Disable shunting the build through Xcode. If this option is
- applied, `HandBrakeCLI' will be produced in a similare fashion as
- it is on other platforms; sans Xcode. Mac OS X only.
-
-`--disable-gtk'
- Disable building the GTK GUI on applicable platforms such as
- Linux.
-
-`--debug=MODE'
- Select debug mode. Must be one of `none', `min', `std', `max'.
- This generally maps to gcc options `-g0', `-g1', `-g2', `-g3'.
-
-`--optimize=MODE'
- Select optimize mode. Must be one of `none', `speed', `size'.
- This generally maps to gcc options `-g0', `-O0', `-O3', `-Os'.
-
-`--arch=MODE'
- Select build architecture. The available architectures vary by
- platform. Most platforms support exactly one architecture except
- Mac OS X which has support for various universal binary
- architectures. The available choices are hard-coded per platform
- and no sanity checks for the required tools are performed.
-
-
-Clean-room procedures dictate that when certain factors change, old
-builds should be scrapped and new builds configured. This is the main
-reason for requiring a scratch directory; to promote consistent,
-reliable and clean software builds. The following is a short list of
-some of the reasons why someone may choose to scrap an existing build:
-
- * configure with different options
-
- * subversion working dir is updated and you want configure to
- re-evaluate working dir metadata.
-
- * build corruption is suspected
-
-There are generally two methods for scrapping a build. The `build'
-directory can be recusrively removed which has the effect of loosing
-your existing configuration but does guarantee no residuals are left
-behind. The other method is to ask the build system to perform an `make
-xclean'. This is known to work well but will leave empty directories
-behind. However, the configuration is left intact.
-
-5.3 Build
-=========
-
-Build main product. All necessary dependencies are also built if
-required.
-
- make
-
-Parallel builds may optionally be enabled. Be aware that while a
-parallel build may save time on systems with additional cores, the
-output is often mixed, overlapped and sometimes even corrupted with
-binary characters. Thus if you experience a build issue, you should
-clean and redo the build in default serial mode to produce a readable
-log. The following command allows for up to 4 concurrent jobs via make:
-
- make -j4
-
-5.4 Make Targets
-================
-
-The build system supports passing many kinds of targets some of which
-become very useful in normal development cycles. The targets by
-convention are lower-case words passed to `make'. Global targets are
-one-word targets. Scoped targets are usually two-words seperated by a
-period.
-
-5.4.1 Global
-------------
-
-`make'
- Alias for `make build'.
-
-`make build'
- Build main product. All necessary dependencies are also built if
- required.
-
-`make clean'
- Clean all build output excluding contrib modules. Configuration is
- retained.
-
-`make install'
- Perform final product(s) install. This will install build
- products to a standard directory or one specified via `configure
- --prefix' option.
-
-`make uninstall'
- Perform final product(s) uninstall. This will uninstall any
- products which may have been previously installed.
-
-`make xclean'
- Clean all build output including contrib modules. Configuration is
- retained.
-
-`make doc'
- Build auto-generated project documentation. Various articles are
- produced and may be found in `build/doc/articles'.
-
-`make report.help'
- Print list of available makefile vars report targets. These
- reports detail var definitions and expanded values used by the
- build system. For experts only.
-
-`make report.all'
- Convenience target which aggregates all reports. For experts only.
-
-5.4.2 General Modules
----------------------
-
-General modules such as `libhb', `test' and `gtk' have the following
-scoped targets:
-
-`make MODULE.build'
- Build MODULE.
-
-`make MODULE.clean'
- Clean build output for MODULE.
-
-5.4.3 Contrib Modules
----------------------
-
-Contrib modules such as `a52dec', `bzip2', `faac', `faad2', `ffmpeg',
-`lame', `libdca', `libdvdread', `libmkv', `libmp4v2', `libogg',
-`libsamplerate', `libtheora', `libvorbis', `mpeg2dec', `x264',
-`xvidcore' and `zlib' have the following scoped targets:
-
-`make MODULE.fetch'
- Download source tarball from the Internet and save to
- `TOP/downloads' directory. No checksumming is performed.
-
-`make MODULE.extract'
- Extract source tarball into `build' tree.
-
-`make MODULE.patch'
- Apply appropriate patches (if any) to module sources.
-
-`make MODULE.configure'
- Configure module sources. This usually invokes autotool configure.
-
-`make MODULE.build'
- Build module. This usually invokes autotool build.
-
-`make MODULE.install'
- Install module products such as headers and libraries into `build'
- tree. This usually invokes autotool install.
-
-`make MODULE.uninstall'
- Uninstall module products; generally the reverse of install. This
- usually invokes autotool uninstall.
-
-`make MODULE.clean'
- Clean module; generally the reverse of build. This usually
- invokes autotool clean.
-
-`make MODULE.xclean'
- Extra clean module; first invokes uninstall then recursively
- removes the module build directory.
-
-5.4.4 Contrib Touch and Untouch
--------------------------------
-
-Also available are some very granular targets which help force builds
-from specific cycle points. The following targets are available to
-touch and untouch the respective module target; this will force the
-build system to treat the target as satisfied after a touch or
-unsatisfied after an untouch:
-
- * make MODULE.extract.touch
-
- * make MODULE.extract.untouch
-
- * make MODULE.patch.touch
-
- * make MODULE.patch.untouch
-
- * make MODULE.configure.touch
-
- * make MODULE.configure.untouch
-
- * make MODULE.build.touch
-
- * make MODULE.build.untouch
-
- * make MODULE.install.touch
-
- * make MODULE.install.untouch
-
-5.4.5 Contrib Aggregates
-------------------------
-
-For convenience, the following targets aggregate the all contrib
-modules' respective targets together:
-
- * make contrib.fetch
-
- * make contrib.extract
-
- * make contrib.patch
-
- * make contrib.configure
-
- * make contrib.build
-
- * make contrib.install
-
- * make contrib.uninstall
-
- * make contrib.clean
-
- * make contrib.xclean
-
-5.5 Customizing Make
-====================
-
-If the need arises to override settings in the build system
-(essentially gnu-make variables) the recommended method is to create
-optional include files which are automatically included if present and
-follow this naming convention; Do not check these files into the
-respository:
-
-`_SRC_/custom.defs'
- Custom makevar definitions outside `build'. Suitable for settings
- which apply across all builds for a particular checkout; or which
- survives manual removal of `build'.
-
-`_SRC_/custom.rules'
- Custom make rules outside `build'. Suitable for settings which
- apply across all builds for a particular checkout; or which
- survives manual removal of `build'.
-
-`_BUILD_/GNUmakefile.custom.defs'
- Custom makevar definitions specific to a `build' directory.
-
-`_BUILD_/GNUmakefile.custom.rules'
- Custom makevar rules specific to a `build' directory.
-
-
-The purpose is to allow a place to store local build settings for
-testing, tweaking, and experimenting with build configuration without
-losing your settings if `configure' is invoked; ie: `configure' would
-overwrite `GNUmakefile' and any customizations contained therein would
-be lost. Here is a short example of what the contents of
-`_SRC_/custom.defs' might contain:
-
- ## bump to gcc-4.2 in current path
- GCC.gcc = gcc-4.2
-
- ## replace optimize for 'speed' with more agressive settings
- GCC.args.O.speed = -O3 -fomit-frame-pointer -msse4.2
-
-See also `make report.help' which displays a set of reports used to
-dump makefile vars.
-
-5.6 Universal Binaries
-======================
-
-This section outlines convenience procedures for creating Universal
-Binaries for all the architectures.
-
- Note: The dummy (container) build configuration uses
- `--disable-xcode'; but the nested architecture builds will all
- make full use of Xcode.
-
-Create a dummy (container) build configuration and use it to launch a
-nested-build for each architecture serially; optionally you may
-substitute `make ub.build.serial' for `make ub.build.parallel' if your
-machine has the horsepower:
-
- ./configure --disable-xcode
- cd build/
- make ub.build.serial
- make ub.combine
-
-To specify a subset of architectures to be built first create/edit
-`_SRC_/custom.defs' with the following override to build UB for `i386'
-and `x86_64' before invoking `make':
-
- ## prefer i386 (order is important)
- UB.archs = i386 x86_64
-
-6 Building via Xcode
-********************
-
-6.1 Checkout Sources
-====================
-
-Checkout HandBrake from the official source-code repository.
-
- svn checkout svn://svn.handbrake.fr/HandBrake/trunk hb-trunk
- cd hb-trunk
-
-Sources are checked out from the `trunk' branch. This document was
-generated from that very branch, and for example purposes, we will use
-exactly the same branch.
-
-If you have write-access to the repository, then you may add the
-appropriate login/password information as needed. It is recommended to
-use Subversion 1.5.0 or higher. Lower versions should also work.
-
-6.2 Build
-=========
-
-In Xcode perform the following steps to build the default configuration:
-
- * open `macosx/HandBrake.xcodeproj'
-
- * select active configuration standard
-
- * select active target HandBrake
-
- * click Build or Build and Go
-
-The first build (on an empty `build' directory) will take a bit of
-time. You may use the Build Results window to observe progress. The
-most time-consuming part of the build is when the external build system
-(essentially the terminal method) is triggered by Xcode and a
-substantial amount of log transcript ensues. Much of that transcript
-are warnings and errors that are part of the normal build process for
-3rd-party contributed modules so in general you need not do anything.
-However, if Xcode itself reports the build failed, then you must take
-corrective action.
-
-Unfortunately, due to limitations of Xcode we do not have hooks in
-place to offer finer-grained control over per-module make actions for
-the (external) build system. Thus, you will have to use terminal to
-accomplish those tasks. Just `cd' into the build directory which is
-associated with your active configuration and perform any necessary
-`make' commands. Be careful not to issue commands from the terminal
-simultaneously with Xcode tasks as that will confuse both Xcode and
-make and likely corrupt your build directory.
-
-When you click clean in Xcode it will not perform an external build
-clean. Basically HandBrakeCLI and HandBrake.app are the only products
-which have full Xcode iterative development flexibility.
-
-Each configuration uses a different `build' directory. This makes it
-possible to build each configuration and switch between them without
-losing their respective build state. The description of each
-configuration and the name convention for build directories are as
-follows:
-
-`standard'
- This configuration will build to the host native architecture.
- Build directory is `build.standard' . The standard variant
- produces optimized code without debug information.
-
-`debug'
- This configuration will build to the host native architecture.
- Build directory is `build.standard' . The debug variant produces
- unoptimized code with debug information.
-
-`standard.i386'
- This configuration is used to build for the i386 architecture.
- Build directory is `build.standard.i386' .
-
-`standard.x86_64'
- This configuration is used to build for the x86_64 architecture.
- Build directory is `build.standard.x86_64' .
-
-`standard.ppc'
- This configuration is used to build for the ppc architecture.
- Build directory is `build.standard.ppc' .
-
-`standard.ppc64'
- This configuration is used to build for the ppc64 architecture.
- Build directory is `build.standard.ppc64' .
-
-6.3 External Targets
-====================
-
-The following external targets appear in the Xcode project and perform
-build and clean actions.
-
-`external'
- Target maps to `make build' and `make clean' for everything Xcode
- products depend upon from the external build system.
-
-`libhb'
- Target maps to `make libhb.build' and `make libhb.clean'.
-
-`contrib'
- Target maps to `make contrib.build' and `make contrib.xclean'.
-
-
-6.4 User-Defined Settings
-=========================
-
-The following user defined settings are used in Xcode project for the
-external build system:
-
-`EXTERNAL_BUILD'
- Specifies the build (scratch) directory for each configuration.
-
-`EXTERNAL_JOBS'
- Specifies the concurrency factor for the external build system
- when builds are launched from within Xcode. Modify for faster
- external builds if your system has the horsepower and resources.
- Specifying a value greater than the number of CPU cores (or
- virtual cores) in your system is unlikely to produce gains and
- will needlessly consume extra resources.
-
-`EXTERNAL_METHOD'
- Do not modify; Used for internal/external build coordination and
- must always be `xcode'.
-
-`EXTERNAL_SRC'
- Specifies the top-level source directory for HandBrake.
-
-
diff --git a/doc/module.defs b/doc/module.defs
index 84d924ab7..8047022bd 100644
--- a/doc/module.defs
+++ b/doc/module.defs
@@ -46,21 +46,3 @@ MAKEINFO = $(MAKEINFO.exe) $(MAKEINFO.flags) $(MAKEINFO.flags.$(1)) $
XML2WIKI.exe = python3.0 $(DOC.in/)xml2wiki.py
XML2WIKI.flags = --toc
XML2WIKI = $(XML2WIKI.exe) $(XML2WIKI.flags) $(1) > $(2)
-
-###############################################################################
-
-## This section is for generating wiki docs and posting them to:
-##
-## [REPOSITORY]/wiki/[VERSION]
-##
-## which in turn is hosted by trac export webserver:
-##
-## http://[TRACSERVER]/HEAD/wiki/[VERSION]
-##
-
-WIKI.out/ = $(BUILD/)wiki/
-WIKI.out.version/ = $(WIKI.out/)$(HB.repo.branch)/
-
-WIKI.repo.url = $(HB.repo.root)/wiki
-
-BUILD.out += $(WIKI.out.version/)
diff --git a/doc/module.rules b/doc/module.rules
index cc451241f..ac30a2a55 100644
--- a/doc/module.rules
+++ b/doc/module.rules
@@ -33,40 +33,3 @@ $(DOC.m4.out): $(DOC.out/)%: $(DOC.in/)%.m4
$(call DOC.M4,$@,$<)
clean: doc.clean
-
-###############################################################################
-
-#.PHONY: wiki.post wiki.sync wiki.rm wiki.add wiki.propset wiki.clean
-
-## main target
-wiki.post: $(WIKI.out/) wiki.sync wiki.rm wiki.add wiki.propset
-
-$(WIKI.out/):
- svn co --depth immediates $(WIKI.repo.url) $@
- svn update --set-depth infinity $(WIKI.out.version/)
-
-## cleanup after post
-wiki.clean:
- $(RM.exe) -fr $(WIKI.out/)
-
-wiki.sync: | $(WIKI.out.version/)
-wiki.sync: $(DOC.xml2wiki.out)
- rsync -vrptPL --delete $^ $(WIKI.out.version/)
-
-wiki.rm:
- @files=`svn status $(WIKI.out.version/) | grep '^!' | awk '{ print $$2 }'`; \
- if [ -n "$$files" ]; then \
- svn rm $$files; \
- fi
-
-wiki.add:
- @files=`svn status $(WIKI.out.version/) | grep '^?' | awk '{ print $$2 }'`; \
- if [ -n "$$files" ]; then \
- svn add $$files; \
- fi
-
-wiki.propset:
- find $(WIKI.out.version/) -type f -a -name "*.wiki" -print0 \
- | xargs -0 svn propset svn:eol-style LF
- find $(WIKI.out.version/) -type f -a -name "*.wiki" -print0 \
- | xargs -0 svn propset svn:mime-type "text/x-trac-wiki"
diff --git a/doc/texi/Building.cygwin.texi b/doc/texi/Building.cygwin.texi
index a2fda9ab3..643a591ee 100644
--- a/doc/texi/Building.cygwin.texi
+++ b/doc/texi/Building.cygwin.texi
@@ -42,4 +42,6 @@ As of this writing, @value{OS.cygwin} has available to it several versions of gc
@chapter Overview
@value{OS.cygwin} builds are performed from a @b{terminal}. There is no support for building from any IDEs.
+@c %**-------------------------------------------------------------------------
@include building/chapter.via.terminal.texi
+@include building/appendix.repo.texi
diff --git a/doc/texi/Building.linux.texi b/doc/texi/Building.linux.texi
index 0e89a2277..aac1c266d 100644
--- a/doc/texi/Building.linux.texi
+++ b/doc/texi/Building.linux.texi
@@ -98,4 +98,6 @@ gstreamer-devel gstreamer-plugins-base-devel
@chapter Overview
@value{OS.linux} builds are performed from a @b{terminal}. There is no support for building from any IDEs.
+@c %**-------------------------------------------------------------------------
@include building/chapter.via.terminal.texi
+@include building/appendix.repo.texi