Diff for /embedaddon/sudo/mkdep.pl between versions 1.1.1.2 and 1.1.1.6

version 1.1.1.2, 2012/05/29 12:26:49 version 1.1.1.6, 2014/06/15 16:12:53
Line 1 Line 1
 #!/usr/bin/env perl  #!/usr/bin/env perl
   #
   # Copyright (c) 2011-2014 Todd C. Miller <Todd.Miller@courtesan.com>
   #
   # Permission to use, copy, modify, and distribute this software for any
   # purpose with or without fee is hereby granted, provided that the above
   # copyright notice and this permission notice appear in all copies.
   #
   # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   #
   
 use File::Temp qw/ :mktemp  /;  use File::Temp qw/ :mktemp  /;
 use Fcntl;  use Fcntl;
Line 50  sub mkdep { Line 65  sub mkdep {
   
     # Expand some configure bits      # Expand some configure bits
     $makefile =~ s:\@DEV\@::g;      $makefile =~ s:\@DEV\@::g;
    $makefile =~ s:\@COMMON_OBJS\@:aix.lo:;    $makefile =~ s:\@COMMON_OBJS\@:aix.lo event_poll.lo event_select.lo:;
    $makefile =~ s:\@SUDO_OBJS\@:preload.o selinux.o sesh.o sudo_noexec.lo:;    $makefile =~ s:\@SUDO_OBJS\@:openbsd.o preload.o selinux.o sesh.o solaris.o sudo_noexec.lo:;
    $makefile =~ s:\@SUDOERS_OBJS\@:bsm_audit.lo linux_audit.lo ldap.lo plugin_error.lo:;    $makefile =~ s:\@SUDOERS_OBJS\@:bsm_audit.lo linux_audit.lo ldap.lo sssd.lo:;
     # XXX - fill in AUTH_OBJS from contents of the auth dir instead      # XXX - fill in AUTH_OBJS from contents of the auth dir instead
     $makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid5.lo sia.lo:;      $makefile =~ s:\@AUTH_OBJS\@:afs.lo aix_auth.lo bsdauth.lo dce.lo fwtk.lo getspwuid.lo kerb5.lo pam.lo passwd.lo rfc1938.lo secureware.lo securid5.lo sia.lo:;
    $makefile =~ s:\@LTLIBOBJS\@:closefrom.lo dlopen.lo fnmatch.lo getcwd.lo getgrouplist.lo getline.lo getprogname.lo glob.lo isblank.lo memrchr.lo mksiglist.lo mktemp.lo nanosleep.lo pw_dup.lo siglist.lo snprintf.lo strlcat.lo strlcpy.lo strsignal.lo utimes.lo globtest.o fnm_test.o:;    $makefile =~ s:\@LTLIBOBJS\@:clock_gettime.lo closefrom.lo fnmatch.lo getaddrinfo.lo getcwd.lo getgrouplist.lo getline.lo getopt_long.lo glob.lo isblank.lo memrchr.lo memset_s.lo mksiglist.lo mksigname.lo mktemp.lo pw_dup.lo sig2str.lo siglist.lo signame.lo snprintf.lo strlcat.lo strlcpy.lo strsignal.lo strtonum.lo utimes.lo globtest.o fnm_test.o inet_pton:;
   
     # Parse OBJS lines      # Parse OBJS lines
     my %objs;      my %objs;
Line 89  sub mkdep { Line 104  sub mkdep {
     #$dir_vars{'top_builddir'} = '.';      #$dir_vars{'top_builddir'} = '.';
     $dir_vars{'incdir'} = 'include';      $dir_vars{'incdir'} = 'include';
   
    # Find implicit rules for generate .o and .lo files    # Find implicit rules for generated .o and .lo files
     %implicit = ();      %implicit = ();
     while ($makefile =~ /^\.c\.(l?o):\s*\n\t+(.*)$/mg) {      while ($makefile =~ /^\.c\.(l?o):\s*\n\t+(.*)$/mg) {
         $implicit{$1} = $2;          $implicit{$1} = $2;
Line 165  exit(0); Line 180  exit(0);
   
 sub find_depends {  sub find_depends {
     my $src = $_[0];      my $src = $_[0];
    my ($deps, $code, @headers);    my ($deps, $code, %headers);
   
     if ($src !~ /\//) {      if ($src !~ /\//) {
         # XXX - want build dir not src dir          # XXX - want build dir not src dir
Line 190  sub find_depends { Line 205  sub find_depends {
     while ($code =~ /^#\s*include\s+["<](\S+)[">]/mg) {      while ($code =~ /^#\s*include\s+["<](\S+)[">]/mg) {
         my ($hdr, $hdr_path) = find_header($1);          my ($hdr, $hdr_path) = find_header($1);
         if (defined($hdr)) {          if (defined($hdr)) {
            push(@headers, $hdr);            $headers{$hdr} = 1;
             # Look for other includes in the .h file              # Look for other includes in the .h file
            push(@headers, find_depends($hdr_path));            foreach (find_depends($hdr_path)) {
                 $headers{$_} = 1;
             }
         }          }
     }      }
   
    @headers;    sort keys %headers;
 }  }
   
 # find the path to a header file  # find the path to a header file

Removed from v.1.1.1.2  
changed lines
  Added in v.1.1.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>