1// © 2016 and later: Unicode, Inc. and others. 2// License & terms of use: http://www.unicode.org/copyright.html 3/****************************************************************************** 4 * Copyright (C) 2008-2011, International Business Machines 5 * Corporation and others. All Rights Reserved. 6 ******************************************************************************* 7 */ 8 9#ifndef __PKG_GENC_H__ 10#define __PKG_GENC_H__ 11 12#include "unicode/utypes.h" 13#include "toolutil.h" 14 15#include "unicode/putil.h" 16#include "putilimp.h" 17 18/*** Platform #defines move here ***/ 19#if U_PLATFORM_HAS_WIN32_API 20#ifdef __GNUC__ 21#define WINDOWS_WITH_GNUC 22#else 23#define WINDOWS_WITH_MSVC 24#endif 25#endif 26 27 28#if !defined(WINDOWS_WITH_MSVC) 29#define BUILD_DATA_WITHOUT_ASSEMBLY 30#endif 31 32#ifndef U_DISABLE_OBJ_CODE /* testing */ 33#if defined(WINDOWS_WITH_MSVC) || U_PLATFORM_IS_LINUX_BASED 34#define CAN_WRITE_OBJ_CODE 35#endif 36#if U_PLATFORM_HAS_WIN32_API || defined(U_ELF) 37#define CAN_GENERATE_OBJECTS 38#endif 39#endif 40 41#if U_PLATFORM == U_PF_CYGWIN || defined(CYGWINMSVC) 42#define USING_CYGWIN 43#endif 44 45/* 46 * When building the data library without assembly, 47 * some platforms use a single c code file for all of 48 * the data to generate the final data library. This can 49 * increase the performance of the pkdata tool. 50 */ 51#if U_PLATFORM == U_PF_OS400 52#define USE_SINGLE_CCODE_FILE 53#endif 54 55/* Need to fix the file seperator character when using MinGW. */ 56#if defined(WINDOWS_WITH_GNUC) || defined(USING_CYGWIN) 57#define PKGDATA_FILE_SEP_STRING "/" 58#else 59#define PKGDATA_FILE_SEP_STRING U_FILE_SEP_STRING 60#endif 61 62#define LARGE_BUFFER_MAX_SIZE 2048 63#define SMALL_BUFFER_MAX_SIZE 512 64#define SMALL_BUFFER_FLAG_NAMES 32 65#define BUFFER_PADDING_SIZE 20 66 67/** End platform defines **/ 68 69 70 71U_CAPI void U_EXPORT2 72printAssemblyHeadersToStdErr(void); 73 74U_CAPI UBool U_EXPORT2 75checkAssemblyHeaderName(const char* optAssembly); 76 77U_CAPI void U_EXPORT2 78writeCCode( 79 const char *filename, 80 const char *destdir, 81 const char *optEntryPoint, 82 const char *optName, 83 const char *optFilename, 84 char *outFilePath, 85 size_t outFilePathCapacity); 86 87U_CAPI void U_EXPORT2 88writeAssemblyCode( 89 const char *filename, 90 const char *destdir, 91 const char *optEntryPoint, 92 const char *optFilename, 93 char *outFilePath, 94 size_t outFilePathCapacity); 95 96U_CAPI void U_EXPORT2 97writeObjectCode( 98 const char *filename, 99 const char *destdir, 100 const char *optEntryPoint, 101 const char *optMatchArch, 102 const char *optFilename, 103 char *outFilePath, 104 size_t outFilePathCapacity, 105 UBool optWinDllExport); 106 107#endif 108