1use strict; 2use warnings; 3 4use lib 'inc'; 5use MyBuilder; 6use Config; 7use File::Spec::Functions qw.catdir catfile.; 8use File::Copy; 9 10 11my $version = get_version(); 12 13my $builder = MyBuilder->new( 14 module_name => 'Text::BibTeX', 15 license => 'perl', 16 dist_author => 17 [ 'Alberto Simões <ambs@cpan.org>', 'Greg Ward <gward@python.net>' ], 18 needs_compiler => 1, 19 meta_merge => { 20 resources => { repository => 'http://github.com/ambs/Text-BibTeX', }, 21 }, 22 configure_requires => { 23 'Module::Build' => '0.36', 24 'Config::AutoConf' => '0.16', 25 'ExtUtils::LibBuilder' => '0.02', 26 }, 27 requires => { 28 'Scalar::Util' => '1.42', 29 'Unicode::Normalize' => '0', 30 'Encode' => '0', 31 }, 32 build_requires => { 33 'File::Copy' => '0', 34 'Config::AutoConf' => '0.16', 35 'ExtUtils::LibBuilder' => '0.02', 36 'Capture::Tiny' => '0.06', 37 'ExtUtils::CBuilder' => '0.27', 38 'Module::Build' => '0.3603', 39 'Cwd' => '0', 40 }, 41 add_to_cleanup => [ 42 'Text-BibTeX-*', 43 44 # NOT SURE YET 'btparse/src/bt_config.h', 45 'btparse/src/*.so', 46 'btparse/src/*.dylib', 47 'btparse/src/*.dll', 48 'btparse/src/*.o', 49 'xscode/*.o', 50 'btparse/tests/*.o', 51 'btparse/progs/*.o', 52 'btparse/progs/dumpnames', 53 'btparse/progs/bibparse', 54 'btparse/progs/biblex', 55 'btparse/tests/postprocess_test', 56 'btparse/tests/read_test', 57 'btparse/tests/simple_test', 58 'btparse/tests/macro_test', 59 'btparse/tests/case_test', 60 'btparse/tests/name_test', 61 'btparse/tests/purify_test', 62 'btparse/tests/namebug' 63 ], 64); 65 66## HACK HACK HACK HACK 67my $libdir = $builder->install_destination("bin"); 68my $hdrdir = undef; 69if ( $^O =~ /mswin32/i ) { 70 $libdir = undef; 71 72 # Find a place where we can write. 73 my @folders = split /;/, $ENV{PATH}; 74 my $installed = 0; 75 my $target = "text-bibtex.$$"; 76 while ( @folders && !$installed ) { 77 $libdir = shift @folders; 78 79 copy( "MANIFEST", catfile( $libdir, $target ) ); 80 $installed = 1 if -f catfile( $libdir, $target ); 81 } 82 if ( !$installed ) { 83 warn("Wasn't able to find a suitable place for libbtparse.dll!"); 84 } 85 else { 86 print STDERR "libbtparse.dll will be installed in $libdir\n"; 87 unlink catfile( $libdir, $target ); 88 } 89} 90else { 91 if ( $Config{archname} =~ /^x86_64|^ppc64|^s390x|^aarch64|^riscv64/ ) { 92 $libdir =~ s/\bbin\b/lib64/; 93 if ( !-d $libdir ) { 94 my $test = $libdir; 95 $test =~ s/lib64/lib/; 96 $libdir = $test if -d $test; 97 } 98 } 99 else { 100 $libdir =~ s/\bbin\b/lib/; 101 } 102 $hdrdir = $libdir; 103 $hdrdir =~ s!/[^/]+/?$!/include! 104} 105$builder->notes( 'btparse_version' => $version ); 106$builder->notes( 'lib_path' => $libdir ); 107$builder->add_build_element('usrlib'); 108$builder->install_path( 'usrlib' => $libdir ); 109if (defined($hdrdir)) { 110 $builder->add_build_element('usrinclude'); 111 $builder->install_path( 'usrinclude' => $hdrdir ); 112} 113$builder->create_build_script; 114 115sub get_version { 116 my $version = undef; 117 open PM, "lib/Text/BibTeX.pm" 118 or die "Cannot open 'lib/Text/BibTeX.pm' for reading: $!\n"; 119 while (<PM>) { 120 if (m!^our\s+\$VERSION\s*=\s*'([^']+)'!) { 121 $version = $1; 122 last; 123 } 124 } 125 close PM; 126 die "Could not find VERSION on your .pm file. Weirdo!\n" unless $version; 127} 128 129