// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /****************************************************************************** * Copyright (C) 2008-2011, International Business Machines * Corporation and others. All Rights Reserved. ******************************************************************************* */ #ifndef __PKG_GENC_H__ #define __PKG_GENC_H__ #include "unicode/utypes.h" #include "toolutil.h" #include "unicode/putil.h" #include "putilimp.h" /*** Platform #defines move here ***/ #if U_PLATFORM_HAS_WIN32_API #ifdef __GNUC__ #define WINDOWS_WITH_GNUC #else #define WINDOWS_WITH_MSVC #endif #endif #if !defined(WINDOWS_WITH_MSVC) #define BUILD_DATA_WITHOUT_ASSEMBLY #endif #ifndef U_DISABLE_OBJ_CODE /* testing */ #if defined(WINDOWS_WITH_MSVC) || U_PLATFORM_IS_LINUX_BASED #define CAN_WRITE_OBJ_CODE #endif #if U_PLATFORM_HAS_WIN32_API || defined(U_ELF) #define CAN_GENERATE_OBJECTS #endif #endif #if U_PLATFORM == U_PF_CYGWIN || defined(CYGWINMSVC) #define USING_CYGWIN #endif /* * When building the data library without assembly, * some platforms use a single c code file for all of * the data to generate the final data library. This can * increase the performance of the pkdata tool. */ #if U_PLATFORM == U_PF_OS400 #define USE_SINGLE_CCODE_FILE #endif /* Need to fix the file seperator character when using MinGW. */ #if defined(WINDOWS_WITH_GNUC) || defined(USING_CYGWIN) #define PKGDATA_FILE_SEP_STRING "/" #else #define PKGDATA_FILE_SEP_STRING U_FILE_SEP_STRING #endif #define LARGE_BUFFER_MAX_SIZE 2048 #define SMALL_BUFFER_MAX_SIZE 512 #define SMALL_BUFFER_FLAG_NAMES 32 #define BUFFER_PADDING_SIZE 20 /** End platform defines **/ U_INTERNAL void U_EXPORT2 printAssemblyHeadersToStdErr(void); U_INTERNAL UBool U_EXPORT2 checkAssemblyHeaderName(const char* optAssembly); U_INTERNAL void U_EXPORT2 writeCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath); U_INTERNAL void U_EXPORT2 writeAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath); U_INTERNAL void U_EXPORT2 writeObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath); #endif