Исходные файлы Perl 6 NativeCall и C

Какая лучшая стратегия для выпуска привязки Perl 6 для библиотеки C с использованием NativeCall как для Windows, так и для Linux?

Нужно ли разработчику скомпилировать файлы .dll и .so и загрузить их с кодом perl6 в github? Или в perl6, например perl5, есть опция для объединения исходных файлов C с кодом Perl 6, и компилятор C будет работать как часть make и make install?


person smith    schedule 03.03.2016    source источник


Ответы (1)


Библиотеки не нужно предварительно компилировать (хотя они могут быть). Для этого сначала вам понадобится Build.pm файл в корне вашего дистрибутива:

class Builder {
    method build($dist-path) {
        # do build stuff to your module
        # which is located at $dist-path
    }

    # Only needed for panda compatability
    method isa($what) {
        return True if $what.^name eq 'Panda::Builder';
        callsame;
    }
}

Тогда вы захотите использовать такой модуль, как LibraryMake. Здесь мы используем эту make процедуру в build методе:

use LibraryMake;

class Builder {
    method build($dist-path) {
        make($dist-path, "$dist-path/resources");

        # or you could do the appropriate `shell` calls
        # yourself and have no extra dependencies
    }

    ...

Этот метод поддерживается менеджерами пакетов zef и panda, а также позволяет запускать его вручную через perl6 -I. -MBuild -e 'Builder.new.build($*CWD)'

Вот рабочий пример.

person ugexe    schedule 04.03.2016