Skip to content

Commit 2deca02

Browse files
committed
allow reading PKG_CONFIG_ARGN
Signed-off-by: Antonio Nuno Monteiro <anmonteiro@gmail.com>
1 parent 44e4d21 commit 2deca02

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

otherlibs/configurator/src/v1.ml

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,7 @@ let which t prog =
616616
module Pkg_config = struct
617617
type nonrec t =
618618
{ pkg_config : string
619+
; pkg_config_args : string list
619620
; configurator : t
620621
}
621622

@@ -625,8 +626,13 @@ module Pkg_config = struct
625626
| s -> s
626627
| exception Not_found -> "pkg-config"
627628
in
629+
let pkg_config_args =
630+
match Sys.getenv "PKG_CONFIG_ARGN" with
631+
| s -> String.split ~on:' ' s
632+
| exception Not_found -> []
633+
in
628634
Option.map (which c pkg_config_exe_name) ~f:(fun pkg_config ->
629-
{ pkg_config; configurator = c })
635+
{ pkg_config; pkg_config_args; configurator = c })
630636

631637
type package_conf =
632638
{ libs : string list
@@ -688,7 +694,8 @@ module Pkg_config = struct
688694
let run what =
689695
match
690696
String.trim
691-
(Process.run_capture_exn c ~dir ?env t.pkg_config [ what; package ])
697+
(Process.run_capture_exn c ~dir ?env t.pkg_config
698+
(t.pkg_config_args @ [ what; package ]))
692699
with
693700
| "" -> []
694701
| s -> String.extract_blank_separated_words s

src/dune_rules/pkg_config.ml

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,18 @@ module Query = struct
2020
| Libs s -> sprintf "%s.libs" s
2121
| Cflags s -> sprintf "%s.cflags" s
2222

23-
let to_args t : _ Command.Args.t list =
23+
let to_args t ~env : _ Command.Args.t list =
24+
let env_args : _ Command.Args.t list =
25+
match Env.get env "PKG_CONFIG_ARGN" with
26+
| Some s -> [ As (String.split_on_char ~sep:' ' s) ]
27+
| None -> []
28+
in
2429
Hidden_deps Dep.(Set.singleton universe)
25-
::
26-
(match t with
27-
| Libs lib -> [ A "--libs"; A lib ]
28-
| Cflags lib -> [ A "--cflags"; A lib ])
30+
:: (env_args
31+
@
32+
match t with
33+
| Libs lib -> [ A "--libs"; A lib ]
34+
| Cflags lib -> [ A "--cflags"; A lib ])
2935

3036
let default = function
3137
| Libs lib -> [ sprintf "-l%s" lib ]
@@ -60,8 +66,9 @@ let gen_rule sctx ~loc ~dir query =
6066
| Error _ -> Memo.return @@ Error `Not_found
6167
| Ok _ as bin ->
6268
let command =
69+
let env = Super_context.context_env sctx in
6370
Command.run ~dir:(Path.build dir) ~stdout_to:(Query.file ~dir query) bin
64-
(Query.to_args query)
71+
(Query.to_args ~env query)
6572
in
6673
let+ () = Super_context.add_rule sctx ~loc ~dir command in
6774
Ok ()

0 commit comments

Comments
 (0)