Modifications to enable building on Win95. Added source for several new tools,

wtc's change to makecopy to support wildcards, and win95 specific makefile
configuration and rules.
This commit is contained in:
spider 1998-04-07 20:41:06 +00:00
Родитель e7d2466bf0
Коммит 17deb187f8
8 изменённых файлов: 267 добавлений и 29 удалений

0
config/W95MAKE.EXE Executable file
Просмотреть файл

0
config/W95MKDIR.EXE Executable file
Просмотреть файл

79
config/W95make.c Normal file
Просмотреть файл

@ -0,0 +1,79 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
/*
* A feeble attempt at recursive make on win95 - spider 1/98
*
* argv[1] == target
* argv[2] == end directory (full)
* argv[3...n] == list of source directories
*
*/
void main(int argc, char **argv)
{
char *args[6];
int n = 0 ;
int rc = 0 ;
/* Set up parameters to be sent: Sorry for the hardcode!*/
args[0] = "-nologo";
args[1] = "-nologo";
args[2] = "-S";
args[3] = "-f";
args[4] = "makefile.win";
args[5] = argv[1] ;
args[6] = NULL ;
if (argc < 3) {
fprintf(stderr, "w95make: Not enough arguments, you figure it out\n");
exit (666) ;
}
while(argv[n+3] != NULL) {
if (_chdir(argv[n+3]) != 0) {
fprintf(stderr, "w95make: Could not change to directory %s ... skipping\n", argv[n+3]);
} else {
fprintf(stdout, "w95make: Entering Directory %s\\%s with target %s\n", argv[2], argv[n+3], argv[1]);
if ((rc = _spawnvp(_P_WAIT,"nmake", args)) != 0) {
fprintf(stderr, "w95make: nmake failed in directory %s with error code %d\n", argv[n+3], rc);
exit(rc);
}
if (_chdir(argv[2]) != 0) {
fprintf(stderr, "w95make: Could not change back to directory %s\n", argv[2]);
exit (666) ;
}
fprintf(stdout, "w95make: Leaving Directory %s\\%s with target %s\n", argv[2], argv[n+3], argv[1]);
}
n++;
}
exit(0);
}

38
config/W95mkdir.c Normal file
Просмотреть файл

@ -0,0 +1,38 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <process.h>
/*
* win95 mkdir that responds nicely if the directory already exists - spider 1/98
*
*/
void main(int argc, char **argv)
{
if (argc < 1) {
fprintf(stderr, "w95mkdir: Not enough arguments, you figure it out\n");
exit (666) ;
}
_mkdir(argv[1]);
}

Просмотреть файл

@ -38,6 +38,15 @@ CONFIG_CONFIG_MAK=1
#//
#//------------------------------------------------------------------------
!if [$(MOZ_TOOLS)\bin\uname > osuname.inc]
!endif
WINOS=\
!include "osuname.inc"
WINOS=$(WINOS: =)^
!if [del osuname.inc]
!endif
## Include support for MOZ_LITE/MOZ_MEDIUM
include <$(DEPTH)/config/liteness.mak>
@ -151,6 +160,15 @@ CFLAGS = $(CFLAGS) -DMOZILLA_CLIENT
PERL= $(MOZ_TOOLS)\perl5\perl.exe
MASM = $(MOZ_TOOLS)\bin\ml.exe
!if "$(WINOS)" == "WIN95"
MKDIR = $(MOZ_SRC)\ns\config\w95mkdir
QUIET =
!else
MKDIR = mkdir
QUIET=@
!endif
#//------------------------------------------------------------------------
#//
#// Include the OS dependent configuration information
@ -181,7 +199,7 @@ CFLAGS = $(CFLAGS) -DDEBUG_$(USERNAME)
#enable builds on any drive if defined.
MOZ_SRC=y:
!endif
MAKE_INSTALL=@$(DEPTH)\config\makecopy.exe
MAKE_INSTALL=$(QUIET)$(DEPTH)\config\makecopy.exe
MAKE_MANGLE=$(DEPTH)\config\mangle.exe
MAKE_UNMANGLE=if exist unmangle.bat call unmangle.bat

Просмотреть файл

