/usr/local/CPAN/Gtk2-Spell/Makefile.PL


#
# $Header: /cvsroot/gtk2-perl/gtk2-perl-xs/GtkSpell/Makefile.PL,v 1.11 2003/09/22 00:45:59 rwmcfa1 Exp $
#

use 5.008;
use ExtUtils::MakeMaker;
use Cwd;
use File::Spec;

# minimum required version of dependancies we need to build
our %build_reqs = (
	'perl-ExtUtils-Depends'   => '0.1',
	'perl-ExtUtils-PkgConfig' => '0.1',
	'perl-Glib'               => '1.00rc2',
	'perl-Gtk2'               => '1.00rc2',
	'GtkSpell'                => '2.0.0',
);

# minimum required version of dependancies we need to run
our %runtime_reqs = (
	'GtkSpell'	=> undef,
);

# Writing a fake Makefile ensures that CPAN will pick up the correct
# dependencies and install them.
unless (eval "use ExtUtils::Depends;"
           . "use ExtUtils::PkgConfig;"
	   . "use Gtk2::CodeGen;"
           # just seeing if Glib is available isn't enough, make sure
           # it's recent enough, too 
           . "use Glib '$build_reqs{'perl-Glib'}';"
           . "use Gtk2 '$build_reqs{'perl-Gtk2'}';"
           . "1") {
   warn "$@\n";
   WriteMakefile(
         PREREQ_FATAL => 1,
         PREREQ_PM    => {
            Glib::                => $build_reqs{'perl-Glib'},
            Gtk2::                => $build_reqs{'perl-Gtk2'},
            ExtUtils::Depends::   => $build_reqs{'perl-ExtUtils-Depends'},
            ExtUtils::PkgConfig:: => $build_reqs{'perl-ExtUtils-PkgConfig'},
         },
   );
   exit 1; # not reached
}

my %pkgcfg = ExtUtils::PkgConfig->find('gtkspell-2.0 >= '
				       .$build_reqs{GtkSpell});

$runtime_reqs{GtkSpell} = $pkgcfg{modversion};

mkdir 'build', 0777;

# now we're ready to start creating the makefile.
# we need to use ExtUtils::Depends to get relevant information out of
# the Glib extension, and to save config information for other modules which
# will chain from this one.

$gtk2spell = ExtUtils::Depends->new ('GtkSpell', 'Gtk2', 'Glib');
$gtk2spell->set_inc ($pkgcfg{cflags});
$gtk2spell->set_libs ($pkgcfg{libs});
$gtk2spell->add_pm ('Spell.pm' => '$(INST_LIBDIR)/Spell.pm');
$gtk2spell->add_xs ('GtkSpell.xs');
my $cwd = cwd();
$gtk2spell->add_typemaps (map {File::Spec->catfile($cwd,$_)} 'gtkspell.typemap' );
$gtk2spell->add_headers ('gtk2spellperl.h');

$gtk2spell->install ('gtk2spellperl.h');
$gtk2spell->save_config ('build/IFiles.pm');

WriteMakefile(
    NAME          => 'Gtk2::Spell',
    VERSION_FROM  => 'Spell.pm',
    PREREQ_PM     => {},
    ABSTRACT_FROM => 'Spell.pm',
    XSPROTOARG    => '-noprototypes',
    $gtk2spell->get_makefile_vars,
);

#
# there's a bug in the MakeMaker output which results in .xs files in a
# subdirectory being turned into .o files in this dir.  the bug is a missing
# -o on the compiler command line.  this is a hackish fix for it.
#
package MY;
use Cwd;

sub const_cccmd {
	my $inherited = shift->SUPER::const_cccmd (@_);
	$inherited .= ' -o $@';
	$inherited;
}

sub postamble
{
	my @dirs = qw{rpms rpms/BUILD rpms/RPMS rpms/SOURCES
		      rpms/SPECS rpms/SRPMS};
	my $cwd = getcwd();

	my %subs = (
		'VERSION' => '$(VERSION)',
		'SOURCE' => '$(DISTNAME)-$(VERSION).tar.gz',
		'GTKSPELL_RUN' => $runtime_reqs{'GtkSpell'},
		'GTKSPELL' => $build_reqs{'GtkSpell'},
		'PERL_EXTUTILS_DEPENDS' => 
			$build_reqs{'perl-ExtUtils-Depends'},
		'PERL_EXTUTILS_PKGCONFIG' => 
			$build_reqs{'perl-ExtUtils-PkgConfig'},
		'PERL_GLIB' => $build_reqs{'perl-Glib'},
		'PERL_GTK' => $build_reqs{'perl-Gtk2'},
	);
	
	my $substitute = '$(PERL) -npe \''.join('; ', map {
			"s/\\\@$_\\\@/$subs{$_}/g";
		} keys %subs).'\'';

	"
realclean ::
		-rm -Rf build perl-\$(DISTNAME).spec

rpms/:
		-mkdir @dirs

SUBSTITUTE=$substitute

perl-\$(DISTNAME).spec: perl-\$(DISTNAME).spec.in \$(VERSION_FROM) Makefile
		\$(SUBSTITUTE) \$< > \$@

dist-rpms: Makefile dist perl-\$(DISTNAME).spec rpms/
		cp \$(DISTNAME)-\$(VERSION).tar.gz rpms/SOURCES/
		rpmbuild -ba --define \"_topdir $cwd/rpms\" perl-\$(DISTNAME).spec
"
}
package MAIN;

1;
__END__
Copyright (C) 2003 by the gtk2-perl team (see the file AUTHORS for the
full list)

This library is free software; you can redistribute it and/or modify it under
the terms of the GNU Library General Public License as published by the Free
Software Foundation; either version 2.1 of the License, or (at your option) any
later version.

This library is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.  See the GNU Library General Public License for more
details.

You should have received a copy of the GNU Library General Public License along
with this library; if not, write to the Free Software Foundation, Inc., 59
Temple Place - Suite 330, Boston, MA  02111-1307  USA.