use ExtUtils::MakeMaker; use Env qw(XERCES_LIB XERCES_CONFIG XERCES_INCLUDE XERCESCROOT XERCES_DEVEL SWIG); use strict; use vars qw($INCLUDES $CXX $CFLAGS @LDFLAGS @OPTIMIZE); use File::Basename; eval { require 5.6.0; }; if ($@) { die <) { if (/\@CXXFLAGS\@/) { my ($flags) = /%([^%]*)%g$/; my @flags = split /\s+/, $flags; my @new_flags; foreach my $flag (@flags) { if ($flag =~ /^(-(g|O).?)$/) { @OPTIMIZE = (OPTIMIZE => $1); next; } elsif ($flag =~ /^-DPROJ_/) { next; } push(@new_flags,$flag); } ($CXXFLAGS) = join(' ',@new_flags); } elsif (/\@LDFLAGS\@/) { ($LDFLAGS) = /%([^%]*)%g$/; @LDFLAGS = ('LDFLAGS' => $LDFLAGS) if $LDFLAGS !~ /^\s*$/; } elsif (/\@CXX\@/) { ($CXX) = /%([^%]*)%g$/ } } print STDERR <) { next unless /^\#define\s+XERCES_VERSION_/; if (/MAJOR\s+(\d)/) { $major = $1; } elsif (/MINOR\s+(\d)/) { $minor = $1; } elsif (/REVISION\s(\d)/) { $rev = $1; } } die "Couldn't find Xerces-C MAJOR version" unless defined $major; die "Couldn't find Xerces-C MINOR version" unless defined $minor; die "Couldn't find Xerces-C REVISION version" unless defined $rev; my $XERCES_C_VERSION = "$major.$minor.$rev"; die <new->ExtUtils::Liblist::ext($LIBS); die < { 'SWIG' => "$swig", }); # we'll assume that we want -g as a default # @OPTIMIZE = (OPTIMIZE => '-g'); # we want all warnings $CFLAGS .= ' -Wall'; # print STDERR "Using SWIG version: SWIG_$ {sv_maj}_$ {sv_min}\n"; *MY::postamble = \&Xerces_postamble; } # set up the list of object files to include in Xerces\$(OBJ_EXT) my $OBJS = 'Xerces$(OBJ_EXT)'; # write the makefile # see the hints/ directory for architecture specific stuff! WriteMakefile( 'NAME' => 'XML::Xerces', 'AUTHOR' => 'The Xerces-P developers: xerces-p-dev@xml.apache.org', 'ABSTRACT' => 'Perl Interface for Xerces XML API', 'CC' => $CXX, 'CCFLAGS' => $CFLAGS, 'PM' => { 'Xerces.pm' => '$(INST_LIB)/XML/Xerces.pm', }, 'INC' => $INCLUDES, 'MYEXTLIB' => $HANDLER_LIB, 'LIBS' => [$LIBS], 'OBJECT' => $OBJS, 'VERSION' => "$XERCES_PERL_VERSION", @OPTIMIZE, @MACRO, @LDFLAGS, );