зеркало из https://github.com/mozilla/gecko-dev.git
103 строки
3.5 KiB
Plaintext
103 строки
3.5 KiB
Plaintext
/* -*- 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.
|
||
*/
|
||
|
||
/*
|
||
This project is rather, um, creative in the way it works. Here's why.
|
||
|
||
There are two goals here (which should probably be separated out):
|
||
|
||
1. Make a shared library which exports a bunch of symbols which are
|
||
IDs of error strings:
|
||
|
||
MacXPStrings.c is preprocessed and compiled in the normal way
|
||
for a C file, and ends up simple assigning numerical values to
|
||
lots of exported ints, e.g. "int MK_BAD_CONNECT = (-205)". These
|
||
ints are exported by name from the shared library.
|
||
|
||
The dummy function MacintoshForever() is there because there
|
||
is apparently a CFM bug that causes a crash loading shared
|
||
libraries with no exported code symbols.
|
||
|
||
2. Make a file called "Mozilla resources" which contains a bunch
|
||
of 'STR ' resources containing the strings defined in allxpstr.h,
|
||
and some other resources.
|
||
|
||
This is achieved by the .xps file which, if you look at the
|
||
File Mapping prefs, is processed by ToolFrontEnd. The
|
||
ToolFrontEnd prefs panel specifies that the following command:
|
||
|
||
Execute "{{SourceFile}}_Make"
|
||
|
||
is send to ToolServer, so xpstring.xps_Make will get executed.
|
||
xpstring.xps_Make preprocesses this file (xpstrings.xps) with the
|
||
MWCPPC tool, outputting the result to a .r file Temp_XPStrings.r:
|
||
|
||
MWCPPC -nodefaults -i- -e2 -D _XP_Core_ {IncludeFiles} "{{SourceFile}}" <20>
|
||
> "{{ResourceDir}}Temp_XPStrings.r"
|
||
|
||
Temp_XPStrings.r is then Perlized by resdef.pl to create xpstring.r:
|
||
|
||
perl resdef.pl Temp_XPStrings.r
|
||
|
||
xpstring.r is then Rez'd to create Mozilla Resources:
|
||
|
||
Rez -t 'NSPL' -c MOZZ -i "{RIncludes}" <20>
|
||
-o "{{TargetDir}}Essential Files:Mozilla Resources" <20>
|
||
xpstring.r
|
||
|
||
We then Rez MacSTR.r, which itself includes all the other .r files here:
|
||
|
||
Rez -append -i "{RIncludes}" -i "{{mozilla}}cmd:macfe:include:" <20>
|
||
-o "{{TargetDir}}Essential Files:Mozilla Resources" <20>
|
||
MacSTR.r
|
||
|
||
That's basically it. Phew!
|
||
|
||
Some things to be careful of:
|
||
|
||
MacXPStrings.c is preprocessed by the IDE, so in prefix file
|
||
specified in the prefs is included.
|
||
|
||
When this file is preprocessed by MWCPPC, the prefix file is
|
||
ignored so we include "MacCommonPrefix.h" ourselves.
|
||
*/
|
||
|
||
|
||
#define RESOURCE_STR
|
||
|
||
/* Manually include the prefix file, so that MWCPPC picks it up */
|
||
#include "MacConfigInclude.h"
|
||
|
||
/* the prefix file should have already defined OTUNIXERRORS at this stage */
|
||
#include "OpenTransport.h"
|
||
|
||
/* allxpstr.h have to be in the last one */
|
||
#include "allxpstr.h" /* The real stuff is here... */
|
||
|
||
|
||
#ifdef rez
|
||
|
||
/*
|
||
** These are included here to force CodeWarrior to rebuild if they change. The
|
||
** include should not actually happen during the build phase, only when the #include
|
||
** scanner is doing its thing.
|
||
*/
|
||
#include "MacSTR.r"
|
||
#include "::rsrc:communicator:Communicator.rsrc" /* sounds of nail-biting */
|
||
#endif
|