17c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* 27c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org****************************************************************************** 37c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 47c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* Copyright (C) 1997-2010, International Business Machines 57c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* Corporation and others. All Rights Reserved. 67c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 77c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org****************************************************************************** 87c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 97c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* Note: autoconf creates platform.h from platform.h.in at configure time. 107c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 117c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org****************************************************************************** 127c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 137c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* FILE NAME : platform.h 147c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 157c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* Date Name Description 167c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 05/13/98 nos Creation (content moved here from ptypes.h). 177c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 03/02/99 stephen Added AS400 support. 187c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 03/30/99 stephen Added Linux support. 197c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org* 04/13/99 stephen Reworked for autoconf. 207c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org****************************************************************************** 217c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org*/ 227c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 237c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef _PLATFORM_H 247c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define _PLATFORM_H 257c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 267c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 277c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \file 287c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \brief Basic types for the platform 297c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 307c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 317c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* This file should be included before uvernum.h. */ 327c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if defined(UVERNUM_H) 337c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# error Do not include unicode/uvernum.h before #including unicode/platform.h. Instead of unicode/uvernum.h, #include unicode/uversion.h 347c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 357c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 367c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 377c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Determine wheter to enable auto cleanup of libraries. 387c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 397c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 407c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef UCLN_NO_AUTO_CLEANUP 417c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define UCLN_NO_AUTO_CLEANUP 1 427c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 437c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 447c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Need platform.h when using CYGWINMSVC to get definitions above. Ignore everything else. */ 457c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef CYGWINMSVC 467c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 477c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** Define the platform we're on. */ 487c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_LINUX 497c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_LINUX 507c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 517c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 527c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 537c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \def U_HAVE_DIRENT_H 547c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Define whether dirent.h is available 557c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 567c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 577c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_DIRENT_H 587c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_DIRENT_H 1 597c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 607c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 617c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** Define whether inttypes.h is available */ 627c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_INTTYPES_H 637c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_INTTYPES_H 1 647c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 657c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 667c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 677c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Define what support for C++ streams is available. 687c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * If U_IOSTREAM_SOURCE is set to 199711, then <iostream> is available 697c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * (1997711 is the date the ISO/IEC C++ FDIS was published), and then 707c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * one should qualify streams using the std namespace in ICU header 717c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * files. 727c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * If U_IOSTREAM_SOURCE is set to 198506, then <iostream.h> is 737c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * available instead (198506 is the date when Stroustrup published 747c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * "An Extensible I/O Facility for C++" at the summer USENIX conference). 757c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * If U_IOSTREAM_SOURCE is 0, then C++ streams are not available and 767c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * support for them will be silently suppressed in ICU. 777c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * 787c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 797c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 807c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_IOSTREAM_SOURCE 817c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_IOSTREAM_SOURCE 199711 827c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 837c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 847c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 857c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \def U_HAVE_STD_STRING 867c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Define whether the standard C++ (STL) <string> header is available. 877c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * For platforms that do not use platform.h and do not define this constant 887c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * in their platform-specific headers, std_string.h defaults 897c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * U_HAVE_STD_STRING to 1. 907c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 917c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 927c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_STD_STRING 937c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_STD_STRING 1 947c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 957c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 967c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Determines whether specific types are available */ 977c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_INT8_T 987c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_INT8_T 1 997c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1007c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1017c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_UINT8_T 1027c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_UINT8_T 1 1037c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1047c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1057c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_INT16_T 1067c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_INT16_T 1 1077c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1087c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1097c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_UINT16_T 1107c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_UINT16_T 1 1117c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1127c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1137c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_INT32_T 1147c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_INT32_T 1 1157c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1167c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1177c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_UINT32_T 1187c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_UINT32_T 1 1197c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1207c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1217c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_INT64_T 1227c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_INT64_T 1 1237c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1247c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1257c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_UINT64_T 1267c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_UINT64_T 1 1277c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1287c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1297c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 1307c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1317c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 1327c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Compiler and environment features */ 1337c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 1347c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1357c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Define whether namespace is supported */ 1367c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_NAMESPACE 1377c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_NAMESPACE 1 1387c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1397c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1407c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Determines the endianness of the platform 1417c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org It's done this way in case multiple architectures are being built at once. 1427c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org For example, Darwin supports fat binaries, which can be both PPC and x86 based. */ 1437c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) 1447c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN) 1457c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#else 1467c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_IS_BIG_ENDIAN 0 1477c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1487c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1497c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* 1 or 0 to enable or disable threads. If undefined, default is: enable threads. */ 1507c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef ICU_USE_THREADS 1517c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define ICU_USE_THREADS 1 1527c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1537c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1547c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* On strong memory model CPUs (e.g. x86 CPUs), we use a safe & quick double check lock. */ 1557c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) 1567c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define UMTX_STRONG_MEMORY_MODEL 1 1577c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1587c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1597c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_DEBUG 1607c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_DEBUG 0 1617c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1627c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1637c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_RELEASE 1647c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_RELEASE 1 1657c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1667c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1677c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Determine whether to disable renaming or not. This overrides the 1687c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org setting in umachine.h which is for all platforms. */ 1697c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_DISABLE_RENAMING 1707c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_DISABLE_RENAMING 0 1717c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1727c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1737c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Determine whether to override new and delete. */ 1747c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_OVERRIDE_CXX_ALLOCATION 1757c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_OVERRIDE_CXX_ALLOCATION 1 1767c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1777c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Determine whether to override placement new and delete for STL. */ 1787c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_PLACEMENT_NEW 1797c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_PLACEMENT_NEW 1 1807c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1817c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1827c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Determine whether to enable tracing. */ 1837c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_ENABLE_TRACING 1847c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_ENABLE_TRACING 0 1857c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1867c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1877c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 1887c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Whether to enable Dynamic loading in ICU 1897c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 1907c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 1917c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_ENABLE_DYLOAD 1927c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_ENABLE_DYLOAD 1 1937c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 1947c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 1957c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 1967c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Whether to test Dynamic loading as an OS capabilty 1977c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 1987c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 1997c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_CHECK_DYLOAD 2007c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_CHECK_DYLOAD 1 2017c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2027c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2037c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2047c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** Do we allow ICU users to use the draft APIs by default? */ 2057c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_DEFAULT_SHOW_DRAFT 2067c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_DEFAULT_SHOW_DRAFT 1 2077c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2087c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2097c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 2107c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2117c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 2127c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Character data types */ 2137c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 2147c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2157c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if ((defined(OS390) && (!defined(__CHARSET_LIB) || !__CHARSET_LIB))) || defined(OS400) 2167c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_CHARSET_FAMILY 1 2177c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2187c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2197c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 2207c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2217c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 2227c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Information about wchar support */ 2237c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 2247c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2257c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_WCHAR_H 2267c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_WCHAR_H 1 2277c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2287c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2297c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_SIZEOF_WCHAR_T 2307c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_SIZEOF_WCHAR_T 4 2317c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2327c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2337c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_WCSCPY 2347c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_WCSCPY 1 2357c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2367c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2377c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 2387c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2397c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 2407c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @{ 2417c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \def U_DECLARE_UTF16 2427c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Do not use this macro. Use the UNICODE_STRING or U_STRING_DECL macros 2437c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * instead. 2447c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 2457c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * 2467c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \def U_GNUC_UTF16_STRING 2477c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 2487c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 2497c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_GNUC_UTF16_STRING 2507c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_GNUC_UTF16_STRING 0 2517c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2527c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if 1 || defined(U_CHECK_UTF16_STRING) 2537c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if (defined(__xlC__) && defined(__IBM_UTF_LITERAL) && U_SIZEOF_WCHAR_T != 2) \ 2547c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org || (defined(__HP_aCC) && __HP_aCC >= 035000) \ 2557c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org || (defined(__HP_cc) && __HP_cc >= 111106) \ 2567c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org || U_GNUC_UTF16_STRING 2577c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_DECLARE_UTF16(string) u ## string 2587c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) 2597c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x580) */ 2607c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Sun's C compiler has issues with this notation, and it's unreliable. */ 2617c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_DECLARE_UTF16(string) U ## string 2627c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#elif U_SIZEOF_WCHAR_T == 2 \ 2637c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org && (U_CHARSET_FAMILY == 0 || ((defined(OS390) || defined(OS400)) && defined(__UCS2__))) 2647c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_DECLARE_UTF16(string) L ## string 2657c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2667c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2677c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2687c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 2697c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2707c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 2717c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Information about POSIX support */ 2727c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 2737c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2747c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_NL_LANGINFO_CODESET 2757c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_NL_LANGINFO_CODESET 1 2767c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2777c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2787c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_NL_LANGINFO_CODESET 2797c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_NL_LANGINFO_CODESET CODESET 2807c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2817c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2827c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if 1 2837c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_TZSET tzset 2847c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2857c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if defined(__GLIBC__) 2867c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_TIMEZONE __timezone 2877c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#else 2887c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_TIMEZONE _timezone 2897c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2907c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if 1 2917c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_TZNAME tzname 2927c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 2937c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2947c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_MMAP 1 2957c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_POPEN 1 2967c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2977c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 2987c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 2997c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3007c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Symbol import-export control */ 3017c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3027c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3037c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifdef U_STATIC_IMPLEMENTATION 3047c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_EXPORT 3057c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#elif 1 3067c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_EXPORT __attribute__((visibility("default"))) 3077c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \ 3087c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) 3097c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_EXPORT __global 3107c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*#elif defined(__HP_aCC) || defined(__HP_cc) 3117c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_EXPORT __declspec(dllexport)*/ 3127c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#else 3137c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_EXPORT 3147c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 3157c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3167c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* U_CALLCONV is releated to U_EXPORT2 */ 3177c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_EXPORT2 3187c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3197c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* cygwin needs to export/import data */ 3207c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if defined(U_CYGWIN) && !defined(__GNUC__) 3217c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_IMPORT __declspec(dllimport) 3227c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#else 3237c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_IMPORT 3247c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 3257c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3267c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* @} */ 3277c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3287c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3297c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Code alignment and C function inlining */ 3307c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3317c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3327c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_INLINE 3337c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# ifdef __cplusplus 3347c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_INLINE inline 3357c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# else 3367c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_INLINE __inline__ 3377c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# endif 3387c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 3397c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3407c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_ALIGN_CODE 3417c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_ALIGN_CODE(n) 3427c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 3437c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3447c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 3457c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3467c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3477c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ GCC built in functions for atomic memory operations */ 3487c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3497c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3507c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 3517c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \def U_HAVE_GCC_ATOMICS 3527c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 3537c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 3547c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_HAVE_GCC_ATOMICS 3557c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_HAVE_GCC_ATOMICS 1 3567c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 3577c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3587c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 3597c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3607c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3617c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @{ Programs used by ICU code */ 3627c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3637c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3647c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 3657c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * \def U_MAKE 3667c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * What program to execute to run 'make' 3677c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 3687c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#ifndef U_MAKE 3697c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#define U_MAKE "make" 3707c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 3717c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3727c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** @} */ 3737c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3747c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif /* CYGWINMSVC */ 3757c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3767c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3777c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Custom icu entry point renaming */ 3787c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/*===========================================================================*/ 3797c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3807c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 3817c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Define the library suffix with C syntax. 3827c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 3837c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 3847c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_LIB_SUFFIX_C_NAME 3857c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 3867c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * Define the library suffix as a string with C syntax 3877c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 3887c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 3897c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_LIB_SUFFIX_C_NAME_STRING "" 3907c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/** 3917c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * 1 if a custom library suffix is set 3927c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org * @internal 3937c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org */ 3947c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_HAVE_LIB_SUFFIX 0 3957c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 3967c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#if U_HAVE_LIB_SUFFIX 3977c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# ifndef U_ICU_ENTRY_POINT_RENAME 3987c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org/* Renaming pattern: u_strcpy_41_suffix */ 3997c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_ICU_ENTRY_POINT_RENAME(x) x ## _ ## 46 ## 4007c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# define U_DEF_ICUDATA_ENTRY_POINT(major, minor) icudt####major##minor##_dat 4017c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 4027c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org# endif 4037c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 4047c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org 4057c276ae0f919b68dd7d53b3445069014b75211c5sergeyu@chromium.org#endif 406