blob: c93bd6f10d7a87baab3d31b820a26dbf9226f127 [file] [log] [blame]
// Copyright 2019 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#![doc(test(ignore))]
#![allow(
dead_code,
non_snake_case,
non_camel_case_types,
non_upper_case_globals,
unused_imports
)]
#[cfg(all(feature="icu_version_in_env", feature="icu_config"))]
compile_error!(
"Features `icu_version_in_env` and `icu_config` are not compatible." +
" Choose at most one of them.");
#[cfg(all(feature="icu_config", not(feature="use-bindgen")))]
compile_error!("Feature `icu_config` is useless without the feature `use-bindgen`");
// This feature combination is not inherrently a problem; we had no use case that
// required it just yet.
#[cfg(all(not(feature="renaming"), not(feature="use-bindgen")))]
compile_error!("You must use `renaming` when not using `use-bindgen`");
#[cfg(feature="use-bindgen")]
include!(concat!(env!("OUT_DIR"), "/macros.rs"));
#[cfg(all(feature="use-bindgen",feature="icu_config",not(feature="icu_version_in_env")))]
include!(concat!(env!("OUT_DIR"), "/lib.rs"));
#[cfg(not(feature="use-bindgen"))]
include!("../bindgen/macros.rs");
#[cfg(all(not(feature="use-bindgen"),not(feature="icu_version_in_env"),not(feature="icu_config")))]
include!("../bindgen/lib.rs");
#[cfg(all(not(feature="use-bindgen"),feature="icu_version_in_env",not(feature="icu_config")))]
include!(concat!("../bindgen/lib_", env!("RUST_ICU_MAJOR_VERSION_NUMBER"), ".rs"));
// Add the ability to print the error code, so that it can be reported in
// aggregated errors.
impl std::fmt::Display for UErrorCode {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
write!(f, "{:?}", self)
}
}
extern crate libc;
// A "fake" extern used to express link preferences. The libraries mentioned
// below will be converted to "-l" flags to the linker.
#[link(name = "icui18n", kind = "dylib")]
#[link(name = "icuuc", kind = "dylib")]
extern "C" {}