diff options
Diffstat (limited to 'bindings/perl/Makefile.PL')
-rw-r--r-- | bindings/perl/Makefile.PL | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/bindings/perl/Makefile.PL b/bindings/perl/Makefile.PL new file mode 100644 index 0000000..4255b5a --- /dev/null +++ b/bindings/perl/Makefile.PL @@ -0,0 +1,91 @@ +use ExtUtils::MakeMaker; + +my $sword_lib_path; +my $sword_lib_path_raw; +my $sword_include_path; + +sub find_inc { + my ($inc_dir) = @_; + if(-f "$inc_dir/swmgr.h") { + print "$inc_dir.\n"; + $sword_include_path = "-I$inc_dir "; + return 1; + } else { + if($inc_dir !~ /sword$/) { + return find_inc("$inc_dir/sword"); + } + return; + } +} + +sub find_lib { + my ($lib_dir) = @_; + if(-f "$lib_dir/libsword.a") { + print "$lib_dir.\n"; + $sword_lib_path = "-L$lib_dir "; + $sword_lib_path_raw = "$lib_dir"; + return 1; + } else { + return; + } +} + +sub search_lib_path { + print "Searching for Sword library ... "; + foreach my $lib_dir (@_) { + if(find_lib($lib_dir)) { + return 1; + } + } + print join(" ", @_), "\n"; + die "Sword not found! Set SWORD_LIB_PATH to the directory where your libsword.a is. +You can download Sword from http://www.crosswire.org. +"; +} + +sub search_inc_path { + print "Searching for Sword headers ... "; + foreach my $inc_dir (@_) { + if(find_inc($inc_dir)) { + return 1; + } + } + print join(" ", @_), "\n"; + die "Sword headers not found! Set SWORD_INCLUDE_PATH to the directory where your Sword include files are.\n"; +} + +sub one_dir_up { + my ($dir) = @_; + $dir =~ s!/[^/]+/*$!!g; + return $dir ? $dir : "/"; +} + +search_lib_path($ENV{SWORD_LIB_PATH}, $ENV{SWORD_PATH}, one_dir_up($ENV{SWORD_PATH}) . "/lib", "/lib", "/usr/lib", "/usr/local/lib", split(":", $ENV{LD_LIBRARY_PATH})); + +search_inc_path(one_dir_up($sword_lib_path_raw) . "/include", $ENV{SWORD_INCLUDE_PATH}, $ENV{SWORD_PATH}, one_dir_up($ENV{SWORD_PATH}) . "/include", "/usr/include", "/usr/local/include"); +if(! $sword_include_path ) { +} + + +$CC = 'g++'; + +# See lib/ExtUtils/MakeMaker.pm for details of how to influence +# the contents of the Makefile that is written. +WriteMakefile( + 'NAME' => 'Sword', + 'VERSION_FROM' => 'Sword.pm', # finds $VERSION + 'PREREQ_PM' => {}, # e.g., Module::Name => 1.1 + ($] >= 5.005 ? ## Add these new keywords supported since 5.005 + (ABSTRACT_FROM => 'Sword.pm', # retrieve abstract from module + AUTHOR => 'John Keiser <jkeiser@iname.com>') : ()), + 'LIBS' => ["$sword_lib_path-lsword -lz"], # e.g., '-lm' + 'DEFINE' => '', # e.g., '-DHAVE_SOMETHING' + 'CC' => $CC, + 'LD' => '$(CC)', + # Insert -I. if you add *.h files later: + 'INC' => "$sword_include_path", # e.g., '-I/usr/include/other' + # Un-comment this if you add C files to link with later: + # 'OBJECT' => '$(O_FILES)', # link all the C files too + 'XSOPT' => '-C++', + 'TYPEMAPS' => ['perlobject.map' ], +); |