The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

# @(#)Makefile.PL	1.1

use 5.008;
use ExtUtils::MakeMaker;

use strict;

use Cwd;
use File::Spec;
use Config;

my $pwd=cwd();

sub tsm_choose_dsm_dir {
    if (-d $ENV{DSM_DIR} and
        -f $ENV{DSM_CONFIG}
        ) {
        my $dsm_config=(-f File::Spec->catfile($ENV{DSM_DIR},"dsm.sys"))?File::Spec->catfile($ENV{DSM_DIR},"dsm.sys"):
                                                                         File::Spec->catfile($ENV{DSM_CONFIG});        
        return ($ENV{DSM_DIR},
                File::Spec->catfile($ENV{DSM_DIR},"dsmadmc"),
                $dsm_config,
                );
    }
    ($^O eq 'linux'   or
     $^O eq 'solaris' ) and return (File::Spec->catfile("","opt","tivoli","tsm","client","ba","bin"),
                                    File::Spec->catfile("","opt","tivoli","tsm","client","ba","bin","dsmadmc"),
                                    File::Spec->catfile("","opt","tivoli","tsm","client","ba","bin","dsm.sys"),
                                   );
    ($^O eq 'aix'     or
     $^O eq 'irix'    or
     $^O eq 'hpux')      and return (File::Spec->catfile("","usr","tivoli","tsm","client","ba","bin"),
                                     File::Spec->catfile("","usr","bin","dsmadmc"),
                                     File::Spec->catfile("","usr","tivoli","tsm","client","ba","bin","dsm.sys"),
                                 );
    ($^O eq 'darwin')    and return (File::Spec->catfile("","Library","Application Support","tivoli","tsm","client","ba","bin"),
                                     File::Spec->catfile("","Library","Application Support","tivoli","tsm","client","ba","bin","dsmadmc"),
                                     File::Spec->catfile("","Library","Preferences", "Tivoli Storage Manager","dsm.opt"),
                                 );
    ($^O eq 'MSWin32')   and return (File::Spec->catfile($ENV{ProgramFiles},"Tivoli","tsm","baclient"),
                                     File::Spec->catfile($ENV{ProgramFiles},"Tivoli","tsm","baclient","dsmadmc"),
                                     File::Spec->catfile($ENV{ProgramFiles},"Tivoli","tsm","baclient","dsm.opt"),
                                    );
    return;
}

sub config_macro {
    my ($dsm_dir,$dsmadmc,$dsm_config)=tsm_choose_dsm_dir();
    
    $dsm_dir    = $ENV{DSM_DIR} || 'need_DSM_DIR'                unless (-d $dsm_dir);
    $dsmadmc    = File::Spec->catfile($ENV{DSM_DIR}, 'dsmadmc')  unless (-f $dsmadmc);
    $dsm_config = $ENV{DSM_CONFIG} || 'need_DSM_SYS'             unless (-f $dsm_config);
    
    print "Choose TSM Install directory:  $dsm_dir\n";
    print "Choose TSM dsmadmc command:    $dsmadmc\n";
    print "Choose TSM client config file: $dsm_config\n";
    
    return {
        TSM_DSMDIR    => $dsm_dir,
        TSM_DSMCONFIG => $dsm_config,
        TSM_DSMADMC   => $dsmadmc,
        };  
}

my $macros        = config_macro();
my @module        = ('DBD','TSM');
my $module_name   = join('::',@module);
my $module_filter = File::Spec->catfile('lib',@module,'configure.pl');
$module[-1]      .= '.pm';
my $module_path   = File::Spec->catfile('lib',@module);

# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
    NAME              => $module_name,
    VERSION_FROM      => $module_path, # finds $VERSION
    PREREQ_PM         => {DBI => 1.4}, # e.g., Module::Name => 1.1
    macro             => $macros,
    PM_FILTER         => $Config{perlpath}." ".$module_filter,
    ($] >= 5.008 ?     ## Add these new keywords supported since 5.005
      (ABSTRACT_FROM  => 'lib/DBD/TSM.pm', # retrieve abstract from module
       AUTHOR         => 'Laurent Bendavid <bendavid.laurent@free.fr>') : ()),
);