comparison libpam-sys/libpam-sys-test/build.rs @ 134:6c1e1bdb4164

Use standard #[cfg] directives rather than custom proc macros. Instead of having to do a bunch of custom parsing and other logic that tools often choke on, this change introduces an easy way to depend upon custom #[cfg]s provided by the libpam-sys crate.
author Paul Fisher <paul@pfish.zone>
date Thu, 03 Jul 2025 11:03:36 -0400
parents 0b6a17f8c894
children efbc235f01d3
comparison
equal deleted inserted replaced
133:32b2a545ca3e 134:6c1e1bdb4164
1 use bindgen::MacroTypeVariation; 1 use bindgen::MacroTypeVariation;
2 use libpam_sys_impls::__pam_impl_enum__; 2 use libpam_sys::pam_impl::PamImpl;
3 use proc_macro2::{Group, Ident, TokenStream, TokenTree}; 3 use proc_macro2::{Group, Ident, TokenStream, TokenTree};
4 use quote::{format_ident, ToTokens}; 4 use quote::{format_ident, ToTokens};
5 use std::path::Path; 5 use std::path::Path;
6 use std::process::Command; 6 use std::process::Command;
7 use std::str::FromStr; 7 use std::str::FromStr;
8 use std::{env, fs}; 8 use std::{env, fs};
9 use syn::{Item, ItemConst}; 9 use syn::{Item, ItemConst};
10
11 // We're using the macro directly so we can match exhaustively.
12 __pam_impl_enum__!();
13 10
14 const REDIR_FD: &str = "pam_modutil_redirect_fd"; 11 const REDIR_FD: &str = "pam_modutil_redirect_fd";
15 12
16 fn main() { 13 fn main() {
17 let config = match PamImpl::CURRENT { 14 let config = match PamImpl::CURRENT {
47 }, 44 },
48 PamImpl::XSso => TestConfig { 45 PamImpl::XSso => TestConfig {
49 headers: vec!["\"xsso_pam_appl.h\""], 46 headers: vec!["\"xsso_pam_appl.h\""],
50 ..Default::default() 47 ..Default::default()
51 }, 48 },
49 other => panic!("PAM implementation {other:?} is not yet tested"),
52 }; 50 };
53 generate_const_test(&config); 51 generate_const_test(&config);
54 generate_ctest(&config); 52 generate_ctest(&config);
55 } 53 }
56 54