1b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/******************************************************************************
283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius *   Copyright (C) 2008-2011, International Business Machines
3b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru *   Corporation and others.  All Rights Reserved.
4b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru *******************************************************************************
5b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */
6b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
7b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#ifndef __PKG_GENC_H__
8b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#define __PKG_GENC_H__
9b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
10b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#include "unicode/utypes.h"
1183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#include "toolutil.h"
1283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
1383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#include "unicode/putil.h"
1483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#include "putilimp.h"
1583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
1683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/*** Platform #defines move here ***/
1783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if U_PLATFORM_HAS_WIN32_API
1883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifdef __GNUC__
1983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define WINDOWS_WITH_GNUC
2083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#else
2183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define WINDOWS_WITH_MSVC
2283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
2383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
2483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
2583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
2683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if !defined(WINDOWS_WITH_MSVC)
2783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define BUILD_DATA_WITHOUT_ASSEMBLY
2883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
2983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
3083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#ifndef U_DISABLE_OBJ_CODE /* testing */
3183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if defined(WINDOWS_WITH_MSVC) || U_PLATFORM_IS_LINUX_BASED
3283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define CAN_WRITE_OBJ_CODE
3383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
3483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if U_PLATFORM_HAS_WIN32_API || defined(U_ELF)
3583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define CAN_GENERATE_OBJECTS
3683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
3783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
3883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
3983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if U_PLATFORM == U_PF_CYGWIN || defined(CYGWINMSVC)
4083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define USING_CYGWIN
4183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
4283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
4383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/*
4483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * When building the data library without assembly,
4583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * some platforms use a single c code file for all of
4683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * the data to generate the final data library. This can
4783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius * increase the performance of the pkdata tool.
4883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius */
4983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if U_PLATFORM == U_PF_OS400
5083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define USE_SINGLE_CCODE_FILE
5183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
5283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
5383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/* Need to fix the file seperator character when using MinGW. */
5483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#if defined(WINDOWS_WITH_GNUC) || defined(USING_CYGWIN)
5583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define PKGDATA_FILE_SEP_STRING "/"
5683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#else
5783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define PKGDATA_FILE_SEP_STRING U_FILE_SEP_STRING
5883a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#endif
5983a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
6083a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define LARGE_BUFFER_MAX_SIZE 2048
6183a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define SMALL_BUFFER_MAX_SIZE 512
6283a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define SMALL_BUFFER_FLAG_NAMES 32
6383a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius#define BUFFER_PADDING_SIZE 20
6483a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
6583a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius/** End platform defines **/
6683a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
6783a171d1a62abf406f7f44ae671823d5ec20db7dCraig Cornelius
68b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
69b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_INTERNAL void U_EXPORT2
7050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoprintAssemblyHeadersToStdErr(void);
71b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
72b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_INTERNAL UBool U_EXPORT2
73b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QuerucheckAssemblyHeaderName(const char* optAssembly);
74b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
75b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_INTERNAL void U_EXPORT2
76b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruwriteCCode(const char *filename, const char *destdir, const char *optName, const char *optFilename, char *outFilePath);
77b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
78b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_INTERNAL void U_EXPORT2
79b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruwriteAssemblyCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optFilename, char *outFilePath);
80b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
81b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruU_INTERNAL void U_EXPORT2
82b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste QueruwriteObjectCode(const char *filename, const char *destdir, const char *optEntryPoint, const char *optMatchArch, const char *optFilename, char *outFilePath);
83b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
84b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru#endif
85