Mercurial > crates > nonstick
comparison libpam-sys/src/lib.rs @ 190:995aca290452
Restructure the way libpam-sys-impls works to fix cross-compilation.
The previous structure of libpam-sys-impls meant that things got
confusing (including for me) between what constants were build-time
and what constants were run-time. This broke cross-compilation.
This simplifies the way that works so that `libpam-sys-impls` has
*no* build script itself and is intended mostly as a library to be
included in other libraries' build scripts (while also exporting
the PamImpl enum).
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Sat, 02 Aug 2025 18:47:46 -0400 |
| parents | b2456d274576 |
| children | e915c54097d6 |
comparison
equal
deleted
inserted
replaced
| 189:b2456d274576 | 190:995aca290452 |
|---|---|
| 7 //! which can be used to detect the current PAM implementation. | 7 //! which can be used to detect the current PAM implementation. |
| 8 //! - The [`aliases`] submodule, which contains convenient aliases | 8 //! - The [`aliases`] submodule, which contains convenient aliases |
| 9 //! for callback types used in libpam, so you don't have to type | 9 //! for callback types used in libpam, so you don't have to type |
| 10 //! `unsafe extern "C" fn(this is so long)` all the time. | 10 //! `unsafe extern "C" fn(this is so long)` all the time. |
| 11 #![doc = ""] | 11 #![doc = ""] |
| 12 #![doc = concat!("This documentation was built for the **", pam_impl_name!(), "** implementation.")] | 12 #![doc = concat!("This documentation was built for the **", env!("LIBPAMSYS_IMPL"), "** implementation.")] |
| 13 //! | 13 //! |
| 14 //! You can override this **at build time** by setting the `LIBPAMSYS_IMPL` | 14 //! You can override this **at build time** by setting the `LIBPAMSYS_IMPL` |
| 15 //! environment variable to one of the values of the [`pam_impl::PamImpl`] enum. | 15 //! environment variable to one of the values of the [`pam_impl::PamImpl`] enum. |
| 16 //! For more information about configuration, see the documentation of | 16 //! For more information about configuration, see [the documentation of |
| 17 //! [`libpam-sys-impls`](https://crates.io/crates/libpam-sys-impls). | 17 //! libpam-sys-impls](libpam_sys_impls::build_target_impl). |
| 18 #![allow(non_camel_case_types)] | 18 #![allow(non_camel_case_types)] |
| 19 #![allow(unused_imports)] | 19 #![allow(unused_imports)] |
| 20 | 20 |
| 21 pub mod aliases; | 21 pub mod aliases; |
| 22 mod constants; | 22 mod constants; |
| 23 mod ffi; | 23 mod ffi; |
| 24 #[doc(inline)] | 24 #[doc(inline)] |
| 25 pub use crate::{constants::*, ffi::*}; | 25 pub use crate::{constants::*, ffi::*}; |
| 26 #[doc(inline)] | 26 |
| 27 pub use libpam_sys_impls as pam_impl; | 27 /// Information about the current PAM implementation (or the implementation |
| 28 #[doc(inline)] | 28 /// that is being built for). |
| 29 pub use libpam_sys_impls::pam_impl_name; | 29 pub mod pam_impl { |
| 30 #[doc(inline)] | |
| 31 pub use libpam_sys_impls::{PamImpl, enable_pam_impl_cfg, pam_impl_cfg_string}; | |
| 32 | |
| 33 include!(concat!(env!("OUT_DIR"), "/pam_impl_consts.rs")); | |
| 34 } |
