cross-compile

Langue: en

Version: 327197 (ubuntu - 08/07/09)

Section: 5 (Format de fichier)

NAME

cross-compile --- Configuration for dpkg-cross and relatives

DESCRIPTION

This file defines some settings for dpkg-cross but many values are unused in the general case.

Settings in the system path file /etc/dpkg-cross/cross-compile can be overridden by an optional file in your home directory: $HOME/.dpkg-cross/cross-compile.
 

The configuration file syntax has been significantly relaxed since version 1.39. Comments start with a '#' and continue to the end of the line. Comments are allowed on their own lines or after variable definitions. Variable definitions have the general form:
 


varname = value
 

 

Prior to v2.0.0, dpkg-cross diverted dpkg-buildpackage and dpkg-shlibdeps from dpkg-dev and used lots of settings in this file to modify that behaviour. In v2.0.0, these diversions have been removed and the main elements of the diversions implemented in dpkg-dev itself. The old diversion scripts are retained in dpkg-cross but are no longer called in normal usage. Settings that are affected by this change are listed in the "Legacy" section.
 

Scripts using the Debian::DpkgCross module can define their own options to be set in this file and are free to use the existing settings in any suitable way. All options are available via the read_config function in the module.
 

The following variables are recognised by default by dpkg-cross and can be specified in any order. Only default_arch is used routinely.

default_arch (default: none)
The default architecture for dpkg-cross is normally set by debconf. To change the system-wide value, use
$ sudo dpkg-reconfigure dpkg-cross
Alternatively, the default can be overridden on a per-user basis using the optional file in $HOME/.dpkg-cross/.
 
crossbase (default: /usr)
This is the path prefix for all other cross compiling paths below. It is used in their default definition, but a user definition need not necessarily use it.
crossdir (default: $(CROSSBASE)/$(DEB_HOST_GNU_TYPE))
This is the base directory for a specific architecture.
crossbin (default: $(CROSSDIR)/bin)
This directory contains binaries for cross compiling (gcc, as, ld, ...). It's mainly intended for refering to, but dpkg-shlibdeps also uses it as one alternative to locate a objdump that can parse objects of the architecture in question.
crosslib (default: $(CROSSDIR)/lib or $(CROSSROOT)/lib, resp.)
This directory contains libraries and other linker support files (e.g. crt1.o) for cross compiling. The setting is used by dpkg-cross as place where to install files from usual /lib, /usr/lib, and /usr/X11R6/lib. Also dpkg-shlibdeps expects target arch libraries in this directory. This is specially important if ``$(CROSSROOT)'' is defined.
crosslib64 (default: $(CROSSLIB)64)
On targets that have both 32bit and 64bit variants, this directory contains 64bit versions of libraries and other linker support files. This setting is used by dpkg-cross as place where to install files from /lib64, /usr/lib64, and /usr/X11R6/lib64. Note that this setting is NOT used for 64bit-only targets (such as ``ia64'').
crossinc (default: $(CROSSDIR)/include)
This directory contains headers for cross compiling. The setting is used by dpkg-cross as place where to install files from usual /usr/include and /usr/X11R6/include. Unused if ``$(CROSSROOT)'' is defined.
crossprefix (default: $(CPU)-$(OS)-)
This is the prefix for cross compiling binaries, like gcc. The default naming is GNU convention, e.g. you could have m68k-linux-gcc in your PATH. It is mainly intended for refering to, but dpkg-shlibdeps also uses it as one alternative to locate a objdump that can parse objects of the architecture in question (it tries ``$(CROSSPREFIX)objdump'').
removedeps
This variable defines comma-separated list of package names that should be removed from any dependency fields (Depends:, Conflicts:, etc) of the generated packages. This is useful when the original native package depends on packages like xfree86-common or gpm, that are of no value for cross-compilation.
 
This option has been largely superceded by the -X|--exclude support in dpkg-cross itself.
 
keepdeps
This variable defines comma-separated list of package names that should be kept as is, without adding -arch-cross suffix, in all dependency fields (Depends:, Conflicts:, etc) of the generated packages. This is useful for packages like bison, when host version of package can satisfy the dependency.
This option has been largely superceded by the -X|--exclude support in dpkg-cross itself.
 

Legacy options

Other values previously used in this file are now largely legacy code that are retained for use with the old scripts from /usr/share/dpkg-cross/.
 

crossroot-arch (default: none)
If arch matches the current target architecture (selected by a -a option), then this definition of ``$(CROSSROOT)'' will take place. It tells dpkg-cross that there is a complete Debian installation for the target arch mounted somewhere, in the path which is the value of the definition. If a ``$(CROSSROOT)'' definition is active, some of the other variables change their meaning. For a complete description, best refer to /usr/share/doc/dpkg-cross/README.Debian.gz.
compilerpath (default: /bin:/usr/bin)
This variable defines colon-separated list of directories where gccross search for compilers.

The variables ``$(CPU)'' and ``$(OS)'' mentioned above sometimes are derived from the current target architecture ``$(ARCH)''. If that one does not contain a dash ('-'), it's assumed to be ``$(CPU)'' and ``$(OS)'' to be ``linux''. However, if the architecture string starts with ``hurd-'' or end in ``-gnu'', the ``$(OS)'' part will be ``gnu'', the ``$(CPU)'' the rest before or after the OS.

Additional variables may be defined for the legacy dpkg-buildpackage wrapper.

Important: Makeflags are disabled in 2.0.0

The old behaviour of overriding all MAKEFLAGS within a build has been abandoned. MAKEFLAGS should not be overridden as it compromises the intended behaviour of dpkg-cross by preventing build tools from being compiled with the native compiler, causing builds to fail when the executable is run after being compiled under the cross-compiler as dictated by the incorrect MAKEFLAGS. Packages that cross-built with MAKEFLAGS but which fail to cross-build without it should be patched.
 

Old style 'environment' variables can still be set using the same syntax as all other variables in the file and can be exported to the environment when using the legacy scripts. This is a change from previous behaviour.

VARIABLE UNSETTING

Unlike previous versions, any variable can be unset in the same file or in the user-specific file after being set in the system file. Simply provide an empty value.
 

FILES

$HOME/.dpkg-cross/cross-compile, /etc/dpkg-cross/cross-compile

SEE ALSO

dpkg-cross(1), Debian::DpkgCross(3), cross-compile(5), /usr/share/doc/dpkg-cross/README.Debian.gz

AUTHOR

Roman Hodek <debian-embedded@lists.debian.org>

Neil Williams <codehelp@debian.org>

VERSION

$Revision: 2.0.0

Copyright © 2007 Roman Hodek <debian-embedded@lists.debian.org>

Copyright © 2007 Neil Williams <codehelp@debian.org>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.