summaryrefslogtreecommitdiffstats
path: root/intl/icu/source/tools/toolutil/pkg_genc.h
blob: 2dd1b45cde992eb78a39d7b5ae6b98120a0b9302 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// © 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_CAPI void U_EXPORT2
printAssemblyHeadersToStdErr(void);

U_CAPI UBool U_EXPORT2
checkAssemblyHeaderName(const char* optAssembly);

U_CAPI void U_EXPORT2
writeCCode(
    const char *filename,
    const char *destdir,
    const char *optEntryPoint,
    const char *optName,
    const char *optFilename,
    char *outFilePath,
    size_t outFilePathCapacity);

U_CAPI void U_EXPORT2
writeAssemblyCode(
    const char *filename,
    const char *destdir,
    const char *optEntryPoint,
    const char *optFilename,
    char *outFilePath,
    size_t outFilePathCapacity);

U_CAPI void U_EXPORT2
writeObjectCode(
    const char *filename,
    const char *destdir,
    const char *optEntryPoint,
    const char *optMatchArch,
    const char *optFilename,
    char *outFilePath,
    size_t outFilePathCapacity,
    UBool optWinDllExport);

#endif