diff options
author | konablend <[email protected]> | 2009-03-08 22:50:57 +0000 |
---|---|---|
committer | konablend <[email protected]> | 2009-03-08 22:50:57 +0000 |
commit | 083ba4898a662cd50a86d2a65ca5ebe765fe882d (patch) | |
tree | c2460805275e7b23dd03965df15beecc7ac4589b /00-Building.linux.txt | |
parent | 92d511d944b059caaf6c5e85fcb5202642aa4553 (diff) |
BuildSystem: general, configure and Xcode updates.
*** NOTICE:
This changeset requires a clean build directory. Please issue 'make xclean' inside
build dir(s) after 'svn up'. This will help ensure there are no unexpected results.
*** GENERAL:
- renamed makevar PROJECT/ -> SRC/ for clarity.
- renamed makevar PREFIX.install/ -> PREFIX/ for clarity.
- split custom GNUmakefile overrides into defs/rules files.
- inserted optional level of make customization at SRC/ level; see docs.
- dropped HB.repo.wcversion (svnversion is no longer used).
- corrected several 'rm' usages to use -f flag which avoids some build errors.
- refreshed generated 00-Building.*.txt docs; work still in progress on the wiki front.
*** CONFIGURE:
- made configure more robust; configure may now be run outside of build directory!
- adding log recording of configure activities.
- improved readability of default options for configure
- added:
--force overwrite existing build config
--src=DIR specify top-level source dir [.]
--build=DIR specify build scratch/output dir [.]
--prefix=DIR specify install dir for products [/Applications]
- dropped --launch-force (replaced by --force)
- dropped --launch-dir (replaced by --build)
- dropped --launch-log
*** XCODE:
- renamed pbxproj definition EXTERNAL_PROJECT -> EXTERNAL_SRC for clarity.
- fixed all configurations to default to EXTERNAL_JOBS=1 .
- enabled Xcode internal parallelization (libhb, HandBrakeCLI and HandBrake benefit).
- make now tickles Xcode build files to cause Info.plist regeneration and posting to HandBrake.app output;
ie: svn up; click build and HandBrake.app's about panel will reflect the new repository rev.
*** DARWIN:
- added support to build universal binaries; see docs.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2242 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to '00-Building.linux.txt')
-rw-r--r-- | 00-Building.linux.txt | 139 |
1 files changed, 106 insertions, 33 deletions
diff --git a/00-Building.linux.txt b/00-Building.linux.txt index ae6158e96..955e4cd4a 100644 --- a/00-Building.linux.txt +++ b/00-Building.linux.txt @@ -1,4 +1,4 @@ -Guide to Building HandBrake svn2213 (2009030301) on Linux +Guide to Building HandBrake svn2241 (2009030801) on Linux ********************************************************* Table of Contents @@ -16,7 +16,8 @@ Table of Contents 5.4.1 Global 5.4.2 General Modules 5.4.3 Contrib Modules - 5.4.4 Contrib Aggregates + 5.4.4 Contrib Touch and Untouch + 5.4.5 Contrib Aggregates 5.5 Customizing Make @@ -147,14 +148,17 @@ To install these packages: ************ This chapter is for building from a terminal/shell environment in as -few commands as possible. If more flexibility is required you should -skip this chapter and jump to *Note overview::. +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' selected launch mode and performs the +The special option `--launch' selects launch mode and performs the following steps: * assert scratch directory `build/' does not exist @@ -165,10 +169,14 @@ following steps: * launch `make' - * capture build output to `build/log.txt' + * capture build output to `build/log/build.txt' * echo build output + * print elapsed time + + * indicate if build ultimately succeeded or failed + 4 Overview ********** @@ -199,16 +207,14 @@ use Subversion 1.5.0 or higher. Lower versions should also work. Configure the build system. - rm -fr build/ - mkdir build/ - cd build/ - ../configure + ./configure -Create a scratch directory which will contain all files created during -the build process. The directory name is arbitrary but we recommend -something simple and descriptive. One directory is required for each -distinctly configured build. We name our directory `build' for example -purposes. +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 @@ -217,14 +223,26 @@ options are also documented here: `--help' List available options. -`--prefix=PREFIX' +`--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 driving the build through Xcode. If this option is - disabled only `HandBrakeCLI' will be produced and Xcode will not - be invoked. Mac OS X only. + 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 @@ -245,10 +263,6 @@ options are also documented here: architectures. The available choices are hard-coded per platform and no sanity checks for the required tools are performed. -`--gcc=EXE' - Specify the `gcc' executable to use where EXE is the executable - name which is either absolute or environment `PATH' is searched - accordingly. Clean-room procedures dictate that when certain factors change, old builds should be scrapped and new builds configured. This is the main @@ -327,6 +341,14 @@ period. 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 --------------------- @@ -379,7 +401,36 @@ Contrib modules such as `a52dec', `bzip2', `faac', `faad2', `ffmpeg', Extra clean module; first invokes uninstall then recursively removes the module build directory. -5.4.4 Contrib Aggregates +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 @@ -407,15 +458,34 @@ modules' respective targets together: ==================== If the need arises to override settings in the build system -(essentially gnu-make variables) the recommended method is to -create/edit the optional include file `build/GNUmakefile.custom' which -sits adjacent to the top-level makefile. Do not check this file into -the respository. The sole 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 `build/GNUmakefile.custom' might contain: +(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 @@ -423,3 +493,6 @@ contents of `build/GNUmakefile.custom' might contain: ## 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. + |