Provided by: dpkg-cross_1.26_all
cross-compile — Configuration for dpkg-cross and relatives
This file defines some settings for dpkg-cross, and the multi-
architecture extensions of dpkg-buildpackage and dpkg-shlibdeps, also
provided by the dpkg-cross package.
This file may be located either in user’s home directory or system
wide. User path is $HOME/.dpkg-cross/cross-compile, system path is
Comments start with a ’#’ and continue to the end of the line. They are
allowed only on their own lines, not after variable definitions.
Variable definitions have the general form
varname = value
Values on the right side can contain references to other variables or
to environment variables (with lower precedence) in the form
‘‘$(VARIABLE)’’. The referred name must be all uppercase, whereas names
in definitions are all lowercase. Recursive references are not allowed.
‘‘$(ARCH)’’ can always be used, and is set automatically to the
architecture for which compiling is done.
In the first package-independent part of the file, the following
variables can be defined:
default_arch (default: none)
If not other specified this architecture is used for dpkg-
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.
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
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
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 original native package depends on packages like
xfree86-common or gpm, that are of no value for cross-
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.
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
doesn’t 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.
Second part of the file is started by a line that ends with a colon.
In this part additional variables may be defined for dpkg-buildpackage
wrapper. This feature is meant for your convenience: Packages can
refer to unusual Makefile variables for the tools to use, and with a
package-specific section you can tell dpkg-buildpackage about those
variables, so that you don’t need to set them manually each time.
Variables may be defined in two scopes - makeflags and environment.
Variables defined in makeflags scope are put into ‘‘MAKEFLAGS’’
environment variable. Variables defined in environment scope become
separate environment variables.
Default scope is makeflags. Scope is changed to environment after
line, and restored to makeflags after
line. Note colons at the end of those lines.
Variables may be defined both globally and on per-package basis. This
is controled by
lines. If NAME is ‘‘all’’, subsequent definitions will be global,
otherwise - local for package NAME.
Note: Backward compatiblity
For compatability with older format of cross-compile file,
‘‘package’’ keyword may be ommited. Also note colon at the end
of the line.
It is possible to define several sets of variables for different use
cases. For example, one set may be used for emdebian-style package
builds, another for normal package cross-compiling. This is implemented
using mode concept.
Any definitions after a
line are valid only for mode NAME. To choose mode, use -M switch of
dpkg-buildpackage wrapper. Only variables defined for the chosen mode
will be set, others will be ignored. If no -M switch is given, mode
default is assumed.
There is a special mode named ‘‘all’’. Variables defined for this mode
are set always, in addition to mode-specific settings. This is the mode
for the variables defined before the first mode NAME: line.
Second part of configuration file may be used not only to set
variables, but also to unset previously set variables. Syntax to unset
Current package, mode and scope affect variable unsetting in the same
way as they affect variable setting.
Variables set by default, such as CC or LD, also may be unset. This may
be useful if build scripts of some package get confused by environment
created by dpkg-cross by default.
dpkg-cross(1), cross-compile(5), /usr/share/doc/dpkg-
Roman Hodek <firstname.lastname@example.org>
$Revision: 1.11 $
Copyright © 1997 Roman Hodek
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.