+++ /dev/null
-/******************************************************************************
-*
-* Copyright (C) 2000-2006, International Business Machines
-* Corporation and others. All Rights Reserved.
-*
-*******************************************************************************
-* file name: filemode.c
-* encoding: ANSI X3.4 (1968)
-* tab size: 8 (not used)
-* indentation:4
-*
-* created on: 2000sep28
-* created by: Steven \u24C7 Loomis
-*
-* The mode which uses raw files (i.e. does nothing until installation).
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include "unicode/utypes.h"
-#include "unicode/putil.h"
-#include "cmemory.h"
-#include "cstring.h"
-#include "filestrm.h"
-#include "toolutil.h"
-#include "unewdata.h"
-#include "uoptions.h"
-#include "pkgtypes.h"
-#include "makefile.h"
-
-/* The file we will make will look like this:
-
-(where /out is the full path to the output dir)
-
-SOURCES=/out/filea /out/fileb ./somewhere/filec ../somewhereelse/filed
-
-TARGETS=/out/filea /out/fileb /out/filec /out/filed
-
-all: $(TARGETS)
-
-/out/filec /out/filed: ../somewhere/filec ../somewhereelse/filed
- $(INSTALL_DATA) $? $(OUTDIR)
-
-install: all
- $(INSTALL_DATA) $(TARGETS) $(instdir)
-
-
-==Note:==
- The only items in the first '$(INSTALL_DATA)' are files NOT already in the out dir!
-
-
-*/
-
-#ifdef U_MAKE_IS_NMAKE
-#define DEPENDENT_FILE_RULE "$?"
-#else
-#define DEPENDENT_FILE_RULE "$<"
-#endif
-
-void pkg_mode_files(UPKGOptions *o, FileStream *makefile, UErrorCode *status)
-{
- char tmp[1024], tmp2[1024], srcPath[1024];
- char stanza[3072];
-
- CharList *tail = NULL, *infiles = NULL;
-
- CharList *copyFilesLeft = NULL; /* left hand side of the copy rule*/
- CharList *copyFilesRight = NULL; /* rhs "" "" */
- CharList *copyFilesInstall = NULL;
-
- CharList *copyFilesLeftTail = NULL;
- CharList *copyFilesRightTail = NULL;
- CharList *copyFilesInstallTail = NULL;
-
- CharList *copyDirs = NULL; /* list of dirs to create for copying */
- CharList *installDirs = NULL; /* list of dirs to create for installation */
-
- /* CharList *copyCommands = NULL;*/
-
- const char *baseName;
-
-#ifndef U_MAKE_IS_NMAKE
- T_FileStream_writeLine(makefile, "\n.PHONY: $(NAME) all install clean\n");
-#endif
- T_FileStream_writeLine(makefile, "\nall: $(NAME)\n\n");
-
- infiles = o->files; /* raw files - no paths other than tree paths */
-
- /* Dont' copy files already in tmp */
- for(;infiles;infiles = infiles->next)
- {
- uprv_strcpy(tmp, o->targetDir);
- uprv_strcat(tmp, U_FILE_SEP_STRING);
- baseName = infiles->str;
- uprv_strcat(tmp, o->shortName);
- uprv_strcat(tmp, U_FILE_SEP_STRING);
- uprv_strcpy(srcPath, "$(SRCDIR)/");
- uprv_strcat(srcPath, infiles->str);
- uprv_strcat(tmp, baseName);
-
- copyDirs = pkg_appendUniqueDirToList(copyDirs, NULL, tmp);
-
- o->outFiles = pkg_appendToList(o->outFiles, &tail, uprv_strdup(tmp));
-
- if(strcmp(tmp, infiles->str) == 0)
- {
- /* fprintf(stderr, "### NOT copying: %s\n", tmp); */
- /* no copy needed.. */
- } else {
- sprintf(stanza, "%s: %s\n\t$(INSTALL_DATA) "DEPENDENT_FILE_RULE" $@\n", tmp, srcPath);
- convertToNativePathSeparators(stanza);
- T_FileStream_writeLine(makefile, stanza);
- }
-
- uprv_strcpy(tmp2, "$(INSTALLTO)" U_FILE_SEP_STRING);
- uprv_strcat(tmp2, o->shortName);
- uprv_strcat(tmp2, U_FILE_SEP_STRING);
- uprv_strcat(tmp2, baseName);
-
- installDirs = pkg_appendUniqueDirToList(installDirs, NULL, tmp2);
-
- if(strcmp(tmp2, infiles->str) == 0) {
- /* fprintf(stderr, "### NOT copying: %s\n", tmp2); */
- /* no copy needed.. */
- } else {
- sprintf(stanza, "%s: %s\n\t$(INSTALL_DATA) "DEPENDENT_FILE_RULE" $@\n", tmp2, tmp);
- convertToNativePathSeparators(stanza);
- T_FileStream_writeLine(makefile, stanza);
-
- /* left hand side: target path, target name */
- copyFilesLeft = pkg_appendToList(copyFilesLeft, ©FilesLeftTail, uprv_strdup(tmp));
-
- /* fprintf(stderr, "##### COPY %s from %s\n", tmp, infiles->str); */
- /* rhs: source path */
- copyFilesRight = pkg_appendToList(copyFilesRight, ©FilesRightTail, uprv_strdup(infiles->str));
-
- /* install: installed path */
- copyFilesInstall = pkg_appendToList(copyFilesInstall, ©FilesInstallTail, uprv_strdup(tmp2));
- }
- }
-
- if(o->nooutput || o->verbose) {
- CharList *i;
- fprintf(stdout, "# Output files: ");
- for(i = o->outFiles; i; i=i->next) {
- printf("%s ", i->str);
- }
- printf("\n");
- }
-
- if(o->nooutput) {
- *status = U_ZERO_ERROR;
- return;
- }
-
- /* these are also the files to delete */
- T_FileStream_writeLine(makefile, "COPIEDDEST= ");
- pkg_writeCharListWrap(makefile, copyFilesLeft, " ", " \\\n", 0);
- T_FileStream_writeLine(makefile, "\n\n");
-
-
- T_FileStream_writeLine(makefile, "INSTALLEDDEST= ");
- pkg_writeCharListWrap(makefile, copyFilesInstall, " ", " \\\n", 0);
- T_FileStream_writeLine(makefile, "\n\n");
-
- T_FileStream_writeLine(makefile, "COPYDIRS= ");
- pkg_writeCharListWrap(makefile, copyDirs, " ", " \\\n", 0);
- T_FileStream_writeLine(makefile, "\n\n");
-
-
- T_FileStream_writeLine(makefile, "INSTALLDIRS= ");
- pkg_writeCharListWrap(makefile, installDirs, " ", " \\\n", 0);
- T_FileStream_writeLine(makefile, "\n\n");
-
- if(copyFilesRight != NULL)
- {
- T_FileStream_writeLine(makefile, "$(NAME): copy-dirs $(COPIEDDEST)\n\n");
-
- T_FileStream_writeLine(makefile, "clean:\n\t-$(RMV) $(COPIEDDEST) $(MAKEFILE)");
- T_FileStream_writeLine(makefile, "\n\n");
-
- }
- else
- {
- T_FileStream_writeLine(makefile, "clean:\n\n");
- }
- T_FileStream_writeLine(makefile, "install: install-dirs $(INSTALLEDDEST)\n\n");
- T_FileStream_writeLine(makefile, "install-dirs:\n\t$(MKINSTALLDIRS) $(INSTALLDIRS)\n\n");
- T_FileStream_writeLine(makefile, "copy-dirs:\n\t$(MKINSTALLDIRS) $(COPYDIRS)\n\n");
-}
-