16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/****************************************************************************** 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Copyright (C) 2008-2011, International Business Machines 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Corporation and others. All Rights Reserved. 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org ******************************************************************************* 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __PKG_GENC_H__ 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define __PKG_GENC_H__ 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "toolutil.h" 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/putil.h" 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "putilimp.h" 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*** Platform #defines move here ***/ 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_PLATFORM_HAS_WIN32_API 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifdef __GNUC__ 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define WINDOWS_WITH_GNUC 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#else 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define WINDOWS_WITH_MSVC 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !defined(WINDOWS_WITH_MSVC) 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define BUILD_DATA_WITHOUT_ASSEMBLY 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_DISABLE_OBJ_CODE /* testing */ 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if defined(WINDOWS_WITH_MSVC) || U_PLATFORM_IS_LINUX_BASED 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAN_WRITE_OBJ_CODE 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_PLATFORM_HAS_WIN32_API || defined(U_ELF) 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define CAN_GENERATE_OBJECTS 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_PLATFORM == U_PF_CYGWIN || defined(CYGWINMSVC) 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define USING_CYGWIN 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * When building the data library without assembly, 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * some platforms use a single c code file for all of 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the data to generate the final data library. This can 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * increase the performance of the pkdata tool. 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if U_PLATFORM == U_PF_OS400 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define USE_SINGLE_CCODE_FILE 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* Need to fix the file seperator character when using MinGW. */ 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if defined(WINDOWS_WITH_GNUC) || defined(USING_CYGWIN) 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define PKGDATA_FILE_SEP_STRING "/" 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#else 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define PKGDATA_FILE_SEP_STRING U_FILE_SEP_STRING 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define LARGE_BUFFER_MAX_SIZE 2048 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SMALL_BUFFER_MAX_SIZE 512 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define SMALL_BUFFER_FLAG_NAMES 32 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define BUFFER_PADDING_SIZE 20 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** End platform defines **/ 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_INTERNAL void U_EXPORT2 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprintAssemblyHeadersToStdErr(void); 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_INTERNAL UBool U_EXPORT2 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgcheckAssemblyHeaderName(const char* optAssembly); 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_INTERNAL void U_EXPORT2 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgwriteCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath); 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_INTERNAL void U_EXPORT2 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgwriteAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath); 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_INTERNAL void U_EXPORT2 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgwriteObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath); 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 85