1:- module(
2 ppm_foreign,
3 [
4 ppm_make/2 5 ]
6).
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)).
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, [])
Prolog Package Manager (PPM): Build foreign libraries