From 2c9d02db77cf2ba703afef0efb3f159884acd218 Mon Sep 17 00:00:00 2001 From: Markus Scherer Date: Wed, 3 May 2000 23:08:20 +0000 Subject: [PATCH] ICU-375 on Win32, optionally write .obj directly from flat file X-SVN-Rev: 1318 --- icu4c/source/tools/genccode/genccode.c | 189 +++++++++++++++++++---- icu4c/source/tools/genccode/genccode.dsp | 2 +- icu4c/source/tools/makedata.mak | 50 ++++-- 3 files changed, 201 insertions(+), 40 deletions(-) diff --git a/icu4c/source/tools/genccode/genccode.c b/icu4c/source/tools/genccode/genccode.c index c185800ceb2..eb31fd0edb7 100644 --- a/icu4c/source/tools/genccode/genccode.c +++ b/icu4c/source/tools/genccode/genccode.c @@ -19,6 +19,11 @@ * 12/09/1999 weiv Added multiple file handling */ +#ifdef WIN32 +#include +#include +#endif + #include #include #include "unicode/utypes.h" @@ -36,7 +41,10 @@ static void writeCCode(const char *filename, const char *destdir); static void -getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName); +writeObjectCode(const char *filename, const char *destdir); + +static void +getOutFilename(const char *inFilename, const char *destdir, char *outFilename, char *entryName, const char *newSuffix); static void write8(FileStream *out, uint8_t byte); @@ -46,7 +54,8 @@ write8(FileStream *out, uint8_t byte); static UOption options[]={ UOPTION_HELP_H, UOPTION_HELP_QUESTION_MARK, - UOPTION_DESTDIR + UOPTION_DESTDIR, + UOPTION_DEF("object", 'o', UOPT_NO_ARG) }; extern int @@ -67,13 +76,24 @@ main(int argc, const char *argv[]) { "\tcreate a .c file with a byte array that contains the input file's data\n" "\toptions:\n" "\t\t-h or -? or --help this usage text\n" - "\t\t-d or --destdir destination directory, followed by the path\n", + "\t\t-d or --destdir destination directory, followed by the path\n" + "\t\t-o or --object write a .obj file instead of .c\n", argv[0]); } else { - while (--argc) { - fprintf(stdout, "Generating C code for %s\n", getLongPathname(argv[argc])); + const char *message, *filename; + void (*writeCode)(const char *filename, const char *destdir); + if(options[3].doesOccur) { + message="Generating object code for %s\n"; + writeCode=&writeObjectCode; + } else { + message="Generating C code for %s\n"; + writeCode=&writeCCode; + } + while(--argc) { + filename=getLongPathname(argv[argc]); + fprintf(stdout, message, filename); column=0xffff; - writeCCode(getLongPathname(argv[argc]), options[2].value); + writeCode(filename, options[2].value); } } @@ -92,29 +112,29 @@ writeCCode(const char *filename, const char *destdir) { exit(U_FILE_ACCESS_ERROR); } - getOutFilename(filename, destdir, buffer, entry); + getOutFilename(filename, destdir, buffer, entry, ".c"); out=T_FileStream_open(buffer, "w"); if(out==NULL) { fprintf(stderr, "genccode: unable to open output file %s\n", buffer); exit(U_FILE_ACCESS_ERROR); } - T_FileStream_writeLine(out, "#include \"unicode/utypes.h\"\nU_CAPI const struct U_EXPORT2 {\n double bogus;\n uint8_t bytes "); - - T_FileStream_writeLine(out, "["); - sprintf(buffer, "%d", T_FileStream_size(in) ); - T_FileStream_writeLine(out, buffer); - T_FileStream_writeLine(out, "]; \n} "); - for(i=0;i