%:
dh $@ --with quilt
+In order to override standard build flags, export appropriate environment
+variables as documented in the L<dpkg-buildflags(1)> manual page. They will be
+preferred over directly exported their counterparts (CFLAGS, CXXFLAGS, LDFLAGS
+etc.). For example, to append -Wall to the standard CFLAGS and CXXFLAGS, use:
+
+ #!/usr/bin/make -f
+ export DEB_CFLAGS_APPEND = -Wall
+ export DEB_CXXFLAGS_APPEND = -Wall
+
+ %:
+ dh $@
+
Here is an example of overriding where the B<dh_auto_>I<*> commands find
the package's source, for a package where the source is located in a
subdirectory.
A sequence can also run dependent targets in debian/rules. For
example, the "binary" sequence runs the "install" target.
+B<dh> sets environment variables listed by B<dpkg-buildflags>, unless
+they are already set. It supports DEB_BUILD_OPTIONS=noopt too.
+
B<dh> uses the B<DH_INTERNAL_OPTIONS> environment variable to pass information
through to debhelper commands that are run inside override targets. The
contents (and indeed, existence) of this environment variable, as the name
bundling => 0,
);
inhibit_log();
-
+set_buildflags();
# If make is using a jobserver, but it is not available
# to this process, clean out MAKEFLAGS. This avoids
}
# make -B causes the rules file to be run as a target.
# Also support completly empty override targets.
-# Note: it's not safe to use rules_explicit_target before this check.
+# Note: it's not safe to use rules_explicit_target before this check,
+# since it causes dh to be run.
+my $dummy_target="debhelper-fail-me";
if ($sequence eq 'debian/rules' ||
- $sequence =~ /^override_dh_/) {
+ $sequence =~ /^override_dh_/ ||
+ $sequence eq $dummy_target) {
exit 0;
}
if (rules_explicit_target('build-arch') ||
rules_explicit_target('build-indep')) {
# run sequences separately
- $sequences{build} = [@bd_minimal, 'rules:build-arch', 'rules:build-indep'];
+ $sequences{build} = [@bd_minimal, rules("build-arch"), rules("build-indep")];
}
else {
# run standard sequence (this is faster)
$sequences{build} = [@bd];
}
- $sequences{'install-indep'} = ['rules:build-indep', @i];
- $sequences{'install-arch'} = ['rules:build-arch', @i];
+ $sequences{'install-indep'} = [rules("build-indep"), @i];
+ $sequences{'install-arch'} = [rules("build-arch"), @i];
if (rules_explicit_target('install-arch') ||
rules_explicit_target('install-indep')) {
# run sequences separately
- $sequences{'install'} = ['rules:build', @i_minimal, 'rules:install-arch', 'rules:install-indep'];
+ $sequences{'install'} = [rules("build"), @i_minimal, rules("install-arch"), rules("install-indep")];
}
else {
# run standard sequence (this is faster)
- $sequences{'install'} = ['rules:build', @i, 'rules:install-arch', 'rules:install-indep'];
+ $sequences{'install'} = [rules("build"), @i, rules("install-arch"), rules("install-indep")];
}
- $sequences{'binary-indep'} = ['rules:install-indep', @b];
- $sequences{'binary-arch'} = ['rules:install-arch', @ba, @b];
- $sequences{binary} = ['rules:install', 'rules:binary-arch', 'rules:binary-indep'];
+ $sequences{'binary-indep'} = [rules("install-indep"), @b];
+ $sequences{'binary-arch'} = [rules("install-arch"), @ba, @b];
+ $sequences{binary} = [rules("install"), rules("binary-arch"), rules("binary-indep")];
}
else {
$sequences{build} = [@bd];
my $override_command;
my $has_explicit_target = rules_explicit_target("override_".$command);
- # If the command has a rules: prefix, run debian/rules with
- # the remainder as the target.
my $rules_target = rules_target($command);
if (defined $rules_target) {
# Don't pass DH_ environment variables, since this is
sub rules_target {
my $command=shift;
- if ($command =~ /^rules:(.*)/) {
+ if ($command =~ /^debian\/rules\s+(.*)/) {
return $1
}
else {
}
}
+sub rules {
+ return "debian/rules ".join(" ", @_);
+}
+
{
my %targets;
my $rules_parsed;
my $processing_targets = 0;
my $not_a_target = 0;
my $current_target;
- open(MAKE, "LC_ALL=C make -Rrnpsf debian/rules debhelper-fail-me 2>/dev/null |");
+ open(MAKE, "LC_ALL=C make -Rrnpsf debian/rules $dummy_target 2>/dev/null |");
while (<MAKE>) {
if ($processing_targets) {
if (/^# Not a target:/) {