#!/usr/bin/env perl
use v5.16;
use strict;
use warnings;
use ExtUtils::MakeMaker;
use lib qw(inc);
use Devel::CheckLib;

check_lib_or_exit(
    cflags => '-Wall -Wno-unused-result -fno-rtti -O4 -I/usr/local/include',
    header => ['unistd.h', 'stdio.h', 'stdlib.h', 'string.h', 'collocatordb.h'],
    function => 'char *min_v = "1.5.0"; char *v = get_version(); if(strcmp(min_v, v) <= 0) { return 0; } else { fprintf(stderr, "Installed collocatordb version %s is too low. Minimally %s is required.\n", v, min_v); return(1); }',
    libpath => ['/usr/lib', '/usr/local/lib64', '/usr/local/lib'],
    incpath => ['/usr/include', '/usr/local/include'],
    # debug => 1,
    lib => 'collocatordb');

WriteMakefile(
    NAME           => 'derekovecs::server',
    AUTHOR         => 'Marc Kupietz',
    ABSTRACT       => 'Visualization of paradigmatic and syntagmatic word relations.',
    VERSION_FROM   => 'script/derekovecs-server',
    LICENSE        => 'apache',
    # this file uses Devel::CheckLib itself, so installers have to provide it
    # before they can even run it
    CONFIGURE_REQUIRES => {
     'Devel::CheckLib' => '1.16',
    },
    BUILD_REQUIRES => {
     'Test::More' => 0,
     'Test::TempFile' => 0,
     "REST::Client" => 0,
     "Data::Dump" => 0,
    },
    PREREQ_PM      => {
        'Inline::C'                               => '0.82',
        'LWP::Simple'                             => 0,
        'Getopt::Std'                             => 0,
        'Getopt::Long'                            => 0,
        'Log::Any'                                => '1.701',
        'Encode'                                  => "3.17",
        'Mojolicious'                             => '9.23',
        'Mojolicious::Plugin::Util::RandomString' => '0.09',
        'Mojolicious::Plugin::CHI'                => '0.20',
        'Mojolicious::Plugin::ClientIP'           => '0.02',
        'Mojolicious::Plugin::AutoSecrets'        => '0.006',
        'Mojolicious::Plugin::RequestBase'        => '0.3',
        'Mojolicious::Plugin::RemoteAddr'         => 0,
        'Mojolicious::Plugin::Log::Access'        => '0.041',
        'Mojolicious::Plugin::Piwik'              => '1.00',
        'Mojo::JSON'                              => 0,
        "Devel::CheckLib"                         => '1.16',

        # Required for older perl bundles
        'List::Util' => 1.45,

        # Currently on GitHub only (github.com/akron)
        'Mojolicious::Plugin::Localize' => '0.21'

    },
    MIN_PERL_VERSION => '5.016',
    EXE_FILES        => ['./script/derekovecs-server']
);
