Home | History | Annotate | Download | only in toolutil
      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 
     71 U_INTERNAL void U_EXPORT2
     72 printAssemblyHeadersToStdErr(void);
     73 
     74 U_INTERNAL UBool U_EXPORT2
     75 checkAssemblyHeaderName(const char* optAssembly);
     76 
     77 U_INTERNAL void U_EXPORT2
     78 writeCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath);
     79 
     80 U_INTERNAL void U_EXPORT2
     81 writeAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath);
     82 
     83 U_INTERNAL void U_EXPORT2
     84 writeObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath);
     85 
     86 #endif
     87