35
36:- module(prolog_config,
37 [ prolog_dump_runtime_variables/0
38 ]).
46:- multifile
47 prolog:runtime_config/2.
55prolog_dump_runtime_variables :-
56 ( '$cmd_option_val'(config, Format),
57 Format \== ''
58 -> prolog_dump_runtime_variables(Format)
59 ; prolog_dump_runtime_variables(sh)
60 ).
61
62prolog_dump_runtime_variables(Format) :-
63 print_flag(home, 'PLBASE', Format),
64 print_flag(arch, 'PLARCH', Format),
65 print_flag(address_bits, 'PLBITS', Format),
66 print_flag(version, 'PLVERSION', Format),
67 print_flag(shared_object_extension, 'PLSOEXT', Format),
68 print_flag(shared_object_search_path, 'PLSOPATH', Format),
69 print_flag(c_libdir, 'PLLIBDIR', Format),
70 print_flag(c_lib, 'PLLIB', Format),
71 print_flag(open_shared_object, 'PLSHARED', Format),
72 print_flag(threads, 'PLTHREADS', Format).
73
74print_flag(Flag, Var, Format) :-
75 ( prolog:runtime_config(Flag, Value)
76 -> print_config(Format, Var, Value)
77 ; flag_value(Flag, Value)
78 -> print_config(Format, Var, Value)
79 ; true
80 ).
81
82flag_value(Flag, Value) :-
83 boolean_flag(Flag),
84 ( current_prolog_flag(Flag, true)
85 -> Value = yes
86 ; Value = no
87 ).
88flag_value(c_libdir, Value) :-
89 current_prolog_flag(home, Home),
90 ( current_prolog_flag(c_libdir, Rel)
91 -> atomic_list_concat([Home, Rel], /, Value)
92 ; current_prolog_flag(arch, Arch)
93 -> atomic_list_concat([Home, lib, Arch], /, Value)
94 ).
95flag_value(c_lib, '-lswipl').
96flag_value(Flag, Value) :-
97 current_prolog_flag(Flag, Value).
98
99boolean_flag(threads).
100boolean_flag(open_shared_object).
101
102print_config(sh, Var, Value) :-
103 format('~w=\"~w\";~n', [Var, Value]).
104print_config(cmd, Var, Value) :-
105 ( file_var(Var)
106 -> prolog_to_os_filename(Value, OSValue),
107 format('SET ~w=~w~n', [Var, OSValue])
108 ; format('SET ~w=~w~n', [Var, Value])
109 ).
110
111file_var('PLBASE')
Provide configuration information
This module provides information about the configuration to facilitate linking against Prolog, embedding Prolog or calling Prolog. */