diff --git a/.gitignore b/.gitignore index 25b4d6c..115ad83 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,5 @@ -SOURCES/cbindgen-vendor-0.14.3.tar.xz -SOURCES/libffi-3.0.13-18.el7_3.src.rpm -SOURCES/nodejs-10.21.0-5.fc32.src.rpm -SOURCES/nspr-4.25.0-1.el8_0.src.rpm -SOURCES/nss-3.53.1-3.fc32.src.rpm -SOURCES/openssl-1.0.2k-19.6.bundle.el7_7.src.rpm -SOURCES/thunderbird-78.13.0.processed-source.tar.xz -SOURCES/thunderbird-langpacks-78.13.0-20210804.tar.xz -SOURCES/yasm-1.2.0-3.el5.src.rpm +SOURCES/cbindgen-vendor.tar.xz +SOURCES/nspr-4.32.0-1.el8_1.src.rpm +SOURCES/nss-3.67.0-6.el8_1.src.rpm +SOURCES/thunderbird-91.3.0.processed-source.tar.xz +SOURCES/thunderbird-langpacks-91.3.0-20211102.tar.xz diff --git a/.thunderbird.metadata b/.thunderbird.metadata index d3f9204..c13e973 100644 --- a/.thunderbird.metadata +++ b/.thunderbird.metadata @@ -1,9 +1,5 @@ -a9effcc06cf80eaa22f12c1f7d6aa4266a1c4966 SOURCES/cbindgen-vendor-0.14.3.tar.xz -e188ab1a444697bc649e223c28389d82ca94c472 SOURCES/libffi-3.0.13-18.el7_3.src.rpm -5715f987bc0024ce5d72993cb101b8268350033b SOURCES/nodejs-10.21.0-5.fc32.src.rpm -07d67c90367c3ec0d6cebc1a5793c21076d34b78 SOURCES/nspr-4.25.0-1.el8_0.src.rpm -223c02166b1cb9863b9f453ef687d7805a93e7af SOURCES/nss-3.53.1-3.fc32.src.rpm -a379070abf5000cde61411c97af7e733b267a4d3 SOURCES/openssl-1.0.2k-19.6.bundle.el7_7.src.rpm -0c232f76b98488f3d8f5959a5ddb52eed6ba6b81 SOURCES/thunderbird-78.13.0.processed-source.tar.xz -2b876b8ec02f0425896fdcb8457194f7d0862ac7 SOURCES/thunderbird-langpacks-78.13.0-20210804.tar.xz -77fd30f7ebc12a629a31c1e252cec06af55a71fe SOURCES/yasm-1.2.0-3.el5.src.rpm +c822547dbc12e2baebdfdfb38b665e23f0c2513a SOURCES/cbindgen-vendor.tar.xz +b5fd1332d8e0d37339ae170c7bebcb63a40b22e0 SOURCES/nspr-4.32.0-1.el8_1.src.rpm +29da2158892dc108a7a21fd8411fccf0061481b3 SOURCES/nss-3.67.0-6.el8_1.src.rpm +b46bdec3cb1e38095ad6862e2368e1ae21047fee SOURCES/thunderbird-91.3.0.processed-source.tar.xz +13db069583d772237cfe01779476867d11ba2ed6 SOURCES/thunderbird-langpacks-91.3.0-20211102.tar.xz diff --git a/README.debrand b/README.debrand deleted file mode 100644 index 01c46d2..0000000 --- a/README.debrand +++ /dev/null @@ -1,2 +0,0 @@ -Warning: This package was configured for automatic debranding, but the changes -failed to apply. diff --git a/SOURCES/D87019-thin-vec-big-endian.diff b/SOURCES/D87019-thin-vec-big-endian.diff deleted file mode 100644 index d4c2a7e..0000000 --- a/SOURCES/D87019-thin-vec-big-endian.diff +++ /dev/null @@ -1,681 +0,0 @@ ---- thunderbird-78.9.0/Cargo.lock.D87019-thin-vec-big-endian.diff 2021-03-22 11:34:35.584716638 +0100 -+++ thunderbird-78.9.0/Cargo.lock 2021-03-22 12:29:14.140624979 +0100 -@@ -4792,9 +4792,9 @@ checksum = "8eaa81235c7058867fa8c0e7314f - - [[package]] - name = "thin-vec" --version = "0.1.2" -+version = "0.2.1" - source = "registry+https://github.com/rust-lang/crates.io-index" --checksum = "3a93c9ade36a827a69257925808463db46ffcf193442fad01eb9bdc1d31aed81" -+checksum = "dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0" - - [[package]] - name = "thiserror" ---- thunderbird-78.9.0/gfx/webrender_bindings/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/gfx/webrender_bindings/Cargo.toml 2021-03-22 11:34:35.587716631 +0100 -@@ -20,7 +20,7 @@ nsstring = { path = "../../xpcom/rust/ns - bincode = "1.0" - uuid = { version = "0.8", features = ["v4"] } - fxhash = "0.2.1" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - swgl = { path = "../wr/swgl" } - - [dependencies.webrender] ---- thunderbird-78.9.0/intl/l10n/rust/fluent-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/intl/l10n/rust/fluent-ffi/Cargo.toml 2021-03-22 11:34:35.589716625 +0100 -@@ -10,4 +10,4 @@ fluent-pseudo = "0.2" - intl-memoizer = "0.4" - unic-langid = "0.8" - nsstring = { path = "../../../../xpcom/rust/nsstring" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } ---- thunderbird-78.9.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/intl/locale/rust/fluent-langneg-ffi/Cargo.toml 2021-03-22 11:34:35.590716623 +0100 -@@ -9,7 +9,7 @@ edition = "2018" - nserror = { path = "../../../../xpcom/rust/nserror" } - nsstring = { path = "../../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../../xpcom/rust/xpcom" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - fluent-langneg = { version = "0.12.1", features = ["cldr"] } - unic-langid = "0.8" - unic-langid-ffi = { path = "../unic-langid-ffi" } ---- thunderbird-78.9.0/intl/locale/rust/unic-langid-ffi/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:16.000000000 +0100 -+++ thunderbird-78.9.0/intl/locale/rust/unic-langid-ffi/Cargo.toml 2021-03-22 11:34:35.591716620 +0100 -@@ -9,5 +9,5 @@ edition = "2018" - nserror = { path = "../../../../xpcom/rust/nserror" } - nsstring = { path = "../../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../../xpcom/rust/xpcom" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - unic-langid = { version = "0.8", features = ["likelysubtags"] } ---- thunderbird-78.9.0/netwerk/socket/neqo_glue/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:40.000000000 +0100 -+++ thunderbird-78.9.0/netwerk/socket/neqo_glue/Cargo.toml 2021-03-22 11:34:35.600716597 +0100 -@@ -14,7 +14,7 @@ neqo-common = { tag = "v0.2.4", git = "h - nserror = { path = "../../../xpcom/rust/nserror" } - nsstring = { path = "../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../xpcom/rust/xpcom" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - - [dependencies.neqo-crypto] - tag = "v0.2.4" ---- thunderbird-78.9.0/security/manager/ssl/cert_storage/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:52.000000000 +0100 -+++ thunderbird-78.9.0/security/manager/ssl/cert_storage/Cargo.toml 2021-03-22 11:34:35.601716594 +0100 -@@ -18,6 +18,6 @@ rust_cascade = "0.6.0" - sha2 = "^0.8" - storage_variant = { path = "../../../../storage/variant" } - tempfile = "3" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - time = "0.1" - xpcom = { path = "../../../../xpcom/rust/xpcom" } ---- thunderbird-78.9.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:49.000000000 +0100 -+++ thunderbird-78.9.0/services/fxaccounts/rust-bridge/firefox-accounts-bridge/Cargo.toml 2021-03-22 11:34:35.603716589 +0100 -@@ -20,5 +20,5 @@ nserror = { path = "../../../../xpcom/ru - nsstring = { path = "../../../../xpcom/rust/nsstring" } - xpcom = { path = "../../../../xpcom/rust/xpcom" } - storage_variant = { path = "../../../../storage/variant" } --thin-vec = { version = "0.1", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - fxa-client = { git = "https://github.com/mozilla/application-services", rev = "61dcc364ac0d6d0816ab88a494bbf20d824b009b", features = ["gecko"] } ---- thunderbird-78.9.0/services/sync/golden_gate/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:35:53.000000000 +0100 -+++ thunderbird-78.9.0/services/sync/golden_gate/Cargo.toml 2021-03-22 11:34:35.605716584 +0100 -@@ -19,5 +19,5 @@ sync15-traits = { git = "https://github. - xpcom = { path = "../../../xpcom/rust/xpcom" } - - [dependencies.thin-vec] --version = "0.1.0" -+version = "0.2.1" - features = ["gecko-ffi"] ---- thunderbird-78.9.0/third_party/rust/thin-vec/.cargo-checksum.json.D87019-thin-vec-big-endian.diff 2021-03-22 11:34:35.606716581 +0100 -+++ thunderbird-78.9.0/third_party/rust/thin-vec/.cargo-checksum.json 2021-03-22 12:30:38.588587238 +0100 -@@ -1 +1 @@ --{"files":{"Cargo.toml":"7b164cc8a702a204a4732cb4da2940711b8e3be915c258e2a972d4874d767b4c","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/lib.rs":"9f2a087cabfe0b6f83818323bb9004b45fe7548c51376816fd8d4572256bd0e8","src/range.rs":"bac59bcb6230367a39c7e28ac15263e4526f966cd8c72015873017f17c115aaa"},"package":"3a93c9ade36a827a69257925808463db46ffcf193442fad01eb9bdc1d31aed81"} -\ No newline at end of file -+{"files":{"Cargo.toml":"754c05523d17eb7591c3ea2c9294e47c05fbb257fed04b78546fb2ec7cafa8b4","README.md":"c26d7101e3031e7dd8890ce938e50cad7a1e6adf7fc2f2b0d3c36b03afe68c0b","src/lib.rs":"627c6094c3f0286dba25bc73f5672c06c5061c25b01c513d213cbdda100673a2"},"package":"dcc760ada4a9f56fc6d0e81bd143984ebc7bb1b875a6891aa2fa613ca7394fc0"} ---- thunderbird-78.9.0/third_party/rust/thin-vec/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/third_party/rust/thin-vec/Cargo.toml 2021-03-22 12:32:38.577621737 +0100 -@@ -11,8 +11,9 @@ - # will likely look very different (and much more reasonable) - - [package] -+edition = "2018" - name = "thin-vec" --version = "0.1.2" -+version = "0.2.1" - authors = ["Alexis Beingessner "] - description = "a vec that takes up less space on the stack" - homepage = "https://github.com/gankro/thin-vec" ---- thunderbird-78.9.0/third_party/rust/thin-vec/src/lib.rs.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:28.000000000 +0100 -+++ thunderbird-78.9.0/third_party/rust/thin-vec/src/lib.rs 2021-03-22 12:34:10.271595434 +0100 -@@ -1,47 +1,252 @@ --mod range; -+//! ThinVec is exactly the same as Vec, except that it stores its `len` and `capacity` in the buffer -+//! it allocates. -+//! -+//! This makes the memory footprint of ThinVecs lower; notably in cases where space is reserved for -+//! a non-existence ThinVec. So `Vec>` and `Option>::None` will waste less -+//! space. Being pointer-sized also means it can be passed/stored in registers. -+//! -+//! Of course, any actually constructed ThinVec will theoretically have a bigger allocation, but -+//! the fuzzy nature of allocators means that might not actually be the case. -+//! -+//! Properties of Vec that are preserved: -+//! * `ThinVec::new()` doesn't allocate (it points to a statically allocated singleton) -+//! * reallocation can be done in place -+//! * `size_of::>()` == `size_of::>>()` -+//! -+//! Properties of Vec that aren't preserved: -+//! * `ThinVec` can't ever be zero-cost roundtripped to a `Box<[T]>`, `String`, or `*mut T` -+//! * `from_raw_parts` doesn't exist -+//! * ThinVec currently doesn't bother to not-allocate for Zero Sized Types (e.g. `ThinVec<()>`), -+//! but it could be done if someone cared enough to implement it. -+//! -+//! -+//! -+//! # Gecko FFI -+//! -+//! If you enable the gecko-ffi feature, ThinVec will verbatim bridge with the nsTArray type in -+//! Gecko (Firefox). That is, ThinVec and nsTArray have identical layouts *but not ABIs*, -+//! so nsTArrays/ThinVecs an be natively manipulated by C++ and Rust, and ownership can be -+//! transferred across the FFI boundary (**IF YOU ARE CAREFUL, SEE BELOW!!**). -+//! -+//! While this feature is handy, it is also inherently dangerous to use because Rust and C++ do not -+//! know about eachother. Specifically, this can be an issue with non-POD types (types which -+//! have destructors, move constructors, or are `!Copy`). -+//! -+//! ## Do Not Pass By Value -+//! -+//! The biggest thing to keep in mind is that **FFI functions cannot pass ThinVec/nsTArray -+//! by-value**. That is, these are busted APIs: -+//! -+//! ```rust,ignore -+//! // BAD WRONG -+//! extern fn process_data(data: ThinVec) { ... } -+//! // BAD WRONG -+//! extern fn get_data() -> ThinVec { ... } -+//! ``` -+//! -+//! You must instead pass by-reference: -+//! -+//! ```rust -+//! # use thin_vec::*; -+//! # use std::mem; -+//! -+//! // Read-only access, ok! -+//! extern fn process_data(data: &ThinVec) { -+//! for val in data { -+//! println!("{}", val); -+//! } -+//! } -+//! -+//! // Replace with empty instance to take ownership, ok! -+//! extern fn consume_data(data: &mut ThinVec) { -+//! let owned = mem::replace(data, ThinVec::new()); -+//! mem::drop(owned); -+//! } -+//! -+//! // Mutate input, ok! -+//! extern fn add_data(dataset: &mut ThinVec) { -+//! dataset.push(37); -+//! dataset.push(12); -+//! } -+//! -+//! // Return via out-param, usually ok! -+//! // -+//! // WARNING: output must be initialized! (Empty nsTArrays are free, so just do it!) -+//! extern fn get_data(output: &mut ThinVec) { -+//! *output = thin_vec![1, 2, 3, 4, 5]; -+//! } -+//! ``` -+//! -+//! Ignorable Explanation For Those Who Really Want To Know Why: -+//! -+//! > The fundamental issue is that Rust and C++ can't currently communicate about destructors, and -+//! > the semantics of C++ require destructors of function arguments to be run when the function -+//! > returns. Whether the callee or caller is responsible for this is also platform-specific, so -+//! > trying to hack around it manually would be messy. -+//! > -+//! > Also a type having a destructor changes its C++ ABI, because that type must actually exist -+//! > in memory (unlike a trivial struct, which is often passed in registers). We don't currently -+//! > have a way to communicate to Rust that this is happening, so even if we worked out the -+//! > destructor issue with say, MaybeUninit, it would still be a non-starter without some RFCs -+//! > to add explicit rustc support. -+//! > -+//! > Realistically, the best answer here is to have a "heavier" bindgen that can secretly -+//! > generate FFI glue so we can pass things "by value" and have it generate by-reference code -+//! > behind our back (like the cxx crate does). This would muddy up debugging/searchfox though. -+//! -+//! ## Types Should Be Trivially Relocatable -+//! -+//! Types in Rust are always trivially relocatable (unless suitably borrowed/[pinned][]/hidden). -+//! This means all Rust types are legal to relocate with a bitwise copy, you cannot provide -+//! copy or move constructors to execute when this happens, and the old location won't have its -+//! destructor run. This will cause problems for types which have a significant location -+//! (types that intrusively point into themselves or have their location registered with a service). -+//! -+//! While relocations are generally predictable if you're very careful, **you should avoid using -+//! types with significant locations with Rust FFI**. -+//! -+//! Specifically, ThinVec will trivially relocate its contents whenever it needs to reallocate its -+//! buffer to change its capacity. This is the default reallocation strategy for nsTArray, and is -+//! suitable for the vast majority of types. Just be aware of this limitation! -+//! -+//! ## Auto Arrays Are Dangerous -+//! -+//! ThinVec has *some* support for handling auto arrays which store their buffer on the stack, -+//! but this isn't well tested. -+//! -+//! Regardless of how much support we provide, Rust won't be aware of the buffer's limited lifetime, -+//! so standard auto array safety caveats apply about returning/storing them! ThinVec won't ever -+//! produce an auto array on its own, so this is only an issue for transferring an nsTArray into -+//! Rust. -+//! -+//! ## Other Issues -+//! -+//! Standard FFI caveats also apply: -+//! -+//! * Rust is more strict about POD types being initialized (use MaybeUninit if you must) -+//! * `ThinVec` has no idea if the C++ version of `T` has move/copy/assign/delete overloads -+//! * `nsTArray` has no idea if the Rust version of `T` has a Drop/Clone impl -+//! * C++ can do all sorts of unsound things that Rust can't catch -+//! * C++ and Rust don't agree on how zero-sized/empty types should be handled -+//! -+//! The gecko-ffi feature will not work if you aren't linking with code that has nsTArray -+//! defined. Specifically, we must share the symbol for nsTArray's empty singleton. You will get -+//! linking errors if that isn't defined. -+//! -+//! The gecko-ffi feature also limits ThinVec to the legacy behaviors of nsTArray. Most notably, -+//! nsTArray has a maximum capacity of i32::MAX (~2.1 billion items). Probably not an issue. -+//! Probably. -+//! -+//! [pinned]: https://doc.rust-lang.org/std/pin/index.html - - use std::{fmt, io, ptr, mem, slice}; - use std::collections::Bound; - use std::iter::FromIterator; - use std::slice::IterMut; --use std::ops::{Deref, DerefMut}; -+use std::ops::{Deref, DerefMut, RangeBounds}; - use std::marker::PhantomData; - use std::alloc::*; - use std::cmp::*; - use std::hash::*; - use std::borrow::*; --use range::RangeArgument; - use std::ptr::NonNull; - --#[cfg(not(feature = "gecko-ffi"))] --type SizeType = usize; --#[cfg(feature = "gecko-ffi")] --type SizeType = u32; -+use impl_details::*; - --#[cfg(feature = "gecko-ffi")] --const AUTO_MASK: u32 = 1 << 31; --#[cfg(feature = "gecko-ffi")] --const CAP_MASK: u32 = !AUTO_MASK; -+// modules: a simple way to cfg a whole bunch of impl details at once - - #[cfg(not(feature = "gecko-ffi"))] --const MAX_CAP: usize = !0; --#[cfg(feature = "gecko-ffi")] --const MAX_CAP: usize = i32::max_value() as usize; -+mod impl_details { -+ pub type SizeType = usize; -+ pub const MAX_CAP: usize = !0; - --#[cfg(not(feature = "gecko-ffi"))] --#[inline(always)] --fn assert_size(x: usize) -> SizeType { x } -+ #[inline(always)] -+ pub fn assert_size(x: usize) -> SizeType { x } -+} - - #[cfg(feature = "gecko-ffi")] --#[inline] --fn assert_size(x: usize) -> SizeType { -- if x > MAX_CAP as usize { -- panic!("nsTArray size may not exceed the capacity of a 32-bit sized int"); -+mod impl_details { -+ // Support for briding a gecko nsTArray verbatim into a ThinVec. -+ // -+ // ThinVec can't see copy/move/delete implementations -+ // from C++ -+ // -+ // The actual layout of an nsTArray is: -+ // -+ // ```cpp -+ // struct { -+ // uint32_t mLength; -+ // uint32_t mCapacity: 31; -+ // uint32_t mIsAutoArray: 1; -+ // } -+ // ``` -+ // -+ // Rust doesn't natively support bit-fields, so we manually mask -+ // and shift the bit. When the "auto" bit is set, the header and buffer -+ // are actually on the stack, meaning the ThinVec pointer-to-header -+ // is essentially an "owned borrow", and therefore dangerous to handle. -+ // There are no safety guards for this situation. -+ // -+ // On little-endian platforms, the auto bit will be the high-bit of -+ // our capacity u32. On big-endian platforms, it will be the low bit. -+ // Hence we need some platform-specific CFGs for the necessary masking/shifting. -+ // -+ // ThinVec won't ever construct an auto array. They only happen when -+ // bridging from C++. This means we don't need to ever set/preserve the bit. -+ // We just need to be able to read and handle it if it happens to be there. -+ // -+ // Handling the auto bit mostly just means not freeing/reallocating the buffer. -+ -+ pub type SizeType = u32; -+ -+ pub const MAX_CAP: usize = i32::max_value() as usize; -+ -+ // Little endian: the auto bit is the high bit, and the capacity is -+ // verbatim. So we just need to mask off the high bit. Note that -+ // this masking is unnecessary when packing, because assert_size -+ // guards against the high bit being set. -+ #[cfg(target_endian = "little")] -+ pub fn pack_capacity(cap: SizeType) -> SizeType { -+ cap as SizeType -+ } -+ #[cfg(target_endian = "little")] -+ pub fn unpack_capacity(cap: SizeType) -> usize { -+ (cap as usize) & !(1 << 31) -+ } -+ #[cfg(target_endian = "little")] -+ pub fn is_auto(cap: SizeType) -> bool { -+ (cap & (1 << 31)) != 0 -+ } -+ -+ // Big endian: the auto bit is the low bit, and the capacity is -+ // shifted up one bit. Masking out the auto bit is unnecessary, -+ // as rust shifts always shift in 0's for unsigned integers. -+ #[cfg(target_endian = "big")] -+ pub fn pack_capacity(cap: SizeType) -> SizeType { -+ (cap as SizeType) << 1 -+ } -+ #[cfg(target_endian = "big")] -+ pub fn unpack_capacity(cap: SizeType) -> usize { -+ (cap >> 1) as usize -+ } -+ #[cfg(target_endian = "big")] -+ pub fn is_auto(cap: SizeType) -> bool { -+ (cap & 1) != 0 - } -- x as SizeType -+ -+ #[inline] -+ pub fn assert_size(x: usize) -> SizeType { -+ if x > MAX_CAP as usize { -+ panic!("nsTArray size may not exceed the capacity of a 32-bit sized int"); -+ } -+ x as SizeType -+ } -+ - } - --/// The header of a ThinVec -+/// The header of a ThinVec. -+/// -+/// The _cap can be a bitfield, so use accessors to avoid trouble. - #[repr(C)] - struct Header { - _len: SizeType, -@@ -53,38 +258,10 @@ impl Header { - self._len as usize - } - -- #[cfg(feature = "gecko-ffi")] -- fn cap(&self) -> usize { -- (self._cap & CAP_MASK) as usize -- } -- -- #[cfg(not(feature = "gecko-ffi"))] -- fn cap(&self) -> usize { -- self._cap as usize -- } -- - fn set_len(&mut self, len: usize) { - self._len = assert_size(len); - } - -- #[cfg(feature = "gecko-ffi")] -- fn set_cap(&mut self, cap: usize) { -- debug_assert!(cap & (CAP_MASK as usize) == cap); -- // FIXME: this is busted because it reads uninit memory -- // debug_assert!(!self.uses_stack_allocated_buffer()); -- self._cap = assert_size(cap) & CAP_MASK; -- } -- -- #[cfg(feature = "gecko-ffi")] -- fn uses_stack_allocated_buffer(&self) -> bool { -- self._cap & AUTO_MASK != 0 -- } -- -- #[cfg(not(feature = "gecko-ffi"))] -- fn set_cap(&mut self, cap: usize) { -- self._cap = assert_size(cap); -- } -- - fn data(&self) -> *mut T { - let header_size = mem::size_of::
(); - let padding = padding::(); -@@ -102,6 +279,41 @@ impl Header { - } - } - -+ -+#[cfg(feature = "gecko-ffi")] -+impl Header { -+ fn cap(&self) -> usize { -+ unpack_capacity(self._cap) -+ } -+ -+ fn set_cap(&mut self, cap: usize) { -+ // debug check that our packing is working -+ debug_assert_eq!(unpack_capacity(pack_capacity(cap as SizeType)), cap); -+ // FIXME: this assert is busted because it reads uninit memory -+ // debug_assert!(!self.uses_stack_allocated_buffer()); -+ -+ // NOTE: this always stores a cleared auto bit, because set_cap -+ // is only invoked by Rust, and Rust doesn't create auto arrays. -+ self._cap = pack_capacity(assert_size(cap)); -+ } -+ -+ fn uses_stack_allocated_buffer(&self) -> bool { -+ is_auto(self._cap) -+ } -+} -+ -+#[cfg(not(feature = "gecko-ffi"))] -+impl Header { -+ fn cap(&self) -> usize { -+ self._cap as usize -+ } -+ -+ fn set_cap(&mut self, cap: usize) { -+ self._cap = assert_size(cap); -+ } -+} -+ -+ - /// Singleton that all empty collections share. - /// Note: can't store non-zero ZSTs, we allocate in that case. We could - /// optimize everything to not do that (basically, make ptr == len and branch -@@ -118,9 +330,7 @@ extern { - - // TODO: overflow checks everywhere - --// Utils -- --fn oom() -> ! { std::process::abort() } -+// Utils for computing layouts of allocations - - fn alloc_size(cap: usize) -> usize { - // Compute "real" header size with pointer math -@@ -165,9 +375,10 @@ fn layout(cap: usize) -> Layout { - fn header_with_capacity(cap: usize) -> NonNull
{ - debug_assert!(cap > 0); - unsafe { -- let header = alloc(layout::(cap)) as *mut Header; -+ let layout = layout::(cap); -+ let header = alloc(layout) as *mut Header; - -- if header.is_null() { oom() } -+ if header.is_null() { handle_alloc_error(layout) } - - // "Infinite" capacity for zero-sized types: - (*header).set_cap(if mem::size_of::() == 0 { MAX_CAP } else { cap }); -@@ -179,28 +390,8 @@ fn header_with_capacity(cap: usize) - - - - --/// ThinVec is exactly the same as Vec, except that it stores its `len` and `capacity` in the buffer --/// it allocates. --/// --/// This makes the memory footprint of ThinVecs lower; notably in cases where space is reserved for --/// a non-existence ThinVec. So `Vec>` and `Option>::None` will waste less --/// space. Being pointer-sized also means it can be passed/stored in registers. --/// --/// Of course, any actually constructed ThinVec will theoretically have a bigger allocation, but --/// the fuzzy nature of allocators means that might not actually be the case. --/// --/// Properties of Vec that are preserved: --/// * `ThinVec::new()` doesn't allocate (it points to a statically allocated singleton) --/// * reallocation can be done in place --/// * `size_of::>()` == `size_of::>>()` --/// * NOTE: This is only possible when the `unstable` feature is used. --/// --/// Properties of Vec that aren't preserved: --/// * `ThinVec` can't ever be zero-cost roundtripped to a `Box<[T]>`, `String`, or `*mut T` --/// * `from_raw_parts` doesn't exist --/// * ThinVec currently doesn't bother to not-allocate for Zero Sized Types (e.g. `ThinVec<()>`), --/// but it could be done if someone cared enough to implement it. --#[cfg_attr(feature = "gecko-ffi", repr(C))] -+/// See the crate's top level documentation for a description of this type. -+#[repr(C)] - pub struct ThinVec { - ptr: NonNull
, - boo: PhantomData, -@@ -630,15 +821,15 @@ impl ThinVec { - } - - pub fn drain(&mut self, range: R) -> Drain -- where R: RangeArgument -+ where R: RangeBounds - { - let len = self.len(); -- let start = match range.start() { -+ let start = match range.start_bound() { - Bound::Included(&n) => n, - Bound::Excluded(&n) => n + 1, - Bound::Unbounded => 0, - }; -- let end = match range.end() { -+ let end = match range.end_bound() { - Bound::Included(&n) => n + 1, - Bound::Excluded(&n) => n, - Bound::Unbounded => len, -@@ -688,11 +879,30 @@ impl ThinVec { - alloc_size::(new_cap), - ) as *mut Header; - -- if ptr.is_null() { oom() } -+ if ptr.is_null() { handle_alloc_error(layout::(new_cap)) } - (*ptr).set_cap(new_cap); - self.ptr = NonNull::new_unchecked(ptr); - } else { -- self.ptr = header_with_capacity::(new_cap); -+ let mut new_header = header_with_capacity::(new_cap); -+ -+ // If we get here and have a non-zero len, then we must be handling -+ // a gecko auto array, and we have items in a stack buffer. We shouldn't -+ // free it, but we should memcopy the contents out of it and mark it as empty. -+ // -+ // T is assumed to be trivially relocatable, as this is ~required -+ // for Rust compatibility anyway. Furthermore, we assume C++ won't try -+ // to unconditionally destroy the contents of the stack allocated buffer -+ // (i.e. it's obfuscated behind a union). -+ // -+ // In effect, we are partially reimplementing the auto array move constructor -+ // by leaving behind a valid empty instance. -+ let len = self.len(); -+ if cfg!(feature = "gecko-ffi") && len > 0 { -+ new_header.as_mut().data::().copy_from_nonoverlapping(self.data_raw(), len); -+ self.set_len(0); -+ } -+ -+ self.ptr = new_header; - } - } - -@@ -1093,10 +1303,7 @@ mod tests { - use std::mem::size_of; - assert_eq!(size_of::>(), size_of::<&u8>()); - -- // We don't perform the null-pointer optimization on stable rust. -- if cfg!(feature = "unstable") { -- assert_eq!(size_of::>>(), size_of::<&u8>()); -- } -+ assert_eq!(size_of::>>(), size_of::<&u8>()); - } - - #[test] -@@ -1731,7 +1938,6 @@ mod std_tests { - assert_eq!(v, &[(), ()]); - } - --/* TODO: support inclusive ranges - #[test] - fn test_drain_inclusive_range() { - let mut v = thin_vec!['a', 'b', 'c', 'd', 'e']; -@@ -1761,6 +1967,7 @@ mod std_tests { - } - - #[test] -+ #[cfg(not(feature = "gecko-ffi"))] - fn test_drain_max_vec_size() { - let mut v = ThinVec::<()>::with_capacity(usize::max_value()); - unsafe { v.set_len(usize::max_value()); } -@@ -1781,7 +1988,6 @@ mod std_tests { - let mut v = thin_vec![1, 2, 3, 4, 5]; - v.drain(5..=5); - } --*/ - - /* TODO: implement splice? - #[test] -@@ -2187,7 +2393,7 @@ mod std_tests { - assert!(v.capacity() >= 33) - } - --/* TODO: implement try_reserve -+/* TODO: implement try_reserve - #[test] - fn test_try_reserve() { - ---- thunderbird-78.9.0/toolkit/components/cascade_bloom_filter/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:12.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/cascade_bloom_filter/Cargo.toml 2021-03-22 11:37:44.287130273 +0100 -@@ -8,5 +8,5 @@ nserror = { path = "../../../xpcom/rust/ - nsstring = { path = "../../../xpcom/rust/nsstring" } - rental = "0.5.5" - rust_cascade = "0.6.0" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - xpcom = { path = "../../../xpcom/rust/xpcom" } ---- thunderbird-78.9.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:28.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/extensions/storage/webext_storage_bridge/Cargo.toml 2021-03-22 11:37:44.288130270 +0100 -@@ -13,7 +13,7 @@ moz_task = { path = "../../../../../xpco - nserror = { path = "../../../../../xpcom/rust/nserror" } - nsstring = { path = "../../../../../xpcom/rust/nsstring" } - once_cell = "1" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - xpcom = { path = "../../../../../xpcom/rust/xpcom" } - serde = "1" - serde_json = "1" ---- thunderbird-78.9.0/toolkit/components/kvstore/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/kvstore/Cargo.toml 2021-03-22 11:37:44.289130267 +0100 -@@ -18,7 +18,7 @@ rkv = "0.10.2" - storage_variant = { path = "../../../storage/variant" } - xpcom = { path = "../../../xpcom/rust/xpcom" } - tempfile = "3" --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } - - # Get rid of failure's dependency on backtrace. Eventually - # backtrace will move into Rust core, but we don't need it here. ---- thunderbird-78.9.0/toolkit/components/places/bookmark_sync/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:25.000000000 +0100 -+++ thunderbird-78.9.0/toolkit/components/places/bookmark_sync/Cargo.toml 2021-03-22 11:37:44.289130267 +0100 -@@ -19,5 +19,5 @@ url = "2.0" - xpcom = { path = "../../../../xpcom/rust/xpcom" } - - [dependencies.thin-vec] --version = "0.1.0" -+version = "0.2.1" - features = ["gecko-ffi"] ---- thunderbird-78.9.0/tools/profiler/rust-helper/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/tools/profiler/rust-helper/Cargo.toml 2021-03-22 11:37:44.290130265 +0100 -@@ -23,7 +23,7 @@ features = ["endian_fd", "elf32", "elf64 - default-features = false - - [dependencies.thin-vec] --version = "0.1.0" -+version = "0.2.1" - features = ["gecko-ffi"] - - [features] ---- thunderbird-78.9.0/xpcom/rust/xpcom/Cargo.toml.D87019-thin-vec-big-endian.diff 2021-03-19 22:36:33.000000000 +0100 -+++ thunderbird-78.9.0/xpcom/rust/xpcom/Cargo.toml 2021-03-22 11:37:44.291130262 +0100 -@@ -9,4 +9,4 @@ nsstring = { path = "../nsstring" } - nserror = { path = "../nserror" } - threadbound = "0.1" - xpcom_macros = { path = "xpcom_macros" } --thin-vec = { version = "0.1.0", features = ["gecko-ffi"] } -+thin-vec = { version = "0.2.1", features = ["gecko-ffi"] } diff --git a/SOURCES/D89554-autoconf1.diff b/SOURCES/D89554-autoconf1.diff deleted file mode 100644 index 5b97812..0000000 --- a/SOURCES/D89554-autoconf1.diff +++ /dev/null @@ -1,5771 +0,0 @@ -diff -up firefox-78.8.0/build/autoconf/acgeneral.m4.D89554-autoconf1.diff firefox-78.8.0/build/autoconf/acgeneral.m4 ---- firefox-78.8.0/build/autoconf/acgeneral.m4.D89554-autoconf1.diff 2021-02-25 13:48:13.603993474 +0100 -+++ firefox-78.8.0/build/autoconf/acgeneral.m4 2021-02-25 13:48:13.603993474 +0100 -@@ -0,0 +1,2607 @@ -+dnl Parameterized macros. -+dnl Requires GNU m4. -+dnl This file is part of Autoconf. -+dnl Copyright (C) 1992, 93, 94, 95, 96, 1998 Free Software Foundation, Inc. -+dnl -+dnl This program is free software; you can redistribute it and/or modify -+dnl it under the terms of the GNU General Public License as published by -+dnl the Free Software Foundation; either version 2, or (at your option) -+dnl any later version. -+dnl -+dnl This program is distributed in the hope that it will be useful, -+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of -+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+dnl GNU General Public License for more details. -+dnl -+dnl You should have received a copy of the GNU General Public License -+dnl along with this program; if not, write to the Free Software -+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+dnl 02111-1307, USA. -+dnl -+dnl As a special exception, the Free Software Foundation gives unlimited -+dnl permission to copy, distribute and modify the configure scripts that -+dnl are the output of Autoconf. You need not follow the terms of the GNU -+dnl General Public License when using or distributing such scripts, even -+dnl though portions of the text of Autoconf appear in them. The GNU -+dnl General Public License (GPL) does govern all other use of the material -+dnl that constitutes the Autoconf program. -+dnl -+dnl Certain portions of the Autoconf source text are designed to be copied -+dnl (in certain cases, depending on the input) into the output of -+dnl Autoconf. We call these the "data" portions. The rest of the Autoconf -+dnl source text consists of comments plus executable code that decides which -+dnl of the data portions to output in any given case. We call these -+dnl comments and executable code the "non-data" portions. Autoconf never -+dnl copies any of the non-data portions into its output. -+dnl -+dnl This special exception to the GPL applies to versions of Autoconf -+dnl released by the Free Software Foundation. When you make and -+dnl distribute a modified version of Autoconf, you may extend this special -+dnl exception to the GPL to apply to your modified version as well, *unless* -+dnl your modified version has the potential to copy into its output some -+dnl of the text that was the non-data portion of the version that you started -+dnl with. (In other words, unless your change moves or copies text from -+dnl the non-data portions to the data portions.) If your modification has -+dnl such potential, you must delete any notice of this special exception -+dnl to the GPL from your modified version. -+dnl -+dnl Written by David MacKenzie, with help from -+dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor, -+dnl Roland McGrath, Noah Friedman, david d zuhn, and many others. -+dnl -+divert(-1)dnl Throw away output until AC_INIT is called. -+changequote([, ]) -+ -+define(AC_ACVERSION, 2.13) -+ -+dnl Some old m4's don't support m4exit. But they provide -+dnl equivalent functionality by core dumping because of the -+dnl long macros we define. -+ifdef([__gnu__], , [errprint(Autoconf requires GNU m4. -+Install it before installing Autoconf or set the -+M4 environment variable to its path name. -+)m4exit(2)]) -+ -+undefine([eval]) -+undefine([include]) -+undefine([shift]) -+undefine([format]) -+ -+ -+dnl ### Defining macros -+ -+ -+dnl m4 output diversions. We let m4 output them all in order at the end, -+dnl except that we explicitly undivert AC_DIVERSION_SED, AC_DIVERSION_CMDS, -+dnl and AC_DIVERSION_ICMDS. -+ -+dnl AC_DIVERSION_NOTICE - 1 (= 0) AC_REQUIRE'd #! /bin/sh line -+define(AC_DIVERSION_NOTICE, 1)dnl copyright notice & option help strings -+define(AC_DIVERSION_INIT, 2)dnl initialization code -+define(AC_DIVERSION_NORMAL_4, 3)dnl AC_REQUIRE'd code, 4 level deep -+define(AC_DIVERSION_NORMAL_3, 4)dnl AC_REQUIRE'd code, 3 level deep -+define(AC_DIVERSION_NORMAL_2, 5)dnl AC_REQUIRE'd code, 2 level deep -+define(AC_DIVERSION_NORMAL_1, 6)dnl AC_REQUIRE'd code, 1 level deep -+define(AC_DIVERSION_NORMAL, 7)dnl the tests and output code -+define(AC_DIVERSION_SED, 8)dnl variable substitutions in config.status -+define(AC_DIVERSION_CMDS, 9)dnl extra shell commands in config.status -+define(AC_DIVERSION_ICMDS, 10)dnl extra initialization in config.status -+ -+dnl Change the diversion stream to STREAM, while stacking old values. -+dnl AC_DIVERT_PUSH(STREAM) -+define(AC_DIVERT_PUSH, -+[pushdef([AC_DIVERSION_CURRENT], $1)dnl -+divert(AC_DIVERSION_CURRENT)dnl -+]) -+ -+dnl Change the diversion stream to its previous value, unstacking it. -+dnl AC_DIVERT_POP() -+define(AC_DIVERT_POP, -+[popdef([AC_DIVERSION_CURRENT])dnl -+divert(AC_DIVERSION_CURRENT)dnl -+]) -+ -+dnl Initialize the diversion setup. -+define([AC_DIVERSION_CURRENT], AC_DIVERSION_NORMAL) -+dnl This will be popped by AC_REQUIRE in AC_INIT. -+pushdef([AC_DIVERSION_CURRENT], AC_DIVERSION_NOTICE) -+ -+dnl The prologue for Autoconf macros. -+dnl AC_PRO(MACRO-NAME) -+define(AC_PRO, -+[define([AC_PROVIDE_$1], )dnl -+ifelse(AC_DIVERSION_CURRENT, AC_DIVERSION_NORMAL, -+[AC_DIVERT_PUSH(builtin(eval, AC_DIVERSION_CURRENT - 1))], -+[pushdef([AC_DIVERSION_CURRENT], AC_DIVERSION_CURRENT)])dnl -+]) -+ -+dnl The Epilogue for Autoconf macros. -+dnl AC_EPI() -+define(AC_EPI, -+[AC_DIVERT_POP()dnl -+ifelse(AC_DIVERSION_CURRENT, AC_DIVERSION_NORMAL, -+[undivert(AC_DIVERSION_NORMAL_4)dnl -+undivert(AC_DIVERSION_NORMAL_3)dnl -+undivert(AC_DIVERSION_NORMAL_2)dnl -+undivert(AC_DIVERSION_NORMAL_1)dnl -+])dnl -+]) -+ -+dnl Define a macro which automatically provides itself. Add machinery -+dnl so the macro automatically switches expansion to the diversion -+dnl stack if it is not already using it. In this case, once finished, -+dnl it will bring back all the code accumulated in the diversion stack. -+dnl This, combined with AC_REQUIRE, achieves the topological ordering of -+dnl macros. We don't use this macro to define some frequently called -+dnl macros that are not involved in ordering constraints, to save m4 -+dnl processing. -+dnl AC_DEFUN(NAME, EXPANSION) -+define([AC_DEFUN], -+[define($1, [AC_PRO([$1])$2[]AC_EPI()])]) -+ -+ -+dnl ### Initialization -+ -+ -+dnl AC_INIT_NOTICE() -+AC_DEFUN(AC_INIT_NOTICE, -+[# Guess values for system-dependent variables and create Makefiles. -+# Generated automatically using autoconf version] AC_ACVERSION [ -+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -+# -+# This configure script is free software; the Free Software Foundation -+# gives unlimited permission to copy, distribute and modify it. -+ -+# Defaults: -+ac_help= -+ac_default_prefix=/usr/local -+[#] Any additions from configure.in:]) -+ -+dnl AC_PREFIX_DEFAULT(PREFIX) -+AC_DEFUN(AC_PREFIX_DEFAULT, -+[AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl -+ac_default_prefix=$1 -+AC_DIVERT_POP()]) -+ -+dnl AC_INIT_PARSE_ARGS() -+AC_DEFUN(AC_INIT_PARSE_ARGS, -+[ -+# Initialize some variables set by options. -+# The variables have the same names as the options, with -+# dashes changed to underlines. -+build=NONE -+cache_file=./config.cache -+exec_prefix=NONE -+host=NONE -+no_create= -+nonopt=NONE -+no_recursion= -+prefix=NONE -+program_prefix=NONE -+program_suffix=NONE -+program_transform_name=s,x,x, -+silent= -+site= -+srcdir= -+target=NONE -+verbose= -+x_includes=NONE -+x_libraries=NONE -+dnl Installation directory options. -+dnl These are left unexpanded so users can "make install exec_prefix=/foo" -+dnl and all the variables that are supposed to be based on exec_prefix -+dnl by default will actually change. -+dnl Use braces instead of parens because sh, perl, etc. also accept them. -+bindir='${exec_prefix}/bin' -+sbindir='${exec_prefix}/sbin' -+libexecdir='${exec_prefix}/libexec' -+datadir='${prefix}/share' -+sysconfdir='${prefix}/etc' -+sharedstatedir='${prefix}/com' -+localstatedir='${prefix}/var' -+libdir='${exec_prefix}/lib' -+includedir='${prefix}/include' -+oldincludedir='/usr/include' -+infodir='${prefix}/info' -+mandir='${prefix}/man' -+ -+# Initialize some other variables. -+subdirs= -+MFLAGS= MAKEFLAGS= -+SHELL=${CONFIG_SHELL-/bin/sh} -+# Maximum number of lines to put in a shell here document. -+ac_max_here_lines=12 -+ -+ac_prev= -+for ac_option -+do -+ -+ # If the previous option needs an argument, assign it. -+ if test -n "$ac_prev"; then -+ eval "$ac_prev=\$ac_option" -+ ac_prev= -+ continue -+ fi -+ -+ case "$ac_option" in -+changequote(, )dnl -+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; -+changequote([, ])dnl -+ *) ac_optarg= ;; -+ esac -+ -+ # Accept the important Cygnus configure options, so we can diagnose typos. -+ -+ case "$ac_option" in -+ -+ -bindir | --bindir | --bindi | --bind | --bin | --bi) -+ ac_prev=bindir ;; -+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) -+ bindir="$ac_optarg" ;; -+ -+ -build | --build | --buil | --bui | --bu) -+ ac_prev=build ;; -+ -build=* | --build=* | --buil=* | --bui=* | --bu=*) -+ build="$ac_optarg" ;; -+ -+ -cache-file | --cache-file | --cache-fil | --cache-fi \ -+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) -+ ac_prev=cache_file ;; -+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ -+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) -+ cache_file="$ac_optarg" ;; -+ -+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da) -+ ac_prev=datadir ;; -+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ -+ | --da=*) -+ datadir="$ac_optarg" ;; -+ -+ -disable-* | --disable-*) -+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` -+ # Reject names that are not valid shell variable names. -+changequote(, )dnl -+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then -+changequote([, ])dnl -+ AC_MSG_ERROR($ac_feature: invalid feature name) -+ fi -+ ac_feature=`echo $ac_feature| sed 's/-/_/g'` -+ eval "enable_${ac_feature}=no" ;; -+ -+ -enable-* | --enable-*) -+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` -+ # Reject names that are not valid shell variable names. -+changequote(, )dnl -+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then -+changequote([, ])dnl -+ AC_MSG_ERROR($ac_feature: invalid feature name) -+ fi -+ ac_feature=`echo $ac_feature| sed 's/-/_/g'` -+ case "$ac_option" in -+ *=*) ;; -+ *) ac_optarg=yes ;; -+ esac -+ eval "enable_${ac_feature}='$ac_optarg'" ;; -+ -+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ -+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -+ | --exec | --exe | --ex) -+ ac_prev=exec_prefix ;; -+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ -+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ -+ | --exec=* | --exe=* | --ex=*) -+ exec_prefix="$ac_optarg" ;; -+ -+ -gas | --gas | --ga | --g) -+ # Obsolete; use --with-gas. -+ with_gas=yes ;; -+ -+ -help | --help | --hel | --he) -+ # Omit some internal or obsolete options to make the list less imposing. -+ # This message is too long to be a string in the A/UX 3.1 sh. -+ cat << EOF -+changequote(, )dnl -+Usage: configure [options] [host] -+Options: [defaults in brackets after descriptions] -+Configuration: -+ --cache-file=FILE cache test results in FILE -+ --help print this message -+ --no-create do not create output files -+ --quiet, --silent do not print \`checking...' messages -+ --version print the version of autoconf that created configure -+Directory and file names: -+ --prefix=PREFIX install architecture-independent files in PREFIX -+ [$ac_default_prefix] -+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX -+ [same as prefix] -+ --bindir=DIR user executables in DIR [EPREFIX/bin] -+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] -+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec] -+ --datadir=DIR read-only architecture-independent data in DIR -+ [PREFIX/share] -+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] -+ --sharedstatedir=DIR modifiable architecture-independent data in DIR -+ [PREFIX/com] -+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] -+ --libdir=DIR object code libraries in DIR [EPREFIX/lib] -+ --includedir=DIR C header files in DIR [PREFIX/include] -+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] -+ --infodir=DIR info documentation in DIR [PREFIX/info] -+ --mandir=DIR man documentation in DIR [PREFIX/man] -+ --srcdir=DIR find the sources in DIR [configure dir or ..] -+ --program-prefix=PREFIX prepend PREFIX to installed program names -+ --program-suffix=SUFFIX append SUFFIX to installed program names -+ --program-transform-name=PROGRAM -+ run sed PROGRAM on installed program names -+EOF -+ cat << EOF -+Host type: -+ --build=BUILD configure for building on BUILD [BUILD=HOST] -+ --host=HOST configure for HOST [guessed] -+ --target=TARGET configure for TARGET [TARGET=HOST] -+Features and packages: -+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) -+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -+ --x-includes=DIR X include files are in DIR -+ --x-libraries=DIR X library files are in DIR -+changequote([, ])dnl -+EOF -+ if test -n "$ac_help"; then -+ echo "--enable and --with options recognized:$ac_help" -+ fi -+ exit 0 ;; -+ -+ -host | --host | --hos | --ho) -+ ac_prev=host ;; -+ -host=* | --host=* | --hos=* | --ho=*) -+ host="$ac_optarg" ;; -+ -+ -includedir | --includedir | --includedi | --included | --include \ -+ | --includ | --inclu | --incl | --inc) -+ ac_prev=includedir ;; -+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ -+ | --includ=* | --inclu=* | --incl=* | --inc=*) -+ includedir="$ac_optarg" ;; -+ -+ -infodir | --infodir | --infodi | --infod | --info | --inf) -+ ac_prev=infodir ;; -+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) -+ infodir="$ac_optarg" ;; -+ -+ -libdir | --libdir | --libdi | --libd) -+ ac_prev=libdir ;; -+ -libdir=* | --libdir=* | --libdi=* | --libd=*) -+ libdir="$ac_optarg" ;; -+ -+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ -+ | --libexe | --libex | --libe) -+ ac_prev=libexecdir ;; -+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ -+ | --libexe=* | --libex=* | --libe=*) -+ libexecdir="$ac_optarg" ;; -+ -+ -localstatedir | --localstatedir | --localstatedi | --localstated \ -+ | --localstate | --localstat | --localsta | --localst \ -+ | --locals | --local | --loca | --loc | --lo) -+ ac_prev=localstatedir ;; -+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ -+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ -+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) -+ localstatedir="$ac_optarg" ;; -+ -+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -+ ac_prev=mandir ;; -+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) -+ mandir="$ac_optarg" ;; -+ -+ -nfp | --nfp | --nf) -+ # Obsolete; use --without-fp. -+ with_fp=no ;; -+ -+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ -+ | --no-cr | --no-c) -+ no_create=yes ;; -+ -+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ -+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) -+ no_recursion=yes ;; -+ -+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ -+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ -+ | --oldin | --oldi | --old | --ol | --o) -+ ac_prev=oldincludedir ;; -+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ -+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ -+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) -+ oldincludedir="$ac_optarg" ;; -+ -+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) -+ ac_prev=prefix ;; -+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) -+ prefix="$ac_optarg" ;; -+ -+ -program-prefix | --program-prefix | --program-prefi | --program-pref \ -+ | --program-pre | --program-pr | --program-p) -+ ac_prev=program_prefix ;; -+ -program-prefix=* | --program-prefix=* | --program-prefi=* \ -+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) -+ program_prefix="$ac_optarg" ;; -+ -+ -program-suffix | --program-suffix | --program-suffi | --program-suff \ -+ | --program-suf | --program-su | --program-s) -+ ac_prev=program_suffix ;; -+ -program-suffix=* | --program-suffix=* | --program-suffi=* \ -+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) -+ program_suffix="$ac_optarg" ;; -+ -+ -program-transform-name | --program-transform-name \ -+ | --program-transform-nam | --program-transform-na \ -+ | --program-transform-n | --program-transform- \ -+ | --program-transform | --program-transfor \ -+ | --program-transfo | --program-transf \ -+ | --program-trans | --program-tran \ -+ | --progr-tra | --program-tr | --program-t) -+ ac_prev=program_transform_name ;; -+ -program-transform-name=* | --program-transform-name=* \ -+ | --program-transform-nam=* | --program-transform-na=* \ -+ | --program-transform-n=* | --program-transform-=* \ -+ | --program-transform=* | --program-transfor=* \ -+ | --program-transfo=* | --program-transf=* \ -+ | --program-trans=* | --program-tran=* \ -+ | --progr-tra=* | --program-tr=* | --program-t=*) -+ program_transform_name="$ac_optarg" ;; -+ -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil) -+ silent=yes ;; -+ -+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) -+ ac_prev=sbindir ;; -+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -+ | --sbi=* | --sb=*) -+ sbindir="$ac_optarg" ;; -+ -+ -sharedstatedir | --sharedstatedir | --sharedstatedi \ -+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ -+ | --sharedst | --shareds | --shared | --share | --shar \ -+ | --sha | --sh) -+ ac_prev=sharedstatedir ;; -+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ -+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ -+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ -+ | --sha=* | --sh=*) -+ sharedstatedir="$ac_optarg" ;; -+ -+ -site | --site | --sit) -+ ac_prev=site ;; -+ -site=* | --site=* | --sit=*) -+ site="$ac_optarg" ;; -+ -+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) -+ ac_prev=srcdir ;; -+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) -+ srcdir="$ac_optarg" ;; -+ -+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ -+ | --syscon | --sysco | --sysc | --sys | --sy) -+ ac_prev=sysconfdir ;; -+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ -+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) -+ sysconfdir="$ac_optarg" ;; -+ -+ -target | --target | --targe | --targ | --tar | --ta | --t) -+ ac_prev=target ;; -+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) -+ target="$ac_optarg" ;; -+ -+ -v | -verbose | --verbose | --verbos | --verbo | --verb) -+ verbose=yes ;; -+ -+ -version | --version | --versio | --versi | --vers) -+ echo "configure generated by autoconf version AC_ACVERSION" -+ exit 0 ;; -+ -+ -with-* | --with-*) -+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` -+ # Reject names that are not valid shell variable names. -+changequote(, )dnl -+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then -+changequote([, ])dnl -+ AC_MSG_ERROR($ac_package: invalid package name) -+ fi -+ ac_package=`echo $ac_package| sed 's/-/_/g'` -+ case "$ac_option" in -+ *=*) ;; -+ *) ac_optarg=yes ;; -+ esac -+ eval "with_${ac_package}='$ac_optarg'" ;; -+ -+ -without-* | --without-*) -+ ac_package=`echo $ac_option|sed -e 's/-*without-//'` -+ # Reject names that are not valid shell variable names. -+changequote(, )dnl -+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then -+changequote([, ])dnl -+ AC_MSG_ERROR($ac_package: invalid package name) -+ fi -+ ac_package=`echo $ac_package| sed 's/-/_/g'` -+ eval "with_${ac_package}=no" ;; -+ -+ --x) -+ # Obsolete; use --with-x. -+ with_x=yes ;; -+ -+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ -+ | --x-incl | --x-inc | --x-in | --x-i) -+ ac_prev=x_includes ;; -+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ -+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) -+ x_includes="$ac_optarg" ;; -+ -+ -x-libraries | --x-libraries | --x-librarie | --x-librari \ -+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) -+ ac_prev=x_libraries ;; -+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ -+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) -+ x_libraries="$ac_optarg" ;; -+ -+ -*) AC_MSG_ERROR([$ac_option: invalid option; use --help to show usage]) -+ ;; -+ -+ *) -+changequote(, )dnl -+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then -+changequote([, ])dnl -+ AC_MSG_WARN($ac_option: invalid host type) -+ fi -+ if test "x$nonopt" != xNONE; then -+ AC_MSG_ERROR(can only configure for one host and one target at a time) -+ fi -+ nonopt="$ac_option" -+ ;; -+ -+ esac -+done -+ -+if test -n "$ac_prev"; then -+ AC_MSG_ERROR(missing argument to --`echo $ac_prev | sed 's/_/-/g'`) -+fi -+]) -+ -+dnl Try to have only one #! line, so the script doesn't look funny -+dnl for users of AC_REVISION. -+dnl AC_INIT_BINSH() -+AC_DEFUN(AC_INIT_BINSH, -+[#! /bin/sh -+]) -+ -+dnl AC_INIT(UNIQUE-FILE-IN-SOURCE-DIR) -+AC_DEFUN(AC_INIT, -+[sinclude(acsite.m4)dnl -+sinclude(./aclocal.m4)dnl -+AC_REQUIRE([AC_INIT_BINSH])dnl -+AC_INIT_NOTICE -+AC_DIVERT_POP()dnl to NORMAL -+AC_DIVERT_PUSH(AC_DIVERSION_INIT)dnl -+AC_INIT_PARSE_ARGS -+AC_INIT_PREPARE($1)dnl -+AC_DIVERT_POP()dnl to NORMAL -+]) -+ -+dnl AC_INIT_PREPARE(UNIQUE-FILE-IN-SOURCE-DIR) -+AC_DEFUN(AC_INIT_PREPARE, -+[trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 -+ -+# File descriptor usage: -+# 0 standard input -+# 1 file creation -+# 2 errors and warnings -+# 3 some systems may open it to /dev/tty -+# 4 used on the Kubota Titan -+define(AC_FD_MSG, 6)dnl -+[#] AC_FD_MSG checking for... messages and results -+define(AC_FD_CC, 5)dnl -+[#] AC_FD_CC compiler messages saved in config.log -+if test "$silent" = yes; then -+ exec AC_FD_MSG>/dev/null -+else -+ exec AC_FD_MSG>&1 -+fi -+exec AC_FD_CC>./config.log -+ -+echo "\ -+This file contains any messages produced by compilers while -+running configure, to aid debugging if configure makes a mistake. -+" 1>&AC_FD_CC -+ -+# Strip out --no-create and --no-recursion so they do not pile up. -+# Also quote any args containing shell metacharacters. -+ac_configure_args= -+for ac_arg -+do -+ case "$ac_arg" in -+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ -+ | --no-cr | --no-c) ;; -+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ -+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; -+changequote(<<, >>)dnl -+dnl If you change this globbing pattern, test it on an old shell -- -+dnl it's sensitive. Putting any kind of quote in it causes syntax errors. -+ *" "*|*" "*|*[\[\]\~\<<#>>\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) -+ ac_configure_args="$ac_configure_args '$ac_arg'" ;; -+changequote([, ])dnl -+ *) ac_configure_args="$ac_configure_args $ac_arg" ;; -+ esac -+done -+ -+# NLS nuisances. -+# Only set these to C if already set. These must not be set unconditionally -+# because not all systems understand e.g. LANG=C (notably SCO). -+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -+# Non-C LC_CTYPE values break the ctype check. -+if test "${LANG+set}" = set; then LANG=C; export LANG; fi -+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi -+ -+# confdefs.h avoids OS command line length limits that DEFS can exceed. -+rm -rf conftest* confdefs.h -+# AIX cpp loses on an empty file, so make sure it contains at least a newline. -+echo > confdefs.h -+ -+# A filename unique to this package, relative to the directory that -+# configure is in, which we can look for to find out if srcdir is correct. -+ac_unique_file=$1 -+ -+# Find the source files, if location was not specified. -+if test -z "$srcdir"; then -+ ac_srcdir_defaulted=yes -+ # Try the directory containing this script, then its parent. -+ ac_prog=[$]0 -+changequote(, )dnl -+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` -+changequote([, ])dnl -+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. -+ srcdir=$ac_confdir -+ if test ! -r $srcdir/$ac_unique_file; then -+ srcdir=.. -+ fi -+else -+ ac_srcdir_defaulted=no -+fi -+if test ! -r $srcdir/$ac_unique_file; then -+ if test "$ac_srcdir_defaulted" = yes; then -+ AC_MSG_ERROR(can not find sources in $ac_confdir or ..) -+ else -+ AC_MSG_ERROR(can not find sources in $srcdir) -+ fi -+fi -+dnl Double slashes in pathnames in object file debugging info -+dnl mess up M-x gdb in Emacs. -+changequote(, )dnl -+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` -+changequote([, ])dnl -+ -+dnl Let the site file select an alternate cache file if it wants to. -+AC_SITE_LOAD -+AC_CACHE_LOAD -+AC_LANG_C -+dnl By default always use an empty string as the executable -+dnl extension. Only change it if the script calls AC_EXEEXT. -+ac_exeext= -+dnl By default assume that objects files use an extension of .o. Only -+dnl change it if the script calls AC_OBJEXT. -+ac_objext=o -+AC_PROG_ECHO_N -+dnl Substitute for predefined variables. -+AC_SUBST(SHELL)dnl -+AC_SUBST(CFLAGS)dnl -+AC_SUBST(CPPFLAGS)dnl -+AC_SUBST(CXXFLAGS)dnl -+AC_SUBST(FFLAGS)dnl -+AC_SUBST(DEFS)dnl -+AC_SUBST(LDFLAGS)dnl -+AC_SUBST(LIBS)dnl -+AC_SUBST(exec_prefix)dnl -+AC_SUBST(prefix)dnl -+AC_SUBST(program_transform_name)dnl -+dnl Installation directory options. -+AC_SUBST(bindir)dnl -+AC_SUBST(sbindir)dnl -+AC_SUBST(libexecdir)dnl -+AC_SUBST(datadir)dnl -+AC_SUBST(sysconfdir)dnl -+AC_SUBST(sharedstatedir)dnl -+AC_SUBST(localstatedir)dnl -+AC_SUBST(libdir)dnl -+AC_SUBST(includedir)dnl -+AC_SUBST(oldincludedir)dnl -+AC_SUBST(infodir)dnl -+AC_SUBST(mandir)dnl -+]) -+ -+ -+dnl ### Selecting optional features -+ -+ -+dnl AC_ARG_ENABLE(FEATURE, HELP-STRING, ACTION-IF-TRUE [, ACTION-IF-FALSE]) -+AC_DEFUN(AC_ARG_ENABLE, -+[AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl -+ac_help="$ac_help -+[$2]" -+AC_DIVERT_POP()dnl -+[#] Check whether --enable-[$1] or --disable-[$1] was given. -+if test "[${enable_]patsubst([$1], -, _)+set}" = set; then -+ enableval="[$enable_]patsubst([$1], -, _)" -+ ifelse([$3], , :, [$3]) -+ifelse([$4], , , [else -+ $4 -+])dnl -+fi -+]) -+ -+AC_DEFUN(AC_ENABLE, -+[AC_OBSOLETE([$0], [; instead use AC_ARG_ENABLE])dnl -+AC_ARG_ENABLE([$1], [ --enable-$1], [$2], [$3])dnl -+]) -+ -+ -+dnl ### Working with optional software -+ -+ -+dnl AC_ARG_WITH(PACKAGE, HELP-STRING, ACTION-IF-TRUE [, ACTION-IF-FALSE]) -+AC_DEFUN(AC_ARG_WITH, -+[AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)dnl -+ac_help="$ac_help -+[$2]" -+AC_DIVERT_POP()dnl -+[#] Check whether --with-[$1] or --without-[$1] was given. -+if test "[${with_]patsubst([$1], -, _)+set}" = set; then -+ withval="[$with_]patsubst([$1], -, _)" -+ ifelse([$3], , :, [$3]) -+ifelse([$4], , , [else -+ $4 -+])dnl -+fi -+]) -+ -+AC_DEFUN(AC_WITH, -+[AC_OBSOLETE([$0], [; instead use AC_ARG_WITH])dnl -+AC_ARG_WITH([$1], [ --with-$1], [$2], [$3])dnl -+]) -+ -+ -+dnl ### Transforming program names. -+ -+ -+dnl AC_ARG_PROGRAM() -+AC_DEFUN(AC_ARG_PROGRAM, -+[if test "$program_transform_name" = s,x,x,; then -+ program_transform_name= -+else -+ # Double any \ or $. echo might interpret backslashes. -+ cat <<\EOF_SED > conftestsed -+s,\\,\\\\,g; s,\$,$$,g -+EOF_SED -+ program_transform_name="`echo $program_transform_name|sed -f conftestsed`" -+ rm -f conftestsed -+fi -+test "$program_prefix" != NONE && -+ program_transform_name="s,^,${program_prefix},; $program_transform_name" -+# Use a double $ so make ignores it. -+test "$program_suffix" != NONE && -+ program_transform_name="s,\$\$,${program_suffix},; $program_transform_name" -+ -+# sed with no file args requires a program. -+test "$program_transform_name" = "" && program_transform_name="s,x,x," -+]) -+ -+ -+dnl ### Version numbers -+ -+ -+dnl AC_REVISION(REVISION-INFO) -+AC_DEFUN(AC_REVISION, -+[AC_REQUIRE([AC_INIT_BINSH])dnl -+[# From configure.in] translit([$1], $")]) -+ -+dnl Subroutines of AC_PREREQ. -+ -+dnl Change the dots in NUMBER into commas. -+dnl AC_PREREQ_SPLIT(NUMBER) -+define(AC_PREREQ_SPLIT, -+[translit($1, ., [, ])]) -+ -+dnl Default the ternary version number to 0 (e.g., 1, 7 -> 1, 7, 0). -+dnl AC_PREREQ_CANON(MAJOR, MINOR [,TERNARY]) -+define(AC_PREREQ_CANON, -+[$1, $2, ifelse([$3], , 0, [$3])]) -+ -+dnl Complain and exit if version number 1 is less than version number 2. -+dnl PRINTABLE2 is the printable version of version number 2. -+dnl AC_PREREQ_COMPARE(MAJOR1, MINOR1, TERNARY1, MAJOR2, MINOR2, TERNARY2, -+dnl PRINTABLE2) -+define(AC_PREREQ_COMPARE, -+[ifelse(builtin([eval], -+[$3 + $2 * 1000 + $1 * 1000000 < $6 + $5 * 1000 + $4 * 1000000]), 1, -+[errprint(dnl -+FATAL ERROR: Autoconf version $7 or higher is required for this script -+)m4exit(3)])]) -+ -+dnl Complain and exit if the Autoconf version is less than VERSION. -+dnl AC_PREREQ(VERSION) -+define(AC_PREREQ, -+[AC_PREREQ_COMPARE(AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), -+AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), [$1])]) -+ -+ -+dnl ### Getting the canonical system type -+ -+ -+dnl Find install-sh, config.sub, config.guess, and Cygnus configure -+dnl in directory DIR. These are auxiliary files used in configuration. -+dnl DIR can be either absolute or relative to $srcdir. -+dnl AC_CONFIG_AUX_DIR(DIR) -+AC_DEFUN(AC_CONFIG_AUX_DIR, -+[AC_CONFIG_AUX_DIRS($1 $srcdir/$1)]) -+ -+dnl The default is `$srcdir' or `$srcdir/..' or `$srcdir/../..'. -+dnl There's no need to call this macro explicitly; just AC_REQUIRE it. -+AC_DEFUN(AC_CONFIG_AUX_DIR_DEFAULT, -+[AC_CONFIG_AUX_DIRS($srcdir $srcdir/.. $srcdir/../..)]) -+ -+dnl Internal subroutine. -+dnl Search for the configuration auxiliary files in directory list $1. -+dnl We look only for install-sh, so users of AC_PROG_INSTALL -+dnl do not automatically need to distribute the other auxiliary files. -+dnl AC_CONFIG_AUX_DIRS(DIR ...) -+AC_DEFUN(AC_CONFIG_AUX_DIRS, -+[ac_aux_dir= -+for ac_dir in $1; do -+ if test -f $ac_dir/install-sh; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install-sh -c" -+ break -+ elif test -f $ac_dir/install.sh; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install.sh -c" -+ break -+ fi -+done -+if test -z "$ac_aux_dir"; then -+ AC_MSG_ERROR([can not find install-sh or install.sh in $1]) -+fi -+ac_config_guess=$ac_aux_dir/config.guess -+ac_config_sub=$ac_aux_dir/config.sub -+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. -+AC_PROVIDE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+]) -+ -+dnl Canonicalize the host, target, and build system types. -+AC_DEFUN(AC_CANONICAL_SYSTEM, -+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+AC_BEFORE([$0], [AC_ARG_PROGRAM]) -+# Do some error checking and defaulting for the host and target type. -+# The inputs are: -+# configure --host=HOST --target=TARGET --build=BUILD NONOPT -+# -+# The rules are: -+# 1. You are not allowed to specify --host, --target, and nonopt at the -+# same time. -+# 2. Host defaults to nonopt. -+# 3. If nonopt is not specified, then host defaults to the current host, -+# as determined by config.guess. -+# 4. Target and build default to nonopt. -+# 5. If nonopt is not specified, then target and build default to host. -+ -+# The aliases save the names the user supplied, while $host etc. -+# will get canonicalized. -+case $host---$target---$nonopt in -+NONE---*---* | *---NONE---* | *---*---NONE) ;; -+*) AC_MSG_ERROR(can only configure for one host and one target at a time) ;; -+esac -+ -+AC_CANONICAL_HOST -+AC_CANONICAL_TARGET -+AC_CANONICAL_BUILD -+test "$host_alias" != "$target_alias" && -+ test "$program_prefix$program_suffix$program_transform_name" = \ -+ NONENONEs,x,x, && -+ program_prefix=${target_alias}- -+]) -+ -+dnl Subroutines of AC_CANONICAL_SYSTEM. -+ -+AC_DEFUN(AC_CANONICAL_HOST, -+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+ -+# Make sure we can run config.sub. -+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : -+else AC_MSG_ERROR(can not run $ac_config_sub) -+fi -+ -+AC_MSG_CHECKING(host system type) -+ -+dnl Set host_alias. -+host_alias=$host -+case "$host_alias" in -+NONE) -+ case $nonopt in -+ NONE) -+ if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then : -+ else AC_MSG_ERROR(can not guess host type; you must specify one) -+ fi ;; -+ *) host_alias=$nonopt ;; -+ esac ;; -+esac -+ -+dnl Set the other host vars. -+changequote(<<, >>)dnl -+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias` -+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -+changequote([, ])dnl -+AC_MSG_RESULT($host) -+AC_SUBST(host)dnl -+AC_SUBST(host_alias)dnl -+AC_SUBST(host_cpu)dnl -+AC_SUBST(host_vendor)dnl -+AC_SUBST(host_os)dnl -+]) -+ -+dnl Internal use only. -+AC_DEFUN(AC_CANONICAL_TARGET, -+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+AC_MSG_CHECKING(target system type) -+ -+dnl Set target_alias. -+target_alias=$target -+case "$target_alias" in -+NONE) -+ case $nonopt in -+ NONE) target_alias=$host_alias ;; -+ *) target_alias=$nonopt ;; -+ esac ;; -+esac -+ -+dnl Set the other target vars. -+changequote(<<, >>)dnl -+target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias` -+target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -+target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -+target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -+changequote([, ])dnl -+AC_MSG_RESULT($target) -+AC_SUBST(target)dnl -+AC_SUBST(target_alias)dnl -+AC_SUBST(target_cpu)dnl -+AC_SUBST(target_vendor)dnl -+AC_SUBST(target_os)dnl -+]) -+ -+dnl Internal use only. -+AC_DEFUN(AC_CANONICAL_BUILD, -+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+AC_MSG_CHECKING(build system type) -+ -+dnl Set build_alias. -+build_alias=$build -+case "$build_alias" in -+NONE) -+ case $nonopt in -+ NONE) build_alias=$host_alias ;; -+ *) build_alias=$nonopt ;; -+ esac ;; -+esac -+ -+dnl Set the other build vars. -+changequote(<<, >>)dnl -+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias` -+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -+changequote([, ])dnl -+AC_MSG_RESULT($build) -+AC_SUBST(build)dnl -+AC_SUBST(build_alias)dnl -+AC_SUBST(build_cpu)dnl -+AC_SUBST(build_vendor)dnl -+AC_SUBST(build_os)dnl -+]) -+ -+ -+dnl AC_VALIDATE_CACHED_SYSTEM_TUPLE[(cmd)] -+dnl if the cache file is inconsistent with the current host, -+dnl target and build system types, execute CMD or print a default -+dnl error message. -+AC_DEFUN(AC_VALIDATE_CACHED_SYSTEM_TUPLE, [ -+ AC_REQUIRE([AC_CANONICAL_SYSTEM]) -+ AC_MSG_CHECKING([cached system tuple]) -+ if { test x"${ac_cv_host_system_type+set}" = x"set" && -+ test x"$ac_cv_host_system_type" != x"$host"; } || -+ { test x"${ac_cv_build_system_type+set}" = x"set" && -+ test x"$ac_cv_build_system_type" != x"$build"; } || -+ { test x"${ac_cv_target_system_type+set}" = x"set" && -+ test x"$ac_cv_target_system_type" != x"$target"; }; then -+ AC_MSG_RESULT([different]) -+ ifelse($#, 1, [$1], -+ [AC_MSG_ERROR([remove config.cache and re-run configure])]) -+ else -+ AC_MSG_RESULT(ok) -+ fi -+ ac_cv_host_system_type="$host" -+ ac_cv_build_system_type="$build" -+ ac_cv_target_system_type="$target" -+]) -+ -+ -+dnl ### Caching test results -+ -+ -+dnl Look for site or system specific initialization scripts. -+dnl AC_SITE_LOAD() -+define(AC_SITE_LOAD, -+[# Prefer explicitly selected file to automatically selected ones. -+if test -z "$CONFIG_SITE"; then -+ if test "x$prefix" != xNONE; then -+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" -+ else -+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -+ fi -+fi -+for ac_site_file in $CONFIG_SITE; do -+ if test -r "$ac_site_file"; then -+ echo "loading site script $ac_site_file" -+ . "$ac_site_file" -+ fi -+done -+]) -+ -+dnl AC_CACHE_LOAD() -+define(AC_CACHE_LOAD, -+[if test -r "$cache_file"; then -+ echo "loading cache $cache_file" -+ . $cache_file -+else -+ echo "creating cache $cache_file" -+ > $cache_file -+fi -+]) -+ -+dnl AC_CACHE_SAVE() -+define(AC_CACHE_SAVE, -+[cat > confcache <<\EOF -+# This file is a shell script that caches the results of configure -+# tests run on this system so they can be shared between configure -+# scripts and configure runs. It is not useful on other systems. -+# If it contains results you don't want to keep, you may remove or edit it. -+# -+# By default, configure uses ./config.cache as the cache file, -+# creating it if it does not exist already. You can give configure -+# the --cache-file=FILE option to use a different cache file; that is -+# what configure does when it calls configure scripts in -+# subdirectories, so they share the cache. -+# Giving --cache-file=/dev/null disables caching, for debugging configure. -+# config.status only pays attention to the cache file if you give it the -+# --recheck option to rerun configure. -+# -+EOF -+dnl Allow a site initialization script to override cache values. -+# The following way of writing the cache mishandles newlines in values, -+# but we know of no workaround that is simple, portable, and efficient. -+# So, don't put newlines in cache variables' values. -+# Ultrix sh set writes to stderr and can't be redirected directly, -+# and sets the high bit in the cache file unless we assign to the vars. -+changequote(, )dnl -+(set) 2>&1 | -+ case `(ac_space=' '; set | grep ac_space) 2>&1` in -+ *ac_space=\ *) -+ # `set' does not quote correctly, so add quotes (double-quote substitution -+ # turns \\\\ into \\, and sed turns \\ into \). -+ sed -n \ -+ -e "s/'/'\\\\''/g" \ -+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" -+ ;; -+ *) -+ # `set' quotes correctly as required by POSIX, so do not add quotes. -+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' -+ ;; -+ esac >> confcache -+changequote([, ])dnl -+if cmp -s $cache_file confcache; then -+ : -+else -+ if test -w $cache_file; then -+ echo "updating cache $cache_file" -+ cat confcache > $cache_file -+ else -+ echo "not updating unwritable cache $cache_file" -+ fi -+fi -+rm -f confcache -+]) -+ -+dnl The name of shell var CACHE-ID must contain `_cv_' in order to get saved. -+dnl AC_CACHE_VAL(CACHE-ID, COMMANDS-TO-SET-IT) -+define(AC_CACHE_VAL, -+[dnl We used to use the below line, but it fails if the 1st arg is a -+dnl shell variable, so we need the eval. -+dnl if test "${$1+set}" = set; then -+dnl the '' avoids an AIX 4.1 sh bug ("invalid expansion"). -+if eval "test \"`echo '$''{'$1'+set}'`\" = set"; then -+ echo $ac_n "(cached) $ac_c" 1>&AC_FD_MSG -+else -+ $2 -+fi -+]) -+ -+dnl AC_CACHE_CHECK(MESSAGE, CACHE-ID, COMMANDS) -+define(AC_CACHE_CHECK, -+[AC_MSG_CHECKING([$1]) -+AC_CACHE_VAL([$2], [$3]) -+AC_MSG_RESULT([$]$2)]) -+ -+ -+dnl ### Defining symbols -+ -+ -+dnl Set VARIABLE to VALUE, verbatim, or 1. -+dnl AC_DEFINE(VARIABLE [, VALUE]) -+define(AC_DEFINE, -+[cat >> confdefs.h <<\EOF -+[#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1) -+EOF -+]) -+ -+dnl Similar, but perform shell substitutions $ ` \ once on VALUE. -+define(AC_DEFINE_UNQUOTED, -+[cat >> confdefs.h <&AC_FD_MSG -+echo "configure:__oline__: checking $1" >&AC_FD_CC]) -+ -+dnl AC_CHECKING(FEATURE-DESCRIPTION) -+define(AC_CHECKING, -+[echo "checking $1" 1>&AC_FD_MSG -+echo "configure:__oline__: checking $1" >&AC_FD_CC]) -+ -+dnl AC_MSG_RESULT(RESULT-DESCRIPTION) -+define(AC_MSG_RESULT, -+[echo "$ac_t""$1" 1>&AC_FD_MSG]) -+ -+dnl AC_VERBOSE(RESULT-DESCRIPTION) -+define(AC_VERBOSE, -+[AC_OBSOLETE([$0], [; instead use AC_MSG_RESULT])dnl -+echo " $1" 1>&AC_FD_MSG]) -+ -+dnl AC_MSG_WARN(PROBLEM-DESCRIPTION) -+define(AC_MSG_WARN, -+[echo "configure: warning: $1" 1>&2]) -+ -+dnl AC_MSG_ERROR(ERROR-DESCRIPTION) -+define(AC_MSG_ERROR, -+[{ echo "configure: error: $1" 1>&2; exit 1; }]) -+ -+ -+dnl ### Selecting which language to use for testing -+ -+ -+dnl AC_LANG_C() -+AC_DEFUN(AC_LANG_C, -+[define([AC_LANG], [C])dnl -+ac_ext=c -+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC' -+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' -+cross_compiling=$ac_cv_prog_cc_cross -+]) -+ -+dnl AC_LANG_CPLUSPLUS() -+AC_DEFUN(AC_LANG_CPLUSPLUS, -+[define([AC_LANG], [CPLUSPLUS])dnl -+ac_ext=C -+# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='${CXX-g++} -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext 1>&AC_FD_CC' -+ac_link='${CXX-g++} -o conftest${ac_exeext} $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' -+cross_compiling=$ac_cv_prog_cxx_cross -+]) -+ -+dnl AC_LANG_FORTRAN77() -+AC_DEFUN(AC_LANG_FORTRAN77, -+[define([AC_LANG], [FORTRAN77])dnl -+ac_ext=f -+ac_compile='${F77-f77} -c $FFLAGS conftest.$ac_ext 1>&AC_FD_CC' -+ac_link='${F77-f77} -o conftest${ac_exeext} $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&AC_FD_CC' -+cross_compiling=$ac_cv_prog_f77_cross -+]) -+ -+dnl Push the current language on a stack. -+dnl AC_LANG_SAVE() -+define(AC_LANG_SAVE, -+[pushdef([AC_LANG_STACK], AC_LANG)]) -+ -+dnl Restore the current language from the stack. -+dnl AC_LANG_RESTORE() -+pushdef([AC_LANG_RESTORE], -+[ifelse(AC_LANG_STACK, [C], [AC_LANG_C],dnl -+AC_LANG_STACK, [CPLUSPLUS], [AC_LANG_CPLUSPLUS],dnl -+AC_LANG_STACK, [FORTRAN77], [AC_LANG_FORTRAN77])[]popdef([AC_LANG_STACK])]) -+ -+ -+dnl ### Compiler-running mechanics -+ -+ -+dnl The purpose of this macro is to "configure:123: command line" -+dnl written into config.log for every test run. -+dnl AC_TRY_EVAL(VARIABLE) -+AC_DEFUN(AC_TRY_EVAL, -+[{ (eval echo configure:__oline__: \"[$]$1\") 1>&AC_FD_CC; dnl -+(eval [$]$1) 2>&AC_FD_CC; }]) -+ -+dnl AC_TRY_COMMAND(COMMAND) -+AC_DEFUN(AC_TRY_COMMAND, -+[{ ac_try='$1'; AC_TRY_EVAL(ac_try); }]) -+ -+ -+dnl ### Dependencies between macros -+ -+ -+dnl AC_BEFORE(THIS-MACRO-NAME, CALLED-MACRO-NAME) -+define(AC_BEFORE, -+[ifdef([AC_PROVIDE_$2], [errprint(__file__:__line__: [$2 was called before $1 -+])])]) -+ -+dnl AC_REQUIRE(MACRO-NAME) -+define(AC_REQUIRE, -+[ifdef([AC_PROVIDE_$1], , -+[AC_DIVERT_PUSH(builtin(eval, AC_DIVERSION_CURRENT - 1))dnl -+indir([$1]) -+AC_DIVERT_POP()dnl -+])]) -+ -+dnl AC_PROVIDE(MACRO-NAME) -+define(AC_PROVIDE, -+[define([AC_PROVIDE_$1], )]) -+ -+dnl AC_OBSOLETE(THIS-MACRO-NAME [, SUGGESTION]) -+define(AC_OBSOLETE, -+[errprint(__file__:__line__: warning: [$1] is obsolete[$2] -+)]) -+ -+ -+dnl ### Checking for programs -+ -+ -+dnl AC_CHECK_PROG(VARIABLE, PROG-TO-CHECK-FOR, VALUE-IF-FOUND -+dnl [, [VALUE-IF-NOT-FOUND] [, [PATH] [, [REJECT]]]]) -+AC_DEFUN(AC_CHECK_PROG, -+[# Extract the first word of "$2", so it can be a program name with args. -+set dummy $2; ac_word=[$]2 -+AC_MSG_CHECKING([for $ac_word]) -+AC_CACHE_VAL(ac_cv_prog_$1, -+[if test -n "[$]$1"; then -+ ac_cv_prog_$1="[$]$1" # Let the user override the test. -+else -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -+ifelse([$6], , , [ ac_prog_rejected=no -+])dnl -+dnl $ac_dummy forces splitting on constant user-supplied paths. -+dnl POSIX.2 word splitting is done only on the output of word expansions, -+dnl not every word. This closes a longstanding sh security hole. -+ ac_dummy="ifelse([$5], , $PATH, [$5])" -+ for ac_dir in $ac_dummy; do -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/$ac_word; then -+ifelse([$6], , , dnl -+[ if test "[$ac_dir/$ac_word]" = "$6"; then -+ ac_prog_rejected=yes -+ continue -+ fi -+])dnl -+ ac_cv_prog_$1="$3" -+ break -+ fi -+ done -+ IFS="$ac_save_ifs" -+ifelse([$6], , , [if test $ac_prog_rejected = yes; then -+ # We found a bogon in the path, so make sure we never use it. -+ set dummy [$]ac_cv_prog_$1 -+ shift -+ if test [$]# -gt 0; then -+ # We chose a different compiler from the bogus one. -+ # However, it has the same basename, so the bogon will be chosen -+ # first if we set $1 to just the basename; use the full file name. -+ shift -+ set dummy "$ac_dir/$ac_word" "[$]@" -+ shift -+ ac_cv_prog_$1="[$]@" -+ifelse([$2], [$4], dnl -+[ else -+ # Default is a loser. -+ AC_MSG_ERROR([$1=$6 unacceptable, but no other $4 found in dnl -+ifelse([$5], , [\$]PATH, [$5])]) -+])dnl -+ fi -+fi -+])dnl -+dnl If no 4th arg is given, leave the cache variable unset, -+dnl so AC_CHECK_PROGS will keep looking. -+ifelse([$4], , , [ test -z "[$]ac_cv_prog_$1" && ac_cv_prog_$1="$4" -+])dnl -+fi])dnl -+$1="$ac_cv_prog_$1" -+if test -n "[$]$1"; then -+ AC_MSG_RESULT([$]$1) -+else -+ AC_MSG_RESULT(no) -+fi -+AC_SUBST($1)dnl -+]) -+ -+dnl AC_PATH_PROG(VARIABLE, PROG-TO-CHECK-FOR [, VALUE-IF-NOT-FOUND [, PATH]]) -+AC_DEFUN(AC_PATH_PROG, -+[# Extract the first word of "$2", so it can be a program name with args. -+set dummy $2; ac_word=[$]2 -+AC_MSG_CHECKING([for $ac_word]) -+AC_CACHE_VAL(ac_cv_path_$1, -+[case "[$]$1" in -+ /*) -+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. -+ ;; -+ ?:/*) -+ ac_cv_path_$1="[$]$1" # Let the user override the test with a dos path. -+ ;; -+ *) -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" -+dnl $ac_dummy forces splitting on constant user-supplied paths. -+dnl POSIX.2 word splitting is done only on the output of word expansions, -+dnl not every word. This closes a longstanding sh security hole. -+ ac_dummy="ifelse([$4], , $PATH, [$4])" -+ for ac_dir in $ac_dummy; do -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/$ac_word; then -+ ac_cv_path_$1="$ac_dir/$ac_word" -+ break -+ fi -+ done -+ IFS="$ac_save_ifs" -+dnl If no 3rd arg is given, leave the cache variable unset, -+dnl so AC_PATH_PROGS will keep looking. -+ifelse([$3], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$3" -+])dnl -+ ;; -+esac])dnl -+$1="$ac_cv_path_$1" -+if test -n "[$]$1"; then -+ AC_MSG_RESULT([$]$1) -+else -+ AC_MSG_RESULT(no) -+fi -+AC_SUBST($1)dnl -+]) -+ -+dnl AC_CHECK_PROGS(VARIABLE, PROGS-TO-CHECK-FOR [, VALUE-IF-NOT-FOUND -+dnl [, PATH]]) -+AC_DEFUN(AC_CHECK_PROGS, -+[for ac_prog in $2 -+do -+AC_CHECK_PROG($1, [$]ac_prog, [$]ac_prog, , $4) -+test -n "[$]$1" && break -+done -+ifelse([$3], , , [test -n "[$]$1" || $1="$3" -+])]) -+ -+dnl AC_PATH_PROGS(VARIABLE, PROGS-TO-CHECK-FOR [, VALUE-IF-NOT-FOUND -+dnl [, PATH]]) -+AC_DEFUN(AC_PATH_PROGS, -+[for ac_prog in $2 -+do -+AC_PATH_PROG($1, [$]ac_prog, , $4) -+test -n "[$]$1" && break -+done -+ifelse([$3], , , [test -n "[$]$1" || $1="$3" -+])]) -+ -+dnl Internal subroutine. -+AC_DEFUN(AC_CHECK_TOOL_PREFIX, -+[AC_REQUIRE([AC_CANONICAL_HOST])AC_REQUIRE([AC_CANONICAL_BUILD])dnl -+if test $host != $build; then -+ ac_tool_prefix=${host_alias}- -+else -+ ac_tool_prefix= -+fi -+]) -+ -+dnl AC_CHECK_TOOL(VARIABLE, PROG-TO-CHECK-FOR[, VALUE-IF-NOT-FOUND [, PATH]]) -+AC_DEFUN(AC_CHECK_TOOL, -+[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl -+AC_CHECK_PROG($1, ${ac_tool_prefix}$2, ${ac_tool_prefix}$2, -+ ifelse([$3], , [$2], ), $4) -+ifelse([$3], , , [ -+if test -z "$ac_cv_prog_$1"; then -+if test -n "$ac_tool_prefix"; then -+ AC_CHECK_PROG($1, $2, $2, $3) -+else -+ $1="$3" -+fi -+fi]) -+]) -+ -+dnl Guess the value for the `prefix' variable by looking for -+dnl the argument program along PATH and taking its parent. -+dnl Example: if the argument is `gcc' and we find /usr/local/gnu/bin/gcc, -+dnl set `prefix' to /usr/local/gnu. -+dnl This comes too late to find a site file based on the prefix, -+dnl and it might use a cached value for the path. -+dnl No big loss, I think, since most configures don't use this macro anyway. -+dnl AC_PREFIX_PROGRAM(PROGRAM) -+AC_DEFUN(AC_PREFIX_PROGRAM, -+[if test "x$prefix" = xNONE; then -+changequote(<<, >>)dnl -+define(<>, translit($1, [a-z], [A-Z]))dnl -+changequote([, ])dnl -+dnl We reimplement AC_MSG_CHECKING (mostly) to avoid the ... in the middle. -+echo $ac_n "checking for prefix by $ac_c" 1>&AC_FD_MSG -+AC_PATH_PROG(AC_VAR_NAME, $1) -+changequote(<<, >>)dnl -+ if test -n "$ac_cv_path_<<>>AC_VAR_NAME"; then -+ prefix=`echo $ac_cv_path_<<>>AC_VAR_NAME|sed 's%/[^/][^/]*//*[^/][^/]*$%%'` -+changequote([, ])dnl -+ fi -+fi -+undefine([AC_VAR_NAME])dnl -+]) -+ -+dnl Try to compile, link and execute TEST-PROGRAM. Set WORKING-VAR to -+dnl `yes' if the current compiler works, otherwise set it ti `no'. Set -+dnl CROSS-VAR to `yes' if the compiler and linker produce non-native -+dnl executables, otherwise set it to `no'. Before calling -+dnl `AC_TRY_COMPILER()', call `AC_LANG_*' to set-up for the right -+dnl language. -+dnl -+dnl AC_TRY_COMPILER(TEST-PROGRAM, WORKING-VAR, CROSS-VAR) -+AC_DEFUN(AC_TRY_COMPILER, -+[cat > conftest.$ac_ext << EOF -+ifelse(AC_LANG, [FORTRAN77], , -+[ -+[#]line __oline__ "configure" -+#include "confdefs.h" -+]) -+[$1] -+EOF -+if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then -+ [$2]=yes -+ # If we can't run a trivial program, we are probably using a cross compiler. -+ if (./conftest; exit) 2>/dev/null; then -+ [$3]=no -+ else -+ [$3]=yes -+ fi -+else -+ echo "configure: failed program was:" >&AC_FD_CC -+ cat conftest.$ac_ext >&AC_FD_CC -+ [$2]=no -+fi -+rm -fr conftest*]) -+ -+ -+dnl ### Checking for libraries -+ -+ -+dnl AC_TRY_LINK_FUNC(func, action-if-found, action-if-not-found) -+dnl Try to link a program that calls FUNC, handling GCC builtins. If -+dnl the link succeeds, execute ACTION-IF-FOUND; otherwise, execute -+dnl ACTION-IF-NOT-FOUND. -+ -+AC_DEFUN(AC_TRY_LINK_FUNC, -+AC_TRY_LINK(dnl -+ifelse([$1], [main], , dnl Avoid conflicting decl of main. -+[/* Override any gcc2 internal prototype to avoid an error. */ -+]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus -+extern "C" -+#endif -+])dnl -+[/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $1(); -+]), -+[$1()], -+[$2], -+[$3])) -+ -+ -+dnl AC_SEARCH_LIBS(FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND -+dnl [, ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) -+dnl Search for a library defining FUNC, if it's not already available. -+ -+AC_DEFUN(AC_SEARCH_LIBS, -+[AC_PREREQ([2.13]) -+AC_CACHE_CHECK([for library containing $1], [ac_cv_search_$1], -+[ac_func_search_save_LIBS="$LIBS" -+ac_cv_search_$1="no" -+AC_TRY_LINK_FUNC([$1], [ac_cv_search_$1="none required"]) -+test "$ac_cv_search_$1" = "no" && for i in $2; do -+LIBS="-l$i $5 $ac_func_search_save_LIBS" -+AC_TRY_LINK_FUNC([$1], -+[ac_cv_search_$1="-l$i" -+break]) -+done -+LIBS="$ac_func_search_save_LIBS"]) -+if test "$ac_cv_search_$1" != "no"; then -+ test "$ac_cv_search_$1" = "none required" || LIBS="$ac_cv_search_$1 $LIBS" -+ $3 -+else : -+ $4 -+fi]) -+ -+ -+ -+dnl AC_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND -+dnl [, OTHER-LIBRARIES]]]) -+AC_DEFUN(AC_CHECK_LIB, -+[AC_MSG_CHECKING([for $2 in -l$1]) -+dnl Use a cache variable name containing both the library and function name, -+dnl because the test really is for library $1 defining function $2, not -+dnl just for library $1. Separate tests with the same $1 and different $2s -+dnl may have different results. -+ac_lib_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'` -+AC_CACHE_VAL(ac_cv_lib_$ac_lib_var, -+[ac_save_LIBS="$LIBS" -+LIBS="-l$1 $5 $LIBS" -+AC_TRY_LINK(dnl -+ifelse(AC_LANG, [FORTRAN77], , -+ifelse([$2], [main], , dnl Avoid conflicting decl of main. -+[/* Override any gcc2 internal prototype to avoid an error. */ -+]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus -+extern "C" -+#endif -+])dnl -+[/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $2(); -+])), -+ [$2()], -+ eval "ac_cv_lib_$ac_lib_var=yes", -+ eval "ac_cv_lib_$ac_lib_var=no") -+LIBS="$ac_save_LIBS" -+])dnl -+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then -+ AC_MSG_RESULT(yes) -+ ifelse([$3], , -+[changequote(, )dnl -+ ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ -+ -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` -+changequote([, ])dnl -+ AC_DEFINE_UNQUOTED($ac_tr_lib) -+ LIBS="-l$1 $LIBS" -+], [$3]) -+else -+ AC_MSG_RESULT(no) -+ifelse([$4], , , [$4 -+])dnl -+fi -+]) -+ -+dnl AC_HAVE_LIBRARY(LIBRARY, [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND -+dnl [, OTHER-LIBRARIES]]]) -+AC_DEFUN(AC_HAVE_LIBRARY, -+[AC_OBSOLETE([$0], [; instead use AC_CHECK_LIB])dnl -+changequote(<<, >>)dnl -+define(<>, dnl -+patsubst(patsubst($1, <>, <<\1>>), <<-l>>, <<>>))dnl -+define(<>, ac_cv_lib_<<>>AC_LIB_NAME)dnl -+changequote([, ])dnl -+AC_MSG_CHECKING([for -l[]AC_LIB_NAME]) -+AC_CACHE_VAL(AC_CV_NAME, -+[ac_save_LIBS="$LIBS" -+LIBS="-l[]AC_LIB_NAME[] $4 $LIBS" -+AC_TRY_LINK( , [main()], AC_CV_NAME=yes, AC_CV_NAME=no) -+LIBS="$ac_save_LIBS" -+])dnl -+AC_MSG_RESULT($AC_CV_NAME) -+if test "$AC_CV_NAME" = yes; then -+ ifelse([$2], , -+[AC_DEFINE([HAVE_LIB]translit(AC_LIB_NAME, [a-z], [A-Z])) -+ LIBS="-l[]AC_LIB_NAME[] $LIBS" -+], [$2]) -+ifelse([$3], , , [else -+ $3 -+])dnl -+fi -+undefine([AC_LIB_NAME])dnl -+undefine([AC_CV_NAME])dnl -+]) -+ -+ -+dnl ### Examining declarations -+ -+ -+dnl AC_TRY_CPP(INCLUDES, [ACTION-IF-TRUE [, ACTION-IF-FALSE]]) -+AC_DEFUN(AC_TRY_CPP, -+[AC_REQUIRE_CPP()dnl -+cat > conftest.$ac_ext <&AC_FD_CC -+ echo "configure: failed program was:" >&AC_FD_CC -+ cat conftest.$ac_ext >&AC_FD_CC -+ifelse([$3], , , [ rm -rf conftest* -+ $3 -+])dnl -+fi -+rm -f conftest*]) -+ -+dnl AC_EGREP_HEADER(PATTERN, HEADER-FILE, ACTION-IF-FOUND [, -+dnl ACTION-IF-NOT-FOUND]) -+AC_DEFUN(AC_EGREP_HEADER, -+[AC_EGREP_CPP([$1], [#include <$2>], [$3], [$4])]) -+ -+dnl Because this macro is used by AC_PROG_GCC_TRADITIONAL, which must -+dnl come early, it is not included in AC_BEFORE checks. -+dnl AC_EGREP_CPP(PATTERN, PROGRAM, [ACTION-IF-FOUND [, -+dnl ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_EGREP_CPP, -+[AC_REQUIRE_CPP()dnl -+cat > conftest.$ac_ext <&AC_FD_CC | -+dnl Prevent m4 from eating character classes: -+changequote(, )dnl -+ egrep "$1" >/dev/null 2>&1; then -+changequote([, ])dnl -+ ifelse([$3], , :, [rm -rf conftest* -+ $3]) -+ifelse([$4], , , [else -+ rm -rf conftest* -+ $4 -+])dnl -+fi -+rm -f conftest* -+]) -+ -+ -+dnl ### Examining syntax -+ -+ -+dnl AC_TRY_COMPILE(INCLUDES, FUNCTION-BODY, -+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_TRY_COMPILE, -+[cat > conftest.$ac_ext <&AC_FD_CC -+ cat conftest.$ac_ext >&AC_FD_CC -+ifelse([$4], , , [ rm -rf conftest* -+ $4 -+])dnl -+fi -+rm -f conftest*]) -+ -+ -+dnl ### Examining libraries -+ -+ -+dnl AC_COMPILE_CHECK(ECHO-TEXT, INCLUDES, FUNCTION-BODY, -+dnl ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]) -+AC_DEFUN(AC_COMPILE_CHECK, -+[AC_OBSOLETE([$0], [; instead use AC_TRY_COMPILE or AC_TRY_LINK, and AC_MSG_CHECKING and AC_MSG_RESULT])dnl -+ifelse([$1], , , [AC_CHECKING([for $1]) -+])dnl -+AC_TRY_LINK([$2], [$3], [$4], [$5]) -+]) -+ -+dnl AC_TRY_LINK(INCLUDES, FUNCTION-BODY, -+dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_TRY_LINK, -+[cat > conftest.$ac_ext <&AC_FD_CC -+ cat conftest.$ac_ext >&AC_FD_CC -+ifelse([$4], , , [ rm -rf conftest* -+ $4 -+])dnl -+fi -+rm -f conftest*]) -+ -+ -+dnl ### Checking for run-time features -+ -+ -+dnl AC_TRY_RUN(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE -+dnl [, ACTION-IF-CROSS-COMPILING]]]) -+AC_DEFUN(AC_TRY_RUN, -+[if test "$cross_compiling" = yes; then -+ ifelse([$4], , -+ [errprint(__file__:__line__: warning: [AC_TRY_RUN] called without default to allow cross compiling -+)dnl -+ AC_MSG_ERROR(can not run test program while cross compiling)], -+ [$4]) -+else -+ AC_TRY_RUN_NATIVE([$1], [$2], [$3]) -+fi -+]) -+ -+dnl Like AC_TRY_RUN but assumes a native-environment (non-cross) compiler. -+dnl AC_TRY_RUN_NATIVE(PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE]]) -+AC_DEFUN(AC_TRY_RUN_NATIVE, -+[cat > conftest.$ac_ext </dev/null -+then -+dnl Don't remove the temporary files here, so they can be examined. -+ ifelse([$2], , :, [$2]) -+else -+ echo "configure: failed program was:" >&AC_FD_CC -+ cat conftest.$ac_ext >&AC_FD_CC -+ifelse([$3], , , [ rm -fr conftest* -+ $3 -+])dnl -+fi -+rm -fr conftest*]) -+ -+ -+dnl ### Checking for header files -+ -+ -+dnl AC_CHECK_HEADER(HEADER-FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_CHECK_HEADER, -+[dnl Do the transliteration at runtime so arg 1 can be a shell variable. -+ac_safe=`echo "$1" | sed 'y%./+-%__p_%'` -+AC_MSG_CHECKING([for $1]) -+AC_CACHE_VAL(ac_cv_header_$ac_safe, -+[AC_TRY_CPP([#include <$1>], eval "ac_cv_header_$ac_safe=yes", -+ eval "ac_cv_header_$ac_safe=no")])dnl -+if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then -+ AC_MSG_RESULT(yes) -+ ifelse([$2], , :, [$2]) -+else -+ AC_MSG_RESULT(no) -+ifelse([$3], , , [$3 -+])dnl -+fi -+]) -+ -+dnl AC_CHECK_HEADERS(HEADER-FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_CHECK_HEADERS, -+[for ac_hdr in $1 -+do -+AC_CHECK_HEADER($ac_hdr, -+[changequote(, )dnl -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+changequote([, ])dnl -+ AC_DEFINE_UNQUOTED($ac_tr_hdr) $2], $3)dnl -+done -+]) -+ -+ -+dnl ### Checking for the existence of files -+ -+dnl AC_CHECK_FILE(FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_CHECK_FILE, -+[AC_REQUIRE([AC_PROG_CC]) -+dnl Do the transliteration at runtime so arg 1 can be a shell variable. -+ac_safe=`echo "$1" | sed 'y%./+-%__p_%'` -+AC_MSG_CHECKING([for $1]) -+AC_CACHE_VAL(ac_cv_file_$ac_safe, -+[if test "$cross_compiling" = yes; then -+ errprint(__file__:__line__: warning: Cannot check for file existence when cross compiling -+)dnl -+ AC_MSG_ERROR(Cannot check for file existence when cross compiling) -+else -+ if test -r $1; then -+ eval "ac_cv_file_$ac_safe=yes" -+ else -+ eval "ac_cv_file_$ac_safe=no" -+ fi -+fi])dnl -+if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then -+ AC_MSG_RESULT(yes) -+ ifelse([$2], , :, [$2]) -+else -+ AC_MSG_RESULT(no) -+ifelse([$3], , , [$3]) -+fi -+]) -+ -+dnl AC_CHECK_FILES(FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_CHECK_FILES, -+[for ac_file in $1 -+do -+AC_CHECK_FILE($ac_file, -+[changequote(, )dnl -+ ac_tr_file=HAVE_`echo $ac_file | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+changequote([, ])dnl -+ AC_DEFINE_UNQUOTED($ac_tr_file) $2], $3)dnl -+done -+]) -+ -+ -+dnl ### Checking for library functions -+ -+ -+dnl AC_CHECK_FUNC(FUNCTION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_CHECK_FUNC, -+[AC_MSG_CHECKING([for $1]) -+AC_CACHE_VAL(ac_cv_func_$1, -+[AC_TRY_LINK( -+dnl Don't include because on OSF/1 3.0 it includes -+dnl which includes which contains a prototype for -+dnl select. Similarly for bzero. -+[/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $1(); below. */ -+#include -+/* Override any gcc2 internal prototype to avoid an error. */ -+]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus -+extern "C" -+#endif -+])dnl -+[/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char $1(); -+], [ -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_$1) || defined (__stub___$1) -+choke me -+#else -+$1(); -+#endif -+], eval "ac_cv_func_$1=yes", eval "ac_cv_func_$1=no")]) -+if eval "test \"`echo '$ac_cv_func_'$1`\" = yes"; then -+ AC_MSG_RESULT(yes) -+ ifelse([$2], , :, [$2]) -+else -+ AC_MSG_RESULT(no) -+ifelse([$3], , , [$3 -+])dnl -+fi -+]) -+ -+dnl AC_CHECK_FUNCS(FUNCTION... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]) -+AC_DEFUN(AC_CHECK_FUNCS, -+[for ac_func in $1 -+do -+AC_CHECK_FUNC($ac_func, -+[changequote(, )dnl -+ ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` -+changequote([, ])dnl -+ AC_DEFINE_UNQUOTED($ac_tr_func) $2], $3)dnl -+done -+]) -+ -+dnl AC_REPLACE_FUNCS(FUNCTION...) -+AC_DEFUN(AC_REPLACE_FUNCS, -+[AC_CHECK_FUNCS([$1], , [LIBOBJS="$LIBOBJS ${ac_func}.${ac_objext}"]) -+AC_SUBST(LIBOBJS)dnl -+]) -+ -+ -+dnl ### Checking compiler characteristics -+ -+ -+dnl AC_CHECK_SIZEOF(TYPE [, CROSS-SIZE]) -+AC_DEFUN(AC_CHECK_SIZEOF, -+[changequote(<<, >>)dnl -+dnl The name to #define. -+define(<>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl -+dnl The cache variable name. -+define(<>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl -+changequote([, ])dnl -+AC_MSG_CHECKING(size of $1) -+AC_CACHE_VAL(AC_CV_NAME, -+[AC_TRY_RUN([#include -+main() -+{ -+ FILE *f=fopen("conftestval", "w"); -+ if (!f) exit(1); -+ fprintf(f, "%d\n", sizeof($1)); -+ exit(0); -+}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$2], , , AC_CV_NAME=$2))])dnl -+AC_MSG_RESULT($AC_CV_NAME) -+AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME) -+undefine([AC_TYPE_NAME])dnl -+undefine([AC_CV_NAME])dnl -+]) -+ -+ -+dnl ### Checking for typedefs -+ -+ -+dnl AC_CHECK_TYPE(TYPE, DEFAULT) -+AC_DEFUN(AC_CHECK_TYPE, -+[AC_REQUIRE([AC_HEADER_STDC])dnl -+AC_MSG_CHECKING(for $1) -+AC_CACHE_VAL(ac_cv_type_$1, -+[AC_EGREP_CPP(dnl -+changequote(<<,>>)dnl -+<<(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]>>dnl -+changequote([,]), [#include -+#if STDC_HEADERS -+#include -+#include -+#endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl -+AC_MSG_RESULT($ac_cv_type_$1) -+if test $ac_cv_type_$1 = no; then -+ AC_DEFINE($1, $2) -+fi -+]) -+ -+ -+dnl ### Creating output files -+ -+ -+dnl AC_CONFIG_HEADER(HEADER-TO-CREATE ...) -+AC_DEFUN(AC_CONFIG_HEADER, -+[define(AC_LIST_HEADER, $1)]) -+ -+dnl Link each of the existing files SOURCE... to the corresponding -+dnl link name in DEST... -+dnl AC_LINK_FILES(SOURCE..., DEST...) -+AC_DEFUN(AC_LINK_FILES, -+[dnl -+define([AC_LIST_FILES], ifdef([AC_LIST_FILES], [AC_LIST_FILES ],)[$1])dnl -+define([AC_LIST_LINKS], ifdef([AC_LIST_LINKS], [AC_LIST_LINKS ],)[$2])]) -+ -+dnl Add additional commands for AC_OUTPUT to put into config.status. -+dnl Use diversions instead of macros so we can be robust in the -+dnl presence of commas in $1 and/or $2. -+dnl AC_OUTPUT_COMMANDS(EXTRA-CMDS, INIT-CMDS) -+AC_DEFUN(AC_OUTPUT_COMMANDS, -+[AC_DIVERT_PUSH(AC_DIVERSION_CMDS)dnl -+[$1] -+AC_DIVERT_POP()dnl -+AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)dnl -+[$2] -+AC_DIVERT_POP()]) -+ -+dnl AC_CONFIG_SUBDIRS(DIR ...) -+AC_DEFUN(AC_CONFIG_SUBDIRS, -+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+define([AC_LIST_SUBDIRS], ifdef([AC_LIST_SUBDIRS], [AC_LIST_SUBDIRS ],)[$1])dnl -+subdirs="AC_LIST_SUBDIRS" -+AC_SUBST(subdirs)dnl -+]) -+ -+dnl The big finish. -+dnl Produce config.status, config.h, and links; and configure subdirs. -+dnl AC_OUTPUT([FILE...] [, EXTRA-CMDS] [, INIT-CMDS]) -+define(AC_OUTPUT, -+[trap '' 1 2 15 -+AC_CACHE_SAVE -+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 -+ -+test "x$prefix" = xNONE && prefix=$ac_default_prefix -+# Let make expand exec_prefix. -+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -+ -+# Any assignment to VPATH causes Sun make to only execute -+# the first set of double-colon rules, so remove it if not needed. -+# If there is a colon in the path, we need to keep it. -+if test "x$srcdir" = x.; then -+changequote(, )dnl -+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -+changequote([, ])dnl -+fi -+ -+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 -+ -+ifdef([AC_LIST_HEADER], [DEFS=-DHAVE_CONFIG_H], [AC_OUTPUT_MAKE_DEFS()]) -+ -+# Without the "./", some shells look in PATH for config.status. -+: ${CONFIG_STATUS=./config.status} -+ -+echo creating $CONFIG_STATUS -+rm -f $CONFIG_STATUS -+cat > $CONFIG_STATUS </dev/null | sed 1q`: -+# -+[#] [$]0 [$]ac_configure_args -+# -+# Compiler output produced by configure, useful for debugging -+# configure, is in ./config.log if it exists. -+ -+changequote(, )dnl -+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -+changequote([, ])dnl -+for ac_option -+do -+ case "[\$]ac_option" in -+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -+ echo "running [\$]{CONFIG_SHELL-/bin/sh} [$]0 [$]ac_configure_args --no-create --no-recursion" -+ exec [\$]{CONFIG_SHELL-/bin/sh} [$]0 [$]ac_configure_args --no-create --no-recursion ;; -+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v) -+ echo "$CONFIG_STATUS generated by autoconf version AC_ACVERSION" -+ exit 0 ;; -+ -help | --help | --hel | --he | --h) -+ echo "[\$]ac_cs_usage"; exit 0 ;; -+ *) echo "[\$]ac_cs_usage"; exit 1 ;; -+ esac -+done -+ -+ac_given_srcdir=$srcdir -+ifdef([AC_PROVIDE_AC_PROG_INSTALL], [ac_given_INSTALL="$INSTALL" -+])dnl -+ -+changequote(<<, >>)dnl -+ifdef(<>, -+<>, -+<>) -+changequote([, ])dnl -+EOF -+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -+undivert(AC_DIVERSION_CMDS)dnl -+$2 -+exit 0 -+EOF -+chmod +x $CONFIG_STATUS -+rm -fr confdefs* $ac_clean_files -+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 -+dnl config.status should not do recursion. -+ifdef([AC_LIST_SUBDIRS], [AC_OUTPUT_SUBDIRS(AC_LIST_SUBDIRS)])dnl -+])dnl -+ -+dnl Set the DEFS variable to the -D options determined earlier. -+dnl This is a subroutine of AC_OUTPUT. -+dnl It is called inside configure, outside of config.status. -+dnl AC_OUTPUT_MAKE_DEFS() -+define(AC_OUTPUT_MAKE_DEFS, -+[# Transform confdefs.h into DEFS. -+dnl Using a here document instead of a string reduces the quoting nightmare. -+# Protect against shell expansion while executing Makefile rules. -+# Protect against Makefile macro expansion. -+cat > conftest.defs <<\EOF -+changequote(<<, >>)dnl -+s%<<#define>> \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -+s%[ `~<<#>>$^&*(){}\\|;'"<>?]%\\&%g -+s%\[%\\&%g -+s%\]%\\&%g -+s%\$%$$%g -+changequote([, ])dnl -+EOF -+DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -+rm -f conftest.defs -+]) -+ -+dnl Do the variable substitutions to create the Makefiles or whatever. -+dnl This is a subroutine of AC_OUTPUT. It is called inside an unquoted -+dnl here document whose contents are going into config.status, but -+dnl upon returning, the here document is being quoted. -+dnl AC_OUTPUT_FILES(FILE...) -+define(AC_OUTPUT_FILES, -+[# Protect against being on the right side of a sed subst in config.status. -+changequote(, )dnl -+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; -+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -+changequote([, ])dnl -+dnl These here document variables are unquoted when configure runs -+dnl but quoted when config.status runs, so variables are expanded once. -+$ac_vpsub -+dnl Shell code in configure.in might set extrasub. -+$extrasub -+dnl Insert the sed substitutions of variables. -+undivert(AC_DIVERSION_SED) -+CEOF -+EOF -+ -+cat >> $CONFIG_STATUS <<\EOF -+ -+# Split the substitutions into bite-sized pieces for seds with -+# small command number limits, like on Digital OSF/1 and HP-UX. -+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -+ac_file=1 # Number of current file. -+ac_beg=1 # First line for current file. -+ac_end=$ac_max_sed_cmds # Line after last line for current file. -+ac_more_lines=: -+ac_sed_cmds="" -+while $ac_more_lines; do -+ if test $ac_beg -gt 1; then -+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file -+ else -+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file -+ fi -+ if test ! -s conftest.s$ac_file; then -+ ac_more_lines=false -+ rm -f conftest.s$ac_file -+ else -+ if test -z "$ac_sed_cmds"; then -+ ac_sed_cmds="sed -f conftest.s$ac_file" -+ else -+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" -+ fi -+ ac_file=`expr $ac_file + 1` -+ ac_beg=$ac_end -+ ac_end=`expr $ac_end + $ac_max_sed_cmds` -+ fi -+done -+if test -z "$ac_sed_cmds"; then -+ ac_sed_cmds=cat -+fi -+EOF -+ -+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then -+changequote(, )dnl -+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". -+ case "$ac_file" in -+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` -+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -+ *) ac_file_in="${ac_file}.in" ;; -+ esac -+ -+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. -+ -+ # Remove last slash and all that follows it. Not all systems have dirname. -+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` -+changequote([, ])dnl -+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then -+ # The file is in a subdirectory. -+ test ! -d "$ac_dir" && mkdir "$ac_dir" -+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" -+ # A "../" for each directory in $ac_dir_suffix. -+changequote(, )dnl -+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` -+changequote([, ])dnl -+ else -+ ac_dir_suffix= ac_dots= -+ fi -+ -+ case "$ac_given_srcdir" in -+ .) srcdir=. -+ if test -z "$ac_dots"; then top_srcdir=. -+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; -+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; -+ *) # Relative path. -+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" -+ top_srcdir="$ac_dots$ac_given_srcdir" ;; -+ esac -+ -+ifdef([AC_PROVIDE_AC_PROG_INSTALL], -+[ case "$ac_given_INSTALL" in -+changequote(, )dnl -+ [/$]*) INSTALL="$ac_given_INSTALL" ;; -+changequote([, ])dnl -+ *) INSTALL="$ac_dots$ac_given_INSTALL" ;; -+ esac -+])dnl -+ -+ echo creating "$ac_file" -+ rm -f "$ac_file" -+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." -+ case "$ac_file" in -+ *Makefile*) ac_comsub="1i\\ -+# $configure_input" ;; -+ *) ac_comsub= ;; -+ esac -+ -+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` -+ sed -e "$ac_comsub -+s%@configure_input@%$configure_input%g -+s%@srcdir@%$srcdir%g -+s%@top_srcdir@%$top_srcdir%g -+ifdef([AC_PROVIDE_AC_PROG_INSTALL], [s%@INSTALL@%$INSTALL%g -+])dnl -+dnl The parens around the eval prevent an "illegal io" in Ultrix sh. -+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -+dnl This would break Makefile dependencies. -+dnl if cmp -s $ac_file conftest.out 2>/dev/null; then -+dnl echo "$ac_file is unchanged" -+dnl rm -f conftest.out -+dnl else -+dnl rm -f $ac_file -+dnl mv conftest.out $ac_file -+dnl fi -+fi; done -+rm -f conftest.s* -+]) -+ -+dnl Create the config.h files from the config.h.in files. -+dnl This is a subroutine of AC_OUTPUT. It is called inside a quoted -+dnl here document whose contents are going into config.status. -+dnl AC_OUTPUT_HEADER(HEADER-FILE...) -+define(AC_OUTPUT_HEADER, -+[changequote(<<, >>)dnl -+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -+# NAME is the cpp macro being defined and VALUE is the value it is being given. -+# -+# ac_d sets the value in "#define NAME VALUE" lines. -+ac_dA='s%^\([ ]*\)#\([ ]*define[ ][ ]*\)' -+ac_dB='\([ ][ ]*\)[^ ]*%\1#\2' -+ac_dC='\3' -+ac_dD='%g' -+# ac_u turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -+ac_uA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -+ac_uB='\([ ]\)%\1#\2define\3' -+ac_uC=' ' -+ac_uD='\4%g' -+# ac_e turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -+ac_eA='s%^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -+ac_eB='<<$>>%\1#\2define\3' -+ac_eC=' ' -+ac_eD='%g' -+changequote([, ])dnl -+ -+if test "${CONFIG_HEADERS+set}" != set; then -+EOF -+dnl Support passing AC_CONFIG_HEADER a value containing shell variables. -+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -+fi -+for ac_file in .. $CONFIG_HEADERS; do if test "x$ac_file" != x..; then -+changequote(, )dnl -+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". -+ case "$ac_file" in -+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` -+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -+ *) ac_file_in="${ac_file}.in" ;; -+ esac -+changequote([, ])dnl -+ -+ echo creating $ac_file -+ -+ rm -f conftest.frag conftest.in conftest.out -+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` -+ cat $ac_file_inputs > conftest.in -+ -+EOF -+ -+# Transform confdefs.h into a sed script conftest.vals that substitutes -+# the proper values into config.h.in to produce config.h. And first: -+# Protect against being on the right side of a sed subst in config.status. -+# Protect against being in an unquoted here document in config.status. -+rm -f conftest.vals -+dnl Using a here document instead of a string reduces the quoting nightmare. -+dnl Putting comments in sed scripts is not portable. -+cat > conftest.hdr <<\EOF -+changequote(<<, >>)dnl -+s/[\\&%]/\\&/g -+s%[\\$`]%\\&%g -+s%<<#define>> \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD}%gp -+s%ac_d%ac_u%gp -+s%ac_u%ac_e%gp -+changequote([, ])dnl -+EOF -+sed -n -f conftest.hdr confdefs.h > conftest.vals -+rm -f conftest.hdr -+ -+# This sed command replaces #undef with comments. This is necessary, for -+# example, in the case of _POSIX_SOURCE, which is predefined and required -+# on some systems where configure will not decide to define it. -+cat >> conftest.vals <<\EOF -+changequote(, )dnl -+s%^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*%/* & */% -+changequote([, ])dnl -+EOF -+ -+# Break up conftest.vals because some shells have a limit on -+# the size of here documents, and old seds have small limits too. -+ -+rm -f conftest.tail -+while : -+do -+ ac_lines=`grep -c . conftest.vals` -+ # grep -c gives empty output for an empty file on some AIX systems. -+ if test -z "$ac_lines" || test "$ac_lines" -eq 0; then break; fi -+ # Write a limited-size here document to conftest.frag. -+ echo ' cat > conftest.frag <> $CONFIG_STATUS -+ sed ${ac_max_here_lines}q conftest.vals >> $CONFIG_STATUS -+ echo 'CEOF -+ sed -f conftest.frag conftest.in > conftest.out -+ rm -f conftest.in -+ mv conftest.out conftest.in -+' >> $CONFIG_STATUS -+ sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail -+ rm -f conftest.vals -+ mv conftest.tail conftest.vals -+done -+rm -f conftest.vals -+ -+dnl Now back to your regularly scheduled config.status. -+cat >> $CONFIG_STATUS <<\EOF -+ rm -f conftest.frag conftest.h -+ echo "/* $ac_file. Generated automatically by configure. */" > conftest.h -+ cat conftest.in >> conftest.h -+ rm -f conftest.in -+ if cmp -s $ac_file conftest.h 2>/dev/null; then -+ echo "$ac_file is unchanged" -+ rm -f conftest.h -+ else -+ # Remove last slash and all that follows it. Not all systems have dirname. -+ changequote(, )dnl -+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` -+ changequote([, ])dnl -+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then -+ # The file is in a subdirectory. -+ test ! -d "$ac_dir" && mkdir "$ac_dir" -+ fi -+ rm -f $ac_file -+ mv conftest.h $ac_file -+ fi -+fi; done -+ -+]) -+ -+dnl This is a subroutine of AC_OUTPUT. It is called inside a quoted -+dnl here document whose contents are going into config.status. -+dnl AC_OUTPUT_LINKS(SOURCE..., DEST...) -+define(AC_OUTPUT_LINKS, -+[EOF -+ -+cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -+srcdir=$ac_given_srcdir -+while test -n "$ac_sources"; do -+ set $ac_dests; ac_dest=[$]1; shift; ac_dests=[$]* -+ set $ac_sources; ac_source=[$]1; shift; ac_sources=[$]* -+ -+ echo "linking $srcdir/$ac_source to $ac_dest" -+ -+ if test ! -r $srcdir/$ac_source; then -+ AC_MSG_ERROR($srcdir/$ac_source: File not found) -+ fi -+ rm -f $ac_dest -+ -+ # Make relative symlinks. -+ # Remove last slash and all that follows it. Not all systems have dirname. -+changequote(, )dnl -+ ac_dest_dir=`echo $ac_dest|sed 's%/[^/][^/]*$%%'` -+changequote([, ])dnl -+ if test "$ac_dest_dir" != "$ac_dest" && test "$ac_dest_dir" != .; then -+ # The dest file is in a subdirectory. -+ test ! -d "$ac_dest_dir" && mkdir "$ac_dest_dir" -+ ac_dest_dir_suffix="/`echo $ac_dest_dir|sed 's%^\./%%'`" -+ # A "../" for each directory in $ac_dest_dir_suffix. -+changequote(, )dnl -+ ac_dots=`echo $ac_dest_dir_suffix|sed 's%/[^/]*%../%g'` -+changequote([, ])dnl -+ else -+ ac_dest_dir_suffix= ac_dots= -+ fi -+ -+ case "$srcdir" in -+changequote(, )dnl -+ [/$]*) ac_rel_source="$srcdir/$ac_source" ;; -+changequote([, ])dnl -+ *) ac_rel_source="$ac_dots$srcdir/$ac_source" ;; -+ esac -+ -+ # Make a symlink if possible; otherwise try a hard link. -+ if ln -s $ac_rel_source $ac_dest 2>/dev/null || -+ ln $srcdir/$ac_source $ac_dest; then : -+ else -+ AC_MSG_ERROR(can not link $ac_dest to $srcdir/$ac_source) -+ fi -+done -+]) -+ -+dnl This is a subroutine of AC_OUTPUT. -+dnl It is called after running config.status. -+dnl AC_OUTPUT_SUBDIRS(DIRECTORY...) -+define(AC_OUTPUT_SUBDIRS, -+[ -+if test "$no_recursion" != yes; then -+ -+ # Remove --cache-file and --srcdir arguments so they do not pile up. -+ ac_sub_configure_args= -+ ac_prev= -+ for ac_arg in $ac_configure_args; do -+ if test -n "$ac_prev"; then -+ ac_prev= -+ continue -+ fi -+ case "$ac_arg" in -+ -cache-file | --cache-file | --cache-fil | --cache-fi \ -+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) -+ ac_prev=cache_file ;; -+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ -+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) -+ ;; -+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) -+ ac_prev=srcdir ;; -+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) -+ ;; -+ *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;; -+ esac -+ done -+ -+ for ac_config_dir in $1; do -+ -+ # Do not complain, so a configure script can configure whichever -+ # parts of a large source tree are present. -+ if test ! -d $srcdir/$ac_config_dir; then -+ continue -+ fi -+ -+ echo configuring in $ac_config_dir -+ -+ case "$srcdir" in -+ .) ;; -+ *) -+ if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :; -+ else -+ AC_MSG_ERROR(can not create `pwd`/$ac_config_dir) -+ fi -+ ;; -+ esac -+ -+ ac_popdir=`pwd` -+ cd $ac_config_dir -+ -+changequote(, )dnl -+ # A "../" for each directory in /$ac_config_dir. -+ ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` -+changequote([, ])dnl -+ -+ case "$srcdir" in -+ .) # No --srcdir option. We are building in place. -+ ac_sub_srcdir=$srcdir ;; -+ /*) # Absolute path. -+ ac_sub_srcdir=$srcdir/$ac_config_dir ;; -+ *) # Relative path. -+ ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;; -+ esac -+ -+ # Check for guested configure; otherwise get Cygnus style configure. -+ if test -f $ac_sub_srcdir/configure; then -+ ac_sub_configure=$ac_sub_srcdir/configure -+ elif test -f $ac_sub_srcdir/configure.in; then -+ ac_sub_configure=$ac_configure -+ else -+ AC_MSG_WARN(no configuration information is in $ac_config_dir) -+ ac_sub_configure= -+ fi -+ -+ # The recursion is here. -+ if test -n "$ac_sub_configure"; then -+ -+ # Make the cache file name correct relative to the subdirectory. -+ case "$cache_file" in -+ /*) ac_sub_cache_file=$cache_file ;; -+ *) # Relative path. -+ ac_sub_cache_file="$ac_dots$cache_file" ;; -+ esac -+ifdef([AC_PROVIDE_AC_PROG_INSTALL], -+ [ case "$ac_given_INSTALL" in -+changequote(, )dnl -+ [/$]*) INSTALL="$ac_given_INSTALL" ;; -+changequote([, ])dnl -+ *) INSTALL="$ac_dots$ac_given_INSTALL" ;; -+ esac -+])dnl -+ -+ echo "[running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file] --srcdir=$ac_sub_srcdir" -+ # The eval makes quoting arguments work. -+ if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir -+ then : -+ else -+ AC_MSG_ERROR($ac_sub_configure failed for $ac_config_dir) -+ fi -+ fi -+ -+ cd $ac_popdir -+ done -+fi -+]) -diff -up firefox-78.8.0/build/autoconf/acoldnames.m4.D89554-autoconf1.diff firefox-78.8.0/build/autoconf/acoldnames.m4 ---- firefox-78.8.0/build/autoconf/acoldnames.m4.D89554-autoconf1.diff 2021-02-25 13:48:13.604993478 +0100 -+++ firefox-78.8.0/build/autoconf/acoldnames.m4 2021-02-25 13:48:13.604993478 +0100 -@@ -0,0 +1,80 @@ -+dnl Map old names of Autoconf macros to new regularized names. -+dnl This file is part of Autoconf. -+dnl Copyright (C) 1994 Free Software Foundation, Inc. -+dnl -+dnl This program is free software; you can redistribute it and/or modify -+dnl it under the terms of the GNU General Public License as published by -+dnl the Free Software Foundation; either version 2, or (at your option) -+dnl any later version. -+dnl -+dnl This program is distributed in the hope that it will be useful, -+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of -+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+dnl GNU General Public License for more details. -+dnl -+dnl You should have received a copy of the GNU General Public License -+dnl along with this program; if not, write to the Free Software -+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+dnl 02111-1307, USA. -+dnl -+dnl General macros. -+dnl -+define(AC_WARN, [indir([AC_MSG_WARN], $@)])dnl -+define(AC_ERROR, [indir([AC_MSG_ERROR], $@)])dnl -+AC_DEFUN(AC_PROGRAM_CHECK, [indir([AC_CHECK_PROG], $@)])dnl -+AC_DEFUN(AC_PROGRAM_PATH, [indir([AC_PATH_PROG], $@)])dnl -+AC_DEFUN(AC_PROGRAMS_CHECK, [indir([AC_CHECK_PROGS], $@)])dnl -+AC_DEFUN(AC_PROGRAMS_PATH, [indir([AC_PATH_PROGS], $@)])dnl -+AC_DEFUN(AC_PREFIX, [indir([AC_PREFIX_PROGRAM], $@)])dnl -+AC_DEFUN(AC_HEADER_EGREP, [indir([AC_EGREP_HEADER], $@)])dnl -+AC_DEFUN(AC_PROGRAM_EGREP, [indir([AC_EGREP_CPP], $@)])dnl -+AC_DEFUN(AC_TEST_PROGRAM, [indir([AC_TRY_RUN], $@)])dnl -+AC_DEFUN(AC_TEST_CPP, [indir([AC_TRY_CPP], $@)])dnl -+AC_DEFUN(AC_HEADER_CHECK, [indir([AC_CHECK_HEADER], $@)])dnl -+AC_DEFUN(AC_FUNC_CHECK, [indir([AC_CHECK_FUNC], $@)])dnl -+AC_DEFUN(AC_HAVE_FUNCS, [indir([AC_CHECK_FUNCS], $@)])dnl -+AC_DEFUN(AC_HAVE_HEADERS, [indir([AC_CHECK_HEADERS], $@)])dnl -+AC_DEFUN(AC_SIZEOF_TYPE, [indir([AC_CHECK_SIZEOF], $@)])dnl -+dnl -+dnl Specific macros. -+dnl -+AC_DEFUN(AC_GCC_TRADITIONAL, [indir([AC_PROG_GCC_TRADITIONAL])])dnl -+AC_DEFUN(AC_MINUS_C_MINUS_O, [indir([AC_PROG_CC_C_O])])dnl -+AC_DEFUN(AC_SET_MAKE, [indir([AC_PROG_MAKE_SET])])dnl -+AC_DEFUN(AC_YYTEXT_POINTER, [indir([AC_DECL_YYTEXT])])dnl -+AC_DEFUN(AC_LN_S, [indir([AC_PROG_LN_S])])dnl -+AC_DEFUN(AC_STDC_HEADERS, [indir([AC_HEADER_STDC])])dnl -+AC_DEFUN(AC_MAJOR_HEADER, [indir([AC_HEADER_MAJOR])])dnl -+AC_DEFUN(AC_STAT_MACROS_BROKEN, [indir([AC_HEADER_STAT])])dnl -+AC_DEFUN(AC_SYS_SIGLIST_DECLARED, [indir([AC_DECL_SYS_SIGLIST])])dnl -+AC_DEFUN(AC_GETGROUPS_T, [indir([AC_TYPE_GETGROUPS])])dnl -+AC_DEFUN(AC_UID_T, [indir([AC_TYPE_UID_T])])dnl -+AC_DEFUN(AC_SIZE_T, [indir([AC_TYPE_SIZE_T])])dnl -+AC_DEFUN(AC_PID_T, [indir([AC_TYPE_PID_T])])dnl -+AC_DEFUN(AC_OFF_T, [indir([AC_TYPE_OFF_T])])dnl -+AC_DEFUN(AC_MODE_T, [indir([AC_TYPE_MODE_T])])dnl -+AC_DEFUN(AC_RETSIGTYPE, [indir([AC_TYPE_SIGNAL])])dnl -+AC_DEFUN(AC_MMAP, [indir([AC_FUNC_MMAP])])dnl -+AC_DEFUN(AC_VPRINTF, [indir([AC_FUNC_VPRINTF])])dnl -+AC_DEFUN(AC_VFORK, [indir([AC_FUNC_VFORK])])dnl -+AC_DEFUN(AC_WAIT3, [indir([AC_FUNC_WAIT3])])dnl -+AC_DEFUN(AC_ALLOCA, [indir([AC_FUNC_ALLOCA])])dnl -+AC_DEFUN(AC_GETLOADAVG, [indir([AC_FUNC_GETLOADAVG])])dnl -+AC_DEFUN(AC_UTIME_NULL, [indir([AC_FUNC_UTIME_NULL])])dnl -+AC_DEFUN(AC_STRCOLL, [indir([AC_FUNC_STRCOLL])])dnl -+AC_DEFUN(AC_SETVBUF_REVERSED, [indir([AC_FUNC_SETVBUF_REVERSED])])dnl -+AC_DEFUN(AC_TIME_WITH_SYS_TIME, [indir([AC_HEADER_TIME])])dnl -+AC_DEFUN(AC_TIMEZONE, [indir([AC_STRUCT_TIMEZONE])])dnl -+AC_DEFUN(AC_ST_BLOCKS, [indir([AC_STRUCT_ST_BLOCKS])])dnl -+AC_DEFUN(AC_ST_BLKSIZE, [indir([AC_STRUCT_ST_BLKSIZE])])dnl -+AC_DEFUN(AC_ST_RDEV, [indir([AC_STRUCT_ST_RDEV])])dnl -+AC_DEFUN(AC_CROSS_CHECK, [indir([AC_C_CROSS])])dnl -+AC_DEFUN(AC_CHAR_UNSIGNED, [indir([AC_C_CHAR_UNSIGNED])])dnl -+AC_DEFUN(AC_LONG_DOUBLE, [indir([AC_C_LONG_DOUBLE])])dnl -+AC_DEFUN(AC_WORDS_BIGENDIAN, [indir([AC_C_BIGENDIAN])])dnl -+AC_DEFUN(AC_INLINE, [indir([AC_C_INLINE])])dnl -+AC_DEFUN(AC_CONST, [indir([AC_C_CONST])])dnl -+AC_DEFUN(AC_LONG_FILE_NAMES, [indir([AC_SYS_LONG_FILE_NAMES])])dnl -+AC_DEFUN(AC_RESTARTABLE_SYSCALLS, [indir([AC_SYS_RESTARTABLE_SYSCALLS])])dnl -+AC_DEFUN(AC_FIND_X, [indir([AC_PATH_X])])dnl -+AC_DEFUN(AC_FIND_XTRA, [indir([AC_PATH_XTRA])])dnl -diff -up firefox-78.8.0/build/autoconf/acspecific.m4.D89554-autoconf1.diff firefox-78.8.0/build/autoconf/acspecific.m4 ---- firefox-78.8.0/build/autoconf/acspecific.m4.D89554-autoconf1.diff 2021-02-25 13:48:13.605993481 +0100 -+++ firefox-78.8.0/build/autoconf/acspecific.m4 2021-02-25 13:48:13.605993481 +0100 -@@ -0,0 +1,2758 @@ -+dnl Macros that test for specific features. -+dnl This file is part of Autoconf. -+dnl Copyright (C) 1992, 93, 94, 95, 96, 1998 Free Software Foundation, Inc. -+dnl -+dnl This program is free software; you can redistribute it and/or modify -+dnl it under the terms of the GNU General Public License as published by -+dnl the Free Software Foundation; either version 2, or (at your option) -+dnl any later version. -+dnl -+dnl This program is distributed in the hope that it will be useful, -+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of -+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+dnl GNU General Public License for more details. -+dnl -+dnl You should have received a copy of the GNU General Public License -+dnl along with this program; if not, write to the Free Software -+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+dnl 02111-1307, USA. -+dnl -+dnl As a special exception, the Free Software Foundation gives unlimited -+dnl permission to copy, distribute and modify the configure scripts that -+dnl are the output of Autoconf. You need not follow the terms of the GNU -+dnl General Public License when using or distributing such scripts, even -+dnl though portions of the text of Autoconf appear in them. The GNU -+dnl General Public License (GPL) does govern all other use of the material -+dnl that constitutes the Autoconf program. -+dnl -+dnl Certain portions of the Autoconf source text are designed to be copied -+dnl (in certain cases, depending on the input) into the output of -+dnl Autoconf. We call these the "data" portions. The rest of the Autoconf -+dnl source text consists of comments plus executable code that decides which -+dnl of the data portions to output in any given case. We call these -+dnl comments and executable code the "non-data" portions. Autoconf never -+dnl copies any of the non-data portions into its output. -+dnl -+dnl This special exception to the GPL applies to versions of Autoconf -+dnl released by the Free Software Foundation. When you make and -+dnl distribute a modified version of Autoconf, you may extend this special -+dnl exception to the GPL to apply to your modified version as well, *unless* -+dnl your modified version has the potential to copy into its output some -+dnl of the text that was the non-data portion of the version that you started -+dnl with. (In other words, unless your change moves or copies text from -+dnl the non-data portions to the data portions.) If your modification has -+dnl such potential, you must delete any notice of this special exception -+dnl to the GPL from your modified version. -+dnl -+dnl Written by David MacKenzie, with help from -+dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor, -+dnl Roland McGrath, Noah Friedman, david d zuhn, and many others. -+ -+ -+dnl ### Checks for programs -+ -+ -+dnl Check whether to use -n, \c, or newline-tab to separate -+dnl checking messages from result messages. -+dnl Idea borrowed from dist 3.0. -+dnl Internal use only. -+AC_DEFUN(AC_PROG_ECHO_N, -+[if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then -+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. -+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then -+ ac_n= ac_c=' -+' ac_t=' ' -+ else -+ ac_n=-n ac_c= ac_t= -+ fi -+else -+ ac_n= ac_c='\c' ac_t= -+fi -+]) -+ -+AC_DEFUN(AC_PROG_CC, -+[AC_BEFORE([$0], [AC_PROG_CPP])dnl -+AC_CHECK_PROG(CC, gcc, gcc) -+if test -z "$CC"; then -+ AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc) -+ if test -z "$CC"; then -+ case "`uname -s`" in -+ *win32* | *WIN32*) -+ AC_CHECK_PROG(CC, cl, cl) ;; -+ esac -+ fi -+ test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH]) -+fi -+ -+AC_PROG_CC_WORKS -+AC_PROG_CC_GNU -+ -+if test $ac_cv_prog_gcc = yes; then -+ GCC=yes -+else -+ GCC= -+fi -+ -+dnl Check whether -g works, even if CFLAGS is set, in case the package -+dnl plays around with CFLAGS (such as to build both debugging and -+dnl normal versions of a library), tasteless as that idea is. -+ac_test_CFLAGS="${CFLAGS+set}" -+ac_save_CFLAGS="$CFLAGS" -+CFLAGS= -+AC_PROG_CC_G -+if test "$ac_test_CFLAGS" = set; then -+ CFLAGS="$ac_save_CFLAGS" -+elif test $ac_cv_prog_cc_g = yes; then -+ if test "$GCC" = yes; then -+ CFLAGS="-g -O2" -+ else -+ CFLAGS="-g" -+ fi -+else -+ if test "$GCC" = yes; then -+ CFLAGS="-O2" -+ else -+ CFLAGS= -+ fi -+fi -+]) -+ -+AC_DEFUN(AC_PROG_CXX, -+[AC_BEFORE([$0], [AC_PROG_CXXCPP])dnl -+AC_CHECK_PROGS(CXX, $CCC c++ g++ gcc CC cxx cc++ cl, gcc) -+ -+AC_PROG_CXX_WORKS -+AC_PROG_CXX_GNU -+ -+if test $ac_cv_prog_gxx = yes; then -+ GXX=yes -+else -+ GXX= -+fi -+ -+dnl Check whether -g works, even if CXXFLAGS is set, in case the package -+dnl plays around with CXXFLAGS (such as to build both debugging and -+dnl normal versions of a library), tasteless as that idea is. -+ac_test_CXXFLAGS="${CXXFLAGS+set}" -+ac_save_CXXFLAGS="$CXXFLAGS" -+CXXFLAGS= -+AC_PROG_CXX_G -+if test "$ac_test_CXXFLAGS" = set; then -+ CXXFLAGS="$ac_save_CXXFLAGS" -+elif test $ac_cv_prog_cxx_g = yes; then -+ if test "$GXX" = yes; then -+ CXXFLAGS="-g -O2" -+ else -+ CXXFLAGS="-g" -+ fi -+else -+ if test "$GXX" = yes; then -+ CXXFLAGS="-O2" -+ else -+ CXXFLAGS= -+ fi -+fi -+]) -+ -+dnl Determine a Fortran 77 compiler to use. If `F77' is not already set -+dnl in the environment, check for `g77', `f77' and `f2c', in that order. -+dnl Set the output variable `F77' to the name of the compiler found. -+dnl -+dnl If using `g77' (the GNU Fortran 77 compiler), then `AC_PROG_F77' -+dnl will set the shell variable `G77' to `yes', and empty otherwise. If -+dnl the output variable `FFLAGS' was not already set in the environment, -+dnl then set it to `-g -02' for `g77' (or `-O2' where `g77' does not -+dnl accept `-g'). Otherwise, set `FFLAGS' to `-g' for all other Fortran -+dnl 77 compilers. -+dnl -+dnl AC_PROG_F77() -+AC_DEFUN(AC_PROG_F77, -+[AC_BEFORE([$0], [AC_PROG_CPP])dnl -+if test -z "$F77"; then -+ AC_CHECK_PROGS(F77, g77 f77 f2c) -+ test -z "$F77" && AC_MSG_ERROR([no acceptable Fortran 77 compiler found in \$PATH]) -+fi -+ -+AC_PROG_F77_WORKS -+AC_PROG_F77_GNU -+ -+if test $ac_cv_prog_g77 = yes; then -+ G77=yes -+dnl Check whether -g works, even if FFLAGS is set, in case the package -+dnl plays around with FFLAGS (such as to build both debugging and -+dnl normal versions of a library), tasteless as that idea is. -+ ac_test_FFLAGS="${FFLAGS+set}" -+ ac_save_FFLAGS="$FFLAGS" -+ FFLAGS= -+ AC_PROG_F77_G -+ if test "$ac_test_FFLAGS" = set; then -+ FFLAGS="$ac_save_FFLAGS" -+ elif test $ac_cv_prog_f77_g = yes; then -+ FFLAGS="-g -O2" -+ else -+ FFLAGS="-O2" -+ fi -+else -+ G77= -+ test "${FFLAGS+set}" = set || FFLAGS="-g" -+fi -+]) -+ -+AC_DEFUN(AC_PROG_CC_WORKS, -+[AC_MSG_CHECKING([whether the C compiler ($CC $CFLAGS $LDFLAGS) works]) -+AC_LANG_SAVE -+AC_LANG_C -+AC_TRY_COMPILER([main(){return(0);}], ac_cv_prog_cc_works, ac_cv_prog_cc_cross) -+AC_LANG_RESTORE -+AC_MSG_RESULT($ac_cv_prog_cc_works) -+if test $ac_cv_prog_cc_works = no; then -+ AC_MSG_ERROR([installation or configuration problem: C compiler cannot create executables.]) -+fi -+AC_MSG_CHECKING([whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler]) -+AC_MSG_RESULT($ac_cv_prog_cc_cross) -+cross_compiling=$ac_cv_prog_cc_cross -+]) -+ -+AC_DEFUN(AC_PROG_CXX_WORKS, -+[AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works]) -+AC_LANG_SAVE -+AC_LANG_CPLUSPLUS -+AC_TRY_COMPILER([int main(){return(0);}], ac_cv_prog_cxx_works, ac_cv_prog_cxx_cross) -+AC_LANG_RESTORE -+AC_MSG_RESULT($ac_cv_prog_cxx_works) -+if test $ac_cv_prog_cxx_works = no; then -+ AC_MSG_ERROR([installation or configuration problem: C++ compiler cannot create executables.]) -+fi -+AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler]) -+AC_MSG_RESULT($ac_cv_prog_cxx_cross) -+cross_compiling=$ac_cv_prog_cxx_cross -+]) -+ -+dnl Test whether the Fortran 77 compiler can compile and link a trivial -+dnl Fortran program. Also, test whether the Fortran 77 compiler is a -+dnl cross-compiler (which may realistically be the case if the Fortran -+dnl compiler is `g77'). -+dnl -+dnl AC_PROG_F77_WORKS() -+AC_DEFUN(AC_PROG_F77_WORKS, -+[AC_MSG_CHECKING([whether the Fortran 77 compiler ($F77 $FFLAGS $LDFLAGS) works]) -+AC_LANG_SAVE -+AC_LANG_FORTRAN77 -+AC_TRY_COMPILER(dnl -+[ program conftest -+ end -+], ac_cv_prog_f77_works, ac_cv_prog_f77_cross) -+AC_LANG_RESTORE -+AC_MSG_RESULT($ac_cv_prog_f77_works) -+if test $ac_cv_prog_f77_works = no; then -+ AC_MSG_ERROR([installation or configuration problem: Fortran 77 compiler cannot create executables.]) -+fi -+AC_MSG_CHECKING([whether the Fortran 77 compiler ($F77 $FFLAGS $LDFLAGS) is a cross-compiler]) -+AC_MSG_RESULT($ac_cv_prog_f77_cross) -+cross_compiling=$ac_cv_prog_f77_cross -+]) -+ -+AC_DEFUN(AC_PROG_CC_GNU, -+[AC_CACHE_CHECK(whether we are using GNU C, ac_cv_prog_gcc, -+[dnl The semicolon is to pacify NeXT's syntax-checking cpp. -+cat > conftest.c </dev/null 2>&1; then -+ ac_cv_prog_gcc=yes -+else -+ ac_cv_prog_gcc=no -+fi])]) -+ -+AC_DEFUN(AC_PROG_CXX_GNU, -+[AC_CACHE_CHECK(whether we are using GNU C++, ac_cv_prog_gxx, -+[dnl The semicolon is to pacify NeXT's syntax-checking cpp. -+cat > conftest.C </dev/null 2>&1; then -+ ac_cv_prog_gxx=yes -+else -+ ac_cv_prog_gxx=no -+fi])]) -+ -+dnl Test whether for Fortran 77 compiler is `g77' (the GNU Fortran 77 -+dnl Compiler). This test depends on whether the Fortran 77 compiler can -+dnl do CPP pre-processing. -+dnl -+dnl AC_PROG_F77_GNU() -+AC_DEFUN(AC_PROG_F77_GNU, -+[AC_CACHE_CHECK(whether we are using GNU Fortran 77, ac_cv_prog_g77, -+[cat > conftest.fpp </dev/null 2>&1; then -+ ac_cv_prog_g77=yes -+else -+ ac_cv_prog_g77=no -+fi])]) -+ -+AC_DEFUN(AC_PROG_CC_G, -+[AC_CACHE_CHECK(whether ${CC-cc} accepts -g, ac_cv_prog_cc_g, -+[echo 'void f(){}' > conftest.c -+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then -+ ac_cv_prog_cc_g=yes -+else -+ ac_cv_prog_cc_g=no -+fi -+rm -f conftest* -+])]) -+ -+AC_DEFUN(AC_PROG_CXX_G, -+[AC_CACHE_CHECK(whether ${CXX-g++} accepts -g, ac_cv_prog_cxx_g, -+[echo 'void f(){}' > conftest.cc -+if test -z "`${CXX-g++} -g -c conftest.cc 2>&1`"; then -+ ac_cv_prog_cxx_g=yes -+else -+ ac_cv_prog_cxx_g=no -+fi -+rm -f conftest* -+])]) -+ -+dnl Test whether the Fortran 77 compiler can accept the `-g' option to -+dnl enable debugging. -+dnl -+dnl AC_PROG_F77_G() -+AC_DEFUN(AC_PROG_F77_G, -+[AC_CACHE_CHECK(whether $F77 accepts -g, ac_cv_prog_f77_g, -+[cat > conftest.f << EOF -+ program conftest -+ end -+EOF -+if test -z "`$F77 -g -c conftest.f 2>&1`"; then -+ ac_cv_prog_f77_g=yes -+else -+ ac_cv_prog_f77_g=no -+fi -+rm -f conftest* -+])]) -+ -+AC_DEFUN(AC_PROG_GCC_TRADITIONAL, -+[AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([AC_PROG_CPP])dnl -+if test $ac_cv_prog_gcc = yes; then -+ AC_CACHE_CHECK(whether ${CC-cc} needs -traditional, -+ ac_cv_prog_gcc_traditional, -+[ ac_pattern="Autoconf.*'x'" -+ AC_EGREP_CPP($ac_pattern, [#include -+Autoconf TIOCGETP], -+ ac_cv_prog_gcc_traditional=yes, ac_cv_prog_gcc_traditional=no) -+ -+ if test $ac_cv_prog_gcc_traditional = no; then -+ AC_EGREP_CPP($ac_pattern, [#include -+Autoconf TCGETA], -+ ac_cv_prog_gcc_traditional=yes) -+ fi]) -+ if test $ac_cv_prog_gcc_traditional = yes; then -+ CC="$CC -traditional" -+ fi -+fi -+]) -+ -+AC_DEFUN(AC_PROG_CC_C_O, -+[if test "x$CC" != xcc; then -+ AC_MSG_CHECKING(whether $CC and cc understand -c and -o together) -+else -+ AC_MSG_CHECKING(whether cc understands -c and -o together) -+fi -+set dummy $CC; ac_cc="`echo [$]2 | -+changequote(, )dnl -+ sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" -+changequote([, ])dnl -+AC_CACHE_VAL(ac_cv_prog_cc_${ac_cc}_c_o, -+[echo 'foo(){}' > conftest.c -+# Make sure it works both with $CC and with simple cc. -+# We do the test twice because some compilers refuse to overwrite an -+# existing .o file with -o, though they will create one. -+ac_try='${CC-cc} -c conftest.c -o conftest.o 1>&AC_FD_CC' -+if AC_TRY_EVAL(ac_try) && -+ test -f conftest.o && AC_TRY_EVAL(ac_try); -+then -+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes -+ if test "x$CC" != xcc; then -+ # Test first that cc exists at all. -+ if AC_TRY_COMMAND(cc -c conftest.c 1>&AC_FD_CC); then -+ ac_try='cc -c conftest.c -o conftest.o 1>&AC_FD_CC' -+ if AC_TRY_EVAL(ac_try) && -+ test -f conftest.o && AC_TRY_EVAL(ac_try); -+ then -+ # cc works too. -+ : -+ else -+ # cc exists but doesn't like -o. -+ eval ac_cv_prog_cc_${ac_cc}_c_o=no -+ fi -+ fi -+ fi -+else -+ eval ac_cv_prog_cc_${ac_cc}_c_o=no -+fi -+rm -f conftest* -+])dnl -+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then -+ AC_MSG_RESULT(yes) -+else -+ AC_MSG_RESULT(no) -+ AC_DEFINE(NO_MINUS_C_MINUS_O) -+fi -+]) -+ -+dnl Test if the Fortran 77 compiler accepts the options `-c' and `-o' -+dnl simultaneously, and define `F77_NO_MINUS_C_MINUS_O' if it does not. -+dnl -+dnl The usefulness of this macro is questionable, as I can't really see -+dnl why anyone would use it. The only reason I include it is for -+dnl completeness, since a similar test exists for the C compiler. -+dnl -+dnl AC_PROG_F77_C_O -+AC_DEFUN(AC_PROG_F77_C_O, -+[AC_BEFORE([$0], [AC_PROG_F77])dnl -+AC_MSG_CHECKING(whether $F77 understand -c and -o together) -+set dummy $F77; ac_f77="`echo [$]2 | -+changequote(, )dnl -+sed -e 's/[^a-zA-Z0-9_]/_/g' -e 's/^[0-9]/_/'`" -+changequote([, ])dnl -+AC_CACHE_VAL(ac_cv_prog_f77_${ac_f77}_c_o, -+[cat > conftest.f << EOF -+ program conftest -+ end -+EOF -+# We do the `AC_TRY_EVAL' test twice because some compilers refuse to -+# overwrite an existing `.o' file with `-o', although they will create -+# one. -+ac_try='$F77 $FFLAGS -c conftest.f -o conftest.o 1>&AC_FD_CC' -+if AC_TRY_EVAL(ac_try) && test -f conftest.o && AC_TRY_EVAL(ac_try); then -+ eval ac_cv_prog_f77_${ac_f77}_c_o=yes -+else -+ eval ac_cv_prog_f77_${ac_f77}_c_o=no -+fi -+rm -f conftest* -+])dnl -+if eval "test \"`echo '$ac_cv_prog_f77_'${ac_f77}_c_o`\" = yes"; then -+ AC_MSG_RESULT(yes) -+else -+ AC_MSG_RESULT(no) -+ AC_DEFINE(F77_NO_MINUS_C_MINUS_O) -+fi -+]) -+ -+dnl Define SET_MAKE to set ${MAKE} if make doesn't. -+AC_DEFUN(AC_PROG_MAKE_SET, -+[AC_MSG_CHECKING(whether ${MAKE-make} sets \${MAKE}) -+set dummy ${MAKE-make}; ac_make=`echo "[$]2" | sed 'y%./+-%__p_%'` -+AC_CACHE_VAL(ac_cv_prog_make_${ac_make}_set, -+[cat > conftestmake <<\EOF -+all: -+ @echo 'ac_maketemp="${MAKE}"' -+EOF -+changequote(, )dnl -+# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=` -+changequote([, ])dnl -+if test -n "$ac_maketemp"; then -+ eval ac_cv_prog_make_${ac_make}_set=yes -+else -+ eval ac_cv_prog_make_${ac_make}_set=no -+fi -+rm -f conftestmake])dnl -+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then -+ AC_MSG_RESULT(yes) -+ SET_MAKE= -+else -+ AC_MSG_RESULT(no) -+ SET_MAKE="MAKE=${MAKE-make}" -+fi -+AC_SUBST([SET_MAKE])dnl -+]) -+ -+AC_DEFUN(AC_PROG_RANLIB, -+[AC_CHECK_PROG(RANLIB, ranlib, ranlib, :)]) -+ -+dnl Check for mawk first since it's generally faster. -+AC_DEFUN(AC_PROG_AWK, -+[AC_CHECK_PROGS(AWK, mawk gawk nawk awk, )]) -+ -+AC_DEFUN(AC_PROG_YACC, -+[AC_CHECK_PROGS(YACC, 'bison -y' byacc, yacc)]) -+ -+AC_DEFUN(AC_PROG_CPP, -+[AC_MSG_CHECKING(how to run the C preprocessor) -+# On Suns, sometimes $CPP names a directory. -+if test -n "$CPP" && test -d "$CPP"; then -+ CPP= -+fi -+if test -z "$CPP"; then -+AC_CACHE_VAL(ac_cv_prog_CPP, -+[ # This must be in double quotes, not single quotes, because CPP may get -+ # substituted into the Makefile and "${CC-cc}" will confuse make. -+ CPP="${CC-cc} -E" -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. -+dnl Use a header file that comes with gcc, so configuring glibc -+dnl with a fresh cross-compiler works. -+ AC_TRY_CPP([#include -+Syntax Error], , -+ CPP="${CC-cc} -E -traditional-cpp" -+ AC_TRY_CPP([#include -+Syntax Error], , -+ CPP="${CC-cc} -nologo -E" -+ AC_TRY_CPP([#include -+Syntax Error], , CPP=/lib/cpp))) -+ ac_cv_prog_CPP="$CPP"])dnl -+ CPP="$ac_cv_prog_CPP" -+else -+ ac_cv_prog_CPP="$CPP" -+fi -+AC_MSG_RESULT($CPP) -+AC_SUBST(CPP)dnl -+]) -+ -+AC_DEFUN(AC_PROG_CXXCPP, -+[AC_MSG_CHECKING(how to run the C++ preprocessor) -+if test -z "$CXXCPP"; then -+AC_CACHE_VAL(ac_cv_prog_CXXCPP, -+[AC_LANG_SAVE[]dnl -+AC_LANG_CPLUSPLUS[]dnl -+ CXXCPP="${CXX-g++} -E" -+ AC_TRY_CPP([#include ], , CXXCPP=/lib/cpp) -+ ac_cv_prog_CXXCPP="$CXXCPP" -+AC_LANG_RESTORE[]dnl -+fi])dnl -+CXXCPP="$ac_cv_prog_CXXCPP" -+AC_MSG_RESULT($CXXCPP) -+AC_SUBST(CXXCPP)dnl -+]) -+ -+dnl Require finding the C or C++ preprocessor, whichever is the -+dnl current language. -+AC_DEFUN(AC_REQUIRE_CPP, -+[ifelse(AC_LANG, C, [AC_REQUIRE([AC_PROG_CPP])], [AC_REQUIRE([AC_PROG_CXXCPP])])]) -+ -+AC_DEFUN(AC_PROG_LEX, -+[AC_CHECK_PROG(LEX, flex, flex, lex) -+if test -z "$LEXLIB" -+then -+ case "$LEX" in -+ flex*) ac_lib=fl ;; -+ *) ac_lib=l ;; -+ esac -+ AC_CHECK_LIB($ac_lib, yywrap, LEXLIB="-l$ac_lib") -+fi -+AC_SUBST(LEXLIB)]) -+ -+dnl Check if lex declares yytext as a char * by default, not a char[]. -+undefine([AC_DECL_YYTEXT]) -+AC_DEFUN(AC_DECL_YYTEXT, -+[AC_REQUIRE_CPP()dnl -+AC_REQUIRE([AC_PROG_LEX])dnl -+AC_CACHE_CHECK(lex output file root, ac_cv_prog_lex_root, -+[# The minimal lex program is just a single line: %%. But some broken lexes -+# (Solaris, I think it was) want two %% lines, so accommodate them. -+echo '%% -+%%' | $LEX -+if test -f lex.yy.c; then -+ ac_cv_prog_lex_root=lex.yy -+elif test -f lexyy.c; then -+ ac_cv_prog_lex_root=lexyy -+else -+ AC_MSG_ERROR(cannot find output from $LEX; giving up) -+fi]) -+LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root -+AC_SUBST(LEX_OUTPUT_ROOT)dnl -+ -+AC_CACHE_CHECK(whether yytext is a pointer, ac_cv_prog_lex_yytext_pointer, -+[# POSIX says lex can declare yytext either as a pointer or an array; the -+# default is implementation-dependent. Figure out which it is, since -+# not all implementations provide the %pointer and %array declarations. -+ac_cv_prog_lex_yytext_pointer=no -+echo 'extern char *yytext;' >>$LEX_OUTPUT_ROOT.c -+ac_save_LIBS="$LIBS" -+LIBS="$LIBS $LEXLIB" -+AC_TRY_LINK(`cat $LEX_OUTPUT_ROOT.c`, , ac_cv_prog_lex_yytext_pointer=yes) -+LIBS="$ac_save_LIBS" -+rm -f "${LEX_OUTPUT_ROOT}.c" -+]) -+dnl -+if test $ac_cv_prog_lex_yytext_pointer = yes; then -+ AC_DEFINE(YYTEXT_POINTER) -+fi -+]) -+ -+AC_DEFUN(AC_PROG_INSTALL, -+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+# Find a good install program. We prefer a C program (faster), -+# so one script is as good as another. But avoid the broken or -+# incompatible versions: -+# SysV /etc/install, /usr/sbin/install -+# SunOS /usr/etc/install -+# IRIX /sbin/install -+# AIX /bin/install -+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -+# AFS /usr/afsws/bin/install, which mishandles nonexistent args -+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -+# ./install, which can be erroneously created by make from ./install.sh. -+AC_MSG_CHECKING(for a BSD compatible install) -+if test -z "$INSTALL"; then -+AC_CACHE_VAL(ac_cv_path_install, -+[ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" -+ for ac_dir in $PATH; do -+ # Account for people who put trailing slashes in PATH elements. -+ case "$ac_dir/" in -+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;; -+ *) -+ # OSF1 and SCO ODT 3.0 have their own names for install. -+ # Don't use installbsd from OSF since it installs stuff as root -+ # by default. -+ for ac_prog in ginstall scoinst install; do -+ if test -f $ac_dir/$ac_prog; then -+ if test $ac_prog = install && -+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then -+ # AIX install. It has an incompatible calling convention. -+ : -+ else -+ ac_cv_path_install="$ac_dir/$ac_prog -c" -+ break 2 -+ fi -+ fi -+ done -+ ;; -+ esac -+ done -+ IFS="$ac_save_IFS" -+])dnl -+ if test "${ac_cv_path_install+set}" = set; then -+ INSTALL="$ac_cv_path_install" -+ else -+ # As a last resort, use the slow shell script. We don't cache a -+ # path for INSTALL within a source directory, because that will -+ # break other packages using the cache if that directory is -+ # removed, or if the path is relative. -+ INSTALL="$ac_install_sh" -+ fi -+fi -+dnl We do special magic for INSTALL instead of AC_SUBST, to get -+dnl relative paths right. -+AC_MSG_RESULT($INSTALL) -+ -+# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -+# It thinks the first close brace ends the variable substitution. -+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -+AC_SUBST(INSTALL_PROGRAM)dnl -+ -+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}' -+AC_SUBST(INSTALL_SCRIPT)dnl -+ -+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -+AC_SUBST(INSTALL_DATA)dnl -+]) -+ -+AC_DEFUN(AC_PROG_LN_S, -+[AC_MSG_CHECKING(whether ln -s works) -+AC_CACHE_VAL(ac_cv_prog_LN_S, -+[rm -f conftestdata -+if ln -s X conftestdata 2>/dev/null -+then -+ rm -f conftestdata -+ ac_cv_prog_LN_S="ln -s" -+else -+ ac_cv_prog_LN_S=ln -+fi])dnl -+LN_S="$ac_cv_prog_LN_S" -+if test "$ac_cv_prog_LN_S" = "ln -s"; then -+ AC_MSG_RESULT(yes) -+else -+ AC_MSG_RESULT(no) -+fi -+AC_SUBST(LN_S)dnl -+]) -+ -+define(AC_RSH, -+[errprint(__file__:__line__: [$0] has been removed; replace it with equivalent code -+)m4exit(4)]) -+ -+ -+dnl ### Checks for header files -+ -+ -+AC_DEFUN(AC_HEADER_STDC, -+[AC_REQUIRE_CPP()dnl -+AC_CACHE_CHECK(for ANSI C header files, ac_cv_header_stdc, -+[AC_TRY_CPP([#include -+#include -+#include -+#include ], ac_cv_header_stdc=yes, ac_cv_header_stdc=no) -+ -+if test $ac_cv_header_stdc = yes; then -+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -+AC_EGREP_HEADER(memchr, string.h, , ac_cv_header_stdc=no) -+fi -+ -+if test $ac_cv_header_stdc = yes; then -+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -+AC_EGREP_HEADER(free, stdlib.h, , ac_cv_header_stdc=no) -+fi -+ -+if test $ac_cv_header_stdc = yes; then -+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -+AC_TRY_RUN([#include -+#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -+#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -+int main () { int i; for (i = 0; i < 256; i++) -+if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); -+exit (0); } -+], , ac_cv_header_stdc=no, :) -+fi]) -+if test $ac_cv_header_stdc = yes; then -+ AC_DEFINE(STDC_HEADERS) -+fi -+]) -+ -+AC_DEFUN(AC_UNISTD_H, -+[AC_OBSOLETE([$0], [; instead use AC_CHECK_HEADERS(unistd.h)])dnl -+AC_CHECK_HEADER(unistd.h, AC_DEFINE(HAVE_UNISTD_H))]) -+ -+AC_DEFUN(AC_USG, -+[AC_OBSOLETE([$0], -+ [; instead use AC_CHECK_HEADERS(string.h) and HAVE_STRING_H])dnl -+AC_MSG_CHECKING([for BSD string and memory functions]) -+AC_TRY_LINK([#include ], [rindex(0, 0); bzero(0, 0);], -+ [AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no); AC_DEFINE(USG)])]) -+ -+ -+dnl If memchr and the like aren't declared in , include . -+dnl To avoid problems, don't check for gcc2 built-ins. -+AC_DEFUN(AC_MEMORY_H, -+[AC_OBSOLETE([$0], [; instead use AC_CHECK_HEADERS(memory.h) and HAVE_MEMORY_H])dnl -+AC_MSG_CHECKING(whether string.h declares mem functions) -+AC_EGREP_HEADER(memchr, string.h, ac_found=yes, ac_found=no) -+AC_MSG_RESULT($ac_found) -+if test $ac_found = no; then -+ AC_CHECK_HEADER(memory.h, [AC_DEFINE(NEED_MEMORY_H)]) -+fi -+]) -+ -+AC_DEFUN(AC_HEADER_MAJOR, -+[AC_CACHE_CHECK(whether sys/types.h defines makedev, -+ ac_cv_header_sys_types_h_makedev, -+[AC_TRY_LINK([#include ], [return makedev(0, 0);], -+ ac_cv_header_sys_types_h_makedev=yes, ac_cv_header_sys_types_h_makedev=no) -+]) -+ -+if test $ac_cv_header_sys_types_h_makedev = no; then -+AC_CHECK_HEADER(sys/mkdev.h, [AC_DEFINE(MAJOR_IN_MKDEV)]) -+ -+ if test $ac_cv_header_sys_mkdev_h = no; then -+AC_CHECK_HEADER(sys/sysmacros.h, [AC_DEFINE(MAJOR_IN_SYSMACROS)]) -+ fi -+fi -+]) -+ -+AC_DEFUN(AC_HEADER_DIRENT, -+[ac_header_dirent=no -+AC_CHECK_HEADERS_DIRENT(dirent.h sys/ndir.h sys/dir.h ndir.h, -+ [ac_header_dirent=$ac_hdr; break]) -+# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -+if test $ac_header_dirent = dirent.h; then -+AC_CHECK_LIB(dir, opendir, LIBS="$LIBS -ldir") -+else -+AC_CHECK_LIB(x, opendir, LIBS="$LIBS -lx") -+fi -+]) -+ -+dnl Like AC_CHECK_HEADER, except also make sure that HEADER-FILE -+dnl defines the type `DIR'. dirent.h on NextStep 3.2 doesn't. -+dnl AC_CHECK_HEADER_DIRENT(HEADER-FILE, ACTION-IF-FOUND) -+AC_DEFUN(AC_CHECK_HEADER_DIRENT, -+[ac_safe=`echo "$1" | sed 'y%./+-%__p_%'` -+AC_MSG_CHECKING([for $1 that defines DIR]) -+AC_CACHE_VAL(ac_cv_header_dirent_$ac_safe, -+[AC_TRY_COMPILE([#include -+#include <$1>], [DIR *dirp = 0;], -+ eval "ac_cv_header_dirent_$ac_safe=yes", -+ eval "ac_cv_header_dirent_$ac_safe=no")])dnl -+if eval "test \"`echo '$ac_cv_header_dirent_'$ac_safe`\" = yes"; then -+ AC_MSG_RESULT(yes) -+ $2 -+else -+ AC_MSG_RESULT(no) -+fi -+]) -+ -+dnl Like AC_CHECK_HEADERS, except succeed only for a HEADER-FILE that -+dnl defines `DIR'. -+dnl AC_CHECK_HEADERS_DIRENT(HEADER-FILE... [, ACTION]) -+define(AC_CHECK_HEADERS_DIRENT, -+[for ac_hdr in $1 -+do -+AC_CHECK_HEADER_DIRENT($ac_hdr, -+[changequote(, )dnl -+ ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` -+changequote([, ])dnl -+ AC_DEFINE_UNQUOTED($ac_tr_hdr) $2])dnl -+done]) -+ -+AC_DEFUN(AC_DIR_HEADER, -+[AC_OBSOLETE([$0], [; instead use AC_HEADER_DIRENT])dnl -+ac_header_dirent=no -+for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do -+ AC_CHECK_HEADER_DIRENT($ac_hdr, [ac_header_dirent=$ac_hdr; break]) -+done -+ -+case "$ac_header_dirent" in -+dirent.h) AC_DEFINE(DIRENT) ;; -+sys/ndir.h) AC_DEFINE(SYSNDIR) ;; -+sys/dir.h) AC_DEFINE(SYSDIR) ;; -+ndir.h) AC_DEFINE(NDIR) ;; -+esac -+ -+AC_CACHE_CHECK(whether closedir returns void, ac_cv_func_closedir_void, -+[AC_TRY_RUN([#include -+#include <$ac_header_dirent> -+int closedir(); main() { exit(closedir(opendir(".")) != 0); }], -+ ac_cv_func_closedir_void=no, ac_cv_func_closedir_void=yes, ac_cv_func_closedir_void=yes)]) -+if test $ac_cv_func_closedir_void = yes; then -+ AC_DEFINE(VOID_CLOSEDIR) -+fi -+]) -+ -+AC_DEFUN(AC_HEADER_STAT, -+[AC_CACHE_CHECK(whether stat file-mode macros are broken, -+ ac_cv_header_stat_broken, -+[AC_EGREP_CPP([You lose], [#include -+#include -+ -+#if defined(S_ISBLK) && defined(S_IFDIR) -+# if S_ISBLK (S_IFDIR) -+You lose. -+# endif -+#endif -+ -+#if defined(S_ISBLK) && defined(S_IFCHR) -+# if S_ISBLK (S_IFCHR) -+You lose. -+# endif -+#endif -+ -+#if defined(S_ISLNK) && defined(S_IFREG) -+# if S_ISLNK (S_IFREG) -+You lose. -+# endif -+#endif -+ -+#if defined(S_ISSOCK) && defined(S_IFREG) -+# if S_ISSOCK (S_IFREG) -+You lose. -+# endif -+#endif -+], ac_cv_header_stat_broken=yes, ac_cv_header_stat_broken=no)]) -+if test $ac_cv_header_stat_broken = yes; then -+ AC_DEFINE(STAT_MACROS_BROKEN) -+fi -+]) -+ -+AC_DEFUN(AC_DECL_SYS_SIGLIST, -+[AC_CACHE_CHECK([for sys_siglist declaration in signal.h or unistd.h], -+ ac_cv_decl_sys_siglist, -+[AC_TRY_COMPILE([#include -+#include -+/* NetBSD declares sys_siglist in unistd.h. */ -+#ifdef HAVE_UNISTD_H -+#include -+#endif], [char *msg = *(sys_siglist + 1);], -+ ac_cv_decl_sys_siglist=yes, ac_cv_decl_sys_siglist=no)]) -+if test $ac_cv_decl_sys_siglist = yes; then -+ AC_DEFINE(SYS_SIGLIST_DECLARED) -+fi -+]) -+ -+AC_DEFUN(AC_HEADER_SYS_WAIT, -+[AC_CACHE_CHECK([for sys/wait.h that is POSIX.1 compatible], -+ ac_cv_header_sys_wait_h, -+[AC_TRY_COMPILE([#include -+#include -+#ifndef WEXITSTATUS -+#define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8) -+#endif -+#ifndef WIFEXITED -+#define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -+#endif], [int s; -+wait (&s); -+s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;], -+ac_cv_header_sys_wait_h=yes, ac_cv_header_sys_wait_h=no)]) -+if test $ac_cv_header_sys_wait_h = yes; then -+ AC_DEFINE(HAVE_SYS_WAIT_H) -+fi -+]) -+ -+ -+dnl ### Checks for typedefs -+ -+ -+AC_DEFUN(AC_TYPE_GETGROUPS, -+[AC_REQUIRE([AC_TYPE_UID_T])dnl -+AC_CACHE_CHECK(type of array argument to getgroups, ac_cv_type_getgroups, -+[AC_TRY_RUN( -+changequote(<<, >>)dnl -+<< -+/* Thanks to Mike Rendell for this test. */ -+#include -+#define NGID 256 -+#undef MAX -+#define MAX(x, y) ((x) > (y) ? (x) : (y)) -+main() -+{ -+ gid_t gidset[NGID]; -+ int i, n; -+ union { gid_t gval; long lval; } val; -+ -+ val.lval = -1; -+ for (i = 0; i < NGID; i++) -+ gidset[i] = val.gval; -+ n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, -+ gidset); -+ /* Exit non-zero if getgroups seems to require an array of ints. This -+ happens when gid_t is short but getgroups modifies an array of ints. */ -+ exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); -+} -+>>, -+changequote([, ])dnl -+ ac_cv_type_getgroups=gid_t, ac_cv_type_getgroups=int, -+ ac_cv_type_getgroups=cross) -+if test $ac_cv_type_getgroups = cross; then -+ dnl When we can't run the test program (we are cross compiling), presume -+ dnl that has either an accurate prototype for getgroups or none. -+ dnl Old systems without prototypes probably use int. -+ AC_EGREP_HEADER([getgroups.*int.*gid_t], unistd.h, -+ ac_cv_type_getgroups=gid_t, ac_cv_type_getgroups=int) -+fi]) -+AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups) -+]) -+ -+AC_DEFUN(AC_TYPE_UID_T, -+[AC_CACHE_CHECK(for uid_t in sys/types.h, ac_cv_type_uid_t, -+[AC_EGREP_HEADER(uid_t, sys/types.h, -+ ac_cv_type_uid_t=yes, ac_cv_type_uid_t=no)]) -+if test $ac_cv_type_uid_t = no; then -+ AC_DEFINE(uid_t, int) -+ AC_DEFINE(gid_t, int) -+fi -+]) -+ -+AC_DEFUN(AC_TYPE_SIZE_T, -+[AC_CHECK_TYPE(size_t, unsigned)]) -+ -+AC_DEFUN(AC_TYPE_PID_T, -+[AC_CHECK_TYPE(pid_t, int)]) -+ -+AC_DEFUN(AC_TYPE_OFF_T, -+[AC_CHECK_TYPE(off_t, long)]) -+ -+AC_DEFUN(AC_TYPE_MODE_T, -+[AC_CHECK_TYPE(mode_t, int)]) -+ -+dnl Note that identifiers starting with SIG are reserved by ANSI C. -+AC_DEFUN(AC_TYPE_SIGNAL, -+[AC_CACHE_CHECK([return type of signal handlers], ac_cv_type_signal, -+[AC_TRY_COMPILE([#include -+#include -+#ifdef signal -+#undef signal -+#endif -+#ifdef __cplusplus -+extern "C" void (*signal (int, void (*)(int)))(int); -+#else -+void (*signal ()) (); -+#endif -+], -+[int i;], ac_cv_type_signal=void, ac_cv_type_signal=int)]) -+AC_DEFINE_UNQUOTED(RETSIGTYPE, $ac_cv_type_signal) -+]) -+ -+ -+dnl ### Checks for functions -+ -+ -+AC_DEFUN(AC_FUNC_CLOSEDIR_VOID, -+[AC_REQUIRE([AC_HEADER_DIRENT])dnl -+AC_CACHE_CHECK(whether closedir returns void, ac_cv_func_closedir_void, -+[AC_TRY_RUN([#include -+#include <$ac_header_dirent> -+int closedir(); main() { exit(closedir(opendir(".")) != 0); }], -+ ac_cv_func_closedir_void=no, ac_cv_func_closedir_void=yes, ac_cv_func_closedir_void=yes)]) -+if test $ac_cv_func_closedir_void = yes; then -+ AC_DEFINE(CLOSEDIR_VOID) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_FNMATCH, -+[AC_CACHE_CHECK(for working fnmatch, ac_cv_func_fnmatch_works, -+# Some versions of Solaris or SCO have a broken fnmatch function. -+# So we run a test program. If we are cross-compiling, take no chance. -+# Thanks to John Oleynick and Franc,ois Pinard for this test. -+[AC_TRY_RUN([main() { exit (fnmatch ("a*", "abc", 0) != 0); }], -+ac_cv_func_fnmatch_works=yes, ac_cv_func_fnmatch_works=no, -+ac_cv_func_fnmatch_works=no)]) -+if test $ac_cv_func_fnmatch_works = yes; then -+ AC_DEFINE(HAVE_FNMATCH) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_MMAP, -+[AC_CHECK_HEADERS(unistd.h) -+AC_CHECK_FUNCS(getpagesize) -+AC_CACHE_CHECK(for working mmap, ac_cv_func_mmap_fixed_mapped, -+[AC_TRY_RUN([ -+/* Thanks to Mike Haertel and Jim Avera for this test. -+ Here is a matrix of mmap possibilities: -+ mmap private not fixed -+ mmap private fixed at somewhere currently unmapped -+ mmap private fixed at somewhere already mapped -+ mmap shared not fixed -+ mmap shared fixed at somewhere currently unmapped -+ mmap shared fixed at somewhere already mapped -+ For private mappings, we should verify that changes cannot be read() -+ back from the file, nor mmap's back from the file at a different -+ address. (There have been systems where private was not correctly -+ implemented like the infamous i386 svr4.0, and systems where the -+ VM page cache was not coherent with the filesystem buffer cache -+ like early versions of FreeBSD and possibly contemporary NetBSD.) -+ For shared mappings, we should conversely verify that changes get -+ propogated back to all the places they're supposed to be. -+ -+ Grep wants private fixed already mapped. -+ The main things grep needs to know about mmap are: -+ * does it exist and is it safe to write into the mmap'd area -+ * how to use it (BSD variants) */ -+#include -+#include -+#include -+ -+/* This mess was copied from the GNU getpagesize.h. */ -+#ifndef HAVE_GETPAGESIZE -+# ifdef HAVE_UNISTD_H -+# include -+# endif -+ -+/* Assume that all systems that can run configure have sys/param.h. */ -+# ifndef HAVE_SYS_PARAM_H -+# define HAVE_SYS_PARAM_H 1 -+# endif -+ -+# ifdef _SC_PAGESIZE -+# define getpagesize() sysconf(_SC_PAGESIZE) -+# else /* no _SC_PAGESIZE */ -+# ifdef HAVE_SYS_PARAM_H -+# include -+# ifdef EXEC_PAGESIZE -+# define getpagesize() EXEC_PAGESIZE -+# else /* no EXEC_PAGESIZE */ -+# ifdef NBPG -+# define getpagesize() NBPG * CLSIZE -+# ifndef CLSIZE -+# define CLSIZE 1 -+# endif /* no CLSIZE */ -+# else /* no NBPG */ -+# ifdef NBPC -+# define getpagesize() NBPC -+# else /* no NBPC */ -+# ifdef PAGESIZE -+# define getpagesize() PAGESIZE -+# endif /* PAGESIZE */ -+# endif /* no NBPC */ -+# endif /* no NBPG */ -+# endif /* no EXEC_PAGESIZE */ -+# else /* no HAVE_SYS_PARAM_H */ -+# define getpagesize() 8192 /* punt totally */ -+# endif /* no HAVE_SYS_PARAM_H */ -+# endif /* no _SC_PAGESIZE */ -+ -+#endif /* no HAVE_GETPAGESIZE */ -+ -+#ifdef __cplusplus -+extern "C" { void *malloc(unsigned); } -+#else -+char *malloc(); -+#endif -+ -+int -+main() -+{ -+ char *data, *data2, *data3; -+ int i, pagesize; -+ int fd; -+ -+ pagesize = getpagesize(); -+ -+ /* -+ * First, make a file with some known garbage in it. -+ */ -+ data = malloc(pagesize); -+ if (!data) -+ exit(1); -+ for (i = 0; i < pagesize; ++i) -+ *(data + i) = rand(); -+ umask(0); -+ fd = creat("conftestmmap", 0600); -+ if (fd < 0) -+ exit(1); -+ if (write(fd, data, pagesize) != pagesize) -+ exit(1); -+ close(fd); -+ -+ /* -+ * Next, try to mmap the file at a fixed address which -+ * already has something else allocated at it. If we can, -+ * also make sure that we see the same garbage. -+ */ -+ fd = open("conftestmmap", O_RDWR); -+ if (fd < 0) -+ exit(1); -+ data2 = malloc(2 * pagesize); -+ if (!data2) -+ exit(1); -+ data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1); -+ if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_FIXED, fd, 0L)) -+ exit(1); -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data2 + i)) -+ exit(1); -+ -+ /* -+ * Finally, make sure that changes to the mapped area -+ * do not percolate back to the file as seen by read(). -+ * (This is a bug on some variants of i386 svr4.0.) -+ */ -+ for (i = 0; i < pagesize; ++i) -+ *(data2 + i) = *(data2 + i) + 1; -+ data3 = malloc(pagesize); -+ if (!data3) -+ exit(1); -+ if (read(fd, data3, pagesize) != pagesize) -+ exit(1); -+ for (i = 0; i < pagesize; ++i) -+ if (*(data + i) != *(data3 + i)) -+ exit(1); -+ close(fd); -+ unlink("conftestmmap"); -+ exit(0); -+} -+], ac_cv_func_mmap_fixed_mapped=yes, ac_cv_func_mmap_fixed_mapped=no, -+ac_cv_func_mmap_fixed_mapped=no)]) -+if test $ac_cv_func_mmap_fixed_mapped = yes; then -+ AC_DEFINE(HAVE_MMAP) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_GETPGRP, -+[AC_CACHE_CHECK(whether getpgrp takes no argument, ac_cv_func_getpgrp_void, -+[AC_TRY_RUN([ -+/* -+ * If this system has a BSD-style getpgrp(), -+ * which takes a pid argument, exit unsuccessfully. -+ * -+ * Snarfed from Chet Ramey's bash pgrp.c test program -+ */ -+#include -+#include -+ -+int pid; -+int pg1, pg2, pg3, pg4; -+int ng, np, s, child; -+ -+main() -+{ -+ pid = getpid(); -+ pg1 = getpgrp(0); -+ pg2 = getpgrp(); -+ pg3 = getpgrp(pid); -+ pg4 = getpgrp(1); -+ -+ /* -+ * If all of these values are the same, it's pretty sure that -+ * we're on a system that ignores getpgrp's first argument. -+ */ -+ if (pg2 == pg4 && pg1 == pg3 && pg2 == pg3) -+ exit(0); -+ -+ child = fork(); -+ if (child < 0) -+ exit(1); -+ else if (child == 0) { -+ np = getpid(); -+ /* -+ * If this is Sys V, this will not work; pgrp will be -+ * set to np because setpgrp just changes a pgrp to be -+ * the same as the pid. -+ */ -+ setpgrp(np, pg1); -+ ng = getpgrp(0); /* Same result for Sys V and BSD */ -+ if (ng == pg1) { -+ exit(1); -+ } else { -+ exit(0); -+ } -+ } else { -+ wait(&s); -+ exit(s>>8); -+ } -+} -+], ac_cv_func_getpgrp_void=yes, ac_cv_func_getpgrp_void=no, -+ AC_MSG_ERROR(cannot check getpgrp if cross compiling)) -+]) -+if test $ac_cv_func_getpgrp_void = yes; then -+ AC_DEFINE(GETPGRP_VOID) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_SETPGRP, -+[AC_CACHE_CHECK(whether setpgrp takes no argument, ac_cv_func_setpgrp_void, -+AC_TRY_RUN([ -+#ifdef HAVE_UNISTD_H -+#include -+#endif -+ -+/* -+ * If this system has a BSD-style setpgrp, which takes arguments, exit -+ * successfully. -+ */ -+main() -+{ -+ if (setpgrp(1,1) == -1) -+ exit(0); -+ else -+ exit(1); -+} -+], ac_cv_func_setpgrp_void=no, ac_cv_func_setpgrp_void=yes, -+ AC_MSG_ERROR(cannot check setpgrp if cross compiling)) -+) -+if test $ac_cv_func_setpgrp_void = yes; then -+ AC_DEFINE(SETPGRP_VOID) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_VPRINTF, -+[AC_CHECK_FUNC(vprintf, AC_DEFINE(HAVE_VPRINTF)) -+if test "$ac_cv_func_vprintf" != yes; then -+AC_CHECK_FUNC(_doprnt, AC_DEFINE(HAVE_DOPRNT)) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_VFORK, -+[AC_REQUIRE([AC_TYPE_PID_T])dnl -+AC_CHECK_HEADER(vfork.h, AC_DEFINE(HAVE_VFORK_H)) -+AC_CACHE_CHECK(for working vfork, ac_cv_func_vfork_works, -+[AC_TRY_RUN([/* Thanks to Paul Eggert for this test. */ -+#include -+#include -+#include -+#ifdef HAVE_UNISTD_H -+#include -+#endif -+#ifdef HAVE_VFORK_H -+#include -+#endif -+/* On some sparc systems, changes by the child to local and incoming -+ argument registers are propagated back to the parent. -+ The compiler is told about this with #include , -+ but some compilers (e.g. gcc -O) don't grok . -+ Test for this by using a static variable whose address -+ is put into a register that is clobbered by the vfork. */ -+static -+#ifdef __cplusplus -+sparc_address_test (int arg) -+#else -+sparc_address_test (arg) int arg; -+#endif -+{ -+ static pid_t child; -+ if (!child) { -+ child = vfork (); -+ if (child < 0) { -+ perror ("vfork"); -+ _exit(2); -+ } -+ if (!child) { -+ arg = getpid(); -+ write(-1, "", 0); -+ _exit (arg); -+ } -+ } -+} -+main() { -+ pid_t parent = getpid (); -+ pid_t child; -+ -+ sparc_address_test (); -+ -+ child = vfork (); -+ -+ if (child == 0) { -+ /* Here is another test for sparc vfork register problems. -+ This test uses lots of local variables, at least -+ as many local variables as main has allocated so far -+ including compiler temporaries. 4 locals are enough for -+ gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. -+ A buggy compiler should reuse the register of parent -+ for one of the local variables, since it will think that -+ parent can't possibly be used any more in this routine. -+ Assigning to the local variable will thus munge parent -+ in the parent process. */ -+ pid_t -+ p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), -+ p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); -+ /* Convince the compiler that p..p7 are live; otherwise, it might -+ use the same hardware register for all 8 local variables. */ -+ if (p != p1 || p != p2 || p != p3 || p != p4 -+ || p != p5 || p != p6 || p != p7) -+ _exit(1); -+ -+ /* On some systems (e.g. IRIX 3.3), -+ vfork doesn't separate parent from child file descriptors. -+ If the child closes a descriptor before it execs or exits, -+ this munges the parent's descriptor as well. -+ Test for this by closing stdout in the child. */ -+ _exit(close(fileno(stdout)) != 0); -+ } else { -+ int status; -+ struct stat st; -+ -+ while (wait(&status) != child) -+ ; -+ exit( -+ /* Was there some problem with vforking? */ -+ child < 0 -+ -+ /* Did the child fail? (This shouldn't happen.) */ -+ || status -+ -+ /* Did the vfork/compiler bug occur? */ -+ || parent != getpid() -+ -+ /* Did the file descriptor bug occur? */ -+ || fstat(fileno(stdout), &st) != 0 -+ ); -+ } -+}], -+ac_cv_func_vfork_works=yes, ac_cv_func_vfork_works=no, AC_CHECK_FUNC(vfork) -+ac_cv_func_vfork_works=$ac_cv_func_vfork)]) -+if test $ac_cv_func_vfork_works = no; then -+ AC_DEFINE(vfork, fork) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_WAIT3, -+[AC_CACHE_CHECK(for wait3 that fills in rusage, ac_cv_func_wait3_rusage, -+[AC_TRY_RUN([#include -+#include -+#include -+#include -+/* HP-UX has wait3 but does not fill in rusage at all. */ -+main() { -+ struct rusage r; -+ int i; -+ /* Use a field that we can force nonzero -- -+ voluntary context switches. -+ For systems like NeXT and OSF/1 that don't set it, -+ also use the system CPU time. And page faults (I/O) for Linux. */ -+ r.ru_nvcsw = 0; -+ r.ru_stime.tv_sec = 0; -+ r.ru_stime.tv_usec = 0; -+ r.ru_majflt = r.ru_minflt = 0; -+ switch (fork()) { -+ case 0: /* Child. */ -+ sleep(1); /* Give up the CPU. */ -+ _exit(0); -+ case -1: _exit(0); /* What can we do? */ -+ default: /* Parent. */ -+ wait3(&i, 0, &r); -+ sleep(2); /* Avoid "text file busy" from rm on fast HP-UX machines. */ -+ exit(r.ru_nvcsw == 0 && r.ru_majflt == 0 && r.ru_minflt == 0 -+ && r.ru_stime.tv_sec == 0 && r.ru_stime.tv_usec == 0); -+ } -+}], ac_cv_func_wait3_rusage=yes, ac_cv_func_wait3_rusage=no, -+ac_cv_func_wait3_rusage=no)]) -+if test $ac_cv_func_wait3_rusage = yes; then -+ AC_DEFINE(HAVE_WAIT3) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_ALLOCA, -+[AC_REQUIRE_CPP()dnl Set CPP; we run AC_EGREP_CPP conditionally. -+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works -+# for constant arguments. Useless! -+AC_CACHE_CHECK([for working alloca.h], ac_cv_header_alloca_h, -+[AC_TRY_LINK([#include ], [char *p = alloca(2 * sizeof(int));], -+ ac_cv_header_alloca_h=yes, ac_cv_header_alloca_h=no)]) -+if test $ac_cv_header_alloca_h = yes; then -+ AC_DEFINE(HAVE_ALLOCA_H) -+fi -+ -+AC_CACHE_CHECK([for alloca], ac_cv_func_alloca_works, -+[AC_TRY_LINK([ -+#ifdef __GNUC__ -+# define alloca __builtin_alloca -+#else -+# ifdef _MSC_VER -+# include -+# define alloca _alloca -+# else -+# if HAVE_ALLOCA_H -+# include -+# else -+# ifdef _AIX -+ #pragma alloca -+# else -+# ifndef alloca /* predefined by HP cc +Olibcalls */ -+char *alloca (); -+# endif -+# endif -+# endif -+# endif -+#endif -+], [char *p = (char *) alloca(1);], -+ ac_cv_func_alloca_works=yes, ac_cv_func_alloca_works=no)]) -+if test $ac_cv_func_alloca_works = yes; then -+ AC_DEFINE(HAVE_ALLOCA) -+fi -+ -+if test $ac_cv_func_alloca_works = no; then -+ # The SVR3 libPW and SVR4 libucb both contain incompatible functions -+ # that cause trouble. Some versions do not even contain alloca or -+ # contain a buggy version. If you still want to use their alloca, -+ # use ar to extract alloca.o from them instead of compiling alloca.c. -+ ALLOCA=alloca.${ac_objext} -+ AC_DEFINE(C_ALLOCA) -+ -+AC_CACHE_CHECK(whether alloca needs Cray hooks, ac_cv_os_cray, -+[AC_EGREP_CPP(webecray, -+[#if defined(CRAY) && ! defined(CRAY2) -+webecray -+#else -+wenotbecray -+#endif -+], ac_cv_os_cray=yes, ac_cv_os_cray=no)]) -+if test $ac_cv_os_cray = yes; then -+for ac_func in _getb67 GETB67 getb67; do -+ AC_CHECK_FUNC($ac_func, [AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func) -+ break]) -+done -+fi -+ -+AC_CACHE_CHECK(stack direction for C alloca, ac_cv_c_stack_direction, -+[AC_TRY_RUN([find_stack_direction () -+{ -+ static char *addr = 0; -+ auto char dummy; -+ if (addr == 0) -+ { -+ addr = &dummy; -+ return find_stack_direction (); -+ } -+ else -+ return (&dummy > addr) ? 1 : -1; -+} -+main () -+{ -+ exit (find_stack_direction() < 0); -+}], ac_cv_c_stack_direction=1, ac_cv_c_stack_direction=-1, -+ ac_cv_c_stack_direction=0)]) -+AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction) -+fi -+AC_SUBST(ALLOCA)dnl -+]) -+ -+AC_DEFUN(AC_FUNC_GETLOADAVG, -+[ac_have_func=no # yes means we've found a way to get the load average. -+ -+# Some systems with -lutil have (and need) -lkvm as well, some do not. -+# On Solaris, -lkvm requires nlist from -lelf, so check that first -+# to get the right answer into the cache. -+AC_CHECK_LIB(elf, elf_begin, LIBS="-lelf $LIBS") -+AC_CHECK_LIB(kvm, kvm_open, LIBS="-lkvm $LIBS") -+# Check for the 4.4BSD definition of getloadavg. -+AC_CHECK_LIB(util, getloadavg, -+ [LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes]) -+ -+if test $ac_have_func = no; then -+ # There is a commonly available library for RS/6000 AIX. -+ # Since it is not a standard part of AIX, it might be installed locally. -+ ac_getloadavg_LIBS="$LIBS"; LIBS="-L/usr/local/lib $LIBS" -+ AC_CHECK_LIB(getloadavg, getloadavg, -+ LIBS="-lgetloadavg $LIBS", LIBS="$ac_getloadavg_LIBS") -+fi -+ -+# Make sure it is really in the library, if we think we found it. -+AC_REPLACE_FUNCS(getloadavg) -+ -+if test $ac_cv_func_getloadavg = yes; then -+ AC_DEFINE(HAVE_GETLOADAVG) -+ ac_have_func=yes -+else -+ # Figure out what our getloadavg.c needs. -+ ac_have_func=no -+ AC_CHECK_HEADER(sys/dg_sys_info.h, -+ [ac_have_func=yes; AC_DEFINE(DGUX) -+ AC_CHECK_LIB(dgc, dg_sys_info)]) -+ -+ # We cannot check for , because Solaris 2 does not use dwarf (it -+ # uses stabs), but it is still SVR4. We cannot check for because -+ # Irix 4.0.5F has the header but not the library. -+ if test $ac_have_func = no && test $ac_cv_lib_elf_elf_begin = yes; then -+ ac_have_func=yes; AC_DEFINE(SVR4) -+ fi -+ -+ if test $ac_have_func = no; then -+ AC_CHECK_HEADER(inq_stats/cpustats.h, -+ [ac_have_func=yes; AC_DEFINE(UMAX) -+ AC_DEFINE(UMAX4_3)]) -+ fi -+ -+ if test $ac_have_func = no; then -+ AC_CHECK_HEADER(sys/cpustats.h, -+ [ac_have_func=yes; AC_DEFINE(UMAX)]) -+ fi -+ -+ if test $ac_have_func = no; then -+ AC_CHECK_HEADERS(mach/mach.h) -+ fi -+ -+ AC_CHECK_HEADER(nlist.h, -+ [AC_DEFINE(NLIST_STRUCT) -+ AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un, -+ [AC_TRY_COMPILE([#include ], -+ [struct nlist n; n.n_un.n_name = 0;], -+ ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)]) -+ if test $ac_cv_struct_nlist_n_un = yes; then -+ AC_DEFINE(NLIST_NAME_UNION) -+ fi -+ ])dnl -+fi # Do not have getloadavg in system libraries. -+ -+# Some definitions of getloadavg require that the program be installed setgid. -+dnl FIXME Don't hardwire the path of getloadavg.c in the top-level directory. -+AC_CACHE_CHECK(whether getloadavg requires setgid, -+ ac_cv_func_getloadavg_setgid, -+[AC_EGREP_CPP([Yowza Am I SETGID yet], -+[#include "$srcdir/getloadavg.c" -+#ifdef LDAV_PRIVILEGED -+Yowza Am I SETGID yet -+#endif], -+ ac_cv_func_getloadavg_setgid=yes, ac_cv_func_getloadavg_setgid=no)]) -+if test $ac_cv_func_getloadavg_setgid = yes; then -+ NEED_SETGID=true; AC_DEFINE(GETLOADAVG_PRIVILEGED) -+else -+ NEED_SETGID=false -+fi -+AC_SUBST(NEED_SETGID)dnl -+ -+if test $ac_cv_func_getloadavg_setgid = yes; then -+ AC_CACHE_CHECK(group of /dev/kmem, ac_cv_group_kmem, -+[changequote(, )dnl -+ # On Solaris, /dev/kmem is a symlink. Get info on the real file. -+ ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null` -+ # If we got an error (system does not support symlinks), try without -L. -+ test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem` -+ ac_cv_group_kmem=`echo $ac_ls_output \ -+ | sed -ne 's/[ ][ ]*/ /g; -+ s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/; -+ / /s/.* //;p;'` -+changequote([, ])dnl -+]) -+ KMEM_GROUP=$ac_cv_group_kmem -+fi -+AC_SUBST(KMEM_GROUP)dnl -+]) -+ -+AC_DEFUN(AC_FUNC_UTIME_NULL, -+[AC_CACHE_CHECK(whether utime accepts a null argument, ac_cv_func_utime_null, -+[rm -f conftestdata; > conftestdata -+# Sequent interprets utime(file, 0) to mean use start of epoch. Wrong. -+AC_TRY_RUN([#include -+#include -+main() { -+struct stat s, t; -+exit(!(stat ("conftestdata", &s) == 0 && utime("conftestdata", (long *)0) == 0 -+&& stat("conftestdata", &t) == 0 && t.st_mtime >= s.st_mtime -+&& t.st_mtime - s.st_mtime < 120)); -+}], ac_cv_func_utime_null=yes, ac_cv_func_utime_null=no, -+ ac_cv_func_utime_null=no) -+rm -f core core.* *.core]) -+if test $ac_cv_func_utime_null = yes; then -+ AC_DEFINE(HAVE_UTIME_NULL) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_STRCOLL, -+[AC_CACHE_CHECK(for working strcoll, ac_cv_func_strcoll_works, -+[AC_TRY_RUN([#include -+main () -+{ -+ exit (strcoll ("abc", "def") >= 0 || -+ strcoll ("ABC", "DEF") >= 0 || -+ strcoll ("123", "456") >= 0); -+}], ac_cv_func_strcoll_works=yes, ac_cv_func_strcoll_works=no, -+ac_cv_func_strcoll_works=no)]) -+if test $ac_cv_func_strcoll_works = yes; then -+ AC_DEFINE(HAVE_STRCOLL) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_SETVBUF_REVERSED, -+[AC_CACHE_CHECK(whether setvbuf arguments are reversed, -+ ac_cv_func_setvbuf_reversed, -+[AC_TRY_RUN([#include -+/* If setvbuf has the reversed format, exit 0. */ -+main () { -+ /* This call has the arguments reversed. -+ A reversed system may check and see that the address of main -+ is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ -+ if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0) -+ exit(1); -+ putc('\r', stdout); -+ exit(0); /* Non-reversed systems segv here. */ -+}], ac_cv_func_setvbuf_reversed=yes, ac_cv_func_setvbuf_reversed=no) -+rm -f core core.* *.core]) -+if test $ac_cv_func_setvbuf_reversed = yes; then -+ AC_DEFINE(SETVBUF_REVERSED) -+fi -+]) -+ -+AC_DEFUN(AC_FUNC_GETMNTENT, -+[# getmntent is in -lsun on Irix 4, -lseq on Dynix/PTX, -lgen on Unixware. -+AC_CHECK_LIB(sun, getmntent, LIBS="-lsun $LIBS", -+ [AC_CHECK_LIB(seq, getmntent, LIBS="-lseq $LIBS", -+ [AC_CHECK_LIB(gen, getmntent, LIBS="-lgen $LIBS")])]) -+AC_CHECK_FUNC(getmntent, [AC_DEFINE(HAVE_GETMNTENT)])]) -+ -+AC_DEFUN(AC_FUNC_STRFTIME, -+[AC_CHECK_FUNC(strftime, [AC_DEFINE(HAVE_STRFTIME)], -+[# strftime is in -lintl on SCO UNIX. -+AC_CHECK_LIB(intl, strftime, -+[AC_DEFINE(HAVE_STRFTIME) -+LIBS="-lintl $LIBS"])])]) -+ -+AC_DEFUN(AC_FUNC_MEMCMP, -+[AC_CACHE_CHECK(for 8-bit clean memcmp, ac_cv_func_memcmp_clean, -+[AC_TRY_RUN([ -+main() -+{ -+ char c0 = 0x40, c1 = 0x80, c2 = 0x81; -+ exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1); -+} -+], ac_cv_func_memcmp_clean=yes, ac_cv_func_memcmp_clean=no, -+ac_cv_func_memcmp_clean=no)]) -+test $ac_cv_func_memcmp_clean = no && LIBOBJS="$LIBOBJS memcmp.${ac_objext}" -+AC_SUBST(LIBOBJS)dnl -+]) -+ -+AC_DEFUN(AC_FUNC_SELECT_ARGTYPES, -+[AC_MSG_CHECKING([types of arguments for select()]) -+ AC_CACHE_VAL(ac_cv_func_select_arg234,dnl -+ [AC_CACHE_VAL(ac_cv_func_select_arg1,dnl -+ [AC_CACHE_VAL(ac_cv_func_select_arg5,dnl -+ [for ac_cv_func_select_arg234 in 'fd_set *' 'int *' 'void *'; do -+ for ac_cv_func_select_arg1 in 'int' 'size_t' 'unsigned long' 'unsigned'; do -+ for ac_cv_func_select_arg5 in 'struct timeval *' 'const struct timeval *'; do -+ AC_TRY_COMPILE(dnl -+[#ifdef HAVE_SYS_TYPES_H -+#include -+#endif -+#ifdef HAVE_SYS_TIME_H -+#include -+#endif -+#ifdef HAVE_SYS_SELECT_H -+#include -+#endif -+#ifdef HAVE_SYS_SOCKET_H -+#include -+#endif -+extern select ($ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5);],,dnl -+ [ac_not_found=no ; break 3],ac_not_found=yes) -+ done -+ done -+ done -+ ])dnl AC_CACHE_VAL -+ ])dnl AC_CACHE_VAL -+ ])dnl AC_CACHE_VAL -+ if test "$ac_not_found" = yes; then -+ ac_cv_func_select_arg1=int -+ ac_cv_func_select_arg234='int *' -+ ac_cv_func_select_arg5='struct timeval *' -+ fi -+ AC_MSG_RESULT([$ac_cv_func_select_arg1,$ac_cv_func_select_arg234,$ac_cv_func_select_arg5]) -+ AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG1,$ac_cv_func_select_arg1) -+ AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG234,($ac_cv_func_select_arg234)) -+ AC_DEFINE_UNQUOTED(SELECT_TYPE_ARG5,($ac_cv_func_select_arg5)) -+]) -+ -+ -+dnl ### Checks for structure members -+ -+ -+AC_DEFUN(AC_HEADER_TIME, -+[AC_CACHE_CHECK([whether time.h and sys/time.h may both be included], -+ ac_cv_header_time, -+[AC_TRY_COMPILE([#include -+#include -+#include ], -+[struct tm *tp;], ac_cv_header_time=yes, ac_cv_header_time=no)]) -+if test $ac_cv_header_time = yes; then -+ AC_DEFINE(TIME_WITH_SYS_TIME) -+fi -+]) -+ -+AC_DEFUN(AC_STRUCT_TM, -+[AC_CACHE_CHECK([whether struct tm is in sys/time.h or time.h], -+ ac_cv_struct_tm, -+[AC_TRY_COMPILE([#include -+#include ], -+[struct tm *tp; tp->tm_sec;], -+ ac_cv_struct_tm=time.h, ac_cv_struct_tm=sys/time.h)]) -+if test $ac_cv_struct_tm = sys/time.h; then -+ AC_DEFINE(TM_IN_SYS_TIME) -+fi -+]) -+ -+AC_DEFUN(AC_STRUCT_TIMEZONE, -+[AC_REQUIRE([AC_STRUCT_TM])dnl -+AC_CACHE_CHECK([for tm_zone in struct tm], ac_cv_struct_tm_zone, -+[AC_TRY_COMPILE([#include -+#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_zone;], -+ ac_cv_struct_tm_zone=yes, ac_cv_struct_tm_zone=no)]) -+if test "$ac_cv_struct_tm_zone" = yes; then -+ AC_DEFINE(HAVE_TM_ZONE) -+else -+ AC_CACHE_CHECK(for tzname, ac_cv_var_tzname, -+[AC_TRY_LINK( -+changequote(<<, >>)dnl -+<<#include -+#ifndef tzname /* For SGI. */ -+extern char *tzname[]; /* RS6000 and others reject char **tzname. */ -+#endif>>, -+changequote([, ])dnl -+[atoi(*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)]) -+ if test $ac_cv_var_tzname = yes; then -+ AC_DEFINE(HAVE_TZNAME) -+ fi -+fi -+]) -+ -+AC_DEFUN(AC_STRUCT_ST_BLOCKS, -+[AC_CACHE_CHECK([for st_blocks in struct stat], ac_cv_struct_st_blocks, -+[AC_TRY_COMPILE([#include -+#include ], [struct stat s; s.st_blocks;], -+ac_cv_struct_st_blocks=yes, ac_cv_struct_st_blocks=no)]) -+if test $ac_cv_struct_st_blocks = yes; then -+ AC_DEFINE(HAVE_ST_BLOCKS) -+else -+ LIBOBJS="$LIBOBJS fileblocks.${ac_objext}" -+fi -+AC_SUBST(LIBOBJS)dnl -+]) -+ -+AC_DEFUN(AC_STRUCT_ST_BLKSIZE, -+[AC_CACHE_CHECK([for st_blksize in struct stat], ac_cv_struct_st_blksize, -+[AC_TRY_COMPILE([#include -+#include ], [struct stat s; s.st_blksize;], -+ac_cv_struct_st_blksize=yes, ac_cv_struct_st_blksize=no)]) -+if test $ac_cv_struct_st_blksize = yes; then -+ AC_DEFINE(HAVE_ST_BLKSIZE) -+fi -+]) -+ -+AC_DEFUN(AC_STRUCT_ST_RDEV, -+[AC_CACHE_CHECK([for st_rdev in struct stat], ac_cv_struct_st_rdev, -+[AC_TRY_COMPILE([#include -+#include ], [struct stat s; s.st_rdev;], -+ac_cv_struct_st_rdev=yes, ac_cv_struct_st_rdev=no)]) -+if test $ac_cv_struct_st_rdev = yes; then -+ AC_DEFINE(HAVE_ST_RDEV) -+fi -+]) -+ -+ -+dnl ### Checks for compiler characteristics -+ -+ -+AC_DEFUN(AC_C_CROSS, -+[AC_OBSOLETE([$0], [; it has been merged into AC_PROG_CC])]) -+ -+AC_DEFUN(AC_C_CHAR_UNSIGNED, -+[AC_CACHE_CHECK(whether char is unsigned, ac_cv_c_char_unsigned, -+[if test "$GCC" = yes; then -+ # GCC predefines this symbol on systems where it applies. -+AC_EGREP_CPP(yes, -+[#ifdef __CHAR_UNSIGNED__ -+ yes -+#endif -+], ac_cv_c_char_unsigned=yes, ac_cv_c_char_unsigned=no) -+else -+AC_TRY_RUN( -+[/* volatile prevents gcc2 from optimizing the test away on sparcs. */ -+#if !defined(__STDC__) || __STDC__ != 1 -+#define volatile -+#endif -+main() { -+ volatile char c = 255; exit(c < 0); -+}], ac_cv_c_char_unsigned=yes, ac_cv_c_char_unsigned=no) -+fi]) -+if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then -+ AC_DEFINE(__CHAR_UNSIGNED__) -+fi -+]) -+ -+AC_DEFUN(AC_C_LONG_DOUBLE, -+[AC_CACHE_CHECK(for long double, ac_cv_c_long_double, -+[if test "$GCC" = yes; then -+ ac_cv_c_long_double=yes -+else -+AC_TRY_RUN([int main() { -+/* The Stardent Vistra knows sizeof(long double), but does not support it. */ -+long double foo = 0.0; -+/* On Ultrix 4.3 cc, long double is 4 and double is 8. */ -+exit(sizeof(long double) < sizeof(double)); }], -+ac_cv_c_long_double=yes, ac_cv_c_long_double=no) -+fi]) -+if test $ac_cv_c_long_double = yes; then -+ AC_DEFINE(HAVE_LONG_DOUBLE) -+fi -+]) -+ -+AC_DEFUN(AC_INT_16_BITS, -+[AC_OBSOLETE([$0], [; instead use AC_CHECK_SIZEOF(int)])dnl -+AC_MSG_CHECKING(whether int is 16 bits) -+AC_TRY_RUN([main() { exit(sizeof(int) != 2); }], -+ [AC_MSG_RESULT(yes) -+ AC_DEFINE(INT_16_BITS)], AC_MSG_RESULT(no)) -+]) -+ -+AC_DEFUN(AC_LONG_64_BITS, -+[AC_OBSOLETE([$0], [; instead use AC_CHECK_SIZEOF(long)])dnl -+AC_MSG_CHECKING(whether long int is 64 bits) -+AC_TRY_RUN([main() { exit(sizeof(long int) != 8); }], -+ [AC_MSG_RESULT(yes) -+ AC_DEFINE(LONG_64_BITS)], AC_MSG_RESULT(no)) -+]) -+ -+AC_DEFUN(AC_C_BIGENDIAN, -+[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian, -+[ac_cv_c_bigendian=unknown -+# See if sys/param.h defines the BYTE_ORDER macro. -+AC_TRY_COMPILE([#include -+#include ], [ -+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN -+ bogus endian macros -+#endif], [# It does; now see whether it defined to BIG_ENDIAN or not. -+AC_TRY_COMPILE([#include -+#include ], [ -+#if BYTE_ORDER != BIG_ENDIAN -+ not big endian -+#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)]) -+if test $ac_cv_c_bigendian = unknown; then -+AC_TRY_RUN([main () { -+ /* Are we little or big endian? From Harbison&Steele. */ -+ union -+ { -+ long l; -+ char c[sizeof (long)]; -+ } u; -+ u.l = 1; -+ exit (u.c[sizeof (long) - 1] == 1); -+}], ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes) -+fi]) -+if test $ac_cv_c_bigendian = yes; then -+ AC_DEFINE(WORDS_BIGENDIAN) -+fi -+]) -+ -+dnl Do nothing if the compiler accepts the inline keyword. -+dnl Otherwise define inline to __inline__ or __inline if one of those work, -+dnl otherwise define inline to be empty. -+AC_DEFUN(AC_C_INLINE, -+[AC_CACHE_CHECK([for inline], ac_cv_c_inline, -+[ac_cv_c_inline=no -+for ac_kw in inline __inline__ __inline; do -+ AC_TRY_COMPILE(, [} $ac_kw foo() {], [ac_cv_c_inline=$ac_kw; break]) -+done -+]) -+case "$ac_cv_c_inline" in -+ inline | yes) ;; -+ no) AC_DEFINE(inline, ) ;; -+ *) AC_DEFINE_UNQUOTED(inline, $ac_cv_c_inline) ;; -+esac -+]) -+ -+AC_DEFUN(AC_C_CONST, -+[dnl This message is consistent in form with the other checking messages, -+dnl and with the result message. -+AC_CACHE_CHECK([for working const], ac_cv_c_const, -+[AC_TRY_COMPILE(, -+changequote(<<, >>)dnl -+<< -+/* Ultrix mips cc rejects this. */ -+typedef int charset[2]; const charset x; -+/* SunOS 4.1.1 cc rejects this. */ -+char const *const *ccp; -+char **p; -+/* NEC SVR4.0.2 mips cc rejects this. */ -+struct point {int x, y;}; -+static struct point const zero = {0,0}; -+/* AIX XL C 1.02.0.0 rejects this. -+ It does not let you subtract one const X* pointer from another in an arm -+ of an if-expression whose if-part is not a constant expression */ -+const char *g = "string"; -+ccp = &g + (g ? g-g : 0); -+/* HPUX 7.0 cc rejects these. */ -+++ccp; -+p = (char**) ccp; -+ccp = (char const *const *) p; -+{ /* SCO 3.2v4 cc rejects this. */ -+ char *t; -+ char const *s = 0 ? (char *) 0 : (char const *) 0; -+ -+ *t++ = 0; -+} -+{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ -+ int x[] = {25, 17}; -+ const int *foo = &x[0]; -+ ++foo; -+} -+{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ -+ typedef const int *iptr; -+ iptr p = 0; -+ ++p; -+} -+{ /* AIX XL C 1.02.0.0 rejects this saying -+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ -+ struct s { int j; const int *ap[3]; }; -+ struct s *b; b->j = 5; -+} -+{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ -+ const int foo = 10; -+} -+>>, -+changequote([, ])dnl -+ac_cv_c_const=yes, ac_cv_c_const=no)]) -+if test $ac_cv_c_const = no; then -+ AC_DEFINE(const, ) -+fi -+]) -+ -+AC_DEFUN(AC_C_STRINGIZE, [ -+AC_REQUIRE([AC_PROG_CPP]) -+AC_MSG_CHECKING([for preprocessor stringizing operator]) -+AC_CACHE_VAL(ac_cv_c_stringize, -+AC_EGREP_CPP([#teststring],[ -+#define x(y) #y -+ -+char *s = x(teststring); -+], ac_cv_c_stringize=no, ac_cv_c_stringize=yes)) -+if test "${ac_cv_c_stringize}" = yes -+then -+ AC_DEFINE(HAVE_STRINGIZE) -+fi -+AC_MSG_RESULT([${ac_cv_c_stringize}]) -+])dnl -+ -+define(AC_ARG_ARRAY, -+[errprint(__file__:__line__: [$0] has been removed; don't do unportable things with arguments -+)m4exit(4)]) -+ -+dnl Check the object extension used by the compiler: typically .o or -+dnl .obj. If this is called, some other behaviour will change, -+dnl determined by ac_objext. -+AC_DEFUN(AC_OBJEXT, -+[AC_MSG_CHECKING([for object suffix]) -+AC_CACHE_VAL(ac_cv_objext, -+[rm -f conftest* -+echo 'int i = 1;' > conftest.$ac_ext -+if AC_TRY_EVAL(ac_compile); then -+ for ac_file in conftest.*; do -+ case $ac_file in -+ *.c) ;; -+ *) ac_cv_objext=`echo $ac_file | sed -e s/conftest.//` ;; -+ esac -+ done -+else -+ AC_MSG_ERROR([installation or configuration problem; compiler does not work]) -+fi -+rm -f conftest*]) -+AC_MSG_RESULT($ac_cv_objext) -+OBJEXT=$ac_cv_objext -+ac_objext=$ac_cv_objext -+AC_SUBST(OBJEXT)]) -+ -+dnl Determine the linker flags (e.g. `-L' and `-l') for the Fortran 77 -+dnl intrinsic and run-time libraries that are required to successfully -+dnl link a Fortran 77 program or shared library. The output variable -+dnl FLIBS is set to these flags. -+dnl -+dnl This macro is intended to be used in those situations when it is -+dnl necessary to mix, e.g. C++ and Fortran 77, source code into a single -+dnl program or shared library. -+dnl -+dnl For example, if object files from a C++ and Fortran 77 compiler must -+dnl be linked together, then the C++ compiler/linker must be used for -+dnl linking (since special C++-ish things need to happen at link time -+dnl like calling global constructors, instantiating templates, enabling -+dnl exception support, etc.). -+dnl -+dnl However, the Fortran 77 intrinsic and run-time libraries must be -+dnl linked in as well, but the C++ compiler/linker doesn't know how to -+dnl add these Fortran 77 libraries. Hence, the macro -+dnl `AC_F77_LIBRARY_LDFLAGS' was created to determine these Fortran 77 -+dnl libraries. -+dnl -+dnl This macro was packaged in its current form by Matthew D. Langston -+dnl . However, nearly all of this macro -+dnl came from the `OCTAVE_FLIBS' macro in `octave-2.0.13/aclocal.m4', -+dnl and full credit should go to John W. Eaton for writing this -+dnl extremely useful macro. Thank you John. -+dnl -+dnl AC_F77_LIBRARY_LDFLAGS() -+AC_DEFUN(AC_F77_LIBRARY_LDFLAGS, -+[AC_MSG_CHECKING([for Fortran 77 libraries]) -+AC_REQUIRE([AC_PROG_F77]) -+AC_REQUIRE([AC_CANONICAL_HOST]) -+AC_CACHE_VAL(ac_cv_flibs, -+[changequote(, )dnl -+dnl Write a minimal program and compile it with -v. I don't know what -+dnl to do if your compiler doesn't have -v... -+echo " END" > conftest.f -+foutput=`${F77} -v -o conftest conftest.f 2>&1` -+dnl -+dnl The easiest thing to do for xlf output is to replace all the commas -+dnl with spaces. Try to only do that if the output is really from xlf, -+dnl since doing that causes problems on other systems. -+dnl -+xlf_p=`echo $foutput | grep xlfentry` -+if test -n "$xlf_p"; then -+ foutput=`echo $foutput | sed 's/,/ /g'` -+fi -+dnl -+ld_run_path=`echo $foutput | \ -+ sed -n -e 's/^.*LD_RUN_PATH *= *\([^ ]*\).*/\1/p'` -+dnl -+dnl We are only supposed to find this on Solaris systems... -+dnl Uh, the run path should be absolute, shouldn't it? -+dnl -+case "$ld_run_path" in -+ /*) -+ if test "$ac_cv_prog_gcc" = yes; then -+ ld_run_path="-Xlinker -R -Xlinker $ld_run_path" -+ else -+ ld_run_path="-R $ld_run_path" -+ fi -+ ;; -+ *) -+ ld_run_path= -+ ;; -+esac -+dnl -+flibs= -+lflags= -+dnl -+dnl If want_arg is set, we know we want the arg to be added to the list, -+dnl so we don't have to examine it. -+dnl -+want_arg= -+dnl -+for arg in $foutput; do -+ old_want_arg=$want_arg -+ want_arg= -+dnl -+dnl None of the options that take arguments expect the argument to -+dnl start with a -, so pretend we didn't see anything special. -+dnl -+ if test -n "$old_want_arg"; then -+ case "$arg" in -+ -*) -+ old_want_arg= -+ ;; -+ esac -+ fi -+ case "$old_want_arg" in -+ '') -+ case $arg in -+ /*.a) -+ exists=false -+ for f in $lflags; do -+ if test x$arg = x$f; then -+ exists=true -+ fi -+ done -+ if $exists; then -+ arg= -+ else -+ lflags="$lflags $arg" -+ fi -+ ;; -+ -bI:*) -+ exists=false -+ for f in $lflags; do -+ if test x$arg = x$f; then -+ exists=true -+ fi -+ done -+ if $exists; then -+ arg= -+ else -+ if test "$ac_cv_prog_gcc" = yes; then -+ lflags="$lflags -Xlinker $arg" -+ else -+ lflags="$lflags $arg" -+ fi -+ fi -+ ;; -+ -lang* | -lcrt0.o | -lc | -lgcc) -+ arg= -+ ;; -+ -[lLR]) -+ want_arg=$arg -+ arg= -+ ;; -+ -[lLR]*) -+ exists=false -+ for f in $lflags; do -+ if test x$arg = x$f; then -+ exists=true -+ fi -+ done -+ if $exists; then -+ arg= -+ else -+ case "$arg" in -+ -lkernel32) -+ case "$canonical_host_type" in -+ *-*-cygwin*) -+ arg= -+ ;; -+ *) -+ lflags="$lflags $arg" -+ ;; -+ esac -+ ;; -+ -lm) -+ ;; -+ *) -+ lflags="$lflags $arg" -+ ;; -+ esac -+ fi -+ ;; -+ -u) -+ want_arg=$arg -+ arg= -+ ;; -+ -Y) -+ want_arg=$arg -+ arg= -+ ;; -+ *) -+ arg= -+ ;; -+ esac -+ ;; -+ -[lLR]) -+ arg="$old_want_arg $arg" -+ ;; -+ -u) -+ arg="-u $arg" -+ ;; -+ -Y) -+dnl -+dnl Should probably try to ensure unique directory options here too. -+dnl This probably only applies to Solaris systems, and then will only -+dnl work with gcc... -+dnl -+ arg=`echo $arg | sed -e 's%^P,%%'` -+ SAVE_IFS=$IFS -+ IFS=: -+ list= -+ for elt in $arg; do -+ list="$list -L$elt" -+ done -+ IFS=$SAVE_IFS -+ arg="$list" -+ ;; -+ esac -+dnl -+ if test -n "$arg"; then -+ flibs="$flibs $arg" -+ fi -+done -+if test -n "$ld_run_path"; then -+ flibs_result="$ld_run_path $flibs" -+else -+ flibs_result="$flibs" -+fi -+changequote([, ])dnl -+ac_cv_flibs="$flibs_result"]) -+FLIBS="$ac_cv_flibs" -+AC_SUBST(FLIBS)dnl -+AC_MSG_RESULT($FLIBS) -+]) -+ -+ -+dnl ### Checks for operating system services -+ -+ -+AC_DEFUN(AC_SYS_INTERPRETER, -+[# Pull the hash mark out of the macro call to avoid m4 problems. -+ac_msg="whether #! works in shell scripts" -+AC_CACHE_CHECK($ac_msg, ac_cv_sys_interpreter, -+[echo '#! /bin/cat -+exit 69 -+' > conftest -+chmod u+x conftest -+(SHELL=/bin/sh; export SHELL; ./conftest >/dev/null) -+if test $? -ne 69; then -+ ac_cv_sys_interpreter=yes -+else -+ ac_cv_sys_interpreter=no -+fi -+rm -f conftest]) -+interpval="$ac_cv_sys_interpreter" -+]) -+ -+define(AC_HAVE_POUNDBANG, -+[errprint(__file__:__line__: [$0 has been replaced by AC_SYS_INTERPRETER, taking no arguments -+])m4exit(4)]) -+ -+AC_DEFUN(AC_SYS_LONG_FILE_NAMES, -+[AC_CACHE_CHECK(for long file names, ac_cv_sys_long_file_names, -+[ac_cv_sys_long_file_names=yes -+# Test for long file names in all the places we know might matter: -+# . the current directory, where building will happen -+# $prefix/lib where we will be installing things -+# $exec_prefix/lib likewise -+# eval it to expand exec_prefix. -+# $TMPDIR if set, where it might want to write temporary files -+# if $TMPDIR is not set: -+# /tmp where it might want to write temporary files -+# /var/tmp likewise -+# /usr/tmp likewise -+if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then -+ ac_tmpdirs="$TMPDIR" -+else -+ ac_tmpdirs='/tmp /var/tmp /usr/tmp' -+fi -+for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do -+ test -d $ac_dir || continue -+ test -w $ac_dir || continue # It is less confusing to not echo anything here. -+ (echo 1 > $ac_dir/conftest9012345) 2>/dev/null -+ (echo 2 > $ac_dir/conftest9012346) 2>/dev/null -+ val=`cat $ac_dir/conftest9012345 2>/dev/null` -+ if test ! -f $ac_dir/conftest9012345 || test "$val" != 1; then -+ ac_cv_sys_long_file_names=no -+ rm -f $ac_dir/conftest9012345 $ac_dir/conftest9012346 2>/dev/null -+ break -+ fi -+ rm -f $ac_dir/conftest9012345 $ac_dir/conftest9012346 2>/dev/null -+done]) -+if test $ac_cv_sys_long_file_names = yes; then -+ AC_DEFINE(HAVE_LONG_FILE_NAMES) -+fi -+]) -+ -+AC_DEFUN(AC_SYS_RESTARTABLE_SYSCALLS, -+[AC_CACHE_CHECK(for restartable system calls, ac_cv_sys_restartable_syscalls, -+[AC_TRY_RUN( -+[/* Exit 0 (true) if wait returns something other than -1, -+ i.e. the pid of the child, which means that wait was restarted -+ after getting the signal. */ -+#include -+#include -+ucatch (isig) { } -+main () { -+ int i = fork (), status; -+ if (i == 0) { sleep (3); kill (getppid (), SIGINT); sleep (3); exit (0); } -+ signal (SIGINT, ucatch); -+ status = wait(&i); -+ if (status == -1) wait(&i); -+ exit (status == -1); -+} -+], ac_cv_sys_restartable_syscalls=yes, ac_cv_sys_restartable_syscalls=no)]) -+if test $ac_cv_sys_restartable_syscalls = yes; then -+ AC_DEFINE(HAVE_RESTARTABLE_SYSCALLS) -+fi -+]) -+ -+AC_DEFUN(AC_PATH_X, -+[AC_REQUIRE_CPP()dnl Set CPP; we run AC_PATH_X_DIRECT conditionally. -+# If we find X, set shell vars x_includes and x_libraries to the -+# paths, otherwise set no_x=yes. -+# Uses ac_ vars as temps to allow command line to override cache and checks. -+# --without-x overrides everything else, but does not touch the cache. -+AC_MSG_CHECKING(for X) -+ -+AC_ARG_WITH(x, [ --with-x use the X Window System]) -+# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -+if test "x$with_x" = xno; then -+ # The user explicitly disabled X. -+ have_x=disabled -+else -+ if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then -+ # Both variables are already set. -+ have_x=yes -+ else -+AC_CACHE_VAL(ac_cv_have_x, -+[# One or both of the vars are not set, and there is no cached value. -+ac_x_includes=NO ac_x_libraries=NO -+AC_PATH_X_XMKMF -+AC_PATH_X_DIRECT -+if test "$ac_x_includes" = NO || test "$ac_x_libraries" = NO; then -+ # Didn't find X anywhere. Cache the known absence of X. -+ ac_cv_have_x="have_x=no" -+else -+ # Record where we found X for the cache. -+ ac_cv_have_x="have_x=yes \ -+ ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" -+fi])dnl -+ fi -+ eval "$ac_cv_have_x" -+fi # $with_x != no -+ -+if test "$have_x" != yes; then -+ AC_MSG_RESULT($have_x) -+ no_x=yes -+else -+ # If each of the values was on the command line, it overrides each guess. -+ test "x$x_includes" = xNONE && x_includes=$ac_x_includes -+ test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries -+ # Update the cache value to reflect the command line values. -+ ac_cv_have_x="have_x=yes \ -+ ac_x_includes=$x_includes ac_x_libraries=$x_libraries" -+ AC_MSG_RESULT([libraries $x_libraries, headers $x_includes]) -+fi -+]) -+ -+dnl Internal subroutine of AC_PATH_X. -+dnl Set ac_x_includes and/or ac_x_libraries. -+AC_DEFUN(AC_PATH_X_XMKMF, -+[rm -fr conftestdir -+if mkdir conftestdir; then -+ cd conftestdir -+ # Make sure to not put "make" in the Imakefile rules, since we grep it out. -+ cat > Imakefile <<'EOF' -+acfindx: -+ @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' -+EOF -+ if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then -+ # GNU make sometimes prints "make[1]: Entering...", which would confuse us. -+ eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` -+ # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. -+ for ac_extension in a so sl; do -+ if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && -+ test -f $ac_im_libdir/libX11.$ac_extension; then -+ ac_im_usrlibdir=$ac_im_libdir; break -+ fi -+ done -+ # Screen out bogus values from the imake configuration. They are -+ # bogus both because they are the default anyway, and because -+ # using them would break gcc on systems where it needs fixed includes. -+ case "$ac_im_incroot" in -+ /usr/include) ;; -+ *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes="$ac_im_incroot" ;; -+ esac -+ case "$ac_im_usrlibdir" in -+ /usr/lib | /lib) ;; -+ *) test -d "$ac_im_usrlibdir" && ac_x_libraries="$ac_im_usrlibdir" ;; -+ esac -+ fi -+ cd .. -+ rm -fr conftestdir -+fi -+]) -+ -+dnl Internal subroutine of AC_PATH_X. -+dnl Set ac_x_includes and/or ac_x_libraries. -+AC_DEFUN(AC_PATH_X_DIRECT, -+[if test "$ac_x_includes" = NO; then -+ # Guess where to find include files, by looking for this one X11 .h file. -+ test -z "$x_direct_test_include" && x_direct_test_include=X11/Intrinsic.h -+ -+ # First, try using that file with no special directory specified. -+AC_TRY_CPP([#include <$x_direct_test_include>], -+[# We can compile using X headers with no special include directory. -+ac_x_includes=], -+[# Look for the header file in a standard set of common directories. -+# Check X11 before X11Rn because it is often a symlink to the current release. -+ for ac_dir in \ -+ /usr/X11/include \ -+ /usr/X11R6/include \ -+ /usr/X11R5/include \ -+ /usr/X11R4/include \ -+ \ -+ /usr/include/X11 \ -+ /usr/include/X11R6 \ -+ /usr/include/X11R5 \ -+ /usr/include/X11R4 \ -+ \ -+ /usr/local/X11/include \ -+ /usr/local/X11R6/include \ -+ /usr/local/X11R5/include \ -+ /usr/local/X11R4/include \ -+ \ -+ /usr/local/include/X11 \ -+ /usr/local/include/X11R6 \ -+ /usr/local/include/X11R5 \ -+ /usr/local/include/X11R4 \ -+ \ -+ /usr/X386/include \ -+ /usr/x386/include \ -+ /usr/XFree86/include/X11 \ -+ \ -+ /usr/include \ -+ /usr/local/include \ -+ /usr/unsupported/include \ -+ /usr/athena/include \ -+ /usr/local/x11r5/include \ -+ /usr/lpp/Xamples/include \ -+ \ -+ /usr/openwin/include \ -+ /usr/openwin/share/include \ -+ ; \ -+ do -+ if test -r "$ac_dir/$x_direct_test_include"; then -+ ac_x_includes=$ac_dir -+ break -+ fi -+ done]) -+fi # $ac_x_includes = NO -+ -+if test "$ac_x_libraries" = NO; then -+ # Check for the libraries. -+ -+ test -z "$x_direct_test_library" && x_direct_test_library=Xt -+ test -z "$x_direct_test_function" && x_direct_test_function=XtMalloc -+ -+ # See if we find them without any special options. -+ # Don't add to $LIBS permanently. -+ ac_save_LIBS="$LIBS" -+ LIBS="-l$x_direct_test_library $LIBS" -+AC_TRY_LINK(, [${x_direct_test_function}()], -+[LIBS="$ac_save_LIBS" -+# We can link X programs with no special library path. -+ac_x_libraries=], -+[LIBS="$ac_save_LIBS" -+# First see if replacing the include by lib works. -+# Check X11 before X11Rn because it is often a symlink to the current release. -+for ac_dir in `echo "$ac_x_includes" | sed s/include/lib/` \ -+ /usr/X11/lib \ -+ /usr/X11R6/lib \ -+ /usr/X11R5/lib \ -+ /usr/X11R4/lib \ -+ \ -+ /usr/lib/X11 \ -+ /usr/lib/X11R6 \ -+ /usr/lib/X11R5 \ -+ /usr/lib/X11R4 \ -+ \ -+ /usr/local/X11/lib \ -+ /usr/local/X11R6/lib \ -+ /usr/local/X11R5/lib \ -+ /usr/local/X11R4/lib \ -+ \ -+ /usr/local/lib/X11 \ -+ /usr/local/lib/X11R6 \ -+ /usr/local/lib/X11R5 \ -+ /usr/local/lib/X11R4 \ -+ \ -+ /usr/X386/lib \ -+ /usr/x386/lib \ -+ /usr/XFree86/lib/X11 \ -+ \ -+ /usr/lib \ -+ /usr/local/lib \ -+ /usr/unsupported/lib \ -+ /usr/athena/lib \ -+ /usr/local/x11r5/lib \ -+ /usr/lpp/Xamples/lib \ -+ /lib/usr/lib/X11 \ -+ \ -+ /usr/openwin/lib \ -+ /usr/openwin/share/lib \ -+ ; \ -+do -+dnl Don't even attempt the hair of trying to link an X program! -+ for ac_extension in a so sl; do -+ if test -r $ac_dir/lib${x_direct_test_library}.$ac_extension; then -+ ac_x_libraries=$ac_dir -+ break 2 -+ fi -+ done -+done]) -+fi # $ac_x_libraries = NO -+]) -+ -+dnl Find additional X libraries, magic flags, etc. -+AC_DEFUN(AC_PATH_XTRA, -+[AC_REQUIRE([AC_PATH_X])dnl -+if test "$no_x" = yes; then -+ # Not all programs may use this symbol, but it does not hurt to define it. -+ AC_DEFINE(X_DISPLAY_MISSING) -+ X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -+else -+ if test -n "$x_includes"; then -+ X_CFLAGS="$X_CFLAGS -I$x_includes" -+ fi -+ -+ # It would also be nice to do this for all -L options, not just this one. -+ if test -n "$x_libraries"; then -+ X_LIBS="$X_LIBS -L$x_libraries" -+dnl FIXME banish uname from this macro! -+ # For Solaris; some versions of Sun CC require a space after -R and -+ # others require no space. Words are not sufficient . . . . -+ case "`(uname -sr) 2>/dev/null`" in -+ "SunOS 5"*) -+ AC_MSG_CHECKING(whether -R must be followed by a space) -+ ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" -+ AC_TRY_LINK(, , ac_R_nospace=yes, ac_R_nospace=no) -+ if test $ac_R_nospace = yes; then -+ AC_MSG_RESULT(no) -+ X_LIBS="$X_LIBS -R$x_libraries" -+ else -+ LIBS="$ac_xsave_LIBS -R $x_libraries" -+ AC_TRY_LINK(, , ac_R_space=yes, ac_R_space=no) -+ if test $ac_R_space = yes; then -+ AC_MSG_RESULT(yes) -+ X_LIBS="$X_LIBS -R $x_libraries" -+ else -+ AC_MSG_RESULT(neither works) -+ fi -+ fi -+ LIBS="$ac_xsave_LIBS" -+ esac -+ fi -+ -+ # Check for system-dependent libraries X programs must link with. -+ # Do this before checking for the system-independent R6 libraries -+ # (-lICE), since we may need -lsocket or whatever for X linking. -+ -+ if test "$ISC" = yes; then -+ X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" -+ else -+ # Martyn.Johnson@cl.cam.ac.uk says this is needed for Ultrix, if the X -+ # libraries were built with DECnet support. And karl@cs.umb.edu says -+ # the Alpha needs dnet_stub (dnet does not exist). -+ AC_CHECK_LIB(dnet, dnet_ntoa, [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet"]) -+ if test $ac_cv_lib_dnet_dnet_ntoa = no; then -+ AC_CHECK_LIB(dnet_stub, dnet_ntoa, -+ [X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub"]) -+ fi -+ -+ # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, -+ # to get the SysV transport functions. -+ # chad@anasazi.com says the Pyramis MIS-ES running DC/OSx (SVR4) -+ # needs -lnsl. -+ # The nsl library prevents programs from opening the X display -+ # on Irix 5.2, according to dickey@clark.net. -+ AC_CHECK_FUNC(gethostbyname) -+ if test $ac_cv_func_gethostbyname = no; then -+ AC_CHECK_LIB(nsl, gethostbyname, X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl") -+ fi -+ -+ # lieder@skyler.mavd.honeywell.com says without -lsocket, -+ # socket/setsockopt and other routines are undefined under SCO ODT -+ # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary -+ # on later versions), says simon@lia.di.epfl.ch: it contains -+ # gethostby* variants that don't use the nameserver (or something). -+ # -lsocket must be given before -lnsl if both are needed. -+ # We assume that if connect needs -lnsl, so does gethostbyname. -+ AC_CHECK_FUNC(connect) -+ if test $ac_cv_func_connect = no; then -+ AC_CHECK_LIB(socket, connect, X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS", , -+ $X_EXTRA_LIBS) -+ fi -+ -+ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. -+ AC_CHECK_FUNC(remove) -+ if test $ac_cv_func_remove = no; then -+ AC_CHECK_LIB(posix, remove, X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix") -+ fi -+ -+ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. -+ AC_CHECK_FUNC(shmat) -+ if test $ac_cv_func_shmat = no; then -+ AC_CHECK_LIB(ipc, shmat, X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc") -+ fi -+ fi -+ -+ # Check for libraries that X11R6 Xt/Xaw programs need. -+ ac_save_LDFLAGS="$LDFLAGS" -+ test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" -+ # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to -+ # check for ICE first), but we must link in the order -lSM -lICE or -+ # we get undefined symbols. So assume we have SM if we have ICE. -+ # These have to be linked with before -lX11, unlike the other -+ # libraries we check for below, so use a different variable. -+ # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. -+ AC_CHECK_LIB(ICE, IceConnectionNumber, -+ [X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE"], , $X_EXTRA_LIBS) -+ LDFLAGS="$ac_save_LDFLAGS" -+ -+fi -+AC_SUBST(X_CFLAGS)dnl -+AC_SUBST(X_PRE_LIBS)dnl -+AC_SUBST(X_LIBS)dnl -+AC_SUBST(X_EXTRA_LIBS)dnl -+]) -+ -+dnl The old Cygwin32 macro is deprecated. -+AC_DEFUN(AC_CYGWIN32, -+[AC_OBSOLETE([$0], [; instead use AC_CYGWIN])dnl -+AC_CYGWIN]) -+ -+dnl Check for Cygwin. This is a way to set the right value for -+dnl EXEEXT. -+AC_DEFUN(AC_CYGWIN, -+[AC_CACHE_CHECK(for Cygwin environment, ac_cv_cygwin, -+[AC_TRY_COMPILE(,[ -+#ifndef __CYGWIN__ -+#define __CYGWIN__ __CYGWIN32__ -+#endif -+return __CYGWIN__;], -+ac_cv_cygwin=yes, ac_cv_cygwin=no) -+rm -f conftest*]) -+CYGWIN= -+test "$ac_cv_cygwin" = yes && CYGWIN=yes]) -+ -+dnl Check for mingw32. This is another way to set the right value for -+dnl EXEEXT. -+AC_DEFUN(AC_MINGW32, -+[AC_CACHE_CHECK(for mingw32 environment, ac_cv_mingw32, -+[AC_TRY_COMPILE(,[return __MINGW32__;], -+ac_cv_mingw32=yes, ac_cv_mingw32=no) -+rm -f conftest*]) -+MINGW32= -+test "$ac_cv_mingw32" = yes && MINGW32=yes]) -+ -+dnl Check for the extension used for executables. This knows that we -+dnl add .exe for Cygwin or mingw32. Otherwise, it compiles a test -+dnl executable. If this is called, the executable extensions will be -+dnl automatically used by link commands run by the configure script. -+AC_DEFUN(AC_EXEEXT, -+[AC_REQUIRE([AC_CYGWIN]) -+AC_REQUIRE([AC_MINGW32]) -+AC_MSG_CHECKING([for executable suffix]) -+AC_CACHE_VAL(ac_cv_exeext, -+[if test "$CYGWIN" = yes || test "$MINGW32" = yes; then -+ ac_cv_exeext=.exe -+else -+ rm -f conftest* -+ echo 'int main () { return 0; }' > conftest.$ac_ext -+ ac_cv_exeext= -+ if AC_TRY_EVAL(ac_link); then -+ for file in conftest.*; do -+ case $file in -+ *.c | *.o | *.obj) ;; -+ *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; -+ esac -+ done -+ else -+ AC_MSG_ERROR([installation or configuration problem: compiler cannot create executables.]) -+ fi -+ rm -f conftest* -+ test x"${ac_cv_exeext}" = x && ac_cv_exeext=no -+fi]) -+EXEEXT="" -+test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} -+AC_MSG_RESULT(${ac_cv_exeext}) -+dnl Setting ac_exeext will implicitly change the ac_link command. -+ac_exeext=$EXEEXT -+AC_SUBST(EXEEXT)]) -+ -+ -+dnl ### Checks for UNIX variants -+dnl These are kludges which should be replaced by a single POSIX check. -+dnl They aren't cached, to discourage their use. -+ -+ -+AC_DEFUN(AC_AIX, -+[AC_BEFORE([$0], [AC_TRY_COMPILE])dnl -+AC_BEFORE([$0], [AC_TRY_RUN])dnl -+AC_MSG_CHECKING(for AIX) -+AC_EGREP_CPP(yes, -+[#ifdef _AIX -+ yes -+#endif -+], [AC_MSG_RESULT(yes); AC_DEFINE(_ALL_SOURCE)], AC_MSG_RESULT(no)) -+]) -+ -+AC_DEFUN(AC_MINIX, -+[AC_BEFORE([$0], [AC_TRY_COMPILE])dnl -+AC_BEFORE([$0], [AC_TRY_RUN])dnl -+AC_CHECK_HEADER(minix/config.h, MINIX=yes, MINIX=) -+if test "$MINIX" = yes; then -+ AC_DEFINE(_POSIX_SOURCE) -+ AC_DEFINE(_POSIX_1_SOURCE, 2) -+ AC_DEFINE(_MINIX) -+fi -+]) -+ -+AC_DEFUN(AC_ISC_POSIX, -+[AC_REQUIRE([AC_PROG_CC])dnl -+AC_BEFORE([$0], [AC_TRY_COMPILE])dnl -+AC_BEFORE([$0], [AC_TRY_RUN])dnl -+AC_MSG_CHECKING(for POSIXized ISC) -+if test -d /etc/conf/kconfig.d && -+ grep _POSIX_VERSION [/usr/include/sys/unistd.h] >/dev/null 2>&1 -+then -+ AC_MSG_RESULT(yes) -+ ISC=yes # If later tests want to check for ISC. -+ AC_DEFINE(_POSIX_SOURCE) -+ if test "$GCC" = yes; then -+ CC="$CC -posix" -+ else -+ CC="$CC -Xp" -+ fi -+else -+ AC_MSG_RESULT(no) -+ ISC= -+fi -+]) -+ -+AC_DEFUN(AC_XENIX_DIR, -+[AC_OBSOLETE([$0], [; instead use AC_HEADER_DIRENT])dnl -+AC_REQUIRE([AC_DIR_HEADER])dnl -+AC_MSG_CHECKING(for Xenix) -+AC_EGREP_CPP(yes, -+[#if defined(M_XENIX) && !defined(M_UNIX) -+ yes -+#endif -+], [AC_MSG_RESULT(yes); XENIX=yes], [AC_MSG_RESULT(no); XENIX=]) -+if test "$XENIX" = yes; then -+ # Make sure -ldir precedes -lx. -+ test $ac_header_dirent = dirent.h && LIBS="-ldir $LIBS" -+ LIBS="$LIBS -lx" -+fi -+]) -+ -+AC_DEFUN(AC_DYNIX_SEQ, -+[AC_OBSOLETE([$0], [; instead use AC_FUNC_GETMNTENT])dnl -+AC_CHECK_LIB(seq, getmntent, LIBS="-lseq $LIBS") -+]) -+ -+AC_DEFUN(AC_IRIX_SUN, -+[AC_OBSOLETE([$0], [; instead use AC_FUNC_GETMNTENT or AC_CHECK_LIB(sun, getpwnam)])dnl -+AC_CHECK_LIB(sun, getmntent, LIBS="-lsun $LIBS") -+]) -+ -+AC_DEFUN(AC_SCO_INTL, -+[AC_OBSOLETE([$0], [; instead use AC_FUNC_STRFTIME])dnl -+AC_CHECK_LIB(intl, strftime, LIBS="-lintl $LIBS") -+]) -diff -up firefox-78.8.0/build/autoconf/autoconf.m4.D89554-autoconf1.diff firefox-78.8.0/build/autoconf/autoconf.m4 ---- firefox-78.8.0/build/autoconf/autoconf.m4.D89554-autoconf1.diff 2021-02-25 13:48:13.605993481 +0100 -+++ firefox-78.8.0/build/autoconf/autoconf.m4 2021-02-25 13:48:13.605993481 +0100 -@@ -0,0 +1,28 @@ -+dnl Driver that loads the Autoconf macro files. -+dnl Requires GNU m4. -+dnl This file is part of Autoconf. -+dnl Copyright (C) 1994 Free Software Foundation, Inc. -+dnl -+dnl This program is free software; you can redistribute it and/or modify -+dnl it under the terms of the GNU General Public License as published by -+dnl the Free Software Foundation; either version 2, or (at your option) -+dnl any later version. -+dnl -+dnl This program is distributed in the hope that it will be useful, -+dnl but WITHOUT ANY WARRANTY; without even the implied warranty of -+dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+dnl GNU General Public License for more details. -+dnl -+dnl You should have received a copy of the GNU General Public License -+dnl along with this program; if not, write to the Free Software -+dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+dnl 02111-1307, USA. -+dnl -+dnl Written by David MacKenzie. -+dnl -+include(acgeneral.m4)dnl -+builtin(include, acspecific.m4)dnl -+builtin(include, acoldnames.m4)dnl -+dnl Do not sinclude acsite.m4 here, because it may not be installed -+dnl yet when Autoconf is frozen. -+dnl Do not sinclude ./aclocal.m4 here, to prevent it from being frozen. -diff -up firefox-78.8.0/build/autoconf/autoconf.sh.D89554-autoconf1.diff firefox-78.8.0/build/autoconf/autoconf.sh ---- firefox-78.8.0/build/autoconf/autoconf.sh.D89554-autoconf1.diff 2021-02-25 13:48:13.606993484 +0100 -+++ firefox-78.8.0/build/autoconf/autoconf.sh 2021-02-25 13:48:13.606993484 +0100 -@@ -0,0 +1,159 @@ -+#! @SHELL@ -+# autoconf -- create `configure' using m4 macros -+# Copyright (C) 1992, 1993, 1994, 1996 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2, or (at your option) -+# any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, write to the Free Software -+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -+# 02111-1307, USA. -+ -+# If given no args, create `configure' from template file `configure.in'. -+# With one arg, create a configure script on standard output from -+# the given template file. -+ -+usage="\ -+Usage: autoconf [-h] [--help] [-m dir] [--macrodir=dir] -+ [-l dir] [--localdir=dir] [--version] [template-file]" -+ -+# NLS nuisances. -+# Only set these to C if already set. These must not be set unconditionally -+# because not all systems understand e.g. LANG=C (notably SCO). -+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -+# Non-C LC_CTYPE values break the ctype check. -+if test "${LANG+set}" = set; then LANG=C; export LANG; fi -+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi -+ -+: ${AC_MACRODIR=@datadir@} -+: ${M4=@M4@} -+: ${AWK=@AWK@} -+case "${M4}" in -+/*) # Handle the case that m4 has moved since we were configured. -+ # It may have been found originally in a build directory. -+ test -f "${M4}" || M4=m4 ;; -+esac -+ -+: ${TMPDIR=/tmp} -+tmpout=${TMPDIR}/acout.$$ -+localdir= -+show_version=no -+ -+while test $# -gt 0 ; do -+ case "${1}" in -+ -h | --help | --h* ) -+ echo "${usage}" 1>&2; exit 0 ;; -+ --localdir=* | --l*=* ) -+ localdir="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" -+ shift ;; -+ -l | --localdir | --l*) -+ shift -+ test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } -+ localdir="${1}" -+ shift ;; -+ --macrodir=* | --m*=* ) -+ AC_MACRODIR="`echo \"${1}\" | sed -e 's/^[^=]*=//'`" -+ shift ;; -+ -m | --macrodir | --m* ) -+ shift -+ test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } -+ AC_MACRODIR="${1}" -+ shift ;; -+ --version | --v* ) -+ show_version=yes; shift ;; -+ -- ) # Stop option processing -+ shift; break ;; -+ - ) # Use stdin as input. -+ break ;; -+ -* ) -+ echo "${usage}" 1>&2; exit 1 ;; -+ * ) -+ break ;; -+ esac -+done -+ -+if test $show_version = yes; then -+ version=`sed -n 's/define.AC_ACVERSION.[ ]*\([0-9.]*\).*/\1/p' \ -+ $AC_MACRODIR/acgeneral.m4` -+ echo "Autoconf version $version" -+ exit 0 -+fi -+ -+case $# in -+ 0) infile=configure.in ;; -+ 1) infile="$1" ;; -+ *) echo "$usage" >&2; exit 1 ;; -+esac -+ -+trap 'rm -f $tmpin $tmpout; exit 1' 1 2 15 -+ -+tmpin=${TMPDIR}/acin.$$ # Always set this, to avoid bogus errors from some rm's. -+if test z$infile = z-; then -+ infile=$tmpin -+ cat > $infile -+elif test ! -r "$infile"; then -+ echo "autoconf: ${infile}: No such file or directory" >&2 -+ exit 1 -+fi -+ -+if test -n "$localdir"; then -+ use_localdir="-I$localdir -DAC_LOCALDIR=$localdir" -+else -+ use_localdir= -+fi -+ -+# Use the frozen version of Autoconf if available. -+r= f= -+# Some non-GNU m4's don't reject the --help option, so give them /dev/null. -+case `$M4 --help < /dev/null 2>&1` in -+*reload-state*) test -r $AC_MACRODIR/autoconf.m4f && { r=--reload f=f; } ;; -+*traditional*) ;; -+*) echo Autoconf requires GNU m4 1.1 or later >&2; rm -f $tmpin; exit 1 ;; -+esac -+ -+$M4 -I$AC_MACRODIR $use_localdir $r autoconf.m4$f $infile > $tmpout || -+ { rm -f $tmpin $tmpout; exit 2; } -+ -+# You could add your own prefixes to pattern if you wanted to check for -+# them too, e.g. pattern='\(AC_\|ILT_\)', except that UNIX sed doesn't do -+# alternation. -+pattern="AC_" -+ -+status=0 -+if grep "^[^#]*${pattern}" $tmpout > /dev/null 2>&1; then -+ echo "autoconf: Undefined macros:" >&2 -+ sed -n "s/^[^#]*\\(${pattern}[_A-Za-z0-9]*\\).*/\\1/p" $tmpout | -+ while read macro; do -+ grep -n "^[^#]*$macro" $infile /dev/null -+ test $? -eq 1 && echo >&2 "***BUG in Autoconf--please report*** $macro" -+ done | sort -u >&2 -+ status=1 -+fi -+ -+if test $# -eq 0; then -+ exec 4> configure; chmod +x configure -+else -+ exec 4>&1 -+fi -+ -+# Put the real line numbers into configure to make config.log more helpful. -+$AWK ' -+/__oline__/ { printf "%d:", NR + 1 } -+ { print } -+' $tmpout | sed ' -+/__oline__/s/^\([0-9][0-9]*\):\(.*\)__oline__/\2\1/ -+' >&4 -+ -+rm -f $tmpout -+ -+exit $status -diff -up firefox-78.8.0/build/moz.configure/old.configure.D89554-autoconf1.diff firefox-78.8.0/build/moz.configure/old.configure ---- firefox-78.8.0/build/moz.configure/old.configure.D89554-autoconf1.diff 2021-02-17 08:48:52.000000000 +0100 -+++ firefox-78.8.0/build/moz.configure/old.configure 2021-02-25 13:50:02.595363534 +0100 -@@ -4,65 +4,7 @@ - # License, v. 2.0. If a copy of the MPL was not distributed with this - # file, You can obtain one at http://mozilla.org/MPL/2.0/. - -- --option(env='AUTOCONF', nargs=1, help='Path to autoconf 2.13') -- -- --@depends(mozconfig, 'AUTOCONF') --@checking('for autoconf') --@imports(_from='os.path', _import='exists') --@imports('re') --def autoconf(mozconfig, autoconf): -- mozconfig_autoconf = None -- if mozconfig['path']: -- make_extra = mozconfig['make_extra'] -- if make_extra: -- for assignment in make_extra: -- m = re.match('(?:export\s+)?AUTOCONF\s*:?=\s*(.+)$', -- assignment) -- if m: -- mozconfig_autoconf = m.group(1) -- # Check whether we've exported any known-broken variables. -- m = re.match('(?:export\s+)?(?:CC|CXX)\s*:?=\s*(?:.+)$', -- assignment) -- if m: -- die('Setting the value of CC or CXX with "mk_add_options" ' -- 'can cause the build to fail unexpectedly. Please ' -- 'change your mozconfig to instead use ' -- '"ac_add_options", e.g. ac_add_options ' -- 'CC=my-custom-cc".') -- -- autoconf = autoconf[0] if autoconf else None -- -- for ac in (mozconfig_autoconf, autoconf, 'autoconf-2.13', 'autoconf2.13', -- 'autoconf213'): -- if ac: -- autoconf = find_program(ac) -- if autoconf: -- break -- else: -- fink = find_program('fink') -- if fink: -- autoconf = os.path.normpath(os.path.join( -- fink, '..', '..', 'lib', 'autoconf2.13', 'bin', 'autoconf')) -- else: -- brew = find_program('brew') -- if brew: -- autoconf = os.path.normpath(os.path.join( -- brew, '..', '..', 'Cellar', 'autoconf213', '2.13', 'bin', -- 'autoconf213')) -- -- if not autoconf: -- die('Could not find autoconf 2.13') -- -- if not exists(autoconf): -- die('Could not find autoconf 2.13 at %s', autoconf) -- -- return autoconf -- -- --set_config('AUTOCONF', autoconf) -- -+m4 = check_prog('M4', ('m4',)) - - @depends(mozconfig) - def prepare_mozconfig(mozconfig): -@@ -78,7 +20,7 @@ def prepare_mozconfig(mozconfig): - return items - - --@depends('OLD_CONFIGURE', 'MOZILLABUILD', prepare_mozconfig, autoconf, check_build_environment, -+@depends('OLD_CONFIGURE', 'MOZILLABUILD', prepare_mozconfig, awk, m4, check_build_environment, - shell, old_configure_assignments, build_project) - @imports(_from='__builtin__', _import='open') - @imports(_from='__builtin__', _import='print') -@@ -96,7 +38,7 @@ def prepare_mozconfig(mozconfig): - @imports(_from='os', _import='rename') - @imports(_from='subprocess', _import='CalledProcessError') - @imports(_from='__builtin__', _import='OSError') --def prepare_configure(old_configure, mozillabuild, mozconfig, autoconf, build_env, shell, -+def prepare_configure(old_configure, mozillabuild, mozconfig, awk, m4, build_env, shell, - old_configure_assignments, build_project): - # os.path.abspath in the sandbox will ensure forward slashes on Windows, - # which is actually necessary because this path actually ends up literally -@@ -125,13 +67,18 @@ def prepare_configure(old_configure, moz - refresh = False - - if refresh: -+ autoconf = os.path.join(build_env.topsrcdir, 'build', 'autoconf', 'autoconf.sh') - log.info('Refreshing %s with %s', old_configure, autoconf) -+ env = dict(environ) -+ env['M4'] = m4 -+ env['AWK'] = awk -+ env['AC_MACRODIR'] = os.path.join(build_env.topsrcdir, 'build', 'autoconf') - - try: - script = subprocess.check_output([ - shell, autoconf, - '--localdir=%s' % os.path.dirname(old_configure), -- old_configure + '.in']) -+ old_configure + '.in'], env=env) - except CalledProcessError as exc: - # Autoconf on win32 may break due to a bad $PATH. Let the user know - # their $PATH is suspect. -@@ -185,10 +132,6 @@ def prepare_configure(old_configure, moz - - inject('# end of mozconfig values') - -- # Autoconf is special, because it might be passed from -- # mozconfig['make_extra'], which we don't pass automatically above. -- inject('export AUTOCONF=%s' % quote(autoconf)) -- - for k, v in old_configure_assignments: - inject('%s=%s' % (k, quote(v))) - diff --git a/SOURCES/D94538-autoconf2.diff b/SOURCES/D94538-autoconf2.diff deleted file mode 100644 index 3e0481c..0000000 --- a/SOURCES/D94538-autoconf2.diff +++ /dev/null @@ -1,118 +0,0 @@ -diff -up firefox-78.8.0/python/mozboot/mozboot/archlinux.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/archlinux.py ---- firefox-78.8.0/python/mozboot/mozboot/archlinux.py.D94538-autoconf2.diff 2021-02-25 13:53:04.963982705 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/archlinux.py 2021-02-25 13:53:25.713053151 +0100 -@@ -26,7 +26,6 @@ class ArchlinuxBootstrapper( - '''Archlinux experimental bootstrapper.''' - - SYSTEM_PACKAGES = [ -- 'autoconf2.13', - 'base-devel', - 'nodejs', - 'python2', -diff -up firefox-78.8.0/python/mozboot/mozboot/centosfedora.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/centosfedora.py ---- firefox-78.8.0/python/mozboot/mozboot/centosfedora.py.D94538-autoconf2.diff 2021-02-17 08:49:42.000000000 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/centosfedora.py 2021-02-25 13:53:04.963982705 +0100 -@@ -26,7 +26,6 @@ class CentOSFedoraBootstrapper( - # For CentOS 7, later versions of nodejs come from nodesource - # and include the npm package. - self.packages = [ -- 'autoconf213', - 'nodejs', - 'which', - ] -diff -up firefox-78.8.0/python/mozboot/mozboot/debian.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/debian.py ---- firefox-78.8.0/python/mozboot/mozboot/debian.py.D94538-autoconf2.diff 2021-02-25 13:53:04.963982705 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/debian.py 2021-02-25 13:53:42.874111415 +0100 -@@ -32,7 +32,6 @@ class DebianBootstrapper( - # These are common packages for all Debian-derived distros (such as - # Ubuntu). - COMMON_PACKAGES = [ -- 'autoconf2.13', - 'build-essential', - 'nodejs', - 'python-setuptools', -diff -up firefox-78.8.0/python/mozboot/mozboot/freebsd.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/freebsd.py ---- firefox-78.8.0/python/mozboot/mozboot/freebsd.py.D94538-autoconf2.diff 2021-02-17 08:49:42.000000000 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/freebsd.py 2021-02-25 13:53:04.963982705 +0100 -@@ -15,7 +15,6 @@ class FreeBSDBootstrapper(BaseBootstrapp - self.flavor = flavor.lower() - - self.packages = [ -- 'autoconf213', - 'gmake', - 'gtar', - 'pkgconf', -diff -up firefox-78.8.0/python/mozboot/mozboot/gentoo.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/gentoo.py ---- firefox-78.8.0/python/mozboot/mozboot/gentoo.py.D94538-autoconf2.diff 2021-02-17 08:49:38.000000000 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/gentoo.py 2021-02-25 13:53:04.963982705 +0100 -@@ -36,7 +36,6 @@ class GentooBootstrapper( - def ensure_system_packages(self): - self.run_as_root(['emerge', '--noreplace', '--quiet', - 'app-arch/zip', -- 'sys-devel/autoconf:2.1' - ]) - - def ensure_browser_packages(self, artifact_mode=False): -diff -up firefox-78.8.0/python/mozboot/mozboot/openbsd.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/openbsd.py ---- firefox-78.8.0/python/mozboot/mozboot/openbsd.py.D94538-autoconf2.diff 2021-02-17 08:49:15.000000000 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/openbsd.py 2021-02-25 13:53:04.964982709 +0100 -@@ -12,7 +12,6 @@ class OpenBSDBootstrapper(BaseBootstrapp - BaseBootstrapper.__init__(self, **kwargs) - - self.packages = [ -- 'autoconf-2.13', - 'gmake', - 'gtar', - 'rust', -diff -up firefox-78.8.0/python/mozboot/mozboot/opensuse.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/opensuse.py ---- firefox-78.8.0/python/mozboot/mozboot/opensuse.py.D94538-autoconf2.diff 2021-02-17 08:49:42.000000000 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/opensuse.py 2021-02-25 13:53:04.964982709 +0100 -@@ -13,7 +13,6 @@ class OpenSUSEBootstrapper( - '''openSUSE experimental bootstrapper.''' - - SYSTEM_PACKAGES = [ -- 'autoconf213', - 'nodejs', - 'npm', - 'which', -diff -up firefox-78.8.0/python/mozboot/mozboot/osx.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/osx.py ---- firefox-78.8.0/python/mozboot/mozboot/osx.py.D94538-autoconf2.diff 2021-02-25 13:53:04.964982709 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/osx.py 2021-02-25 13:54:07.162193882 +0100 -@@ -353,7 +353,6 @@ class OSXBootstrapper(BaseBootstrapper): - # least on 10.8) and because the build system wants a version - # newer than what Apple ships. - packages = [ -- 'autoconf@2.13', - 'git', - 'gnu-tar', - 'node', -@@ -428,7 +427,6 @@ class OSXBootstrapper(BaseBootstrapper): - 'python27', - 'python36', - 'py27-gnureadline', -- 'autoconf213', - 'gnutar', - 'watchman', - 'nodejs8' -diff -up firefox-78.8.0/python/mozboot/mozboot/solus.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/solus.py ---- firefox-78.8.0/python/mozboot/mozboot/solus.py.D94538-autoconf2.diff 2021-02-25 13:53:04.964982709 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/solus.py 2021-02-25 13:53:32.090074802 +0100 -@@ -23,7 +23,6 @@ class SolusBootstrapper( - '''Solus experimental bootstrapper.''' - - SYSTEM_PACKAGES = [ -- 'autoconf213', - 'nodejs', - 'python', - 'python3', -diff -up firefox-78.8.0/python/mozboot/mozboot/windows.py.D94538-autoconf2.diff firefox-78.8.0/python/mozboot/mozboot/windows.py ---- firefox-78.8.0/python/mozboot/mozboot/windows.py.D94538-autoconf2.diff 2021-02-17 08:49:34.000000000 +0100 -+++ firefox-78.8.0/python/mozboot/mozboot/windows.py 2021-02-25 13:53:04.978982756 +0100 -@@ -48,7 +48,6 @@ class WindowsBootstrapper(BaseBootstrapp - 'patch', - 'patchutils', - 'diffutils', -- 'autoconf2.13', - 'tar', - 'zip', - 'unzip', diff --git a/SOURCES/build-debuginfo-fix.patch b/SOURCES/build-debuginfo-fix.patch new file mode 100644 index 0000000..03fc300 --- /dev/null +++ b/SOURCES/build-debuginfo-fix.patch @@ -0,0 +1,24 @@ +diff -up firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc.debuginfo-fix firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc +--- firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc.debuginfo-fix 2021-09-01 11:11:46.738285751 +0200 ++++ firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft.cc 2021-09-01 11:11:56.127319530 +0200 +@@ -21,7 +21,7 @@ + * be found in the AUTHORS file in the root of the source tree. + */ + +-#include "modules/audio_processing//utility/ooura_fft.h" ++#include "modules/audio_processing/utility/ooura_fft.h" + + #include + +diff -up firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.debuginfo-fix firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc +--- firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.debuginfo-fix 2021-09-01 11:12:26.513428847 +0200 ++++ firefox-91.0.1/third_party/libwebrtc/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc 2021-09-01 11:12:32.117449009 +0200 +@@ -8,7 +8,7 @@ + * be found in the AUTHORS file in the root of the source tree. + */ + +-#include "modules/audio_processing//utility/ooura_fft.h" ++#include "modules/audio_processing/utility/ooura_fft.h" + + #include + diff --git a/SOURCES/build-icu-make.patch b/SOURCES/build-icu-make.patch deleted file mode 100644 index 6a04091..0000000 --- a/SOURCES/build-icu-make.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up firefox-68.8.0/intl/icu_sources_data.py.icu-makefile firefox-68.8.0/intl/icu_sources_data.py ---- firefox-68.8.0/intl/icu_sources_data.py.icu-makefile 2020-05-11 17:00:03.642605718 +0200 -+++ firefox-68.8.0/intl/icu_sources_data.py 2020-05-11 17:00:37.774642749 +0200 -@@ -246,8 +246,7 @@ def update_data_file(topsrcdir): - if not try_run( - 'icu-make', - ['make', -- '--jobs=%d' % multiprocessing.cpu_count(), -- '--output-sync'], -+ '--jobs=1'], - cwd=objdir): - return False - print('Copying ICU data file...') diff --git a/SOURCES/build-nss-version.patch b/SOURCES/build-nss-version.patch index 7847090..25d34f6 100644 --- a/SOURCES/build-nss-version.patch +++ b/SOURCES/build-nss-version.patch @@ -1,12 +1,24 @@ -diff -up firefox-68.3.0/old-configure.in.nss-version firefox-68.3.0/old-configure.in ---- firefox-68.3.0/old-configure.in.nss-version 2019-11-27 19:48:01.045677621 +0100 -+++ firefox-68.3.0/old-configure.in 2019-11-27 19:59:52.856894047 +0100 -@@ -1537,7 +1537,7 @@ MOZ_ARG_WITH_BOOL(system-nss, - _USE_SYSTEM_NSS=1 ) - - if test -n "$_USE_SYSTEM_NSS"; then -- AM_PATH_NSS(3.44.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) -+ AM_PATH_NSS(3.44.0, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])]) - fi - - NSS_CFLAGS="$NSS_CFLAGS -I${DIST}/include/nss" +diff -up firefox-91.0.1/build/moz.configure/nspr.configure.nss-nspr-downgrade firefox-91.0.1/build/moz.configure/nspr.configure +--- firefox-91.0.1/build/moz.configure/nspr.configure.nss-nspr-downgrade 2021-08-25 13:17:26.265307060 +0200 ++++ firefox-91.0.1/build/moz.configure/nspr.configure 2021-08-25 13:17:28.161313632 +0200 +@@ -50,7 +50,7 @@ set_define("JS_WITHOUT_NSPR", True, when + def nspr_minver(js_standalone): + if js_standalone: + return "nspr >= 4.10" +- return "nspr >= 4.32" ++ return "nspr >= 4.31" + + + nspr_pkg = pkg_check_modules("NSPR", nspr_minver, when="--with-system-nspr") +diff -up firefox-91.0.1/build/moz.configure/nss.configure.nss-nspr-downgrade firefox-91.0.1/build/moz.configure/nss.configure +--- firefox-91.0.1/build/moz.configure/nss.configure.nss-nspr-downgrade 2021-08-25 13:17:45.049372175 +0200 ++++ firefox-91.0.1/build/moz.configure/nss.configure 2021-08-25 13:17:37.763346918 +0200 +@@ -9,7 +9,7 @@ option("--with-system-nss", help="Use sy + imply_option("--with-system-nspr", True, when="--with-system-nss") + + nss_pkg = pkg_check_modules( +- "NSS", "nss >= 3.68", when="--with-system-nss", config=False ++ "NSS", "nss >= 3.67", when="--with-system-nss", config=False + ) + + set_config("MOZ_SYSTEM_NSS", True, when="--with-system-nss") diff --git a/SOURCES/build-rhel7-nasm-dwarf.patch b/SOURCES/build-rhel7-nasm-dwarf.patch new file mode 100644 index 0000000..5e2ba4a --- /dev/null +++ b/SOURCES/build-rhel7-nasm-dwarf.patch @@ -0,0 +1,12 @@ +diff -up firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py +--- firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py.rhel7-nasm 2021-08-31 08:02:10.814740774 +0200 ++++ firefox-91.0.1/python/mozbuild/mozbuild/frontend/context.py 2021-08-31 08:04:03.967146994 +0200 +@@ -420,7 +420,7 @@ class AsmFlags(BaseCompileFlags): + if self._context.config.substs.get("OS_ARCH") == "WINNT": + debug_flags += ["-F", "cv8"] + elif self._context.config.substs.get("OS_ARCH") != "Darwin": +- debug_flags += ["-F", "dwarf"] ++ debug_flags += ["-f", "elf32"] + elif ( + self._context.config.substs.get("OS_ARCH") == "WINNT" + and self._context.config.substs.get("CPU_ARCH") == "aarch64" diff --git a/SOURCES/fedora-shebang-build.patch b/SOURCES/fedora-shebang-build.patch deleted file mode 100644 index 9ade86c..0000000 --- a/SOURCES/fedora-shebang-build.patch +++ /dev/null @@ -1,9 +0,0 @@ -diff -up firefox-73.0/build/unix/run-mozilla.sh.old firefox-73.0/build/unix/run-mozilla.sh ---- firefox-73.0/build/unix/run-mozilla.sh.old 2020-02-12 09:58:00.150895904 +0100 -+++ firefox-73.0/build/unix/run-mozilla.sh 2020-02-12 09:58:06.505860696 +0100 -@@ -1,4 +1,4 @@ --#!/bin/sh -+#!/usr/bin/sh - # - # This Source Code Form is subject to the terms of the Mozilla Public - # License, v. 2.0. If a copy of the MPL was not distributed with this diff --git a/SOURCES/firefox-debugedits-error.patch b/SOURCES/firefox-debugedits-error.patch deleted file mode 100644 index a4b005f..0000000 --- a/SOURCES/firefox-debugedits-error.patch +++ /dev/null @@ -1,50 +0,0 @@ -diff -up firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-68.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium -diff -up firefox-68.0/media/webrtc/trunk/Makefile.old firefox-68.0/media/webrtc/trunk/Makefile -diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc.old firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc ---- firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc.old 2019-06-12 08:17:02.673268442 +0200 -+++ firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft.cc 2019-06-12 08:17:13.582328073 +0200 -@@ -21,7 +21,7 @@ - * be found in the AUTHORS file in the root of the source tree. - */ - --#include "modules/audio_processing//utility/ooura_fft.h" -+#include "modules/audio_processing/utility/ooura_fft.h" - - #include - -diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.old firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc ---- firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc.old 2019-06-12 08:17:36.671454285 +0200 -+++ firefox-68.0/media/webrtc/trunk/webrtc/modules/audio_processing/utility/ooura_fft_sse2.cc 2019-06-12 08:17:46.989510679 +0200 -@@ -8,7 +8,7 @@ - * be found in the AUTHORS file in the root of the source tree. - */ - --#include "modules/audio_processing//utility/ooura_fft.h" -+#include "modules/audio_processing/utility/ooura_fft.h" - - #include - -diff -up firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c.old firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c ---- firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c.old 2019-06-12 08:16:15.673011534 +0200 -+++ firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_avx2.c 2019-06-12 08:16:22.602049410 +0200 -@@ -17,7 +17,7 @@ - #include "aom_dsp/blend.h" - #include "aom/aom_integer.h" - #include "aom_dsp/x86/synonyms.h" --#include "aom_dsp/x86//masked_sad_intrin_ssse3.h" -+#include "aom_dsp/x86/masked_sad_intrin_ssse3.h" - - static INLINE unsigned int masked_sad32xh_avx2( - const uint8_t *src_ptr, int src_stride, const uint8_t *a_ptr, int a_stride, -diff -up firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c.old firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c ---- firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c.old 2019-06-12 08:16:35.404119384 +0200 -+++ firefox-68.0/third_party/aom/aom_dsp/x86/masked_sad_intrin_ssse3.c 2019-06-12 08:16:43.415163174 +0200 -@@ -19,7 +19,7 @@ - #include "aom/aom_integer.h" - #include "aom_dsp/x86/synonyms.h" - --#include "aom_dsp/x86//masked_sad_intrin_ssse3.h" -+#include "aom_dsp/x86/masked_sad_intrin_ssse3.h" - - // For width a multiple of 16 - static INLINE unsigned int masked_sad_ssse3(const uint8_t *src_ptr, diff --git a/SOURCES/firefox-glibc-dynstack.patch b/SOURCES/firefox-glibc-dynstack.patch deleted file mode 100644 index 46bec9b..0000000 --- a/SOURCES/firefox-glibc-dynstack.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff -up firefox-78.12.0/js/xpconnect/src/XPCJSContext.cpp.firefox-glibc-dynstack firefox-78.12.0/js/xpconnect/src/XPCJSContext.cpp ---- firefox-78.12.0/js/xpconnect/src/XPCJSContext.cpp.firefox-glibc-dynstack 2021-07-06 21:50:42.000000000 +0200 -+++ firefox-78.12.0/js/xpconnect/src/XPCJSContext.cpp 2021-08-02 10:26:47.996760110 +0200 -@@ -81,14 +81,6 @@ using namespace xpc; - using namespace JS; - using mozilla::dom::AutoEntryScript; - --// The watchdog thread loop is pretty trivial, and should not require much stack --// space to do its job. So only give it 32KiB or the platform minimum. --#if !defined(PTHREAD_STACK_MIN) --# define PTHREAD_STACK_MIN 0 --#endif --static constexpr size_t kWatchdogStackSize = -- PTHREAD_STACK_MIN < 32 * 1024 ? 32 * 1024 : PTHREAD_STACK_MIN; -- - static void WatchdogMain(void* arg); - class Watchdog; - class WatchdogManager; -@@ -161,7 +153,7 @@ class Watchdog { - // watchdog, we need to join it on shutdown. - mThread = PR_CreateThread(PR_USER_THREAD, WatchdogMain, this, - PR_PRIORITY_NORMAL, PR_GLOBAL_THREAD, -- PR_JOINABLE_THREAD, kWatchdogStackSize); -+ PR_JOINABLE_THREAD, 0); - if (!mThread) { - MOZ_CRASH("PR_CreateThread failed!"); - } -diff -up firefox-78.12.0/security/sandbox/linux/launch/SandboxLaunch.cpp.firefox-glibc-dynstack firefox-78.12.0/security/sandbox/linux/launch/SandboxLaunch.cpp ---- firefox-78.12.0/security/sandbox/linux/launch/SandboxLaunch.cpp.firefox-glibc-dynstack 2021-07-06 21:50:46.000000000 +0200 -+++ firefox-78.12.0/security/sandbox/linux/launch/SandboxLaunch.cpp 2021-08-02 10:28:48.832946590 +0200 -@@ -489,7 +489,8 @@ static int CloneCallee(void* aPtr) { - // we don't currently support sandboxing under valgrind. - MOZ_NEVER_INLINE MOZ_ASAN_BLACKLIST static pid_t DoClone(int aFlags, - jmp_buf* aCtx) { -- uint8_t miniStack[PTHREAD_STACK_MIN]; -+ static constexpr size_t kStackAlignment = 16; -+ uint8_t miniStack[4096] __attribute__((aligned(kStackAlignment))); - #ifdef __hppa__ - void* stackPtr = miniStack; - #else -@@ -510,13 +511,19 @@ static pid_t ForkWithFlags(int aFlags) { - CLONE_CHILD_CLEARTID; - MOZ_RELEASE_ASSERT((aFlags & kBadFlags) == 0); - -+ // Block signals due to small stack in DoClone. -+ sigset_t oldSigs; -+ BlockAllSignals(&oldSigs); -+ -+ int ret = 0; - jmp_buf ctx; - if (setjmp(ctx) == 0) { - // In the parent and just called setjmp: -- return DoClone(aFlags | SIGCHLD, &ctx); -+ ret = DoClone(aFlags | SIGCHLD, &ctx); - } -+ RestoreSignals(&oldSigs); - // In the child and have longjmp'ed: -- return 0; -+ return ret; - } - - static bool WriteStringToFile(const char* aPath, const char* aStr, diff --git a/SOURCES/firefox-pipewire-0-3.patch b/SOURCES/firefox-pipewire-0-3.patch deleted file mode 100644 index 0844209..0000000 --- a/SOURCES/firefox-pipewire-0-3.patch +++ /dev/null @@ -1,846 +0,0 @@ -diff --git a/config/system-headers.mozbuild b/config/system-headers.mozbuild -index 2081d0c683a4..641133bf1ea4 100644 ---- a/config/system-headers.mozbuild -+++ b/config/system-headers.mozbuild -@@ -314,6 +314,7 @@ system_headers = [ - 'Gestalt.h', - 'getopt.h', - 'gio/gio.h', -+ 'gio/gunixfdlist.h', - 'glibconfig.h', - 'glib.h', - 'glib-object.h', -@@ -607,6 +608,7 @@ system_headers = [ - 'Pgenerr.h', - 'PGenErr.h', - 'Ph.h', -+ 'pipewire/pipewire.h', - 'pixman.h', - 'pk11func.h', - 'pk11pqg.h', -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn -index ba885217b3ba..201d3b755221 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn -@@ -158,7 +158,7 @@ if (rtc_include_tests) { - if (is_linux) { - if (rtc_use_pipewire) { - pkg_config("pipewire") { -- packages = [ "libpipewire-0.2" ] -+ packages = [ "libpipewire-0.3" ] - - defines = [ "WEBRTC_USE_PIPEWIRE" ] - } -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build -index 90b40431c7e4..d844aa79d591 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build -@@ -194,6 +194,30 @@ if CONFIG["OS_TARGET"] == "Linux": - "/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc" - ] - -+# PipeWire specific files -+if CONFIG["OS_TARGET"] == "Linux": -+ -+ DEFINES["WEBRTC_USE_PIPEWIRE"] = "1" -+ -+ OS_LIBS += [ -+ "rt", -+ "pipewire-0.3", -+ "glib-2.0", -+ "gio-2.0", -+ "gobject-2.0" -+ ] -+ -+ CXXFLAGS += CONFIG['TK_CFLAGS'] -+ CXXFLAGS += [ "-I/usr/include/pipewire-0.3" ] -+ CXXFLAGS += [ "-I/usr/include/spa-0.2" ] -+ -+ UNIFIED_SOURCES += [ -+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc", -+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc", -+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc" -+ ] -+ -+ - if CONFIG["OS_TARGET"] == "NetBSD": - - DEFINES["USE_X11"] = "1" -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h -index 1eb8ead26efa..316468eed1fc 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h -@@ -141,7 +141,7 @@ class DesktopCaptureOptions { - bool disable_effects_ = true; - bool detect_updated_region_ = false; - #if defined(WEBRTC_USE_PIPEWIRE) -- bool allow_pipewire_ = false; -+ bool allow_pipewire_ = true; - #endif - }; - -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc -index 379341c833de..76349f1fbd4d 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc -@@ -15,8 +15,11 @@ - - #include - #include --#include --#include -+ -+#include -+#include -+#include -+#include - - #include - #include -@@ -36,31 +39,36 @@ const char kSessionInterfaceName[] = "org.freedesktop.portal.Session"; - const char kRequestInterfaceName[] = "org.freedesktop.portal.Request"; - const char kScreenCastInterfaceName[] = "org.freedesktop.portal.ScreenCast"; - --// static --void BaseCapturerPipeWire::OnStateChanged(void* data, -- pw_remote_state old_state, -- pw_remote_state state, -- const char* error_message) { -- BaseCapturerPipeWire* that = static_cast(data); -- RTC_DCHECK(that); - -- switch (state) { -- case PW_REMOTE_STATE_ERROR: -- RTC_LOG(LS_ERROR) << "PipeWire remote state error: " << error_message; -- break; -- case PW_REMOTE_STATE_CONNECTED: -- RTC_LOG(LS_INFO) << "PipeWire remote state: connected."; -- that->CreateReceivingStream(); -- break; -- case PW_REMOTE_STATE_CONNECTING: -- RTC_LOG(LS_INFO) << "PipeWire remote state: connecting."; -+// static -+void BaseCapturerPipeWire::SyncDmaBuf(int fd, uint64_t start_or_end) { -+ struct dma_buf_sync sync = { 0 }; -+ -+ sync.flags = start_or_end | DMA_BUF_SYNC_READ; -+ -+ while(true) { -+ int ret; -+ ret = ioctl (fd, DMA_BUF_IOCTL_SYNC, &sync); -+ if (ret == -1 && errno == EINTR) { -+ continue; -+ } else if (ret == -1) { -+ RTC_LOG(LS_ERROR) << "Failed to synchronize DMA buffer: " << g_strerror(errno); - break; -- case PW_REMOTE_STATE_UNCONNECTED: -- RTC_LOG(LS_INFO) << "PipeWire remote state: unconnected."; -+ } else { - break; -+ } - } - } - -+// static -+void BaseCapturerPipeWire::OnCoreError(void *data, -+ uint32_t id, -+ int seq, -+ int res, -+ const char *message) { -+ RTC_LOG(LS_ERROR) << "core error: " << message; -+} -+ - // static - void BaseCapturerPipeWire::OnStreamStateChanged(void* data, - pw_stream_state old_state, -@@ -73,76 +81,54 @@ void BaseCapturerPipeWire::OnStreamStateChanged(void* data, - case PW_STREAM_STATE_ERROR: - RTC_LOG(LS_ERROR) << "PipeWire stream state error: " << error_message; - break; -- case PW_STREAM_STATE_CONFIGURE: -- pw_stream_set_active(that->pw_stream_, true); -- break; -- case PW_STREAM_STATE_UNCONNECTED: -- case PW_STREAM_STATE_CONNECTING: -- case PW_STREAM_STATE_READY: - case PW_STREAM_STATE_PAUSED: - case PW_STREAM_STATE_STREAMING: -+ case PW_STREAM_STATE_UNCONNECTED: -+ case PW_STREAM_STATE_CONNECTING: - break; - } - } - - // static --void BaseCapturerPipeWire::OnStreamFormatChanged(void* data, -- const struct spa_pod* format) { -+void BaseCapturerPipeWire::OnStreamParamChanged(void *data, uint32_t id, -+ const struct spa_pod *format) { - BaseCapturerPipeWire* that = static_cast(data); - RTC_DCHECK(that); - -- RTC_LOG(LS_INFO) << "PipeWire stream format changed."; -+ RTC_LOG(LS_INFO) << "PipeWire stream param changed."; - -- if (!format) { -- pw_stream_finish_format(that->pw_stream_, /*res=*/0, /*params=*/nullptr, -- /*n_params=*/0); -+ if (!format || id != SPA_PARAM_Format) { - return; - } - -- that->spa_video_format_ = new spa_video_info_raw(); -- spa_format_video_raw_parse(format, that->spa_video_format_, -- &that->pw_type_->format_video); -+ spa_format_video_raw_parse(format, &that->spa_video_format_); - -- auto width = that->spa_video_format_->size.width; -- auto height = that->spa_video_format_->size.height; -+ auto width = that->spa_video_format_.size.width; -+ auto height = that->spa_video_format_.size.height; - auto stride = SPA_ROUND_UP_N(width * kBytesPerPixel, 4); - auto size = height * stride; - -+ that->desktop_size_ = DesktopSize(width, height); -+ - uint8_t buffer[1024] = {}; - auto builder = spa_pod_builder{buffer, sizeof(buffer)}; - - // Setup buffers and meta header for new format. -- const struct spa_pod* params[2]; -- params[0] = reinterpret_cast(spa_pod_builder_object( -- &builder, -- // id to enumerate buffer requirements -- that->pw_core_type_->param.idBuffers, -- that->pw_core_type_->param_buffers.Buffers, -- // Size: specified as integer (i) and set to specified size -- ":", that->pw_core_type_->param_buffers.size, "i", size, -- // Stride: specified as integer (i) and set to specified stride -- ":", that->pw_core_type_->param_buffers.stride, "i", stride, -- // Buffers: specifies how many buffers we want to deal with, set as -- // integer (i) where preferred number is 8, then allowed number is defined -- // as range (r) from min and max values and it is undecided (u) to allow -- // negotiation -- ":", that->pw_core_type_->param_buffers.buffers, "iru", 8, -- SPA_POD_PROP_MIN_MAX(1, 32), -- // Align: memory alignment of the buffer, set as integer (i) to specified -- // value -- ":", that->pw_core_type_->param_buffers.align, "i", 16)); -- params[1] = reinterpret_cast(spa_pod_builder_object( -- &builder, -- // id to enumerate supported metadata -- that->pw_core_type_->param.idMeta, that->pw_core_type_->param_meta.Meta, -- // Type: specified as id or enum (I) -- ":", that->pw_core_type_->param_meta.type, "I", -- that->pw_core_type_->meta.Header, -- // Size: size of the metadata, specified as integer (i) -- ":", that->pw_core_type_->param_meta.size, "i", -- sizeof(struct spa_meta_header))); -- -- pw_stream_finish_format(that->pw_stream_, /*res=*/0, params, /*n_params=*/2); -+ const struct spa_pod* params[3]; -+ params[0] = reinterpret_cast(spa_pod_builder_add_object(&builder, -+ SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers, -+ SPA_PARAM_BUFFERS_size, SPA_POD_Int(size), -+ SPA_PARAM_BUFFERS_stride, SPA_POD_Int(stride), -+ SPA_PARAM_BUFFERS_buffers, SPA_POD_CHOICE_RANGE_Int(8, 1, 32))); -+ params[1] = reinterpret_cast(spa_pod_builder_add_object(&builder, -+ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, -+ SPA_PARAM_META_type, SPA_POD_Id(SPA_META_Header), -+ SPA_PARAM_META_size, SPA_POD_Int(sizeof(struct spa_meta_header)))); -+ params[2] = reinterpret_cast(spa_pod_builder_add_object(&builder, -+ SPA_TYPE_OBJECT_ParamMeta, SPA_PARAM_Meta, -+ SPA_PARAM_META_type, SPA_POD_Id (SPA_META_VideoCrop), -+ SPA_PARAM_META_size, SPA_POD_Int (sizeof(struct spa_meta_region)))); -+ pw_stream_update_params(that->pw_stream_, params, 3); - } - - // static -@@ -150,15 +136,25 @@ void BaseCapturerPipeWire::OnStreamProcess(void* data) { - BaseCapturerPipeWire* that = static_cast(data); - RTC_DCHECK(that); - -- pw_buffer* buf = nullptr; -+ struct pw_buffer *next_buffer; -+ struct pw_buffer *buffer = nullptr; -+ -+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_); -+ while (next_buffer) { -+ buffer = next_buffer; -+ next_buffer = pw_stream_dequeue_buffer(that->pw_stream_); - -- if (!(buf = pw_stream_dequeue_buffer(that->pw_stream_))) { -+ if (next_buffer) -+ pw_stream_queue_buffer (that->pw_stream_, buffer); -+ } -+ -+ if (!buffer) { - return; - } - -- that->HandleBuffer(buf); -+ that->HandleBuffer(buffer); - -- pw_stream_queue_buffer(that->pw_stream_, buf); -+ pw_stream_queue_buffer(that->pw_stream_, buffer); - } - - BaseCapturerPipeWire::BaseCapturerPipeWire(CaptureSourceType source_type) -@@ -169,38 +165,22 @@ BaseCapturerPipeWire::~BaseCapturerPipeWire() { - pw_thread_loop_stop(pw_main_loop_); - } - -- if (pw_type_) { -- delete pw_type_; -- } -- -- if (spa_video_format_) { -- delete spa_video_format_; -- } -- - if (pw_stream_) { - pw_stream_destroy(pw_stream_); - } - -- if (pw_remote_) { -- pw_remote_destroy(pw_remote_); -+ if (pw_core_) { -+ pw_core_disconnect(pw_core_); - } - -- if (pw_core_) { -- pw_core_destroy(pw_core_); -+ if (pw_context_) { -+ pw_context_destroy(pw_context_); - } - - if (pw_main_loop_) { - pw_thread_loop_destroy(pw_main_loop_); - } - -- if (pw_loop_) { -- pw_loop_destroy(pw_loop_); -- } -- -- if (current_frame_) { -- free(current_frame_); -- } -- - if (start_request_signal_id_) { - g_dbus_connection_signal_unsubscribe(connection_, start_request_signal_id_); - } -@@ -250,27 +230,35 @@ void BaseCapturerPipeWire::InitPortal() { - void BaseCapturerPipeWire::InitPipeWire() { - pw_init(/*argc=*/nullptr, /*argc=*/nullptr); - -- pw_loop_ = pw_loop_new(/*properties=*/nullptr); -- pw_main_loop_ = pw_thread_loop_new(pw_loop_, "pipewire-main-loop"); -- -- pw_core_ = pw_core_new(pw_loop_, /*properties=*/nullptr); -- pw_core_type_ = pw_core_get_type(pw_core_); -- pw_remote_ = pw_remote_new(pw_core_, nullptr, /*user_data_size=*/0); -+ pw_main_loop_ = pw_thread_loop_new("pipewire-main-loop", nullptr); -+ pw_context_ = pw_context_new(pw_thread_loop_get_loop(pw_main_loop_), nullptr, 0); -+ if (!pw_context_) { -+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire context"; -+ return; -+ } - -- InitPipeWireTypes(); -+ pw_core_ = pw_context_connect(pw_context_, nullptr, 0); -+ if (!pw_core_) { -+ RTC_LOG(LS_ERROR) << "Failed to connect PipeWire context"; -+ return; -+ } - - // Initialize event handlers, remote end and stream-related. -- pw_remote_events_.version = PW_VERSION_REMOTE_EVENTS; -- pw_remote_events_.state_changed = &OnStateChanged; -+ pw_core_events_.version = PW_VERSION_CORE_EVENTS; -+ pw_core_events_.error = &OnCoreError; - - pw_stream_events_.version = PW_VERSION_STREAM_EVENTS; - pw_stream_events_.state_changed = &OnStreamStateChanged; -- pw_stream_events_.format_changed = &OnStreamFormatChanged; -+ pw_stream_events_.param_changed = &OnStreamParamChanged; - pw_stream_events_.process = &OnStreamProcess; - -- pw_remote_add_listener(pw_remote_, &spa_remote_listener_, &pw_remote_events_, -- this); -- pw_remote_connect_fd(pw_remote_, pw_fd_); -+ pw_core_add_listener(pw_core_, &spa_core_listener_, &pw_core_events_, this); -+ -+ pw_stream_ = CreateReceivingStream(); -+ if (!pw_stream_) { -+ RTC_LOG(LS_ERROR) << "Failed to create PipeWire stream"; -+ return; -+ } - - if (pw_thread_loop_start(pw_main_loop_) < 0) { - RTC_LOG(LS_ERROR) << "Failed to start main PipeWire loop"; -@@ -278,81 +266,132 @@ void BaseCapturerPipeWire::InitPipeWire() { - } - } - --void BaseCapturerPipeWire::InitPipeWireTypes() { -- spa_type_map* map = pw_core_type_->map; -- pw_type_ = new PipeWireType(); -- -- spa_type_media_type_map(map, &pw_type_->media_type); -- spa_type_media_subtype_map(map, &pw_type_->media_subtype); -- spa_type_format_video_map(map, &pw_type_->format_video); -- spa_type_video_format_map(map, &pw_type_->video_format); --} -- --void BaseCapturerPipeWire::CreateReceivingStream() { -+pw_stream* BaseCapturerPipeWire::CreateReceivingStream() { - spa_rectangle pwMinScreenBounds = spa_rectangle{1, 1}; -- spa_rectangle pwScreenBounds = -- spa_rectangle{static_cast(desktop_size_.width()), -- static_cast(desktop_size_.height())}; -+ spa_rectangle pwMaxScreenBounds = spa_rectangle{INT32_MAX, INT32_MAX}; - -- spa_fraction pwFrameRateMin = spa_fraction{0, 1}; -- spa_fraction pwFrameRateMax = spa_fraction{60, 1}; -+ auto stream = pw_stream_new(pw_core_, "webrtc-pipewire-stream", nullptr); - -- pw_properties* reuseProps = pw_properties_new("pipewire.client.reuse", "1", -- /*end of varargs*/ nullptr); -- pw_stream_ = pw_stream_new(pw_remote_, "webrtc-consume-stream", reuseProps); -+ if (!stream) { -+ RTC_LOG(LS_ERROR) << "Could not create receiving stream."; -+ return nullptr; -+ } - - uint8_t buffer[1024] = {}; -- const spa_pod* params[1]; -- spa_pod_builder builder = spa_pod_builder{buffer, sizeof(buffer)}; -- params[0] = reinterpret_cast(spa_pod_builder_object( -- &builder, -- // id to enumerate formats -- pw_core_type_->param.idEnumFormat, pw_core_type_->spa_format, "I", -- pw_type_->media_type.video, "I", pw_type_->media_subtype.raw, -- // Video format: specified as id or enum (I), preferred format is BGRx, -- // then allowed formats are enumerated (e) and the format is undecided (u) -- // to allow negotiation -- ":", pw_type_->format_video.format, "Ieu", pw_type_->video_format.BGRx, -- SPA_POD_PROP_ENUM(2, pw_type_->video_format.RGBx, -- pw_type_->video_format.BGRx), -- // Video size: specified as rectangle (R), preferred size is specified as -- // first parameter, then allowed size is defined as range (r) from min and -- // max values and the format is undecided (u) to allow negotiation -- ":", pw_type_->format_video.size, "Rru", &pwScreenBounds, 2, -- &pwMinScreenBounds, &pwScreenBounds, -- // Frame rate: specified as fraction (F) and set to minimum frame rate -- // value -- ":", pw_type_->format_video.framerate, "F", &pwFrameRateMin, -- // Max frame rate: specified as fraction (F), preferred frame rate is set -- // to maximum value, then allowed frame rate is defined as range (r) from -- // min and max values and it is undecided (u) to allow negotiation -- ":", pw_type_->format_video.max_framerate, "Fru", &pwFrameRateMax, 2, -- &pwFrameRateMin, &pwFrameRateMax)); -- -- pw_stream_add_listener(pw_stream_, &spa_stream_listener_, &pw_stream_events_, -- this); -+ const spa_pod* params[2]; -+ spa_pod_builder builder = SPA_POD_BUILDER_INIT(buffer, sizeof (buffer)); -+ -+ params[0] = reinterpret_cast(spa_pod_builder_add_object(&builder, -+ SPA_TYPE_OBJECT_Format, SPA_PARAM_EnumFormat, -+ SPA_FORMAT_mediaType, SPA_POD_Id(SPA_MEDIA_TYPE_video), -+ SPA_FORMAT_mediaSubtype, SPA_POD_Id(SPA_MEDIA_SUBTYPE_raw), -+ SPA_FORMAT_VIDEO_format, SPA_POD_CHOICE_ENUM_Id(5, SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_RGBx, SPA_VIDEO_FORMAT_RGBA, -+ SPA_VIDEO_FORMAT_BGRx, SPA_VIDEO_FORMAT_BGRA), -+ SPA_FORMAT_VIDEO_size, SPA_POD_CHOICE_RANGE_Rectangle(&pwMinScreenBounds, -+ &pwMinScreenBounds, -+ &pwMaxScreenBounds), -+ 0)); -+ pw_stream_add_listener(stream, &spa_stream_listener_, &pw_stream_events_, this); -+ - pw_stream_flags flags = static_cast( -- PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE | -- PW_STREAM_FLAG_MAP_BUFFERS); -- if (pw_stream_connect(pw_stream_, PW_DIRECTION_INPUT, /*port_path=*/nullptr, -- flags, params, -- /*n_params=*/1) != 0) { -+ PW_STREAM_FLAG_AUTOCONNECT | PW_STREAM_FLAG_INACTIVE); -+ -+ if (pw_stream_connect(stream, PW_DIRECTION_INPUT, pw_stream_node_id_, PW_STREAM_FLAG_AUTOCONNECT, params, 1) != 0) { - RTC_LOG(LS_ERROR) << "Could not connect receiving stream."; - portal_init_failed_ = true; -- return; - } -+ -+ return stream; - } - - void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) { -+ struct spa_meta_region* video_crop; - spa_buffer* spaBuffer = buffer->buffer; -- void* src = nullptr; -+ uint8_t *map = nullptr; -+ uint8_t* src = nullptr; -+ uint8_t* dst = nullptr; -+ -+ if (spaBuffer->datas[0].chunk->size == 0) { -+ map = nullptr; -+ src = nullptr; -+ } else if (spaBuffer->datas[0].type == SPA_DATA_MemFd) { -+ map = static_cast(mmap( -+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset, -+ PROT_READ, MAP_PRIVATE, spaBuffer->datas[0].fd, 0)); -+ -+ if (map == MAP_FAILED) { -+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno); -+ return; -+ } -+ -+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t); -+ } else if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) { -+ int fd; -+ fd = spaBuffer->datas[0].fd; - -- if (!(src = spaBuffer->datas[0].data)) { -+ map = static_cast(mmap( -+ nullptr, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset, -+ PROT_READ, MAP_PRIVATE, fd, 0)); -+ -+ if (map == MAP_FAILED) { -+ RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno); -+ return; -+ } -+ -+ SyncDmaBuf(fd, DMA_BUF_SYNC_START); -+ -+ src = SPA_MEMBER(map, spaBuffer->datas[0].mapoffset, uint8_t); -+ } else if (spaBuffer->datas[0].type == SPA_DATA_MemPtr) { -+ map = nullptr; -+ src = static_cast(spaBuffer->datas[0].data); -+ } else { - return; - } - -- uint32_t maxSize = spaBuffer->datas[0].maxsize; -- int32_t srcStride = spaBuffer->datas[0].chunk->stride; -+ if (!src) { -+ return; -+ } -+ -+ DesktopSize prev_crop_size = DesktopSize(0, 0); -+ if (video_crop_size_initialized_) { -+ prev_crop_size = video_crop_size_; -+ } -+ -+ if ((video_crop = static_cast( -+ spa_buffer_find_meta_data(spaBuffer, SPA_META_VideoCrop, sizeof(*video_crop))))) { -+ RTC_DCHECK(video_crop->region.size.width <= desktop_size_.width() && -+ video_crop->region.size.height <= desktop_size_.height()); -+ if ((video_crop->region.size.width != desktop_size_.width() || -+ video_crop->region.size.height != desktop_size_.height()) && video_crop->region.size.width && video_crop->region.size.height) { -+ video_crop_size_ = DesktopSize(video_crop->region.size.width, video_crop->region.size.height); -+ video_crop_size_initialized_ = true; -+ } else { -+ video_crop_size_initialized_ = false; -+ } -+ } else { -+ video_crop_size_initialized_ = false; -+ } -+ -+ size_t frame_size; -+ if (video_crop_size_initialized_) { -+ frame_size = -+ video_crop_size_.width() * video_crop_size_.height() * kBytesPerPixel; -+ } else { -+ frame_size = -+ desktop_size_.width() * desktop_size_.height() * kBytesPerPixel; -+ } -+ -+ if (!current_frame_ || -+ (video_crop_size_initialized_ && !video_crop_size_.equals(prev_crop_size))) { -+ current_frame_ = std::make_unique(frame_size); -+ } -+ RTC_DCHECK(current_frame_ != nullptr); -+ -+ const int32_t dstStride = video_crop_size_initialized_ -+ ? video_crop_size_.width() * kBytesPerPixel -+ : desktop_size_.width() * kBytesPerPixel; -+ const int32_t srcStride = spaBuffer->datas[0].chunk->stride; -+ - if (srcStride != (desktop_size_.width() * kBytesPerPixel)) { - RTC_LOG(LS_ERROR) << "Got buffer with stride different from screen stride: " - << srcStride -@@ -361,21 +400,40 @@ void BaseCapturerPipeWire::HandleBuffer(pw_buffer* buffer) { - return; - } - -- if (!current_frame_) { -- current_frame_ = static_cast(malloc(maxSize)); -+ dst = current_frame_.get(); -+ -+ // Adjust source content based on crop video position -+ if (video_crop_size_initialized_ && -+ (video_crop->region.position.y + video_crop_size_.height() <= desktop_size_.height())) { -+ for (int i = 0; i < video_crop->region.position.y; ++i) { -+ src += srcStride; -+ } -+ } -+ const int xOffset = -+ video_crop_size_initialized_ && (video_crop->region.position.x + video_crop_size_.width() <= -+ desktop_size_.width()) -+ ? video_crop->region.position.x * kBytesPerPixel -+ : 0; -+ const int height = video_crop_size_initialized_ ? video_crop_size_.height() : desktop_size_.height(); -+ for (int i = 0; i < height; ++i) { -+ // Adjust source content based on crop video position if needed -+ src += xOffset; -+ std::memcpy(dst, src, dstStride); -+ // If both sides decided to go with the RGBx format we need to convert it to -+ // BGRx to match color format expected by WebRTC. -+ if (spa_video_format_.format == SPA_VIDEO_FORMAT_RGBx || -+ spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) { -+ ConvertRGBxToBGRx(dst, dstStride); -+ } -+ src += srcStride - xOffset; -+ dst += dstStride; - } -- RTC_DCHECK(current_frame_ != nullptr); - -- // If both sides decided to go with the RGBx format we need to convert it to -- // BGRx to match color format expected by WebRTC. -- if (spa_video_format_->format == pw_type_->video_format.RGBx) { -- uint8_t* tempFrame = static_cast(malloc(maxSize)); -- std::memcpy(tempFrame, src, maxSize); -- ConvertRGBxToBGRx(tempFrame, maxSize); -- std::memcpy(current_frame_, tempFrame, maxSize); -- free(tempFrame); -- } else { -- std::memcpy(current_frame_, src, maxSize); -+ if (map) { -+ if (spaBuffer->datas[0].type == SPA_DATA_DmaBuf) { -+ SyncDmaBuf(spaBuffer->datas[0].fd, DMA_BUF_SYNC_END); -+ } -+ munmap(map, spaBuffer->datas[0].maxsize + spaBuffer->datas[0].mapoffset); - } - } - -@@ -725,10 +783,7 @@ void BaseCapturerPipeWire::OnStartRequestResponseSignal( - g_variant_get(variant, "(u@a{sv})", &stream_id, &options); - RTC_DCHECK(options != nullptr); - -- g_variant_lookup(options, "size", "(ii)", &width, &height); -- -- that->desktop_size_.set(width, height); -- -+ that->pw_stream_node_id_ = stream_id; - g_variant_unref(options); - g_variant_unref(variant); - } -@@ -813,10 +868,15 @@ void BaseCapturerPipeWire::CaptureFrame() { - return; - } - -- std::unique_ptr result(new BasicDesktopFrame(desktop_size_)); -+ DesktopSize frame_size = desktop_size_; -+ if (video_crop_size_initialized_) { -+ frame_size = video_crop_size_; -+ } -+ -+ std::unique_ptr result(new BasicDesktopFrame(frame_size)); - result->CopyPixelsFrom( -- current_frame_, (desktop_size_.width() * kBytesPerPixel), -- DesktopRect::MakeWH(desktop_size_.width(), desktop_size_.height())); -+ current_frame_.get(), (frame_size.width() * kBytesPerPixel), -+ DesktopRect::MakeWH(frame_size.width(), frame_size.height())); - if (!result) { - callback_->OnCaptureResult(Result::ERROR_TEMPORARY, nullptr); - return; -@@ -837,4 +897,22 @@ bool BaseCapturerPipeWire::SelectSource(SourceId id) { - return true; - } - -+// static -+std::unique_ptr -+BaseCapturerPipeWire::CreateRawScreenCapturer( -+ const DesktopCaptureOptions& options) { -+ std::unique_ptr capturer = -+ std::make_unique(BaseCapturerPipeWire::CaptureSourceType::kAny); -+ return std::move(capturer);} -+ -+// static -+std::unique_ptr -+BaseCapturerPipeWire::CreateRawWindowCapturer( -+ const DesktopCaptureOptions& options) { -+ -+ std::unique_ptr capturer = -+ std::make_unique(BaseCapturerPipeWire::CaptureSourceType::kAny); -+ return std::move(capturer); -+} -+ - } // namespace webrtc -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h -index 56b101acbaa6..de54157d1a2a 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.h -@@ -22,17 +22,13 @@ - - namespace webrtc { - --class PipeWireType { -- public: -- spa_type_media_type media_type; -- spa_type_media_subtype media_subtype; -- spa_type_format_video format_video; -- spa_type_video_format video_format; --}; -- - class BaseCapturerPipeWire : public DesktopCapturer { - public: -- enum CaptureSourceType { Screen = 1, Window }; -+ enum CaptureSourceType : uint32_t { -+ kScreen = 0b01, -+ kWindow = 0b10, -+ kAny = 0b11 -+ }; - - explicit BaseCapturerPipeWire(CaptureSourceType source_type); - ~BaseCapturerPipeWire() override; -@@ -43,28 +39,32 @@ class BaseCapturerPipeWire : public DesktopCapturer { - bool GetSourceList(SourceList* sources) override; - bool SelectSource(SourceId id) override; - -+ static std::unique_ptr CreateRawScreenCapturer( -+ const DesktopCaptureOptions& options); -+ -+ static std::unique_ptr CreateRawWindowCapturer( -+ const DesktopCaptureOptions& options); -+ - private: - // PipeWire types --> -+ pw_context* pw_context_ = nullptr; - pw_core* pw_core_ = nullptr; -- pw_type* pw_core_type_ = nullptr; - pw_stream* pw_stream_ = nullptr; -- pw_remote* pw_remote_ = nullptr; -- pw_loop* pw_loop_ = nullptr; - pw_thread_loop* pw_main_loop_ = nullptr; -- PipeWireType* pw_type_ = nullptr; - -+ spa_hook spa_core_listener_ = {}; - spa_hook spa_stream_listener_ = {}; -- spa_hook spa_remote_listener_ = {}; - -+ pw_core_events pw_core_events_ = {}; - pw_stream_events pw_stream_events_ = {}; -- pw_remote_events pw_remote_events_ = {}; - -- spa_video_info_raw* spa_video_format_ = nullptr; -+ struct spa_video_info_raw spa_video_format_; - -+ guint32 pw_stream_node_id_ = 0; - gint32 pw_fd_ = -1; - - CaptureSourceType capture_source_type_ = -- BaseCapturerPipeWire::CaptureSourceType::Screen; -+ BaseCapturerPipeWire::CaptureSourceType::kAny; - - // <-- end of PipeWire types - -@@ -78,33 +78,37 @@ class BaseCapturerPipeWire : public DesktopCapturer { - guint sources_request_signal_id_ = 0; - guint start_request_signal_id_ = 0; - -+ bool video_crop_size_initialized_ = false; -+ DesktopSize video_crop_size_;; - DesktopSize desktop_size_ = {}; - DesktopCaptureOptions options_ = {}; - -- uint8_t* current_frame_ = nullptr; -+ std::unique_ptr current_frame_; - Callback* callback_ = nullptr; - - bool portal_init_failed_ = false; - - void InitPortal(); - void InitPipeWire(); -- void InitPipeWireTypes(); - -- void CreateReceivingStream(); -+ pw_stream* CreateReceivingStream(); - void HandleBuffer(pw_buffer* buffer); - - void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size); - -- static void OnStateChanged(void* data, -- pw_remote_state old_state, -- pw_remote_state state, -- const char* error); -+ static void SyncDmaBuf(int fd, uint64_t start_or_end); -+ static void OnCoreError(void *data, -+ uint32_t id, -+ int seq, -+ int res, -+ const char *message); -+ static void OnStreamParamChanged(void *data, -+ uint32_t id, -+ const struct spa_pod *format); - static void OnStreamStateChanged(void* data, - pw_stream_state old_state, - pw_stream_state state, - const char* error_message); -- -- static void OnStreamFormatChanged(void* data, const struct spa_pod* format); - static void OnStreamProcess(void* data); - static void OnNewBuffer(void* data, uint32_t id); - -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc -index 26956fc67dc8..3813d697bb38 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc -@@ -15,7 +15,7 @@ - namespace webrtc { - - ScreenCapturerPipeWire::ScreenCapturerPipeWire() -- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Screen) {} -+ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kScreen) {} - ScreenCapturerPipeWire::~ScreenCapturerPipeWire() {} - - // static -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc -index 35436475cb4d..c43a1f1a0c4e 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc -@@ -15,7 +15,7 @@ - namespace webrtc { - - WindowCapturerPipeWire::WindowCapturerPipeWire() -- : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::Window) {} -+ : BaseCapturerPipeWire(BaseCapturerPipeWire::CaptureSourceType::kWindow) {} - WindowCapturerPipeWire::~WindowCapturerPipeWire() {} - - // static -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc -index cf8a9dd0e0db..d27fab8d28d9 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/screen_capturer_linux.cc -@@ -26,7 +26,7 @@ std::unique_ptr DesktopCapturer::CreateRawScreenCapturer( - const DesktopCaptureOptions& options) { - #if defined(WEBRTC_USE_PIPEWIRE) - if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) { -- return ScreenCapturerPipeWire::CreateRawScreenCapturer(options); -+ return BaseCapturerPipeWire::CreateRawScreenCapturer(options); - } - #endif // defined(WEBRTC_USE_PIPEWIRE) - -diff --git a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc -index 82359e50c2db..bb9724cf7cc2 100644 ---- a/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc -+++ b/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc -@@ -26,7 +26,7 @@ std::unique_ptr DesktopCapturer::CreateRawWindowCapturer( - const DesktopCaptureOptions& options) { - #if defined(WEBRTC_USE_PIPEWIRE) - if (options.allow_pipewire() && DesktopCapturer::IsRunningUnderWayland()) { -- return WindowCapturerPipeWire::CreateRawWindowCapturer(options); -+ return BaseCapturerPipeWire::CreateRawWindowCapturer(options); - } - #endif // defined(WEBRTC_USE_PIPEWIRE) - diff --git a/SOURCES/firefox-pipewire.patch b/SOURCES/firefox-pipewire.patch deleted file mode 100644 index 7233a73..0000000 --- a/SOURCES/firefox-pipewire.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff -up firefox-68.0/config/system-headers.mozbuild.firefox-pipewire firefox-68.0/config/system-headers.mozbuild ---- firefox-68.0/config/system-headers.mozbuild.firefox-pipewire 2019-07-01 22:30:26.000000000 +0200 -+++ firefox-68.0/config/system-headers.mozbuild 2019-07-08 15:26:15.397161627 +0200 -@@ -314,6 +314,7 @@ system_headers = [ - 'Gestalt.h', - 'getopt.h', - 'gio/gio.h', -+ 'gio/gunixfdlist.h', - 'glibconfig.h', - 'glib.h', - 'glib-object.h', -@@ -607,6 +608,7 @@ system_headers = [ - 'Pgenerr.h', - 'PGenErr.h', - 'Ph.h', -+ 'pipewire/pipewire.h', - 'pixman.h', - 'pk11func.h', - 'pk11pqg.h', -diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build.firefox-pipewire firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build ---- firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build.firefox-pipewire 2019-07-01 22:30:33.000000000 +0200 -+++ firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_generic_gn/moz.build 2019-07-08 15:26:15.397161627 +0200 -@@ -194,6 +194,28 @@ if CONFIG["OS_TARGET"] == "Linux": - "/media/webrtc/trunk/webrtc/modules/desktop_capture/window_capturer_linux.cc" - ] - -+# PipeWire specific files -+if CONFIG["OS_TARGET"] == "Linux": -+ -+ DEFINES["WEBRTC_USE_PIPEWIRE"] = "1" -+ -+ OS_LIBS += [ -+ "rt", -+ "pipewire-0.2", -+ "glib-2.0", -+ "gio-2.0", -+ "gobject-2.0" -+ ] -+ -+ CXXFLAGS += CONFIG['TK_CFLAGS'] -+ -+ UNIFIED_SOURCES += [ -+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/base_capturer_pipewire.cc", -+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/screen_capturer_pipewire.cc", -+ "/media/webrtc/trunk/webrtc/modules/desktop_capture/linux/window_capturer_pipewire.cc" -+ ] -+ -+ - if CONFIG["OS_TARGET"] == "NetBSD": - - DEFINES["USE_X11"] = "1" -diff -up firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h.firefox-pipewire firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h ---- firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h.firefox-pipewire 2019-07-08 16:42:13.936254926 +0200 -+++ firefox-68.0/media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture_options.h 2019-07-08 16:42:17.509264974 +0200 -@@ -141,7 +141,7 @@ class DesktopCaptureOptions { - bool disable_effects_ = true; - bool detect_updated_region_ = false; - #if defined(WEBRTC_USE_PIPEWIRE) -- bool allow_pipewire_ = false; -+ bool allow_pipewire_ = true; - #endif - }; - diff --git a/SOURCES/firefox-rhel6-hugepage.patch b/SOURCES/firefox-rhel6-hugepage.patch deleted file mode 100644 index 4855721..0000000 --- a/SOURCES/firefox-rhel6-hugepage.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up firefox-68.1.0/xpcom/threads/nsThread.cpp.old firefox-68.1.0/xpcom/threads/nsThread.cpp ---- firefox-68.1.0/xpcom/threads/nsThread.cpp.old 2019-09-20 12:17:35.481661390 +0200 -+++ firefox-68.1.0/xpcom/threads/nsThread.cpp 2019-09-20 12:19:14.269180516 +0200 -@@ -556,7 +556,8 @@ void nsThread::InitCommon() { - // kernel report them as separate regions, even when they are adjacent to - // heap memory. This allows us to accurately track the actual memory - // consumption of our allocated stacks. -- madvise(mStackBase, stackSize, MADV_NOHUGEPAGE); -+ // not supported on RHEL6 -+ // madvise(mStackBase, stackSize, MADV_NOHUGEPAGE); - - pthread_attr_destroy(&attr); - #elif defined(XP_WIN) diff --git a/SOURCES/firefox-rhel6-nss-tls1.3.patch b/SOURCES/firefox-rhel6-nss-tls1.3.patch deleted file mode 100644 index 2b6e8f7..0000000 --- a/SOURCES/firefox-rhel6-nss-tls1.3.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp.old firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp ---- firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp.old 2019-10-24 14:20:21.227037984 +0200 -+++ firefox-68.2.0/security/manager/ssl/nsNSSComponent.cpp 2019-10-24 14:45:52.769506967 +0200 -@@ -996,6 +996,9 @@ void nsNSSComponent::FillTLSVersionRange - return; - } - -+ // Enable TLS 1.3 as our NSS supports it. -+ supported.max = 0x304; -+ - // Clip the defaults by what NSS actually supports to enable - // working with a system NSS with different ranges. - rangeOut.min = std::max(rangeOut.min, supported.min); diff --git a/SOURCES/mozilla-1170092.patch b/SOURCES/mozilla-1170092.patch index 40db2c6..50d6785 100644 --- a/SOURCES/mozilla-1170092.patch +++ b/SOURCES/mozilla-1170092.patch @@ -1,7 +1,7 @@ -diff -up firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp ---- firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2020-06-17 04:18:58.000000000 +0200 -+++ firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2020-06-25 13:45:28.816999491 +0200 -@@ -244,8 +244,20 @@ nsresult nsReadConfig::openAndEvaluateJS +diff -up firefox-91.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 firefox-91.0/extensions/pref/autoconfig/src/nsReadConfig.cpp +--- firefox-91.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 2021-07-27 23:29:57.000000000 +0200 ++++ firefox-91.0/extensions/pref/autoconfig/src/nsReadConfig.cpp 2021-07-29 16:20:44.164513998 +0200 +@@ -249,8 +249,20 @@ nsresult nsReadConfig::openAndEvaluateJS if (NS_FAILED(rv)) return rv; rv = NS_NewLocalFileInputStream(getter_AddRefs(inStr), jsFile); @@ -12,7 +12,7 @@ diff -up firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 fi + getter_AddRefs(jsFile)); + NS_ENSURE_SUCCESS(rv, rv); + -+ rv = jsFile->AppendNative(NS_LITERAL_CSTRING("pref")); ++ rv = jsFile->AppendNative(nsLiteralCString("pref")); + NS_ENSURE_SUCCESS(rv, rv); + rv = jsFile->AppendNative(nsDependentCString(aFileName)); + NS_ENSURE_SUCCESS(rv, rv); @@ -23,10 +23,10 @@ diff -up firefox-78.0/extensions/pref/autoconfig/src/nsReadConfig.cpp.1170092 fi } else { nsAutoCString location("resource://gre/defaults/autoconfig/"); location += aFileName; -diff -up firefox-78.0/modules/libpref/Preferences.cpp.1170092 firefox-78.0/modules/libpref/Preferences.cpp ---- firefox-78.0/modules/libpref/Preferences.cpp.1170092 2020-06-25 13:45:28.818999498 +0200 -+++ firefox-78.0/modules/libpref/Preferences.cpp 2020-06-25 13:48:45.996708102 +0200 -@@ -4499,6 +4499,8 @@ nsresult Preferences::InitInitialObjects +diff -up firefox-91.0/modules/libpref/Preferences.cpp.1170092 firefox-91.0/modules/libpref/Preferences.cpp +--- firefox-91.0/modules/libpref/Preferences.cpp.1170092 2021-07-27 23:30:34.000000000 +0200 ++++ firefox-91.0/modules/libpref/Preferences.cpp 2021-07-29 16:20:44.166514005 +0200 +@@ -4553,6 +4553,8 @@ nsresult Preferences::InitInitialObjects // // Thus, in the omni.jar case, we always load app-specific default // preferences from omni.jar, whether or not `$app == $gre`. @@ -35,10 +35,10 @@ diff -up firefox-78.0/modules/libpref/Preferences.cpp.1170092 firefox-78.0/modul nsresult rv = NS_ERROR_FAILURE; UniquePtr find; -diff -up firefox-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-78.0/toolkit/xre/nsXREDirProvider.cpp ---- firefox-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2020-06-17 04:20:11.000000000 +0200 -+++ firefox-78.0/toolkit/xre/nsXREDirProvider.cpp 2020-06-25 13:48:28.613645633 +0200 -@@ -60,6 +60,7 @@ +diff -up firefox-91.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-91.0/toolkit/xre/nsXREDirProvider.cpp +--- firefox-91.0/toolkit/xre/nsXREDirProvider.cpp.1170092 2021-07-27 23:30:56.000000000 +0200 ++++ firefox-91.0/toolkit/xre/nsXREDirProvider.cpp 2021-07-29 16:26:20.071628932 +0200 +@@ -71,6 +71,7 @@ #endif #ifdef XP_UNIX # include @@ -46,14 +46,14 @@ diff -up firefox-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-78.0/tool #endif #ifdef XP_IOS # include "UIKitDirProvider.h" -@@ -533,6 +534,21 @@ nsXREDirProvider::GetFile(const char* aP +@@ -550,6 +551,21 @@ nsXREDirProvider::GetFile(const char* aP } } } + +#if defined(XP_UNIX) + if (!strcmp(aProperty, NS_APP_PREFS_SYSTEM_CONFIG_DIR)) { -+ nsCString sysConfigDir = NS_LITERAL_CSTRING("/etc/"); ++ nsCString sysConfigDir = nsLiteralCString("/etc/"); + nsCOMPtr appInfo = do_GetService("@mozilla.org/xre/app-info;1"); + if (!appInfo) + return NS_ERROR_NOT_AVAILABLE; @@ -68,28 +68,27 @@ diff -up firefox-78.0/toolkit/xre/nsXREDirProvider.cpp.1170092 firefox-78.0/tool if (NS_FAILED(rv) || !file) return NS_ERROR_FAILURE; if (ensureFilePermissions) { -@@ -845,6 +861,17 @@ nsresult nsXREDirProvider::GetFilesInter - - LoadDirIntoArray(mXULAppDir, kAppendPrefDir, directories); - +@@ -827,6 +843,16 @@ nsresult nsXREDirProvider::GetFilesInter + LoadDirIntoArray(mXULAppDir, kAppendBackgroundTasksPrefDir, directories); + } + #endif + // Add /etc//pref/ directory if it exists + nsCOMPtr systemPrefDir; + rv = NS_GetSpecialDirectory(NS_APP_PREFS_SYSTEM_CONFIG_DIR, + getter_AddRefs(systemPrefDir)); + if (NS_SUCCEEDED(rv)) { -+ rv = systemPrefDir->AppendNative(NS_LITERAL_CSTRING("pref")); ++ rv = systemPrefDir->AppendNative(nsLiteralCString("pref")); + if (NS_SUCCEEDED(rv)) { + directories.AppendObject(systemPrefDir); + } + } -+ + rv = NS_NewArrayEnumerator(aResult, directories, NS_GET_IID(nsIFile)); } else if (!strcmp(aProperty, NS_APP_CHROME_DIR_LIST)) { - // NS_APP_CHROME_DIR_LIST is only used to get default (native) icons -diff -up firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h ---- firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2020-06-17 04:20:17.000000000 +0200 -+++ firefox-78.0/xpcom/io/nsAppDirectoryServiceDefs.h 2020-06-25 13:45:28.819999502 +0200 -@@ -60,6 +60,7 @@ +diff -up firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h +--- firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h.1170092 2021-07-27 23:31:38.000000000 +0200 ++++ firefox-91.0/xpcom/io/nsAppDirectoryServiceDefs.h 2021-07-29 16:20:44.168514012 +0200 +@@ -59,6 +59,7 @@ #define NS_APP_PREFS_DEFAULTS_DIR_LIST "PrefDL" #define NS_APP_PREFS_OVERRIDE_DIR \ "PrefDOverride" // Directory for per-profile defaults diff --git a/SOURCES/mozilla-1196777.patch b/SOURCES/mozilla-1196777.patch deleted file mode 100644 index 7fa1595..0000000 --- a/SOURCES/mozilla-1196777.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -up firefox-68.0/widget/gtk/nsWindow.cpp.1196777 firefox-68.0/widget/gtk/nsWindow.cpp ---- firefox-68.0/widget/gtk/nsWindow.cpp.1196777 2019-05-21 11:29:55.833376744 +0200 -+++ firefox-68.0/widget/gtk/nsWindow.cpp 2019-05-21 12:15:35.446089316 +0200 -@@ -156,7 +156,8 @@ const gint kEvents = - #if GTK_CHECK_VERSION(3, 4, 0) - GDK_SMOOTH_SCROLL_MASK | GDK_TOUCH_MASK | - #endif -- GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK; -+ GDK_SCROLL_MASK | GDK_POINTER_MOTION_MASK | GDK_PROPERTY_CHANGE_MASK | -+ GDK_FOCUS_CHANGE_MASK; - - #if !GTK_CHECK_VERSION(3, 22, 0) - typedef enum { diff --git a/SOURCES/mozilla-bmo1554971.patch b/SOURCES/mozilla-bmo1554971.patch index ab25c2d..9958150 100644 --- a/SOURCES/mozilla-bmo1554971.patch +++ b/SOURCES/mozilla-bmo1554971.patch @@ -1,22 +1,12 @@ -# HG changeset patch -# Parent a25cebecb02d5460b8ad757fe9cb4a9c8d1d7658 -Eliminate startup error message: -JavaScript error: , line 0: Error: Type error for platformInfo value (Error processing arch: Invalid enumeration value "s390x") for runtime.getPlatformInfo. - -Reported here: https://bugzilla.mozilla.org/show_bug.cgi?id=1554971 - -Uncertain if this is causing real problems or not. Also uncertain if the fix actually fixes anything. -No response from upstream yet. - -diff -r a25cebecb02d -r 378b81b00e73 toolkit/components/extensions/schemas/runtime.json ---- a/toolkit/components/extensions/schemas/runtime.json Fri Jul 05 12:42:44 2019 +0200 -+++ b/toolkit/components/extensions/schemas/runtime.json Fri Jul 19 13:19:30 2019 +0200 +diff -up firefox-91.0/toolkit/components/extensions/schemas/runtime.json.mozilla-bmo1554971 firefox-91.0/toolkit/components/extensions/schemas/runtime.json +--- firefox-91.0/toolkit/components/extensions/schemas/runtime.json.mozilla-bmo1554971 2021-07-29 17:20:08.523253193 +0200 ++++ firefox-91.0/toolkit/components/extensions/schemas/runtime.json 2021-07-29 17:21:23.517498581 +0200 @@ -64,7 +64,7 @@ { "id": "PlatformArch", "type": "string", -- "enum": ["arm", "x86-32", "x86-64"], -+ "enum": ["arm", "x86-32", "x86-64", "s390x", "aarch64", "ppc64le"], +- "enum": ["aarch64", "arm", "ppc64", "s390x", "sparc64", "x86-32", "x86-64"], ++ "enum": ["aarch64", "arm", "ppc64", "ppc64le", "s390x", "sparc64", "x86-32", "x86-64"], "allowedContexts": ["content", "devtools"], "description": "The machine's processor architecture." }, diff --git a/SOURCES/nss-setup-flags-env.inc b/SOURCES/nss-setup-flags-env.inc index c3624b1..45f6e79 100644 --- a/SOURCES/nss-setup-flags-env.inc +++ b/SOURCES/nss-setup-flags-env.inc @@ -1,7 +1,7 @@ -sed -i 's@%{gtk3_install_path}@%{_buildrootdir}%{gtk3_install_path}@g' %{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig/nss*.pc +sed -i 's@%{bundled_install_path}@%{_buildrootdir}%{bundled_install_path}@g' %{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig/nss*.pc -export LDFLAGS="-L%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS" -export LDFLAGS="-Wl,-rpath,%{gtk3_install_path}/%{_lib} $LDFLAGS" -export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS" -export PKG_CONFIG_PATH=%{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig -export PATH="{_buildrootdir}%{gtk3_install_path}/bin:$PATH" +export LDFLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" +export LDFLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $LDFLAGS" +export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" +export PKG_CONFIG_PATH=%{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig +export PATH="{_buildrootdir}%{bundled_install_path}/bin:$PATH" diff --git a/SOURCES/python-2.7-gcc8-fix.patch b/SOURCES/python-2.7-gcc8-fix.patch deleted file mode 100644 index d4da520..0000000 --- a/SOURCES/python-2.7-gcc8-fix.patch +++ /dev/null @@ -1,57 +0,0 @@ -commit 0b91f8a668201fc58fa732b8acc496caedfdbae0 -Author: Florian Weimer -Date: Sun Apr 29 12:18:33 2018 -0700 - - Indicate that _PyGC_Head is only 8-byte aligned. (closes bpo-33374) - - By spec, the "long double" in _PyGC_Head requires the union to always be 16-byte - aligned. However, obmalloc only yields 8-byte alignment. Compilers including GCC - 8 are starting to use alignment information to do store-merging. So, the "long - double" needs to be changed to a simple "double" as was long ago done in Python - 3 by e348c8d154cf6342c79d627ebfe89dfe9de23817. For 2.7, we need to add some - dummy padding to make sure _PyGC_Head stays the same size. - -diff --git a/Include/objimpl.h b/Include/objimpl.h -index 5f28683329..cbf6bc3f87 100644 ---- Python-2.7.13/Include/objimpl.h -+++ Python-2.7.13/Include/objimpl.h -@@ -248,6 +248,20 @@ PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); - /* for source compatibility with 2.2 */ - #define _PyObject_GC_Del PyObject_GC_Del - -+/* -+ * Former over-aligned definition of PyGC_Head, used to compute the size of the -+ * padding for the new version below. -+ */ -+union _gc_head; -+union _gc_head_old { -+ struct { -+ union _gc_head_old *gc_next; -+ union _gc_head_old *gc_prev; -+ Py_ssize_t gc_refs; -+ } gc; -+ long double dummy; -+}; -+ - /* GC information is stored BEFORE the object structure. */ - typedef union _gc_head { - struct { -@@ -255,7 +269,8 @@ typedef union _gc_head { - union _gc_head *gc_prev; - Py_ssize_t gc_refs; - } gc; -- long double dummy; /* force worst-case alignment */ -+ double dummy; /* Force at least 8-byte alignment. */ -+ char dummy_padding[sizeof(union _gc_head_old)]; - } PyGC_Head; - - extern PyGC_Head *_PyGC_generation0; -diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst -new file mode 100644 -index 0000000000..9ec1a605c8 ---- /dev/null -+++ Python-2.7.13/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst -@@ -0,0 +1,3 @@ -+Tweak the definition of PyGC_Head, so compilers do not believe it is always -+16-byte aligned on x86. This prevents crashes with more aggressive -+optimizations present in GCC 8. diff --git a/SOURCES/python-2.7.patch b/SOURCES/python-2.7.patch deleted file mode 100644 index cad1c67..0000000 --- a/SOURCES/python-2.7.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -up Python-2.7.13/configure.build Python-2.7.13/configure ---- Python-2.7.13/configure.build 2019-06-04 13:32:12.772134075 +0200 -+++ Python-2.7.13/configure 2019-06-04 13:32:26.140144601 +0200 -@@ -6018,11 +6018,11 @@ then - # debug builds. - OPT="-g -O0 -Wall $STRICT_PROTO" - else -- OPT="-g $WRAP -O3 -Wall $STRICT_PROTO" -+ OPT="-g $WRAP -O2 -Wall $STRICT_PROTO" - fi - ;; - *) -- OPT="-O3 -Wall $STRICT_PROTO" -+ OPT="-O2 -Wall $STRICT_PROTO" - ;; - esac - case $ac_sys_system in diff --git a/SOURCES/python-encode.patch b/SOURCES/python-encode.patch deleted file mode 100644 index 2f3bad9..0000000 --- a/SOURCES/python-encode.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up firefox-68.0/python/mozbuild/mozbuild/controller/building.py.old firefox-68.0/python/mozbuild/mozbuild/controller/building.py ---- firefox-68.0/python/mozbuild/mozbuild/controller/building.py.old 2019-05-29 10:46:55.403262995 +0200 -+++ firefox-68.0/python/mozbuild/mozbuild/controller/building.py 2019-05-29 10:47:42.691176970 +0200 -@@ -571,7 +571,7 @@ class TerminalLoggingHandler(logging.Han - if self.footer: - self.footer.clear() - -- self.fh.write(msg) -+ self.fh.write(msg.encode("utf-8")) - self.fh.write('\n') - - if self.footer: diff --git a/SOURCES/rhbz-1821418.patch b/SOURCES/rhbz-1821418.patch deleted file mode 100644 index 8b02dfb..0000000 --- a/SOURCES/rhbz-1821418.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff -up firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp ---- firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp.rhbz-1821418 2020-06-17 04:20:44.000000000 +0200 -+++ firefox-78.0/xpcom/base/AvailableMemoryTracker.cpp 2020-06-25 14:50:46.369798294 +0200 -@@ -157,8 +157,12 @@ bool nsAvailableMemoryWatcher::IsVirtual - - /* static */ - bool nsAvailableMemoryWatcher::IsCommitSpaceLow(const MEMORYSTATUSEX& aStat) { -- if ((kLowCommitSpaceThreshold != 0) && -- (aStat.ullAvailPageFile < kLowCommitSpaceThreshold)) { -+ const char* threshold = getenv("MOZ_GC_THRESHOLD"); -+ if (threshold) { -+ kLowCommitSpaceThreshold = atoi(threshold); -+ } -+ -+ if ((kLowCommitSpaceThreshold == 0) || (aStat.ullAvailPageFile < kLowCommitSpaceThreshold)) { - sNumLowCommitSpaceEvents++; - CrashReporter::AnnotateCrashReport( - CrashReporter::Annotation::LowCommitSpaceEvents, -@@ -210,12 +214,15 @@ void nsAvailableMemoryWatcher::AdjustPol - // polling interval accordingly. - NS_IMETHODIMP - nsAvailableMemoryWatcher::Notify(nsITimer* aTimer) { -+ const char* threshold = getenv("MOZ_GC_THRESHOLD"); -+ bool forceLowMem = (threshold && atoi(threshold) == 0); -+ - MEMORYSTATUSEX stat; - stat.dwLength = sizeof(stat); - bool success = GlobalMemoryStatusEx(&stat); - -- if (success) { -- bool lowMemory = IsVirtualMemoryLow(stat) || IsCommitSpaceLow(stat); -+ if (success || forceLowMemory) { -+ bool lowMemory = IsVirtualMemoryLow(stat) || IsCommitSpaceLow(stat || forceLowMem); - - if (lowMemory) { - SendMemoryPressureEvent(); diff --git a/SOURCES/thunderbird-mozconfig b/SOURCES/thunderbird-mozconfig index 27091df..4500696 100644 --- a/SOURCES/thunderbird-mozconfig +++ b/SOURCES/thunderbird-mozconfig @@ -1,7 +1,5 @@ ac_add_options --enable-application=comm/mail -ac_add_options --enable-default-toolkit=cairo-gtk3 - ac_add_options --prefix="$PREFIX" ac_add_options --libdir="$LIBDIR" ac_add_options --with-system-zlib @@ -10,14 +8,19 @@ ac_add_options --disable-tests #ac_add_options --enable-libnotify ac_add_options --enable-necko-wifi ac_add_options --disable-updater -ac_add_options --enable-calendar ac_add_options --enable-chrome-format=omni ac_add_options --enable-pulseaudio -ac_add_options --with-system-icu +ac_add_options --without-system-icu +ac_add_options --enable-release +ac_add_options --update-channel=release +ac_add_options --allow-addon-sideload +ac_add_options --with-system-jpeg +ac_add_options --enable-js-shell +ac_add_options --with-unsigned-addon-scopes=app,system + ac_add_options --with-mozilla-api-keyfile=../mozilla-api-key ac_add_options --with-google-location-service-api-keyfile=../google-api-key ac_add_options --with-google-safebrowsing-api-keyfile=../google-api-key -ac_add_options --disable-av1 ac_add_options --disable-crashreporter export BUILD_OFFICIAL=1 diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.rhel6 b/SOURCES/thunderbird-redhat-default-prefs.js.rhel6 deleted file mode 100644 index 26e8d17..0000000 --- a/SOURCES/thunderbird-redhat-default-prefs.js.rhel6 +++ /dev/null @@ -1,33 +0,0 @@ -pref("app.update.enabled", false); -pref("app.update.autoInstallEnabled", false); -# Allow users to set custom colors -# pref("browser.display.use_system_colors", true); -pref("general.useragent.vendor", "Red Hat"); -pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); -pref("intl.locale.matchOS", true); -pref("mail.shell.checkDefaultClient", false); -pref("toolkit.networkmanager.disable", false); -pref("offline.autoDetect", true); - -# Disable global indexing by default -pref("mailnews.database.global.indexer.enabled", false); - -# Do not switch to Smart Folders after upgrade to 3.0b4 -pref("mail.folder.views.version", "1"); -pref("extensions.shownSelectionUI", true); -pref("extensions.autoDisableScope", 0); - -# For rhbz#1024232 -pref("ui.SpellCheckerUnderlineStyle", 1); - -/* Workaround for rhbz#1134876 */ -pref("javascript.options.baselinejit", false); -/* Workaround for rhbz#1110291 */ -pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); -/* Workaround for mozbz#1063315 */ -pref("security.use_mozillapkix_verification", false); -/* Use OS settings for UI language */ -pref("intl.locale.requested", ""); -pref("datareporting.healthreport.uploadEnabled", false); -pref("datareporting.policy.dataSubmissionEnabled", false); -pref("toolkit.telemetry.archive.enabled", false); diff --git a/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 b/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 index 26e8d17..4d01b78 100644 --- a/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 +++ b/SOURCES/thunderbird-redhat-default-prefs.js.rhel7 @@ -1,7 +1,7 @@ pref("app.update.enabled", false); pref("app.update.autoInstallEnabled", false); -# Allow users to set custom colors -# pref("browser.display.use_system_colors", true); +/* Allow users to set custom colors*/ +/* pref("browser.display.use_system_colors", true);*/ pref("general.useragent.vendor", "Red Hat"); pref("general.useragent.vendorSub", "THUNDERBIRD_RPM_VR"); pref("intl.locale.matchOS", true); @@ -9,17 +9,19 @@ pref("mail.shell.checkDefaultClient", false); pref("toolkit.networkmanager.disable", false); pref("offline.autoDetect", true); -# Disable global indexing by default +/* Disable global indexing by default*/ pref("mailnews.database.global.indexer.enabled", false); -# Do not switch to Smart Folders after upgrade to 3.0b4 +/* Do not switch to Smart Folders after upgrade to 3.0b4 */ pref("mail.folder.views.version", "1"); pref("extensions.shownSelectionUI", true); -pref("extensions.autoDisableScope", 0); +pref("extensions.autoDisableScopes", 0); -# For rhbz#1024232 +/* For rhbz#1024232 */ pref("ui.SpellCheckerUnderlineStyle", 1); +/* Workaround for rhbz#1753011 */ +pref("spellchecker.dictionary_path", "/usr/share/myspell"); /* Workaround for rhbz#1134876 */ pref("javascript.options.baselinejit", false); /* Workaround for rhbz#1110291 */ @@ -28,6 +30,7 @@ pref("network.negotiate-auth.allow-insecure-ntlm-v1", true); pref("security.use_mozillapkix_verification", false); /* Use OS settings for UI language */ pref("intl.locale.requested", ""); +/* Disable telemetry */ pref("datareporting.healthreport.uploadEnabled", false); pref("datareporting.policy.dataSubmissionEnabled", false); pref("toolkit.telemetry.archive.enabled", false); diff --git a/SOURCES/thunderbird.sh.in b/SOURCES/thunderbird.sh.in index e61b41d..6a9cb72 100644 --- a/SOURCES/thunderbird.sh.in +++ b/SOURCES/thunderbird.sh.in @@ -10,12 +10,12 @@ MOZ_ARCH=$(uname -m) case $MOZ_ARCH in x86_64 | s390x | sparc64 ) - MOZ_LIB_DIR="/usr/lib64" - SECONDARY_LIB_DIR="/usr/lib" + MOZ_LIB_DIR="%PREFIX%/lib64" + SECONDARY_LIB_DIR="%PREFIX%/lib" ;; * ) - MOZ_LIB_DIR="/usr/lib" - SECONDARY_LIB_DIR="/usr/lib64" + MOZ_LIB_DIR="%PREFIX%/lib" + SECONDARY_LIB_DIR="%PREFIX%/lib64" ;; esac @@ -45,7 +45,7 @@ MOZ_EXTENSIONS_PROFILE_DIR="$HOME/.mozilla/extensions/{3550f703-e582-4d05-9a08-4 ## ## Set MOZ_APP_LAUNCHER for gnome-session ## -export MOZ_APP_LAUNCHER="/usr/bin/thunderbird" +export MOZ_APP_LAUNCHER="%PREFIX%/bin/thunderbird" ## ## Disable the GNOME crash dialog, Moz has it's own @@ -137,9 +137,9 @@ if ! dbus-send --session \ if [ -f "$MOZ_LIB_DIR/firefox/bundled/libexec/at-spi-bus-launcher" ]; then echo "Starting a11y dbus service..." $MOZ_LIB_DIR/firefox/bundled/libexec/at-spi-bus-launcher & - else + else echo "Running without a11y support!" - fi + fi fi exec $MOZ_PROGRAM "$@" diff --git a/SPECS/thunderbird.spec b/SPECS/thunderbird.spec index 6822e6c..9c30657 100644 --- a/SPECS/thunderbird.spec +++ b/SPECS/thunderbird.spec @@ -1,9 +1,10 @@ # Set for local builds only %global disable_toolsets 0 -%ifarch i686 -# no debug package for the i686 because oom on i686 with debuginfos -%global debug_package %{nil} +%ifarch %{ix86} + # no debug package for the i686 because oom on i686 with debuginfos + #FIXME revise if still necessary + %global debug_package %{nil} %endif %{lua: @@ -18,88 +19,61 @@ function dist_to_rhel_minor(str, start) end match = string.match(str, ".el8") if match then - return 5 + return 6 end - match = string.match(str, ".el9") - if match then - return 4 - end - return -1 end} %global rhel_minor_version %{lua:print(dist_to_rhel_minor(rpm.expand("%dist")))} +%global build_with_clang 0 %global system_nss 1 %global bundle_nss 0 -%if 0%{?rhel} >= 8 - %if %{rhel_minor_version} < 2 -%global bundle_nss 1 +%if 0%{?rhel} == 8 + %if %{rhel_minor_version} < 3 + %global bundle_nss 1 + %global system_nss 1 %endif %endif -%if 0%{?rhel} == 6 -%global system_nss 0 -%endif - %define use_bundled_ffi 0 -%define use_bundled_python_2 1 -%define use_bundled_python_3 1 - -%if 0%{?rhel} >= 8 -%define use_bundled_python_2 1 -%define use_bundled_python_3 0 -%endif - -%if 0%{?rhel} == 7 -%define use_bundled_python_2 0 -%define use_bundled_python_3 0 -%endif - -%if 0%{?flatpak:1} -%define use_bundled_python_2 1 -%endif - -# we need python2 because of icu data gen -%define use_bundled_python_2 0 # Don't use system hunspell for now %global system_hunspell 0 -%if 0%{?rhel} >= 8 %global use_llvmts 0 -%else +%global use_nodejsts 0 +%if 0%{?rhel} < 8 %global use_llvmts 1 +%global use_nodejsts 1 %endif -%global system_ffi 1 -%if 0%{?rhel} < 8 -%global use_dts 1 +%global nodejs_rb nodejs +%global llvm_version 7.0 + +%if 0%{?rhel} == 8 +%global llvm_version 6.0 +%endif + +%if 0%{?rhel} == 7 + %global use_dts 1 + %global nodejs_rb rh-nodejs10-nodejs + %global llvm_version 11.0 %endif %global use_rustts 1 -%global dts_version 8 -%global rust_version 1.41 -%global rust_toolset_version 1.41 -%global llvm_version 7.0 -%if 0%{?rhel} >= 8 -%global llvm_version 6.0 +%if 0%{?rhel} >= 9 + %global use_rustts 0 %endif +%global dts_version 10 +%global rust_version 1.52 + %if 0%{?disable_toolsets} %global use_rustts 0 %global use_dts 0 %global use_llvmts 0 %endif -# Use system cairo? -%global system_cairo 0 - -# Use system libvpx? -%global system_libvpx 0 - -# Use system libicu? -%global system_libicu 0 - # Big endian platforms %ifarch ppc64 s390x # Javascript Intl API is not supported on big endian platforms right now: @@ -110,8 +84,6 @@ end} # Hardened build? %global hardened_build 1 -%global system_jpeg 1 - %ifarch %{ix86} x86_64 %global run_tests 0 %else @@ -123,44 +95,22 @@ end} %define thunderbird_app_id \{3550f703-e582-4d05-9a08-453d09bdfdc6\} # Minimal required versions -%global cairo_version 1.13.1 -%global freetype_version 2.1.9 -%if %{?system_libvpx} -%global libvpx_version 1.4.0 -%endif %if 0%{?system_nss} -%global nspr_version 4.25 +%global nspr_version 4.32 # NSS/NSPR quite often ends in build override, so as requirement the version # we're building against could bring us some broken dependencies from time to time. -#%%global nspr_build_version %%(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536) +#%global nspr_build_version %(pkg-config --silence-errors --modversion nspr 2>/dev/null || echo 65536) %global nspr_build_version %{nspr_version} %global nss_version 3.53.1 -#%%global nss_build_version %%(pkg-config --silence-errors --modversion nss 2>/dev/null || echo 65536) +#%global nss_build_version %(pkg-config --silence-errors --modversion nss 2>/dev/null || echo 65536) %global nss_build_version %{nss_version} %endif - -%define bundled_python_version_2 2.7.13 -%define bundled_python_version_3 3.6.8 -%define use_bundled_openssl 0 -%define use_bundled_nodejs 0 -%define use_bundled_yasm 0 - -%if 0%{?rhel} >= 8 - %if %{rhel_minor_version} <= 2 -%define use_bundled_nodejs 1 - %endif -%endif - -%if 0%{?rhel} == 7 -%define use_bundled_nodejs 1 -%define use_bundled_yasm 1 -%endif - +# GTK3 bundling %define avoid_bundled_rebuild 0 -%define gtk3_install_path %{mozappdir}/bundled +%define bundled_install_path %{mozappdir}/bundled # We could use %%include, but in %%files, %%post and other sections, but in these # sections it could lead to syntax errors about unclosed %%if. Work around it by @@ -169,21 +119,26 @@ end} %global mozappdir %{_libdir}/%{name} %global mozappdirdev %{_libdir}/%{name}-devel-%{version} -%global langpackdir %{mozappdir}/distribution/extensions +%global langpackdir %{mozappdir}/extensions %global tarballdir %{name}-%{version} -%global mozappfeatures %{mozappdir}/features/*.xpi #global pre_tag alpha %global official_branding 1 %global build_langpacks 1 Summary: Mozilla Thunderbird mail/newsgroup client Name: thunderbird -Version: 78.13.0 +Version: 91.3.0 Release: 2%{?dist} URL: http://www.mozilla.org/projects/thunderbird/ License: MPLv1.1 or GPLv2+ or LGPLv2+ Group: Applications/Internet +%if 0%{?rhel} == 9 +ExcludeArch: %{ix86} +%endif +%if 0%{?rhel} == 8 +ExcludeArch: %{ix86} +%endif %if 0%{?rhel} == 7 ExcludeArch: s390 ppc %endif @@ -195,10 +150,9 @@ ExcludeArch: s390 ppc # Link to official tarball: https://archive.mozilla.org/pub/thunderbird/releases/%%{version}%%{?pre_version}/source/thunderbird-%%{version}%%{?pre_version}.source.tar.xz Source0: thunderbird-%{version}%{?pre_version}.processed-source.tar.xz %if %{build_langpacks} -Source1: thunderbird-langpacks-%{version}%{?ext_version}-20210804.tar.xz -# Locales for lightning +Source1: thunderbird-langpacks-%{version}%{?ext_version}-20211102.tar.xz %endif -Source2: cbindgen-vendor-0.14.3.tar.xz +Source2: cbindgen-vendor.tar.xz Source3: get-calendar-langpacks.sh Source4: process-official-tarball @@ -208,57 +162,30 @@ Source21: thunderbird.sh.in Source24: mozilla-api-key Source27: google-api-key Source28: node-stdout-nonblocking-wrapper -Source301: yasm-1.2.0-3.el5.src.rpm -Source303: libffi-3.0.13-18.el7_3.src.rpm -Source304: nodejs-10.21.0-5.fc32.src.rpm -Source305: openssl-1.0.2k-19.6.bundle.el7_7.src.rpm -Source601: thunderbird-redhat-default-prefs.js.rhel6 Source701: thunderbird-redhat-default-prefs.js.rhel7 -## Firefox patches - -Source403: nss-3.53.1-3.fc32.src.rpm +Source403: nss-3.67.0-6.el8_1.src.rpm Source401: nss-setup-flags-env.inc -Source402: nspr-4.25.0-1.el8_0.src.rpm -#Python -%if 0%{?use_bundled_python_2} -Source100: https://www.python.org/ftp/python/%{bundled_python_version_2}/Python-%{bundled_python_version_2}.tar.xz -%endif -%if 0%{?use_bundled_python_3} -Source101: https://www.python.org/ftp/python/%{bundled_python_version_3}/Python-%{bundled_python_version_3}.tar.xz -%endif +Source402: nspr-4.32.0-1.el8_1.src.rpm + # Build patches -Patch1000: python-2.7.patch # workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 Patch1001: build-ppc64le-inline.patch -Patch1002: python-2.7-gcc8-fix.patch Patch1003: python-missing-utimensat.patch -Patch1004: build-icu-make.patch -Patch1006: D89554-autoconf1.diff -Patch1007: D94538-autoconf2.diff +Patch1008: build-rhel7-nasm-dwarf.patch +Patch1009: build-debuginfo-fix.patch # workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1699374 Patch4: build-mozconfig-fix.patch Patch6: build-nss-version.patch -Patch7: firefox-debugedits-error.patch # Fedora/RHEL specific patches Patch215: firefox-enable-addons.patch Patch219: rhbz-1173156.patch Patch224: mozilla-1170092.patch -#ARM run-time patch -Patch231: firefox-pipewire.patch -Patch232: firefox-rhel6-hugepage.patch -Patch233: firefox-rhel6-nss-tls1.3.patch -Patch234: rhbz-1821418.patch -Patch235: firefox-pipewire-0-3.patch -Patch236: fedora-shebang-build.patch Patch237: disable-openpgp-in-thunderbird.patch -Patch238: firefox-glibc-dynstack.patch # Upstream patches -Patch402: mozilla-1196777.patch -Patch501: python-encode.patch Patch503: mozilla-s390-context.patch Patch505: mozilla-bmo1005535.patch Patch506: mozilla-bmo1504834-part1.patch @@ -271,8 +198,6 @@ Patch512: mozilla-bmo849632.patch Patch513: mozilla-bmo998749.patch Patch514: mozilla-s390x-skia-gradient.patch Patch515: mozilla-bmo1626236.patch -Patch516: D87019-thin-vec-big-endian.diff - %if %{?system_nss} %if !0%{?bundle_nss} @@ -281,25 +206,20 @@ BuildRequires: pkgconfig(nss) >= %{nss_version} BuildRequires: nss-static >= %{nss_version} %endif %endif -%if %{?system_cairo} -BuildRequires: pkgconfig(cairo) >= %{cairo_version} -%endif BuildRequires: pkgconfig(libpng) BuildRequires: xz BuildRequires: libXt-devel BuildRequires: mesa-libGL-devel Requires: liberation-fonts-common Requires: liberation-sans-fonts -%if %{?system_jpeg} BuildRequires: libjpeg-devel -%endif BuildRequires: zip BuildRequires: bzip2-devel BuildRequires: pkgconfig(zlib) BuildRequires: pkgconfig(gtk+-2.0) BuildRequires: krb5-devel BuildRequires: pkgconfig(pango) -BuildRequires: pkgconfig(freetype2) >= %{freetype_version} +BuildRequires: pkgconfig(freetype2) >= 2.1.9 BuildRequires: pkgconfig(xt) BuildRequires: pkgconfig(xrender) %if %{?system_hunspell} @@ -310,28 +230,30 @@ BuildRequires: pkgconfig(libnotify) BuildRequires: pkgconfig(dri) BuildRequires: pkgconfig(libcurl) BuildRequires: dbus-glib-devel -%if %{?system_libvpx} -BuildRequires: libvpx-devel >= %{libvpx_version} -%endif BuildRequires: m4 + BuildRequires: pkgconfig(libpulse) %if 0%{?use_dts} BuildRequires: devtoolset-%{dts_version}-gcc-c++ BuildRequires: devtoolset-%{dts_version}-gcc -BuildRequires: devtoolset-%{dts_version}-binutils BuildRequires: devtoolset-%{dts_version}-libatomic-devel -%if 0%{?use_llvmts} -BuildRequires: llvm-toolset-%{llvm_version} -BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel %endif +%if 0%{?rhel} == 9 +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: cargo +BuildRequires: rust +BuildRequires: clang clang-libs llvm %endif BuildRequires: scl-utils BuildRequires: findutils +BuildRequires: %{nodejs_rb} >= 10.21 +BuildRequires: python3 -%if 0%{?rhel} >= 8 +%if 0%{?rhel} == 8 BuildRequires: cargo BuildRequires: rust >= %{rust_version} BuildRequires: llvm >= %{llvm_version} @@ -339,32 +261,24 @@ BuildRequires: llvm-devel >= %{llvm_version} BuildRequires: clang >= %{llvm_version} BuildRequires: clang-devel >= %{llvm_version} BuildRequires: rustfmt >= %{rust_version} -BuildRequires: python3 -BuildRequires: nodejs >= 10.21 %else %if 0%{?use_rustts} -BuildRequires: rust-toolset-%{rust_toolset_version} -%endif -%if 0%{?rhel} == 7 -#BuildRequires: rh-nodejs12 +BuildRequires: rust-toolset-%{rust_version} %endif %if 0%{?use_llvmts} BuildRequires: llvm-toolset-%{llvm_version} BuildRequires: llvm-toolset-%{llvm_version}-llvm-devel +BuildRequires: llvm-toolset-%{llvm_version}-clang +BuildRequires: llvm-toolset-%{llvm_version}-clang-devel %endif %endif -%if ! 0%{?use_bundled_yasm} -BuildRequires: yasm +BuildRequires: nasm +%if %{build_with_clang} +BuildRequires: lld %endif - -%if 0%{?use_bundled_python_2} -# Needed for Python in RHEL6 -BuildRequires: openssl-devel -%endif - -%if 0%{?rhel} >= 8 +%if 0%{?rhel} == 8 %if %{rhel_minor_version} >= 3 BuildRequires: pkgconfig(libpipewire-0.3) %else @@ -374,6 +288,7 @@ BuildRequires: pipewire-devel BuildRequires: gtk3-devel BuildRequires: glib2-devel +BuildRequires: perl-interpreter # Bundled nss/nspr requirement %if 0%{?bundle_nss} @@ -383,12 +298,10 @@ BuildRequires: zlib-devel BuildRequires: pkgconfig BuildRequires: gawk BuildRequires: psmisc -BuildRequires: perl-interpreter BuildRequires: gcc-c++ BuildRequires: xmlto %endif -#RHEL9 -BuildRequires: perl-interpreter + Requires: mozilla-filesystem Requires: p11-kit-trust @@ -402,39 +315,22 @@ Requires: nss >= %{nss_build_version} BuildRequires: desktop-file-utils BuildRequires: system-bookmarks Requires: redhat-indexhtml -#for the python2 -BuildRequires: pkgconfig(sqlite3) - %if %{?run_tests} BuildRequires: xorg-x11-server-Xvfb %endif -%if %{?system_ffi} - %if !%{use_bundled_ffi}0 BuildRequires: pkgconfig(libffi) - %endif -%endif - -%if %{?use_bundled_nodejs} -%if !0%{?use_bundled_python_3} -BuildRequires: python3-devel -%endif -BuildRequires: zlib-devel -#BuildRequires: brotli-devel -#BuildRequires: gcc >= 4.9.4 -#BuildRequires: gcc-c++ >= 4.9.4 -BuildRequires: chrpath -BuildRequires: libatomic -BuildRequires: openssl-devel -%endif %if 0%{?big_endian} + %if 0%{?flatpak} BuildRequires: icu + %endif %endif Obsoletes: thunderbird-lightning # ================================================================================== + # Bundled libraries Provides: bundled(angle) Provides: bundled(cairo) @@ -493,6 +389,10 @@ Provides: bundled(libotr) #Provides: bundled(json-c) #Provides: bundled(rnp) +%if 0%{?bundle_nss} +Provides: bundled(nss) = 3.67.0 +Provides: bundled(nspr) = 4.32.0 +%endif %description Mozilla Thunderbird is a standalone mail and newsgroup client. @@ -502,61 +402,27 @@ echo "Build environment" echo "dist %{?dist}" echo "RHEL 8 minor version: %{rhel_minor_version}" echo "use_bundled_ffi %{?use_bundled_ffi}" -echo "use_bundled_python_2 %{?use_bundled_python_2}" -echo "use_bundled_python_3 %{?use_bundled_python_3}" echo "bundle_nss %{?bundle_nss}" echo "system_nss %{?system_nss}" echo "use_rustts %{?use_rustts}" -echo "use_bundled_nodejs %{?use_bundled_nodejs}" -echo "use_bundled_openssl %{?use_bundled_openssl}" -echo "use_bundled_yasm %{?use_bundled_yasm}" -%if 0%{?use_bundled_python_2} -%setup -q -T -c -n python2 -a 100 -%patch1000 -p0 -b .build -%patch1002 -p0 -b .gcc8 -%endif -%if 0%{?use_bundled_python_3} -%setup -q -T -c -n python3 -a 101 -%endif %setup -q -n %{tarballdir} - # Firefox patches -%patch7 -p1 -b .debugedits-error -%ifarch %{ix86} %{arm} ppc -# binary check fails OOM on 32bit arches -%endif %patch4 -p1 -b .build-mozconfig-fix -#%patch6 -p1 -b .nss-version +%patch6 -p1 -b .nss-version # Fedora patches %patch215 -p1 -b .addons %patch219 -p1 -b .rhbz-1173156 %patch224 -p1 -b .1170092 -%if 0%{?rhel} >= 8 - %if %{rhel_minor_version} >= 3 -%patch235 -p1 -b .pipewire-0-3 - %else -%patch231 -p1 -b .pipewire - %endif -%endif - -%patch236 -p1 -b .fedora-shebang-build -%patch237 -p1 -b .disable-openpgp-in-thunderbird -%patch238 -p1 -b .firefox-glibc-dynstack - -%patch234 -p1 -b .rhbz-1821418 - -%patch402 -p1 -b .1196777 # Patch for big endian platforms only %if 0%{?big_endian} %endif # Thunderbird patches -%patch501 -p1 -b .python-encode %patch503 -p1 -b .mozilla-s390-context %patch505 -p1 -b .mozilla-bmo1005535 %patch506 -p1 -b .mozilla-bmo1504834-part1 @@ -569,67 +435,52 @@ echo "use_bundled_yasm %{?use_bundled_yasm}" %patch513 -p1 -b .mozilla-bmo998749 %patch514 -p1 -b .mozilla-s390x-skia-gradient %patch515 -p1 -b .mozilla-bmo1626236 -%patch516 -p1 -b .D87019-thin-vec-big-endian.diff +%patch237 -p1 -b .disable-openpgp-in-thunderbird %patch1001 -p1 -b .ppc64le-inline -%patch1004 -p1 -b .icu-make -%patch1006 -p1 -b .D89554-autoconf1.diff -%patch1007 -p1 -b .D94538-autoconf2.diff - +%if 0%{?rhel} == 7 +# fix the /usr/lib/rpm/debugedit: canonicalization unexpectedly shrank by one character +%patch1009 -p1 -b .build-debuginfo-fix + %ifarch %{ix86} +# -F dwarf not available in RHEL7's nasm +%patch1008 -p1 -b .build-rhel7-nasm-dwarf + %endif +%endif %{__rm} -f .mozconfig %{__cp} %{SOURCE10} .mozconfig -function add_to_mozconfig() { - mozconfig_entry=$1 - echo "ac_add_options --$1" >> .mozconfig -} - # Modify mozconfig file %if %{official_branding} - add_to_mozconfig "enable-official-branding" +echo "ac_add_options --enable-official-branding" >> .mozconfig %endif %{__cp} %{SOURCE24} mozilla-api-key %{__cp} %{SOURCE27} google-api-key %if %{?system_nss} - add_to_mozconfig "with-system-nspr" - add_to_mozconfig "with-system-nss" +echo "ac_add_options --with-system-nspr" >> .mozconfig +echo "ac_add_options --with-system-nss" >> .mozconfig %else - add_to_mozconfig "without-system-nspr" - add_to_mozconfig "without-system-nss" +echo "ac_add_options --without-system-nspr" >> .mozconfig +echo "ac_add_options --without-system-nss" >> .mozconfig %endif -%if 0%{?use_bundled_ffi} - add_to_mozconfig "with-system-ffi" -%endif - -%if 0%{?system_ffi} - add_to_mozconfig "with-system-ffi" -%endif -%ifarch %{arm} %{ix86} x86_64 - add_to_mozconfig "disable-elf-hack" +%ifarch %{ix86} x86_64 +echo "ac_add_options --disable-elf-hack" >> .mozconfig %endif %if %{?system_hunspell} echo "ac_add_options --enable-system-hunspell" >> .mozconfig -%else -# not available? -#echo "ac_add_options --disable-system-hunspell" >> .mozconfig %endif %if %{?debug_build} - add_to_mozconfig "enable-debug" - add_to_mozconfig "disable-optimize" +echo "ac_add_options --enable-debug" >> .mozconfig +echo "ac_add_options --disable-optimize" >> .mozconfig %else %global optimize_flags "-g -O2" -%ifarch s390 s390x +%ifarch s390x %global optimize_flags "-g -O1" %endif -%ifarch armv7hl -# ARMv7 need that (rhbz#1426850) -%global optimize_flags "-g -O2 -fno-schedule-insns" -%endif %ifarch ppc64le aarch64 %global optimize_flags "-g -O2" %endif @@ -650,24 +501,7 @@ echo "ac_add_options --disable-jemalloc" >> .mozconfig echo "ac_add_options --disable-webrtc" >> .mozconfig %endif -%if !%{?system_jpeg} -echo "ac_add_options --without-system-jpeg" >> .mozconfig -%else -echo "ac_add_options --with-system-jpeg" >> .mozconfig -%endif - -%if %{?system_libvpx} -echo "ac_add_options --with-system-libvpx" >> .mozconfig -%else -echo "ac_add_options --without-system-libvpx" >> .mozconfig -%endif - -%if %{?system_libicu} -echo "ac_add_options --with-system-icu" >> .mozconfig -%else -echo "ac_add_options --without-system-icu" >> .mozconfig -%endif -%ifarch s390 s390x +%ifarch s390x echo "ac_add_options --disable-jit" >> .mozconfig %endif @@ -677,8 +511,15 @@ echo "ac_add_options --disable-debug-symbols" >> .mozconfig %endif %endif +# AV1 requires newer nasm that was rebased in 8.4 +%if 0%{?rhel} == 7 || (0%{?rhel} == 8 && 0%{rhel_minor_version} < 4) +echo "ac_add_options --disable-av1" >> .mozconfig +%endif + echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig +cat .mozconfig + # Remove executable bit to make brp-mangle-shebangs happy. chmod -x third_party/rust/itertools/src/lib.rs chmod a-x third_party/rust/gfx-backend-vulkan/src/*.rs @@ -688,7 +529,7 @@ chmod a-x third_party/rust/ash/src/extensions/khr/*.rs chmod a-x third_party/rust/ash/src/extensions/mvk/*.rs chmod a-x third_party/rust/ash/src/extensions/nv/*.rs -# install lightning langpacks +#--------------------------------------------------------------------- %build # Disable LTO to work around rhbz#1883904 @@ -696,8 +537,8 @@ chmod a-x third_party/rust/ash/src/extensions/nv/*.rs ulimit -a free #set -e +# Hack for missing shell when building in brew on RHEL6 -#GTK3 >> %if ! 0%{?avoid_bundled_rebuild} rm -rf %{_buildrootdir}/* %endif @@ -710,7 +551,7 @@ function install_rpms_to_current_dir() { if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then # Hack for tps tests ARCH_STR=%{_arch} - %ifarch i386 i686 + %ifarch %{ix86} ARCH_STR="i?86" %endif PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" @@ -749,7 +590,7 @@ function build_bundled_package() { if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then # Hack for tps tests ARCH_STR=%{_arch} - %ifarch i386 i686 + %ifarch %{ix86} ARCH_STR="i?86" %endif export PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" @@ -777,64 +618,57 @@ function build_bundled_package() { popd } -# Build and install local yasm if needed -# ====================================== -%if 0%{?use_bundled_yasm} - build_bundled_package 'yasm-1*.rpm' 'yasm-*.rpm' '%{SOURCE301}' -%endif - %if 0%{?bundle_nss} - rpm -ivh %{SOURCE402} - #rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' --without=tests -ba %{_specdir}/nspr.spec - rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/nspr.spec - pushd %{_buildrootdir} - install_rpms_to_current_dir nspr-4*.rpm - install_rpms_to_current_dir nspr-devel*.rpm - popd - echo "Setting nspr flags" - # nss-setup-flags-env.inc - sed -i 's@%{gtk3_install_path}@%{_buildrootdir}%{gtk3_install_path}@g' %{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig/nspr*.pc - - export LDFLAGS="-L%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS" - export LDFLAGS="-Wl,-rpath,%{gtk3_install_path}/%{_lib} $LDFLAGS" - export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{gtk3_install_path}/%{_lib} $LDFLAGS" - export PKG_CONFIG_PATH=%{_buildrootdir}%{gtk3_install_path}/%{_lib}/pkgconfig - export PATH="{_buildrootdir}%{gtk3_install_path}/bin:$PATH" - - export PATH=%{_buildrootdir}/%{gtk3_install_path}/bin:$PATH - echo $PKG_CONFIG_PATH - - rpm -ivh %{SOURCE403} - rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/nss.spec - pushd %{_buildrootdir} - #cleanup - #rm -rf {_buildrootdir}/usr/lib/debug/* - #rm -rf {_buildrootdir}/usr/lib/.build-id - #install_rpms_to_current_dir nss-%{gtk3_nvr}*.rpm - #install_rpms_to_current_dir nss-devel-%{gtk3_nvr}*.rpm - install_rpms_to_current_dir nss-3*.rpm - install_rpms_to_current_dir nss-devel*.rpm - install_rpms_to_current_dir nss-pkcs11-devel*.rpm - install_rpms_to_current_dir nss-softokn-3*.rpm - install_rpms_to_current_dir nss-softokn-devel*.rpm - install_rpms_to_current_dir nss-softokn-freebl-3*.rpm - install_rpms_to_current_dir nss-softokn-freebl-devel*.rpm - install_rpms_to_current_dir nss-util-3*.rpm - install_rpms_to_current_dir nss-util-devel*.rpm - popd - %filter_provides_in %{gtk3_install_path}/%{_lib} - %filter_requires_in %{gtk3_install_path}/%{_lib} + rpm -ivh %{SOURCE402} + #rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec + rpmbuild --nodeps --define '_prefix %{bundled_install_path}' --without=tests -ba %{_specdir}/nspr.spec + pushd %{_buildrootdir} + install_rpms_to_current_dir nspr-4*.rpm + install_rpms_to_current_dir nspr-devel*.rpm + popd + echo "Setting nspr flags" + # nss-setup-flags-env.inc + sed -i 's@%{bundled_install_path}@%{_buildrootdir}%{bundled_install_path}@g' %{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig/nspr*.pc + + export LDFLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" + export LDFLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $LDFLAGS" + export LDFLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $LDFLAGS" + export PKG_CONFIG_PATH=%{_buildrootdir}%{bundled_install_path}/%{_lib}/pkgconfig + export PATH="{_buildrootdir}%{bundled_install_path}/bin:$PATH" + + export PATH=%{_buildrootdir}/%{bundled_install_path}/bin:$PATH + echo $PKG_CONFIG_PATH + + rpm -ivh %{SOURCE403} + rpmbuild --nodeps --define '_prefix %{bundled_install_path}' -ba %{_specdir}/nss.spec + pushd %{_buildrootdir} + #cleanup + #rm -rf {_buildrootdir}/usr/lib/debug/* + #rm -rf {_buildrootdir}/usr/lib/.build-id + install_rpms_to_current_dir nss-3*.rpm + install_rpms_to_current_dir nss-devel*.rpm + install_rpms_to_current_dir nss-pkcs11-devel*.rpm + install_rpms_to_current_dir nss-softokn-3*.rpm + install_rpms_to_current_dir nss-softokn-devel*.rpm + install_rpms_to_current_dir nss-softokn-freebl-3*.rpm + install_rpms_to_current_dir nss-softokn-freebl-devel*.rpm + install_rpms_to_current_dir nss-util-3*.rpm + install_rpms_to_current_dir nss-util-devel*.rpm + popd + %filter_provides_in %{bundled_install_path}/%{_lib} + %filter_requires_in %{bundled_install_path}/%{_lib} %filter_from_requires /libnss3.so.*/d %filter_from_requires /libsmime3.so.*/d %filter_from_requires /libssl3.so.*/d %filter_from_requires /libnssutil3.so.*/d %filter_from_requires /libnspr4.so.*/d + find %{_buildrootdir} %endif %if 0%{use_bundled_ffi} # Install libraries to the predefined location to later add them to the Firefox libraries rpm -ivh %{SOURCE303} - rpmbuild --nodeps --define '_prefix %{gtk3_install_path}' -ba %{_specdir}/libffi.spec + rpmbuild --nodeps --define '_prefix %{bundled_install_path}' -ba %{_specdir}/libffi.spec pushd %{_buildrootdir} install_rpms_to_current_dir 'libffi*.rpm' popd @@ -842,21 +676,6 @@ function build_bundled_package() { %endif %filter_setup -# If needed build the bundled python 2.7 and 3.6 and put it in the PATH -%if 0%{?use_bundled_python_3} - pushd %{_builddir}/python3/Python-%{bundled_python_version_3} - ./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" || cat config.log - make %{?_smp_mflags} install V=1 -j1 - cp Tools/scripts/pathfix.py %{_buildrootdir}/bin - popd -%endif -%if 0%{?use_bundled_python_2} - pushd %{_builddir}/python2/Python-%{bundled_python_version_2} - ./configure --prefix="%{_buildrootdir}" --exec-prefix="%{_buildrootdir}" --libdir="%{_buildrootdir}/lib" || cat config.log - make %{?_smp_mflags} install V=1 - popd -%endif - function replace_prefix() { FILE_NAME=$1 PKG_CONFIG_PREFIX=$2 @@ -867,38 +686,16 @@ function replace_prefix() { rm -rf tmp.txt } -# Build and install local openssl if needed -# ========================================= -%if 0%{?use_bundled_openssl} - rpm -ivh %{SOURCE305} - rpmbuild --nodeps -ba %{_specdir}/openssl.spec - pushd %{_buildrootdir} - install_rpms_to_current_dir openssl-1.0.2k*.rpm - install_rpms_to_current_dir openssl-libs-1.0.2k*.rpm - install_rpms_to_current_dir openssl-devel-1.0.2k*.rpm - install_rpms_to_current_dir openssl-static-1.0.2k*.rpm - # openssl is installed to %{_buildrootdir}/usr/lib(64)/... - export PKG_CONFIG_PATH=%{_buildrootdir}/%{_libdir}/pkgconfig/:$PKG_CONFIG_PATH - replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/libcrypto.pc prefix=%{_buildrootdir}/usr - replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/libssl.pc prefix=%{_buildrootdir}/usr - replace_prefix %{_buildrootdir}/%{_libdir}/pkgconfig/openssl.pc prefix=%{_buildrootdir}/usr - cat %{_buildrootdir}/%{_libdir}/pkgconfig/libcrypto.pc - cat %{_buildrootdir}/%{_libdir}/pkgconfig/libssl.pc - cat %{_buildrootdir}/%{_libdir}/pkgconfig/openssl.pc - pushd %{_rpmdir} - rm -f openssl-*.rpm - popd - popd -%endif - -# GTK3 << # We need to disable exit on error temporarily for the following scripts: set +e %if 0%{?use_dts} source scl_source enable devtoolset-%{dts_version} %endif %if 0%{?use_rustts} -source scl_source enable rust-toolset-%{rust_toolset_version} +source scl_source enable rust-toolset-%{rust_version} +%endif +%if 0%{?use_nodejsts} +source scl_source enable rh-nodejs10 %endif env @@ -906,14 +703,10 @@ which gcc which c++ which g++ which ld +which nasm # Build and install local node if needed # ====================================== -%if %{use_bundled_nodejs} - build_bundled_package 'nodejs-10*.rpm' 'nodejs-*.rpm npm-*.rpm' %{SOURCE304} "--with bootstrap" - export MOZ_NODEJS=$PACKAGE_DIR/usr/bin/node -%else - export MOZ_NODEJS=/usr/bin/node -%endif +export MOZ_NODEJS=`which node` mkdir -p my_rust_vendor cd my_rust_vendor @@ -933,17 +726,10 @@ cargo install cbindgen export PATH=`pwd`/.cargo/bin:$PATH export CBINDGEN=`pwd`/.cargo/bin/cbindgen - # debug missing sqlite3 python module +export MACH_USE_SYSTEM_PYTHON=1 ./mach python -c "import sys;print(sys.path)" -%if 0%{?big_endian} - echo "Generate big endian version of config/external/icu/data/icud58l.dat" - icupkg -tb config/external/icu/data/icudt67l.dat config/external/icu/data/icudt67b.dat - ls -l config/external/icu/data - rm -f config/external/icu/data/icudt*l.dat -%endif - mkdir %{_buildrootdir}/bin || : cp %{SOURCE28} %{_buildrootdir}/bin || : chmod +x %{_buildrootdir}/bin/node-stdout-nonblocking-wrapper @@ -965,62 +751,75 @@ MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//') # Explicitly force the hardening flags for Firefox so it passes the checksec test; # See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security" -%if 0%{?fedora} > 23 -# Disable null pointer gcc6 optimization in gcc6 (rhbz#1328045) -MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fno-delete-null-pointer-checks" -%endif -# Use hardened build? + %if %{?hardened_build} -MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" -%endif + MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now" + %endif %if %{?debug_build} -MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') -%endif -%ifarch s390 -MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/') -# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which -# overrides the -g1 from line above and breaks building on s390 -# (OOM when linking, rhbz#1238225) -export MOZ_DEBUG_FLAGS=" " + MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//') %endif # We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT" -%ifarch s390 %{arm} ppc aarch64 i686 x86_64 s390x -MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" +%if !%{build_with_clang} + %ifarch aarch64 %{ix86} x86_64 s390x + MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads" + %endif + %ifarch %{ix86} + MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug" + echo "ac_add_options --enable-linker=gold" >> .mozconfig + %endif %endif -%ifarch %{arm} i686 -MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug" -echo "ac_add_options --enable-linker=gold" >> .mozconfig + +%if 0%{?bundle_nss} + mkdir -p %{_buildrootdir}%{bundled_install_path}/%{_lib} + MOZ_LINK_FLAGS="-L%{_buildrootdir}%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" + MOZ_LINK_FLAGS="-Wl,-rpath,%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" + MOZ_LINK_FLAGS="-Wl,-rpath-link,%{_buildrootdir}%{bundled_install_path}/%{_lib} $MOZ_LINK_FLAGS" %endif -%ifarch %{arm} i686 -export RUSTFLAGS="-Cdebuginfo=0" +%ifarch %{ix86} + export RUSTFLAGS="-Cdebuginfo=0" + echo 'export RUSTFLAGS="-Cdebuginfo=0"' >> .mozconfig %endif -export CFLAGS=$MOZ_OPT_FLAGS -export CXXFLAGS=$MOZ_OPT_FLAGS -export LDFLAGS=$MOZ_LINK_FLAGS export PREFIX='%{_prefix}' export LIBDIR='%{_libdir}' export CC=gcc export CXX=g++ +echo "export CFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig +echo "export CXXFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig +echo "export LDFLAGS=\"$MOZ_LINK_FLAGS\"" >> .mozconfig + +%if %{build_with_clang} + echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig + echo "export AR=\"llvm-ar\"" >> .mozconfig + echo "export NM=\"llvm-nm\"" >> .mozconfig + echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig + echo "ac_add_options --enable-linker=lld" >> .mozconfig +%else + echo "export CC=gcc" >> .mozconfig + echo "export CXX=g++" >> .mozconfig + echo "export AR=\"gcc-ar\"" >> .mozconfig + echo "export NM=\"gcc-nm\"" >> .mozconfig + echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig +%endif MOZ_SMP_FLAGS=-j1 # More than two build tasks can lead to OOM gcc crash. %if 0%{?rhel} < 8 -[ -z "$RPM_BUILD_NCPUS" ] && \ - RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" -[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 + [ -z "$RPM_BUILD_NCPUS" ] && \ + RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" + [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 %else -%ifarch %{ix86} x86_64 ppc ppc64 ppc64le aarch64 -[ -z "$RPM_BUILD_NCPUS" ] && \ - RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" -[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 -[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j3 -[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j3 -%endif + %ifarch %{ix86} x86_64 ppc64 ppc64le aarch64 + [ -z "$RPM_BUILD_NCPUS" ] && \ + RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`" + [ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2 + [ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j3 + [ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j3 + %endif %endif cat /proc/meminfo @@ -1045,36 +844,48 @@ CPU_AVAILABLE=$(/usr/bin/getconf _NPROCESSORS_ONLN) # Pick the minimum from available CPUs or memory constrained number of jobs MOZ_SMP_FLAGS=-j$([ "$CPU_AVAILABLE" -le "$MEM_CONSTRAINED_JOBS" ] && echo "$CPU_AVAILABLE" || echo "$MEM_CONSTRAINED_JOBS") +# override smp flags to the rpmbuild defaults ATM +%ifnarch ppc64le +MOZ_SMP_FLAGS=%{_smp_mflags} +%endif + +%ifarch s390x +MOZ_SMP_FLAGS=-j2 +%endif + %if 0%{?bundle_nss} -echo "Setting nss flags" -# nss-setup-flags-env.inc -%include_file %{SOURCE401} -export PATH=%{_buildrootdir}/%{gtk3_install_path}/bin:$PATH -echo $PKG_CONFIG_PATH + echo "Setting nss flags" + # nss-setup-flags-env.inc + %include_file %{SOURCE401} + export PATH=%{_buildrootdir}/%{bundled_install_path}/bin:$PATH + echo $PKG_CONFIG_PATH %endif export MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS" #export MOZ_SERVICES_SYNC="1" # we need to strip the sources on i686 because to we don't use rpm to generate debugsymbols because of oom -%ifnarch i686 i386 -export STRIP=/bin/true +%ifnarch %{ix86} + export STRIP=/bin/true %endif which node echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' env ls %{_buildrootdir} - +export MACH_USE_SYSTEM_PYTHON=1 %if 0%{?use_llvmts} -scl enable llvm-toolset-%{llvm_version} './mach build -v' + #scl enable llvm-toolset-%{llvm_version} './mach build -v' + ./mach build -v %else -./mach build -v + ./mach build -v %endif +# Look for the reason we get: /usr/lib/rpm/debugedit: canonicalization unexpectedly shrank by one character +readelf -wl objdir/dist/bin/libxul.so | grep "/" #--------------------------------------------------------------------- %install - +export MACH_USE_SYSTEM_PYTHON=1 function install_rpms_to_current_dir() { PACKAGE_RPM=$(eval echo $1) PACKAGE_DIR=%{_rpmdir} @@ -1082,7 +893,7 @@ function install_rpms_to_current_dir() { if [ ! -f $PACKAGE_DIR/$PACKAGE_RPM ]; then # Hack for tps tests ARCH_STR=%{_arch} - %ifarch i386 i686 + %ifarch %{ix86} ARCH_STR="i?86" %endif PACKAGE_DIR="$PACKAGE_DIR/$ARCH_STR" @@ -1103,15 +914,15 @@ function install_rpms_to_current_dir() { install_rpms_to_current_dir nss-softokn-3*.rpm install_rpms_to_current_dir nss-softokn-freebl-3*.rpm install_rpms_to_current_dir nss-util-3*.rpm - + # cleanup unecessary nss files - #rm -rf %{_buildrootdir}/%{gtk3_install_path}/bin - #rm -rf %{_buildrootdir}/%{gtk3_install_path}/include - rm -rf %{buildroot}/%{gtk3_install_path}/lib/dracut - rm -rf %{buildroot}/%{gtk3_install_path}/%{_lib}/nss - #rm -rf %{_buildrootdir}/%{gtk3_install_path}/%{_lib}/pkgconfig - rm -rf %{buildroot}/%{gtk3_install_path}/%{_lib}/share - rm -rf %{buildroot}/%{gtk3_install_path}/share + #rm -rf %{_buildrootdir}/%{bundled_install_path}/bin + #rm -rf %{_buildrootdir}/%{bundled_install_path}/include + rm -rf %{buildroot}/%{bundled_install_path}/lib/dracut + rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/nss + #rm -rf %{_buildrootdir}/%{bundled_install_path}/%{_lib}/pkgconfig + rm -rf %{buildroot}/%{bundled_install_path}/%{_lib}/share + rm -rf %{buildroot}/%{bundled_install_path}/share rm -rf %{buildroot}/etc/pki rm -rf %{buildroot}/usr/lib/.build-id rm -rf %{buildroot}/etc/crypto-policies @@ -1135,17 +946,11 @@ desktop-file-install --dir %{buildroot}%{_datadir}/applications %{SOURCE20} rm -rf %{buildroot}%{_bindir}/thunderbird %{__rm} -rf %{buildroot}%{_bindir}/thunderbird %{__cat} %{SOURCE21} > %{buildroot}%{_bindir}/thunderbird +sed -i -e 's|%PREFIX%|%{_prefix}|' %{buildroot}%{_bindir}/thunderbird sed -i -e 's|%RHEL_ENV_VARS%||' %{buildroot}%{_bindir}/thunderbird %{__chmod} 755 %{buildroot}%{_bindir}/thunderbird -# Setup preferences, depends on RHEL version -THUNDERBIRD_PREF_SOURCE=%{SOURCE701} -%if 0%{?rhel} == 6 - THUNDERBIRD_PREF_SOURCE=%{SOURCE601} -%endif - -# Fill in THUNDERBIRD_RPM_VR into our rh-default-prefs -%{__cat} $THUNDERBIRD_PREF_SOURCE | %{__sed} -e 's,THUNDERBIRD_RPM_VR,%{version}-%{release},g' > \ +%{__cat} %{SOURCE701} | %{__sed} -e 's,THUNDERBIRD_RPM_VR,%{version}-%{release},g' > \ %{buildroot}/rh-default-prefs %{__install} -D %{buildroot}/rh-default-prefs %{buildroot}/%{mozappdir}/greprefs/all-redhat.js %{__install} -D %{buildroot}/rh-default-prefs %{buildroot}/%{mozappdir}/defaults/pref/all-redhat.js @@ -1177,11 +982,11 @@ for langpack in `ls thunderbird-langpacks/*.xpi`; do language=`basename $langpack .xpi` extensionID=langpack-$language@thunderbird.mozilla.org %{__mkdir_p} $extensionID - unzip $langpack -d $extensionID + unzip -qq $langpack -d $extensionID find $extensionID -type f | xargs chmod 644 cd $extensionID - zip -r9mX ../${extensionID}.xpi * + zip -qq -r9mX ../${extensionID}.xpi * cd - %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir} @@ -1194,14 +999,6 @@ echo "Adding following langpacks:" cat %{name}.lang %endif -# Install feature extensions. -echo > %{name}.features -if [ -f "$(ls -1 %{mozappfeatures} | head -1)" ]; then - ls -1 %{mozappfeatures} >> %{name}.features - echo "Adding following features:" - cat %{name}.features -fi - # Get rid of devel package and its debugsymbols %{__rm} -rf %{buildroot}%{_libdir}/%{name}-devel-%{version} @@ -1221,19 +1018,62 @@ touch %{buildroot}%{mozappdir}/components/xpti.dat rm -rf %{_prefix}/lib/debug/lib/%{name}-devel-* rm -rf %{_prefix}/lib/debug/lib64/%{name}-devel-* -# Fixing python version -test -f "%{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode_gen_breaktests.py" && sed -i -e 's|/usr/bin/env python$|/usr/bin/env python2|' %{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode_gen_breaktests.py -test -f "%{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode.py" && sed -i -e 's|/usr/bin/env python$|/usr/bin/env python2|' %{buildroot}%{mozappdir}/distribution/extensions/unicode-segmentation/scripts/unicode.py -test -f "%{buildroot}%{mozappdir}/distribution/extensions/unicode-width/scripts/unicode.py" && sed -i -e 's|/usr/bin/env python$|/usr/bin/env python2|' %{buildroot}%{mozappdir}/distribution/extensions/unicode-width/scripts/unicode.py # Removing librnp.so - we cannot deliver that in RHELs %{__rm} -rf %{buildroot}%{mozappdir}/librnp.so +# Register as an application to be visible in the software center +# +# NOTE: It would be *awesome* if this file was maintained by the upstream +# project, translated and installed into the right place during `make install`. +# +# See http://www.freedesktop.org/software/appstream/docs/ for more details. +# +%{__mkdir_p} %{buildroot}%{_datadir}/appdata +cat > %{buildroot}%{_datadir}/appdata/%{name}.appdata.xml < + + + + mozilla-thunderbird.desktop + CC0-1.0 + MPLv1.1 or GPLv2+ or LGPLv2+ + +

+ Thunderbird is an email client that allows you to read, write and organise all + of your email messages. It is compatible with most email accounts, including the + most popular webmail services. +

+

+ Thunderbird is designed by Mozilla, a global community working together to make + the Internet better. Mozilla believe that the Internet should be open, public, + and accessible to everyone without any restrictions. +

+
    +
  • Easier than ever to set up a new e-mail account
  • +
  • Awesome search allows you to find your messages fast
  • +
  • Thousands of add-ons give you the freedom to make Thunderbird your own
  • +
+
+ http://www.mozilla.org/thunderbird/ + + https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/mozilla-thunderbird/a.png + + + + + +
+EOF + #--------------------------------------------------------------------- %clean -rm -rf %{_srcrpmdir}/gtk3-private-%{gtk3_nvr}*.src.rpm -find %{_rpmdir} -name "gtk3-private-*%{gtk3_nvr}*.rpm" -delete rm -rf %{_srcrpmdir}/libffi*.src.rpm find %{_rpmdir} -name "libffi*.rpm" -delete rm -rf %{_srcrpmdir}/openssl*.src.rpm @@ -1247,24 +1087,21 @@ find %{_rpmdir} -name "nspr*.rpm" -delete update-desktop-database &> /dev/null || : touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : -if [ -x %{_bindir}/gtk-update-icon-cache ]; then - %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || : -fi - %postun +update-desktop-database &> /dev/null || : if [ $1 -eq 0 ] ; then touch --no-create %{_datadir}/icons/hicolor &>/dev/null gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : fi -update-desktop-database &> /dev/null || : %posttrans gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #=============================================================================== -%files -f %{name}.lang -f %{name}.features +%files -f %{name}.lang %defattr(-,root,root,-) %attr(755,root,root) %{_bindir}/thunderbird +%{_datadir}/appdata/*.appdata.xml %attr(644,root,root) %{_datadir}/applications/thunderbird.desktop %dir %{_datadir}/mozilla/extensions/%{thunderbird_app_id} %dir %{_libdir}/mozilla/extensions/%{thunderbird_app_id} @@ -1274,6 +1111,10 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %dir %{mozappdir}/components %ghost %{mozappdir}/components/compreg.dat %ghost %{mozappdir}/components/xpti.dat +%if %{build_langpacks} +%dir %{langpackdir} +%endif + %{mozappdir}/omni.ja %{mozappdir}/plugin-container %{mozappdir}/defaults @@ -1293,14 +1134,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : %{_datadir}/icons/hicolor/32x32/apps/thunderbird.png %{_datadir}/icons/hicolor/48x48/apps/thunderbird.png %{mozappdir}/pingsender -%{mozappdir}/gtk2/libmozgtk.so %{mozappdir}/dependentlibs.list -%dir %{mozappdir}/distribution %{mozappdir}/fonts/TwemojiMozilla.ttf -%if !%{?system_libicu} -#%%{mozappdir}/icudt*.dat -%endif %if !%{?system_nss} %exclude %{mozappdir}/libnssckbi.so %endif @@ -1325,8 +1161,17 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : #=============================================================================== %changelog -* Tue Nov 02 2021 CentOS Sources - 78.13.0-2.el9.centos -- Apply debranding changes +* Tue Nov 02 2021 Eike Rathke - 91.3.0-2 +- Update to 19.3.0 build2 + +* Mon Nov 01 2021 Eike Rathke - 91.3.0-1 +- Update to 91.3.0 build1 + +* Fri Oct 08 2021 Eike Rathke - 91.2.0-1 +- Update to 91.2.0 + +* Tue Sep 07 2021 Eike Rathke - 78.14.0-1 +- Update to 78.14.0 * Thu Aug 19 2021 Carlos O'Donell - 78.13.0-2 - Rebuilt for libffi 3.4.2 SONAME transition.