2
0
mirror of https://github.com/sudo-project/sudo.git synced 2025-08-22 18:08:23 +00:00

Allow "make dist" and "make depend" to work for out of tree builds.

This commit is contained in:
Todd C. Miller 2017-04-26 10:43:42 -06:00
parent f7df250625
commit 495931f4a8
2 changed files with 39 additions and 29 deletions

View File

@ -151,22 +151,18 @@ siglist.c signame.c:
(cd lib/util && exec $(MAKE) $@)
depend: siglist.c signame.c
@if test "$(srcdir)" != "."; then \
echo "make depend only supported in the source directory"; \
exit 1; \
fi; \
$(srcdir)/mkdep.pl $(srcdir)/lib/util/Makefile.in \
$(srcdir)/plugins/sample/Makefile.in \
$(srcdir)/plugins/group_file/Makefile.in \
$(srcdir)/plugins/sudoers/Makefile.in \
$(srcdir)/plugins/system_group/Makefile.in \
$(srcdir)/src/Makefile.in $(srcdir)/lib/zlib/Makefile.in; \
./config.status --file $(srcdir)/lib/util/Makefile \
--file $(srcdir)/plugins/sample/Makefile \
--file $(srcdir)/plugins/group_file/Makefile \
--file $(srcdir)/plugins/sudoers/Makefile \
--file $(srcdir)/plugins/system_group/Makefile \
--file $(srcdir)/src/Makefile --file $(srcdir)/lib/zlib/Makefile
$(top_srcdir)/mkdep.pl --builddir=`pwd` --srcdir=$(top_srcdir) \
lib/util/Makefile.in lib/zlib/Makefile.in \
plugins/group_file/Makefile.in plugins/sample/Makefile.in \
plugins/sudoers/Makefile.in plugins/system_group/Makefile.in \
src/Makefile.in && \
$(top_builddir)/config.status --file $(top_builddir)/lib/util/Makefile \
--file $(top_builddir)/plugins/sample/Makefile \
--file $(top_builddir)/plugins/group_file/Makefile \
--file $(top_builddir)/plugins/sudoers/Makefile \
--file $(top_builddir)/plugins/system_group/Makefile \
--file $(top_builddir)/src/Makefile \
--file $(top_builddir)/lib/zlib/Makefile
ChangeLog:
if test -d $(srcdir)/.hg && cd $(srcdir); then \
@ -284,7 +280,7 @@ install-nls:
fi
check-dist: update-pot compile-po
@if [ -d .hg ]; then \
@if test -d $(srcdir)/.hg && cd $(srcdir); then \
if test `hg stat -am | wc -l` -ne 0; then \
echo "Uncommitted changes" 1>&2; \
hg stat -am 1>&2; \
@ -295,10 +291,11 @@ check-dist: update-pot compile-po
dist: check-dist force-dist
force-dist: ChangeLog $(srcdir)/MANIFEST
cd $(top_srcdir) && \
pax -w -x ustar -s '/^/$(PACKAGE_TARNAME)-$(VERSION)\//' \
-f ../$(PACKAGE_TARNAME)-$(VERSION).tar \
`$(SED) 's/[ ].*//' $(srcdir)/MANIFEST`
gzip -9f ../$(PACKAGE_TARNAME)-$(VERSION).tar
`$(SED) 's/[ ].*//' $(srcdir)/MANIFEST` && \
gzip -9f ../$(PACKAGE_TARNAME)-$(VERSION).tar && \
ls -l ../$(PACKAGE_TARNAME)-$(VERSION).tar.gz
package: $(srcdir)/sudo.pp

View File

@ -19,21 +19,33 @@ use File::Temp qw/ :mktemp /;
use Fcntl;
use warnings;
die "usage: $0 Makefile ...\n" unless $#ARGV >= 0;
die "usage: $0 [--builddir=dir] [--srcdir=dir] Makefile.in ...\n" unless $#ARGV >= 0;
my @incpaths;
my %dir_vars;
my %implicit;
my %generated;
my $top_builddir = ".";
my $top_srcdir;
# Read in MANIFEST fail if present
# Check for srcdir and/or builddir, if present
while ($ARGV[0] =~ /^--(src|build)dir=(.*)/) {
if ($1 eq 'src') {
$top_srcdir = $2;
} else {
$top_builddir = $2;
}
shift @ARGV;
}
chdir($top_srcdir) if defined($top_srcdir);
# Read in MANIFEST or fail if not present
my %manifest;
if (open(MANIFEST, "<MANIFEST")) {
while (<MANIFEST>) {
die "unable to open MANIFEST: $!\n" unless open(MANIFEST, "<MANIFEST");
while (<MANIFEST>) {
chomp;
next unless /([^\/]+\.[cly])$/;
$manifest{$1} = $_;
}
}
foreach (@ARGV) {
@ -101,6 +113,7 @@ sub mkdep {
$dir_vars{'srcdir'} = $1 || '.';
$dir_vars{'devdir'} = $dir_vars{'srcdir'};
$dir_vars{'authdir'} = $dir_vars{'srcdir'} . "/auth";
$dir_vars{'builddir'} = $top_builddir . "/" . $dir_vars{'srcdir'};
$dir_vars{'top_srcdir'} = '.';
#$dir_vars{'top_builddir'} = '.';
$dir_vars{'incdir'} = 'include';
@ -184,8 +197,8 @@ sub find_depends {
my ($deps, $code, %headers);
if ($src !~ /\//) {
# XXX - want build dir not src dir
$src = "$dir_vars{'srcdir'}/$src";
# generated file, local to build dir
$src = "$dir_vars{'builddir'}/$src";
}
# resolve $(srcdir) etc.