1:- module(
    2  ppm_foreign,
    3  [
    4    ppm_make/2 % +User, +Repo
    5  ]
    6).

Prolog Package Manager (PPM): Build foreign libraries

author
- Wouter Beek
version
- 2018 */
   14:- use_module(library(filesex)).   15:- use_module(library(lists)).   16:- use_module(library(option)).   17:- use_module(library(process)).   18:- use_module(library(prolog_pack), []).   19
   20:- use_module(library(ppm_generic)).
 ppm_make(+User:atom, +Repo:atom) is det
   28ppm_make(User, Repo) :-
   29  repository_directory(User, Repo, Dir),
   30  make(Dir).
   31
   32make(Dir) :-
   33  catch(
   34    run_make(Dir, [distclean]),
   35    E,
   36    print_message(warning, E)
   37  ),
   38  post_install_foreign(Dir).
   39
   40run_make(Dir, Targets) :-
   41  directory_file_path(Dir, 'Makefile', File),
   42  exists_file(File), !,
   43  prolog_pack:build_environment(Env),
   44  Options = [directory(Dir),env(Env)],
   45  forall(
   46    member(Target, Targets),
   47    prolog_pack:run_process(path(make), [Target], Options)
   48  ).
   49run_make(_, _).
   50
   51post_install_foreign(Dir) :-
   52  prolog_pack:setup_path,
   53  prolog_pack:save_build_environment(Dir),
   54  prolog_pack:configure_foreign(Dir, []),
   55  prolog_pack:make_foreign(Dir, [])