pkg_genc.h (2660B)
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 16384 63 #define SMALL_BUFFER_MAX_SIZE 4096 64 #define BUFFER_PADDING_SIZE 20 65 66 /** End platform defines **/ 67 68 69 70 U_CAPI void U_EXPORT2 71 printAssemblyHeadersToStdErr(void); 72 73 U_CAPI UBool U_EXPORT2 74 checkAssemblyHeaderName(const char* optAssembly); 75 76 U_CAPI UBool U_EXPORT2 77 checkCpuArchitecture(const char* optCpuArch); 78 79 U_CAPI void U_EXPORT2 80 writeCCode( 81 const char *filename, 82 const char *destdir, 83 const char *optEntryPoint, 84 const char *optName, 85 const char *optFilename, 86 char *outFilePath, 87 size_t outFilePathCapacity); 88 89 U_CAPI void U_EXPORT2 90 writeAssemblyCode( 91 const char *filename, 92 const char *destdir, 93 const char *optEntryPoint, 94 const char *optFilename, 95 char *outFilePath, 96 size_t outFilePathCapacity); 97 98 U_CAPI void U_EXPORT2 99 writeObjectCode( 100 const char *filename, 101 const char *destdir, 102 const char *optEntryPoint, 103 const char *optMatchArch, 104 const char *optCpuArch, 105 const char *optFilename, 106 char *outFilePath, 107 size_t outFilePathCapacity, 108 UBool optWinDllExport); 109 110 #endif