The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Apache::AuthChecker;

use Cwd;
use Config;
use Symbol;


# Apache 1.x
eval {
    require Apache;
    require mod_perl;
};
if ($@) {
    #mod_perl2, earlier
    eval {
	require Apache2;
        require mod_perl;
    };
    if ($@) {
        #mod_perl2, latest
    	eval {
        	require mod_perl2;
    	};
	if ($@) {
        	die "Can't find mod_perl installed: $@\n";
	}
    }
}


my $mp_ver = 1;
if ($mod_perl::VERSION >= 1.99) { 
    $mp_ver = 2;
}

my $more_inc = '';

my %common_opts = (
    'NAME'              => 'Apache::AuthChecker',
    'VERSION_FROM'      => 'AuthChecker.pm',
    'PREREQ_PM'         => { IPC::Shareable => 0.60 },
    'DEFINE'            => ''
);

if ($mp_ver == 1) {
    require ExtUtils::MakeMaker;
    require Apache::ExtUtils;
    require Apache::src;

    @directives = (
        {
        name => 'PerlAuthCheckerMaxUsers',
        errmsg => 'number of records to store in shared memory',
        args_how => 'TAKE1',
        req_override => 'RSRC_CONF'
        },
        {
        name => 'PerlSecondsToExpire',
        errmsg => 'seconds to remember IP address and AUTH attempts',
        args_how => 'TAKE1',
        req_override => 'RSRC_CONF'
        },
    );

    Apache::ExtUtils::command_table(\@directives);

    ExtUtils::MakeMaker::WriteMakefile(
        'LIBS'		=> [''],
        'INC'		=> Apache::src->new->inc,
        %common_opts
    );

} else {

eval {
    require ModPerl::MM
};
if ($@) {
    eval {
        require Apache2::ModPerl::MM
    };
    if ($@) {
        die "Can't find ModPerl::MM installed: $@\n";
    }
}

    $extra_inc = ModPerl::MM::get_def_opt('INC')."/modules/perl";

    if ($mod_perl::VERSION >= 2.000002) {
         $extra_inc .= " -I".ModPerl::MM::build_config('apr_includedir');
    }

    ModPerl::MM::WriteMakefile(
        %common_opts,
	INC => ModPerl::MM::get_def_opt('INC')." ". $extra_inc
    );
}


__END__