2000-07-19 06:45:14 +00:00
|
|
|
/**************************************************************************
|
|
|
|
*
|
|
|
|
* Copyright (C) 2000, International Business Machines
|
|
|
|
* Corporation and others. All Rights Reserved.
|
|
|
|
*
|
|
|
|
***************************************************************************
|
|
|
|
* file name: nmake.c
|
|
|
|
* encoding: ANSI X3.4 (1968)
|
|
|
|
* tab size: 8 (not used)
|
|
|
|
* indentation:4
|
|
|
|
*
|
|
|
|
* created on: 2000jul18
|
|
|
|
* created by: Vladimir Weinstein
|
|
|
|
*
|
|
|
|
* Emit a NMAKE makefile
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "makefile.h"
|
2000-10-06 17:51:01 +00:00
|
|
|
#include "cstring.h"
|
2000-07-19 06:45:14 +00:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
char linebuf[2048];
|
|
|
|
|
|
|
|
/* Write any setup/initialization stuff */
|
|
|
|
void
|
|
|
|
pkg_mak_writeHeader(FileStream *f, const UPKGOptions *o)
|
|
|
|
{
|
2002-03-01 22:43:48 +00:00
|
|
|
sprintf(linebuf, "## Makefile for %s created by pkgdata\n"
|
2000-07-19 06:45:14 +00:00
|
|
|
"## from ICU Version %s\n"
|
|
|
|
"\n",
|
|
|
|
o->shortName,
|
|
|
|
U_ICU_VERSION);
|
|
|
|
T_FileStream_writeLine(f, linebuf);
|
|
|
|
|
|
|
|
sprintf(linebuf, "NAME=%s\n"
|
2002-03-16 21:16:02 +00:00
|
|
|
"CNAME=%s\n"
|
2000-07-19 06:45:14 +00:00
|
|
|
"TARGETDIR=%s\n"
|
|
|
|
"TEMP_DIR=%s\n"
|
|
|
|
"MODE=%s\n"
|
|
|
|
"MAKEFILE=%s\n"
|
2000-12-06 03:02:21 +00:00
|
|
|
"ENTRYPOINT=%s\n"
|
2000-07-19 06:45:14 +00:00
|
|
|
"\n\n\n",
|
|
|
|
o->shortName,
|
2002-03-16 21:16:02 +00:00
|
|
|
o->cShortName,
|
2000-07-19 06:45:14 +00:00
|
|
|
o->targetDir,
|
|
|
|
o->tmpDir,
|
|
|
|
o->mode,
|
2000-12-06 03:02:21 +00:00
|
|
|
o->makeFile,
|
|
|
|
o->entryName);
|
2000-07-19 06:45:14 +00:00
|
|
|
T_FileStream_writeLine(f, linebuf);
|
|
|
|
|
|
|
|
sprintf(linebuf, "## List files [%d] containing data files to process (note: - means stdin)\n"
|
|
|
|
"LISTFILES= ",
|
|
|
|
pkg_countCharList(o->fileListFiles));
|
|
|
|
T_FileStream_writeLine(f, linebuf);
|
|
|
|
|
2000-08-08 23:20:37 +00:00
|
|
|
pkg_writeCharListWrap(f, o->fileListFiles, " ", " \\\n", 0);
|
2000-07-19 06:45:14 +00:00
|
|
|
|
|
|
|
T_FileStream_writeLine(f, "\n\n\n");
|
|
|
|
|
|
|
|
sprintf(linebuf, "## Data Files [%d]\n"
|
|
|
|
"DATAFILES= ",
|
|
|
|
pkg_countCharList(o->files));
|
|
|
|
|
|
|
|
T_FileStream_writeLine(f, linebuf);
|
|
|
|
|
2000-08-08 23:20:37 +00:00
|
|
|
pkg_writeCharListWrap(f, o->files, " ", " \\\n", -1);
|
2000-07-19 06:45:14 +00:00
|
|
|
|
|
|
|
T_FileStream_writeLine(f, "\n\n\n");
|
|
|
|
|
|
|
|
sprintf(linebuf, "## Data File Paths [%d]\n"
|
|
|
|
"DATAFILEPATHS= ",
|
|
|
|
pkg_countCharList(o->filePaths));
|
|
|
|
|
|
|
|
T_FileStream_writeLine(f, linebuf);
|
|
|
|
|
2000-08-08 23:20:37 +00:00
|
|
|
pkg_writeCharListWrap(f, o->filePaths, " ", " \\\n", 1);
|
2000-07-19 06:45:14 +00:00
|
|
|
|
|
|
|
T_FileStream_writeLine(f, "\n\n\n");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Write a stanza in the makefile, with specified "target: parents... \n\n\tcommands" [etc] */
|
|
|
|
void
|
|
|
|
pkg_mak_writeStanza(FileStream *f, const UPKGOptions *o,
|
|
|
|
const char *target,
|
|
|
|
CharList* parents,
|
2000-10-06 17:51:01 +00:00
|
|
|
CharList* commands )
|
2000-07-19 06:45:14 +00:00
|
|
|
{
|
2000-10-06 17:51:01 +00:00
|
|
|
T_FileStream_write(f, target, uprv_strlen(target));
|
|
|
|
T_FileStream_write(f, " : ", 3);
|
|
|
|
pkg_writeCharList(f, parents, " ",1);
|
|
|
|
T_FileStream_write(f, "\n", 1);
|
|
|
|
|
|
|
|
if(commands)
|
|
|
|
{
|
|
|
|
T_FileStream_write(f, "\t", 1);
|
|
|
|
pkg_writeCharList(f, commands, "\n\t",0);
|
|
|
|
}
|
|
|
|
T_FileStream_write(f, "\n\n", 2);
|
2000-07-19 06:45:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/* write any cleanup/post stuff */
|
|
|
|
void
|
|
|
|
pkg_mak_writeFooter(FileStream *f, const UPKGOptions *o)
|
|
|
|
{
|
2000-10-06 17:51:01 +00:00
|
|
|
char buf[256];
|
|
|
|
sprintf(buf, "\n\n# End of makefile for %s [%s mode]\n\n", o->shortName, o->mode);
|
|
|
|
T_FileStream_write(f, buf, uprv_strlen(buf));
|
2000-07-19 06:45:14 +00:00
|
|
|
}
|