1// Copyright (C) 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_INTERNAL void U_EXPORT2 72printAssemblyHeadersToStdErr(void); 73 74U_INTERNAL UBool U_EXPORT2 75checkAssemblyHeaderName(const char* optAssembly); 76 77U_INTERNAL void U_EXPORT2 78writeCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath); 79 80U_INTERNAL void U_EXPORT2 81writeAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath); 82 83U_INTERNAL void U_EXPORT2 84writeObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath); 85 86#endif 87