|  | /************************************************************************** | 
|  | * | 
|  | *   Copyright (C) 2000, International Business Machines | 
|  | *   Corporation and others.  All Rights Reserved. | 
|  | * | 
|  | *************************************************************************** | 
|  | *   file name:  gmake.c | 
|  | *   encoding:   ANSI X3.4 (1968) | 
|  | *   tab size:   8 (not used) | 
|  | *   indentation:4 | 
|  | * | 
|  | *   created on: 2000may17 | 
|  | *   created by: Steven \u24C7 Loomis | 
|  | * | 
|  | * Emit a GNU makefile | 
|  | */ | 
|  |  | 
|  | #include "makefile.h" | 
|  | #include <stdio.h> | 
|  | #include <string.h> | 
|  |  | 
|  | char linebuf[2048]; | 
|  |  | 
|  | /* Write any setup/initialization stuff */ | 
|  | void | 
|  | pkg_mak_writeHeader(FileStream *f, const UPKGOptions *o) | 
|  | { | 
|  | sprintf(linebuf, "## Makefile for %s created by pkgtool\n" | 
|  | "## from ICU Version %s\n" | 
|  | "\n", | 
|  | o->shortName, | 
|  | U_ICU_VERSION); | 
|  | T_FileStream_writeLine(f, linebuf); | 
|  |  | 
|  | sprintf(linebuf, "NAME=%s\n" | 
|  | "TARGETDIR=%s\n" | 
|  | "TEMP_DIR=%s\n" | 
|  | "MODE=%s\n" | 
|  | "MAKEFILE=%s\n" | 
|  | "ENTRYPOINT=%s\n" | 
|  | "include %s\n" | 
|  | "\n\n\n", | 
|  | o->shortName, | 
|  | o->targetDir, | 
|  | o->tmpDir, | 
|  | o->mode, | 
|  | o->makeFile, | 
|  | o->entryName, | 
|  | o->options); | 
|  | 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); | 
|  |  | 
|  | pkg_writeCharListWrap(f, o->fileListFiles, " ", " \\\n",0); | 
|  |  | 
|  | T_FileStream_writeLine(f, "\n\n\n"); | 
|  |  | 
|  | sprintf(linebuf, "## Data Files [%d]\n" | 
|  | "DATAFILES= ", | 
|  | pkg_countCharList(o->files)); | 
|  |  | 
|  | T_FileStream_writeLine(f, linebuf); | 
|  |  | 
|  | pkg_writeCharListWrap(f, o->files, " ", " \\\n",-1); | 
|  |  | 
|  | T_FileStream_writeLine(f, "\n\n\n"); | 
|  |  | 
|  | sprintf(linebuf, "## Data File Paths [%d]\n" | 
|  | "DATAFILEPATHS= ", | 
|  | pkg_countCharList(o->filePaths)); | 
|  |  | 
|  | T_FileStream_writeLine(f, linebuf); | 
|  |  | 
|  | pkg_writeCharListWrap(f, o->filePaths, " ", " \\\n",0); | 
|  |  | 
|  | 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, | 
|  | CharList* commands) | 
|  | { | 
|  | T_FileStream_write(f, target, strlen(target)); | 
|  | T_FileStream_write(f, " : ", 3); | 
|  | pkg_writeCharList(f, parents, " ",0); | 
|  | 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); | 
|  | } | 
|  |  | 
|  | /* write any cleanup/post stuff */ | 
|  | void | 
|  | pkg_mak_writeFooter(FileStream *f, const UPKGOptions *o) | 
|  | { | 
|  | /* nothing */ | 
|  | } | 
|  |  |