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