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