use strict;
use Debian::Debhelper::Dh_Lib;
use Debian::Debhelper::Dh_Buildsystems;
+use File::Spec;
use Cwd;
=head1 SYNOPSIS
=head1 DESCRIPTION
-dh_auto_install is a debhelper program that tries to automatically install
+B<dh_auto_install> is a debhelper program that tries to automatically install
built files. It does so by running the appropriate command for the build
-system it detects the package uses. For example, if there's a Makefile and
-it contains a "install" target, then this is done by running make (or MAKE,
-if the environment variable is set). If there is a setup.py or Build.PL,
-it is used.
-
-The files are installed into debian/<package>/ if there is only one binary
-package. In the multiple binary package case, the files are instead
-installed into debian/tmp/, and should be moved from there to the
-appropriate package build directory using L<dh_install(1)>.
-
-DESTDIR is used to tell make where to install the files.
-If the Makefile was generated by MakeMaker from a Makefile.PL, it will
-automatically set PREFIX=/usr too, since such Makefiles need that.
+system it detects the package uses. For example, if there's a F<Makefile> and
+it contains a B<install> target, then this is done by running B<make> (or B<MAKE>,
+if the environment variable is set). If there is a F<setup.py> or F<Build.PL>,
+it is used. Note that the Ant build system does not support installation,
+so B<dh_auto_install> will not install files built using Ant.
+
+Unless B<--destdir> option is specified, the files are installed into
+debian/I<package>/ if there is only one binary package. In the multiple binary
+package case, the files are instead installed into F<debian/tmp/>, and should be
+moved from there to the appropriate package build directory using
+L<dh_install(1)>.
+
+B<DESTDIR> is used to tell make where to install the files.
+If the Makefile was generated by MakeMaker from a F<Makefile.PL>, it will
+automatically set B<PREFIX=/usr> too, since such Makefiles need that.
This is intended to work for about 90% of packages. If it doesn't work, or
tries to use the wrong install target, you're encouraged to skip using
-dh_auto_install at all, and just run make install manually.
+B<dh_auto_install> at all, and just run make install manually.
=head1 OPTIONS
+See L<debhelper(7)/B<BUILD SYSTEM OPTIONS>> for a list of common build
+system selection and control options.
+
=over 4
-See L<debhelper(7)/BUILD SYSTEM OPTIONS> for a list of common build
-system selection and control options.
+=item B<--destdir=>I<directory>
+
+Install files into the specified I<directory>. If this option is not specified,
+destination directory is determined automatically as described in the
+L</B<DESCRIPTION>> section.
=item B<--> I<params>
-Pass "params" to the program that is run. These can be used to supplement
-or override the any standard parameters that dh_auto_install passes.
+Pass I<params> to the program that is run, after the parameters that
+B<dh_auto_install> usually passes.
=back
=cut
-buildsystems_init();
-
my $destdir;
-my @allpackages=getpackages();
-if (@allpackages > 1) {
- $destdir="debian/tmp";
-}
-else {
- $destdir=tmpdir($dh{MAINPACKAGE});
+
+buildsystems_init(options => {
+ "destdir=s" => \$destdir,
+});
+
+# If destdir is not specified, determine it automatically
+if (!$destdir) {
+ my @allpackages=getpackages();
+ if (@allpackages > 1) {
+ $destdir="debian/tmp";
+ }
+ else {
+ $destdir=tmpdir($dh{MAINPACKAGE});
+ }
}
-$destdir=cwd()."/".$destdir;
+$destdir = File::Spec->rel2abs($destdir, cwd());
buildsystems_do("install", $destdir);