# 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; GetOptions( 'zookeeper-include=s' => \@zk_inc_paths, 'zookeeper-lib=s' => \@zk_lib_paths ); my $zk_inc_paths = join(' ', map("-I$_", @zk_inc_paths)); my $zk_lib_paths = join(' ', map("-L$_", @zk_lib_paths)); $zk_inc_paths .= ' ' unless ($zk_inc_paths eq ''); $zk_lib_paths .= ' ' unless ($zk_lib_paths eq ''); my $cc = $Config{'cc'}; my $check_file = 'build/check_zk_version'; my $check_out = qx($cc $zk_inc_paths $zk_lib_paths -I. -o $check_file $check_file.c 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!"; } WriteMakefile( 'INC' => "$zk_inc_paths-I.", 'LIBS' => [ "$zk_lib_paths-lzookeeper_mt" ], 'NAME' => 'Net::ZooKeeper', 'VERSION_FROM' => 'ZooKeeper.pm', 'clean' => { 'FILES' => 'build/check_zk_version.o' } );