diff --git a/dune-project b/dune-project index 5a2aac5..99e7a26 100644 --- a/dune-project +++ b/dune-project @@ -6,6 +6,8 @@ (generate_opam_files true) +(use_standard_c_and_cxx_flags true) + (source (github anmonteiro/piaf)) diff --git a/lib/cflags/cflags.ml b/lib/cflags/cflags.ml new file mode 100644 index 0000000..a8b691c --- /dev/null +++ b/lib/cflags/cflags.ml @@ -0,0 +1,29 @@ +module C = Configurator.V1 + +let directory_exists fsp = Sys.file_exists fsp && Sys.is_directory fsp + +let default c : C.Pkg_config.package_conf = + if C.ocaml_config_var_exn c "system" = "macosx" + then + if directory_exists "/usr/local/opt/openssl" + then + { libs = [ "-L/usr/local/opt/openssl/lib" ] + ; cflags = [ "-I/usr/local/opt/openssl/include" ] + } + else { libs = [ "-L/opt/local/lib" ]; cflags = [ "-I/opt/local/include" ] } + else { libs = [ "-lssl"; "-lcrypto" ]; cflags = [] } + +let () = + C.main ~name:"ssl" (fun c -> + let default = default c in + let conf = + match C.Pkg_config.get c with + | None -> default + | Some pc -> + (match C.Pkg_config.query pc ~package:"openssl" with + | Some s -> s + | None -> default) + in + C.Flags.write_sexp "c_library_flags.sexp" conf.libs; + C.Flags.write_sexp "c_flags.sexp" conf.cflags) + diff --git a/lib/cflags/dune b/lib/cflags/dune new file mode 100644 index 0000000..d73d966 --- /dev/null +++ b/lib/cflags/dune @@ -0,0 +1,4 @@ +(executable + (name cflags) + (libraries dune-configurator)) + diff --git a/lib/dune b/lib/dune index 8f547d5..094f20c 100644 --- a/lib/dune +++ b/lib/dune @@ -21,4 +21,13 @@ piaf.stream) (foreign_stubs (language c) - (names piaf_bigarray_read piaf_openssl_rand piaf_openssl_sha piaf_fdutils))) + (names piaf_bigarray_read piaf_openssl_rand piaf_openssl_sha piaf_fdutils) + (flags (:include c_flags.sexp))) + (c_library_flags + (:include c_library_flags.sexp))) + +(rule + (targets c_flags.sexp c_library_flags.sexp) + (action + (run ./cflags/cflags.exe))) +