# Net::ZooKeeper - Perl extension for Apache ZooKeeper # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. use 5.008_008; use Config; use ExtUtils::MakeMaker; use Getopt::Long; my $ZOO_MAJOR_VERSION = 3; my $ZOO_REQUIRED_VERSION = qr{^$ZOO_MAJOR_VERSION\.\d+.\d+$}ismx; my @zk_inc_paths; my @zk_lib_paths; my $with_sasl2 = 0; my @sasl2_inc_paths; my @sasl2_lib_paths; GetOptions( 'zookeeper-include=s' => \@zk_inc_paths, 'zookeeper-lib=s' => \@zk_lib_paths, 'with-sasl2!' => \$with_sasl2, 'sasl2-include=s' => \@sasl2_inc_paths, 'sasl2-lib=s' => \@sasl2_lib_paths ); my $zk_inc = (join(' ', map("-I$_", @zk_inc_paths)) . ' -I.'); my $zk_libs = (join(' ', map("-L$_", @zk_lib_paths)) . ' -lzookeeper_mt'); my $cc = $Config{'cc'}; my $check_file = 'build/check_zk_version'; my $check_out = qx($cc $zk_inc -o $check_file $check_file.c $zk_libs 2>&1); if ($?) { if ($check_out =~ /zookeeper_version\.h/) { die("Could not determine ZooKeeper version:\n\n$check_out"); } else { ## keep in sync with build/check_zk_version.h die("Net::ZooKeeper requires at least ZooKeeper version 3.1.1\n"); } } chomp(my $zk_ver = qx($check_file)); if ($? >> 8 != 0) { die "Couldn't check zookeeper version: $zk_ver: $r"; } elsif ($zk_ver !~ $ZOO_REQUIRED_VERSION) { warn "Net::ZooKeeper requires ZooKeeper 3.x, found $zk_ver!"; } my @inc = ($zk_inc); my @libs = ($zk_libs); my %mmopt = (); if ($with_sasl2) { push(@inc, join(' ', map("-I$_", @sasl2_inc_paths))); push(@libs, join(' ', map("-L$_", @sasl2_lib_paths)) . ' -lsasl2'); $mmopt{DEFINE} = '-DHAVE_CYRUS_SASL_H'; } WriteMakefile( 'INC' => join(' ', @inc), 'LIBS' => \@libs, 'NAME' => 'Net::ZooKeeper', 'VERSION_FROM' => 'ZooKeeper.pm', 'clean' => { 'FILES' => 'build/check_zk_version.o' }, %mmopt, );