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