@ -44,19 +44,6 @@ void FlipSlashes(char *name)
}
}
void GetPathName(char *file, char *new_path)
{
int i;
i = strlen(file);
for( i=strlen(file); i && file[i] != '\\'; i--);
strncpy(new_path, file, i);
if( new_path[i] != '\\' ) {
new_path[i++] = '\\';
}
new_path[i] = '\0';
}
int MakeDir( char *path )
{
char *cp, *pstr;
@ -80,7 +67,7 @@ int MakeDir( char *path )
}
}
int CopyIfNecessary(char *oldFile, char *newFile, char *path)
int CopyIfNecessary(char *oldFile, char *newFile)
{
BY_HANDLE_FILE_INFORMATION hNewInfo;
BY_HANDLE_FILE_INFORMATION hOldInfo;
@ -119,40 +106,62 @@ int CopyIfNecessary(char *oldFile, char *newFile, char *path)
}
copy_file:
printf("+++ makecopy: Installing %s into directory %s\n", oldFile, path);
if( ! CopyFile(oldFile, newFile, FALSE) ) {
return 1;
}
return 0;
}
static char new_file[4096];
static char new_path[4096];
int main( int argc, char *argv[] )
{
char fname[_MAX_FNAME];
char ext[_MAX_EXT];
char old_path[4096];
char new_path[4096];
char *oldFileName; /* points to where file name starts in old_path */
char *newFileName; /* points to where file name starts in new_path */
WIN32_FIND_DATA findFileData;
HANDLE hFindFile;
int rv;
if( argc != 3 ) {
Usage();
return 2;
}
_splitpath(argv[1], NULL, NULL, fname, ext);
sprintf(new_file, "%s\\%s%s", argv[2], fname, ext);
FlipSlashes(new_file);
strcpy(old_path, argv[1]);
FlipSlashes(old_path);
oldFileName = strrchr(old_path, '\\');
if (oldFileName) {
oldFileName++;
} else {
oldFileName = old_path;
}
sprintf(new_path, "%s\\", argv[2]);
FlipSlashes(new_path);
newFileName = new_path + strlen(new_path);
if( MakeDir(new_path) < 0 ) {
fprintf(stderr, "\n+++ makecopy: unable to create directory %s\n", new_path);
return 1;
}
return CopyIfNecessary(argv[1], new_file, new_path);
hFindFile = FindFirstFile(old_path, &findFileData);
if (hFindFile == INVALID_HANDLE_VALUE) {
fprintf(stderr, "\n+++ makecopy: no such file: %s\n", argv[1]);
return 1;
}
printf("+++ makecopy: Installing %s into directory %s\n", argv[1], argv[2]);
do {
strcpy(oldFileName, findFileData.cFileName);
strcpy(newFileName, findFileData.cFileName);
rv = CopyIfNecessary(old_path, new_path);
if (rv != 0) {
break;
}
} while (FindNextFile(hFindFile, &findFileData) != 0);
FindClose(hFindFile);
return rv;
}

Двоичные данные
config/makecopy.exe

Двоичный файл не отображается.

Просмотреть файл

