/usr/local/CPAN/gestalt/Makefile.PL


#!/usr/bin/perl

use strict;

use ExtUtils::MakeMaker;
use File::Basename qw(basename dirname);
require ExtUtils::MM_Any;
our @ISA = qw(ExtUtils::MM_Any);

WriteMakefile(NAME      => 'gestalt',
              DISTNAME  => 'gestalt',
              EXE_FILES => ['bin/gestalt'],
              # Need copious amounts of escaping for this to work. It looks rubbish.
              PM_FILTER => 'sed -e "s/\\@PREFIX\\@/`echo "$(PERLPREFIX)" | sed -e "s/\//\\\\\\\\\\\\\\\\\//g"`/g"',
              # Not sure what the min versions are. Will need to do testing on older versions
              # to find this out.
              PREREQ_PM => {'DBI'                    => 0,
                            'Template'               => 0,
                            'AppConfig'              => 0,
                            'Template::Plugin::Page' => 0
                           },
              DIR       => [
                 'DB',
                 'Dispatcher',
                 'Controller' ],
              VERSION   => '0.2.1');
package MY;

use vars qw($VERSION @ISA
            $Is_OS2 $Is_VMS $Is_Win32 $Is_Dos
            $Is_OSF $Is_IRIX  $Is_NetBSD $Is_BSD
            $Is_SunOS4 $Is_Solaris $Is_SunOS $Is_Interix
            $Verbose %pm
            %Config_Override
           );

use ExtUtils::MakeMaker qw($Verbose neatvalue);

BEGIN { 
    $Is_OS2     = $^O eq 'os2';
    $Is_Win32   = $^O eq 'MSWin32';
    $Is_Dos     = $^O eq 'dos';
    $Is_VMS     = $^O eq 'VMS';
    $Is_OSF     = $^O eq 'dec_osf';
    $Is_IRIX    = $^O eq 'irix';
    $Is_NetBSD  = $^O eq 'netbsd';
    $Is_Interix = $^O eq 'interix';
    $Is_SunOS4  = $^O eq 'sunos';
    $Is_Solaris = $^O eq 'solaris';
    $Is_SunOS   = $Is_SunOS4 || $Is_Solaris;
    $Is_BSD     = $^O =~ /^(?:free|net|open)bsd$/ or
                  $^O eq 'bsdos' or $^O eq 'interix';
}

BEGIN {
    if( $Is_VMS ) {
        # For things like vmsify()
        require VMS::Filespec;
        VMS::Filespec->import;
    }
}

use File::Basename qw(basename dirname);
require ExtUtils::MM_Any;
our @ISA = qw(ExtUtils::MM_Any);

sub postamble
{
    '
install ::
		install -d -m 0755 $(DESTDIR)$(PERLPREFIX)/share/gestalt
		install -d -m 0755 $(DESTDIR)$(PERLPREFIX)/share/gestalt/html/js
		install -d -m 0755 $(DESTDIR)$(PERLPREFIX)/share/gestalt/html/css
		install -d -m 0755 $(DESTDIR)$(PERLPREFIX)/share/gestalt/templates
		for file in AUTHORS ChangeLog Controller.pm Makefile.PL Makefile.am \
		NEWS README Row.pm Table.pm apache.conf.in appConfig.cfg.in appSpec.in \
		appStartup.pl.in bootstrap configure.in; \
		do \
				install -c -m 0644 templates/$$file $(DESTDIR)$(PERLPREFIX)/share/gestalt/ ; \
		done
		install -c -m 0644 templates/html/Makefile.am $(DESTDIR)$(PERLPREFIX)/share/gestalt/html
		for file in Makefile.am prototype.js validate.js; \
		do \
				install -c -m 0644 templates/html/js/$$file $(DESTDIR)$(PERLPREFIX)/share/gestalt/html/js ; \
		done
		for file in Makefile.am style.css; \
		do \
				install -c -m 0644 templates/html/css/$$file $(DESTDIR)$(PERLPREFIX)/share/gestalt/html/css ; \
		done
		for file in _fieldDisplay.tt2 _fieldInput.tt2 _fkeyDisplay.tt2 _fkeyInput.tt2 \
		_form.tt2 _header.tt2 _pager.tt2 create.tt2 edit.tt2 list.tt2 show.tt2 _auth.tt2 ; \
		do \
				install -c -m 0644 templates/templates/$$file $(DESTDIR)$(PERLPREFIX)/share/gestalt/templates ; \
		done

        rpm: dist
		cp $(NAME)-$(VERSION).tar.gz /usr/src/redhat/SOURCES/
		rpmbuild -ba $(NAME).spec
		cp /usr/src/redhat/SRPMS/$(NAME)-$(VERSION)-1.src.rpm .
		cp /usr/src/redhat/RPMS/noarch/$(NAME)-$(VERSION)-1.noarch.rpm .

';
}

sub installbin {
    my($self) = shift;

    return "" unless $self->{EXE_FILES} && ref $self->{EXE_FILES} eq "ARRAY";
    my @exefiles = @{$self->{EXE_FILES}};
    return "" unless @exefiles;

    @exefiles = map vmsify($_), @exefiles if $Is_VMS;

    my %fromto;
    for my $from (@exefiles) {
	my($path)= $self->catfile('$(INST_SCRIPT)', basename($from));

	local($_) = $path; # for backwards compatibility
	my $to = $self->libscan($path);
	print "libscan($from) => '$to'\n" if ($Verbose >=2);

        $to = vmsify($to) if $Is_VMS;
	$fromto{$from} = $to;
    }
    my @to   = values %fromto;

    my @m;
    push(@m, qq{
EXE_FILES = @exefiles

pure_all :: @to
		\$(NOECHO) \$(NOOP)

realclean ::
\$(INST_SCRIPT)/.exists :: \$(PERL_INC)/perl.h
		\$(NOECHO) \$(MKPATH) \$(INST_SCRIPT)
		\$(NOECHO) \$(EQUALIZE_TIMESTAMP) \$(PERL_INC)/perl.h \$(INST_SCRIPT)/.exists

		-\$(NOECHO) \$(CHMOD) \$(PERM_RWX) \$(INST_SCRIPT)

\$(INST_BIN)/.exists :: \$(PERL_INC)/perl.h
		\$(NOECHO) \$(MKPATH) \$(INST_BIN)
		\$(NOECHO) \$(EQUALIZE_TIMESTAMP) \$(PERL_INC)/perl.h \$(INST_BIN)/.exists

		-\$(NOECHO) \$(CHMOD) \$(PERM_RWX) \$(INST_BIN)

});

    # realclean can get rather large.
    push @m, map "\t$_\n", $self->split_command('$(RM_F)', @to);
    push @m, "\n";


    # A target for each exe file.
    while (my($from,$to) = each %fromto) {
	last unless defined $from;

	push @m, sprintf <<'MAKE', $to, $from, $to, $from, $to, $to, $to;
%s : %s $(FIRST_MAKEFILE) $(INST_SCRIPT)/.exists $(INST_BIN)/.exists
	$(NOECHO) $(RM_F) %s
	$(PM_FILTER) < %s > %s
	-$(NOECHO) $(CHMOD) $(PERM_RWX) %s

MAKE

    }

    join "", @m;
}