1use ExtUtils::MakeMaker; 2use Config; 3# See lib/ExtUtils/MakeMaker.pm for details of how to influence 4# the contents of the Makefile that is written. 5 6# if the last argument when calling Makefile.PL is RPATH=/... and ... is the 7# path to librrd.so then the Makefile will be written such that RRDs.so knows 8# where to find librrd.so later on ... 9my $R=""; 10if ($ARGV[-1] =~ /RPATH=(\S+)/){ 11 pop @ARGV; 12 my $rp = $1; 13 for ($^O){ 14 /linux/ && do{ $R = "-Wl,--rpath -Wl,$rp"}; 15 /hpux/ && do{ $R = "+b$rp"}; 16 /solaris/ && do{ $R = "-R$rp"}; 17 /aix/ && do{ $R = "-Wl,-blibpath:$rp"}; 18 } 19} 20 21# darwin works without this because librrd contains its 22# install_name which will includes the final location of the 23# library after it is installed. This install_name gets transfered 24# to the perl shared object. 25 26my $librrd = "-L../../src/.libs/ $R -lrrd"; 27 28WriteMakefile( 29 'NAME' => 'RRDs', 30 'VERSION_FROM' => 'RRDs.pm', # finds $VERSION 31 'DEFINE' => "-DPERLPATCHLEVEL=$Config{PATCHLEVEL}", 32 'INC' => '-I../../src', 33 'LIBS' => '-lm -lpng -lz -lfreetype', 34 # Perl will figure out which one is valid 35 #'dynamic_lib' => {'OTHERLDFLAGS' => "$librrd -lm"}, 36 'depend' => {'RRDs.c' => "../../src/librrd.la"}, 37 'LDFROM' => '$(OBJECT) '.$librrd, 38 'realclean' => {FILES => 't/demo?.rrd t/demo?.png' } 39); 40 41