@ -57,12 +57,20 @@ JRI_GEN_DIR=_jri
MANIFEST_LEVEL=MACROS
!IF EXIST(manifest.mn) && !defined(IGNORE_MANIFEST)
!IF "$(WINOS)" == "WIN95"
!IF [$(MOZ_SRC)\ns\config\mantomak.exe manifest.mn manifest.mnw] == 0
!INCLUDE <manifest.mnw>
!ELSE
!ERROR ERROR: Unable to generate manifest.mnw from manifest.mn
!ENDIF
!ELSE
!IF ["$(MOZ_SRC)\ns\config\mantomak.exe manifest.mn manifest.mnw"] == 0
!INCLUDE <manifest.mnw>
!ELSE
!ERROR ERROR: Unable to generate manifest.mnw from manifest.mn
!ENDIF
!ENDIF
!ENDIF
#//------------------------------------------------------------------------
#// Make sure that JDIRS is set after the manifest file is included
@ -106,6 +114,13 @@ TARGETS=$(PROGRAM) $(LIBRARY) $(DLL)
#MAKE_ARGS=all
!endif
!if "$(WINOS)" == "WIN95"
W95MAKE=$(MOZ_SRC)\ns\config\w95make.exe
W32OBJS = $(OBJS:.obj=.obj, )
W32LOBJS = $(OBJS: .= +-.)
!endif
all::
$(NMAKE) -f makefile.win export
$(NMAKE) -f makefile.win libs
@ -155,10 +170,14 @@ MAPFILE=.\$(OBJDIR)\$(MAPFILE)
#//
#//------------------------------------------------------------------------
$(DIRS)::
!if "$(WINOS)" == "WIN95"
@echo +++ make: cannot recursively make on win95 using command.com, use w95make.
!else
@echo +++ make: %MAKE_ARGS% in $(MAKEDIR)\$@
@cd $@
@$(NMAKE) -f makefile.win %%MAKE_ARGS%%
@cd $(MAKEDIR)
!endif
!endif # DIRS
@ -223,6 +242,10 @@ export:: $(JAVA_DESTPATH) $(JDIRS)
$(JDIRS):: $(JAVA_DESTPATH) $(TMPDIR)
!if "$(WINOS)" == "WIN95"
JDIRS = $(JDIRS:/=\)
!endif
!if defined(NO_CAFE)
$(JDIRS)::
@ -237,7 +260,11 @@ $(JDIRS)::
# compile using symantec cafe's super-speedy compiler!
$(JDIRS)::
@echo +++ make: building package $@
-@mkdir $(MOZ_SRC)\ns\dist\classes\$@ 2> NUL
!if "$(WINOS)" == "WIN95"
-@$(MKDIR) $(MOZ_SRC)\ns\dist\classes\$(@:/=\)
!else
-@$(MKDIR) $(MOZ_SRC)\ns\dist\classes\$@ 2> NUL
!endif
$(MOZ_TOOLS)\bin\sj -classpath $(JAVA_DESTPATH);$(JAVA_SOURCEPATH) \
-d $(JAVA_DESTPATH) $(JAVAC_OPTIMIZER) $@\*.java
@ -284,6 +311,71 @@ LIBRARY=$(OBJDIR)\$(LIBRARY_NAME)$(LIBRARY_SUFFIX).lib
#// Set the MAKE_ARGS variable to indicate the target being built... This is used
#// when processing subdirectories via the $(DIRS) rule
#//
#
# Nasty hack to get around the win95 shell's inability to set
# environment variables whilst in a set of target commands
#
!if "$(WINOS)" == "WIN95"
clean::
!ifdef DIRS
@$(W95MAKE) clean $(MAKEDIR) $(DIRS)
!endif
-$(RM) $(OBJS) $(NOSUCHFILE) NUL 2> NUL
clobber::
!ifdef DIRS
@$(W95MAKE) clobber $(MAKEDIR) $(DIRS)
!endif
-$(RM_R) $(GARBAGE) $(OBJDIR) 2> NUL
clobber_all::
!ifdef DIRS
@$(W95MAKE) clobber_all $(MAKEDIR) $(DIRS)
!endif
-$(RM_R) *.OBJ $(TARGETS) $(GARBAGE) $(OBJDIR) 2> NUL
export::
!ifdef DIRS
@$(W95MAKE) export $(MAKEDIR) $(DIRS)
!endif # DIRS
libs:: w95libs $(LIBRARY)
w95libs::
!ifdef DIRS
@$(W95MAKE) libs $(MAKEDIR) $(DIRS)
!endif # DIRS
install::
!ifdef DIRS
@$(W95MAKE) install $(MAKEDIR) $(DIRS)
!endif # DIRS
depend::
!ifdef DIRS
@$(W95MAKE) depend $(MAKEDIR) $(DIRS)
!endif # DIRS
mangle::
!ifdef DIRS
@$(W95MAKE) mangle $(MAKEDIR) $(DIRS)
!endif # DIRS
$(MAKE_MANGLE)
unmangle::
!ifdef DIRS
@$(W95MAKE) unmangle $(MAKEDIR) $(DIRS)
!endif # DIRS
-$(MAKE_UNMANGLE)
!else
clean::
@set MAKE_ARGS=$@
@ -311,6 +403,8 @@ unmangle::
depend::
@set MAKE_ARGS=$@
!endif
#//------------------------------------------------------------------------
#// DEPEND
#//------------------------------------------------------------------------