• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

nsinstall/H15-Mar-2021-930731

AIX.mkH A D15-Mar-20211.6 KiB6834

Android.mkH A D15-Mar-2021242 71

BSD_OS.mkH A D15-Mar-20211.3 KiB5738

BeOS.mkH A D15-Mar-2021854 4830

Darwin.mkH A D15-Mar-20215.2 KiB14896

FreeBSD.mkH A D15-Mar-20211.3 KiB5939

HP-UX.mkH A D15-Mar-20211.6 KiB8565

HP-UXA.09.03.mkH A D15-Mar-2021437 184

HP-UXA.09.07.mkH A D15-Mar-2021434 174

HP-UXA.09.mkH A D15-Mar-2021297 122

HP-UXB.10.01.mkH A D15-Mar-2021352 134

HP-UXB.10.10.mkH A D15-Mar-2021571 238

HP-UXB.10.20.mkH A D15-Mar-2021570 238

HP-UXB.10.30.mkH A D15-Mar-2021738 298

HP-UXB.10.mkH A D15-Mar-2021291 93

HP-UXB.11.00.mkH A D15-Mar-2021503 185

HP-UXB.11.11.mkH A D15-Mar-2021502 185

HP-UXB.11.20.mkH A D15-Mar-2021501 185

HP-UXB.11.22.mkH A D15-Mar-2021501 185

HP-UXB.11.23.mkH A D15-Mar-2021501 185

HP-UXB.11.mkH A D15-Mar-20211.4 KiB4926

IRIX.mkH A D15-Mar-20212 KiB9256

IRIX5.2.mkH A D15-Mar-2021241 61

IRIX5.3.mkH A D15-Mar-2021265 82

IRIX5.mkH A D15-Mar-2021287 114

IRIX6.2.mkH A D15-Mar-2021328 143

IRIX6.3.mkH A D15-Mar-2021327 133

IRIX6.5.mkH A D15-Mar-2021371 166

IRIX6.mkH A D15-Mar-2021392 1810

Linux.mkH A D15-Mar-20215.1 KiB215161

MakefileH A D15-Mar-2021340 146

NCR3.0.mkH A D15-Mar-20211.5 KiB6630

NEC4.2.mkH A D15-Mar-2021896 3721

NetBSD.mkH A D15-Mar-20211.3 KiB5635

OS2.mkH A D15-Mar-20214.4 KiB15091

OSF1.mkH A D15-Mar-20211.2 KiB4925

OSF1V2.0.mkH A D15-Mar-2021240 61

OSF1V3.0.mkH A D15-Mar-2021240 61

OSF1V3.2.mkH A D15-Mar-2021418 174

OSF1V4.0.mkH A D15-Mar-2021566 2511

OSF1V4.0B.mkH A D15-Mar-2021244 61

OSF1V4.0D.mkH A D15-Mar-2021293 103

OSF1V5.0.mkH A D15-Mar-2021510 218

OSF1V5.1.mkH A D15-Mar-2021510 218

OpenBSD.mkH A D15-Mar-20211 KiB4731

OpenUNIX.mkH A D15-Mar-20211.6 KiB5834

QNX.mkH A D15-Mar-2021816 4025

READMEH A D15-Mar-202122.9 KiB511389

RISCOS.mkH A D15-Mar-2021526 2313

ReliantUNIX.mkH A D15-Mar-20211.4 KiB5940

ReliantUNIX5.4.mkH A D15-Mar-2021247 61

SCOOS5.0.mkH A D15-Mar-2021246 71

SCO_SV3.2.mkH A D15-Mar-20211.6 KiB5834

SunOS4.1.3_U1.mkH A D15-Mar-2021888 2914

SunOS5.mkH A D15-Mar-20213.2 KiB143110

UNIX.mkH A D15-Mar-20211.7 KiB6135

UNIXWARE2.1.mkH A D15-Mar-2021798 3015

WIN32.mkH A D15-Mar-20218.3 KiB367264

WIN95.mkH A D15-Mar-2021374 163

WINNT.mkH A D15-Mar-2021435 214

Werror.mkH A D15-Mar-20213.7 KiB10871

arch.mkH A D15-Mar-20218.4 KiB353190

check_cc.pyH A D15-Mar-2021503 2316

command.mkH A D15-Mar-20211.4 KiB4217

config.gypiH A D15-Mar-202120.1 KiB663662

config.mkH A D15-Mar-20217.9 KiB21493

coreconf.depH A D15-Mar-2021520 1410

coreconf.plH A D15-Mar-20212.4 KiB12995

detect_host_arch.pyH A D15-Mar-2021703 2616

empty.cH A D15-Mar-202139 20

fuzz.shH A D15-Mar-2021880 4128

headers.mkH A D15-Mar-2021728 253

location.mkH A D15-Mar-20211.5 KiB7648

module.mkH A D15-Mar-20211,020 3413

msvc.shH A D15-Mar-20214 KiB10778

nspr.shH A D15-Mar-20212 KiB7857

precommit.clang-format.shH A D15-Mar-20212.1 KiB6448

prefix.mkH A D15-Mar-2021750 4516

rules.mkH A D15-Mar-202112.8 KiB463331

ruleset.mkH A D15-Mar-20215.4 KiB18095

sanitizers.pyH A D15-Mar-20211.2 KiB3427

sanitizers.shH A D15-Mar-20211.8 KiB7961

shlibsign.pyH A D15-Mar-2021947 3119

source.mkH A D15-Mar-20213.6 KiB12948

suffix.mkH A D15-Mar-20211.2 KiB6326

tree.mkH A D15-Mar-20211.3 KiB5332

version.mkH A D15-Mar-20211.7 KiB7430

version.plH A D15-Mar-20211.2 KiB4910

werror.pyH A D15-Mar-20211.8 KiB6142

zlib.mkH A D15-Mar-2021595 186

README

1OVERVIEW of "ns/coreconf":
2
3    This README file is an attempt to provide the reader with a simple
4    synopsis of the "ns/coreconf" build system which was originally
5    fundamentally designed and built to accomodate Netscape's binary
6    release model.  Wherever possible, an attempt has been made to
7    comply with the NSPR 2.0 build system, including mimicing the
8    compiler/linker flags, and directory naming structure.  The reader
9    should keep in mind that the system builds binary releases of
10    header files, class files, libraries, and executables on numerous
11    flavors of UNIX and Windows operating systems.  Unfortunately,
12    no serious attempt has ever been made to incorporate an ability to
13    generate cross-platform binaries on an Apple MacIntosh platform.
14
15    Note that this file will not attempt to redefine or document the
16    architecture of this system.  However, documents on this subject
17    are available at the following URL:
18
19        http://warp/hardcore/prj-ttools/specs/release/index.html
20
21
22
23DEPENDENCIES of "ns/coreconf":
24
25    The "ns/coreconf" build system requires the specified versions of
26    the following platform-dependent tools:
27
28        UNIX Platforms:
29        --------------
30        gmake (version 3.74 or later)
31        perl 4.0 (NOTE:  perl 5.003 or later recommended)
32        uname
33
34        Windows Platforms:
35        -----------------
36        gmake 3.74 (must use hacked Netscape version)
37        shmsdos.exe (contained in Netscape gmake.exe)
38        nsinstall.exe (contained in Netscape gmake.exe)
39        perl.exe (version 4.0 for everything except testing;
40                  NOTE:  MKS toolkit perl 5.002 is broken)
41        perl5.exe (for testing;
42                   NOTE:  perl 5.003 or later recommended;
43                          MKS toolkit perl 5.002 is broken)
44        uname.exe (use nstools version)
45
46ENHANCEMENTS to "ns/coreconf":
47
48    With the advent of Certificate Server 4.0 using the ns/coreconf
49    build system, several changes had to be made to enhance
50    ns/coreconf support for building Java/JNI classes/programs, as
51    well as libraries slated to be released as binaries.  While the
52    following may not represent an exhaustive list of these changes,
53    it does attempt to be at least somewhat comprehensive:
54
55        (1) During the course of these enhancements, a total of
56            four files have been modified, and four new files have
57            been added.
58
59            The following files have been modified:
60
61                - command.mk:    removed old definition of JAR
62
63                - config.mk:     added include statement of new
64                                 "jdk.mk" file
65
66                - ruleset.mk:    allowed the $(MKPROG) variable to be
67                                 overridden by supplying it with a
68                                 default value of $(CC); augmented
69                                 numerous definitions to enhance
70                                 ability of ns/coreconf to produce
71                                 a more robust set of libraries;
72                                 added some JNI definitions; PACKAGE
73                                 definition may be overridden by new
74                                 "jdk.mk" file
75
76                - rules.mk:      separated the compile phase of a
77                                 program from the link phase of a
78                                 program such that a developer can
79                                 now strictly override program linkage
80                                 by simply supplying a $(MKPROG)
81                                 variable; augmented NETLIBDEPTH
82                                 to use CORE_DEPTH but retain backward
83                                 compatibility; added JNI section;
84                                 modified .PRECIOUS rule;
85
86            The following files have been added:
87
88                - README:        this file; an ASCII-based text
89                                 document used to summarize the
90                                 ns/coreconf build system and
91                                 suitable (paginated) for printing
92
93                - jdk.mk:        a file comprising most (if not all)
94                                 of the default Java related build
95                                 information; the definitions in this
96                                 file are only included if NS_USE_JDK
97                                 has been defined
98
99                - jniregen.pl:   a perl script used to create a
100                                 dependency for when JNI files should
101                                 be regenerated (based upon any change
102                                 to the ".class" file from which the
103                                 ".h" file was originally generated)
104
105                - outofdate.pl:  a perl script used to create a
106                                 dependency for when ".class" files
107                                 should be regenerated (based upon
108                                 any change to the ".java" file
109                                 from which the ".class" file was
110                                 originally generated)
111
112        (2) As stated above, the ns/coreconf build system now separates
113            the link phase of a program from its compilation phase.
114            While ns/coreconf still works exactly as it used to because
115            the $(MKPROG) variable is assigned $(CC) by default, a developer
116            may now override this behavior by simply supplying their
117            own unique value for $(MKPROG) on every platform.  This allows
118            a program compiled with $(CC) to link with external libraries
119            that may contain "C++" linkage.  Before this change, a
120            programmer would need to reference their own local copy of
121            rules.mk (see the ns/sectools/cmd/pk12util program for
122            an example of how this used to be accomplished).
123
124        (3) Currently, the ns/coreconf build system differs from the
125            NSPR 2.0 build system which utilizes an "_s" to denote
126            static libraries from import libraries.  In fact, the
127            ns/coreconf build system adds no prefixes or suffixes to
128            distinguish one version of static libraries from another.
129            Note that both the ns/coreconf build system as well as the
130            NSPR 2.0 build system do nothing to provide a method of
131            distinguishing 16-bit from 32-bit static libraries on the
132            same machine, either, since:
133
134                a) this might only provide difficulty during
135                   development, since static libraries always
136                   need to be embedded within a program
137                   (note this is highly unlikely, since libraries
138                    for different platforms are subdivided via
139                    a well-known subdirectory structure, and
140                    a developer may use multiple trees for
141                    development),
142
143                b) this maintains backwards compatibility,
144                   something very important since no legacy
145                   programs will need to change their link phase, and
146
147                c) Netscape as a company has dropped any plans
148                   of future development of 16-bit products.
149
150        (4) Since several members of the Hardcore Security group did
151            not favor NSPR 2.0's solution of adding an "_s" to static
152            libraries on Windows platforms as a method to distinguish
153            them from their import library cousins, a different solution
154            was proposed and has been recently implemented for ns/coreconf:
155
156                - a 16 has been added as a suffix to both dynamic and
157                  import libraries built on 16-bit Windows platforms
158
159                - a 32 has been added as a suffix to both dynamic and
160                  import libraries built on 32-bit Windows platforms
161
162            Since the HCL release process currently only contains a
163            single instance of building a dynamic library,
164            ns/security/lib/fortcrypt/fort12.dll, the impact of this
165            change should be relatively small.  (Note: HCL was the
166            old name of NSS.)
167
168            It should be noted that although this would additionally
169            limit the 8.3 namespace on 16-bit platforms, it is highly
170            unlikely that any future development will be performed on
171            this platform.
172
173        (5) The $(LIBRARY_VERSION) tag has been added to all non-static
174            libraries created on UNIX operating systems to alleviate
175            any future confusion for binary releases which utilize this
176            tag.  Again, it should be noted that this tag is only
177            utilized on non-static libraries, since more than one
178            version of the library may need to exist simultaneously
179            if multiple products are utilized.
180
181            Currently, only one HCL released library utilizes this tag:
182
183                ns/security/lib/fortcrypt/fort12.a
184                (e. g. - in this library, the tag has been set to '12')
185
186            Again, it should be noted that although this would
187            additionally limit the 8.3 namespace on 16-bit platforms,
188            it is highly unlikely that any future development will be
189            performed on this platform.
190
191        (6) The $(JDK_DEBUG_SUFFIX) extension has been added to all
192            library and program names to support debug versions of
193            Java programs (e. g. - java_g, javac_g, etc).
194
195            Once again, it should be noted that although this would
196            additionally limit the 8.3 namespace on 16-bit platforms,
197            it is highly unlikely that any future Java development
198            will be performed on this platform.
199
200        (7) Most (if not all) default definitions for java have been
201            encapsulated within their own file, jdk.mk, which is
202            always included by default in ns/coreconf/config.mk.
203            However, the definitions within this file are only ever
204            activated if NS_USE_JDK has been set to be 1.
205
206
207        (8) Two perl scripts (jniregen.pl and outofdate.pl) have been
208            added to the system to foster a more robust development
209            environment for composing Java and JNI programs
210            utilizing the ns/coreconf build system.  Both of these
211            perl scripts are related to resolving dependencies which
212            can not be accomplished through normal makefile dependencies.
213
214        (9) This file, README, was created in an attempt to allow
215            developers who have familiarity with ns/coreconf a simple
216            roadmap for what has changed, as well as a top-level view of
217            what comprises ns/coreconf.  This file was written in
218            ASCII (rather than HTML) primarily to promote simple
219            paginated printing.
220
221OVERVIEW of "config.mk":
222
223    This file contains the configuration information necessary to
224    build each "Core Components" source module:
225
226        include file name       Purpose
227        ===================     =======================================
228        arch.mk                 source and release <architecture> tags
229
230        command.mk              default command macros
231				(NOTE: may be overridden in $(OS_CONFIG).mk)
232
233        $(OS_CONFIG).mk         <architecture>-specific macros
234                                (dependent upon <architecture> tags)
235
236        tree.mk                 release <tree> tags
237				(dependent upon <architecture> tags)
238
239        module.mk               source and release <component> tags
240				(NOTE:  A component is also called a module
241				or a subsystem.  This file is dependent upon
242                                $(MODULE) being defined on the command
243                                line, as an environment variable, or in
244                                individual makefiles, or more
245                                appropriately, manifest.mn)
246
247        version.mk              release <version> tags
248				(dependent upon $(MODULE) being defined on
249				the command line, as an environment variable,
250				or in individual makefiles, or more
251                                appropriately, manifest.mn)
252
253        location.mk             macros to figure out binary code location
254                                (dependent upon <platform> tags)
255
256        source.mk               <component>-specific source path
257                                (dependent upon <user_source_tree>,
258                                <source_component>, <version>, and
259                                <platform> tags)
260
261        headers.mk              include switch for support header files
262				(dependent upon <tree>, <component>, <version>,
263                                and <platform> tags)
264
265        prefix.mk               compute program prefixes
266
267        suffix.mk               compute program suffixes
268				(dependent upon <architecture> tags)
269
270        jdk.mk                  define JDK
271				(dependent upon <architecture>,
272                                <source>, and <suffix> tags)
273
274        ruleset.mk              Master "Core Components" rule set
275                                (should always be the last file
276                                included by config.mk)
277
278
279
280OVERVIEW of "rules.mk":
281
282    The "rules.mk" file consists of four sections.  The first section
283    contains the "master" build rules for all binary releases.  While
284    this section can (and should) largely be thought of as "language"
285    independent, it does utilize the "perl" scripting language to
286    perform both the "import" and "release" of binary modules.
287
288    The rules which dwell in this section and their purpose:
289
290
291        CATEGORY/rule::         Purpose
292        ===================     =======================================
293
294        GENERAL
295        -------
296        all::                   "default" all-encompassing rule which
297                                performs "export libs program install"
298
299        export::                recursively copy specified
300                                cross-platform header files to the
301                                $(SOURCE_XPHEADERS_DIR) directory;
302                                recursively copy specified
303                                machine-dependent header files to the
304                                $(SOURCE_MDHEADERS_DIR) directory;
305                                although all rules can be written to
306                                repetively "chain" into other sections,
307                                this rule is the most commonly used
308                                rule to "chain" into other sections
309                                such as Java providing a simple
310                                mechanism which allows no need for
311                                developers to memorize specialized
312                                rules
313
314        libs::                  recursively build
315                                static (archival) $(LIBRARY), shared
316                                (dynamic link) $(SHARED_LIBRARY),
317                                and/or import $(IMPORT_LIBRARY)
318                                libraries
319
320        program::               recursively build $(PROGRAM)
321                                executable
322
323        install::               recursively copy all libraries to
324                                $(SOURCE_LIB_DIR) directory;
325                                recursively copy all executables to
326                                $(SOURCE_BIN_DIR) directory
327
328        clean::                 remove all files specified in the
329                                $(ALL_TRASH) variable
330
331        clobber::               synonym for "clean::" rule
332
333        realclean::             remove all files specified by
334                                $(wildcard *.OBJ), dist, and in
335                                the $(ALL_TRASH) variable
336
337        clobber_all::           synonym for "realclean::" rule
338
339
340        RELEASE
341        -------
342        release_clean::         remove all files from the
343                                $(SOURCE_RELEASE_PREFIX) directory
344
345        release::               place specified VERSION of the
346                                binary release in the appropriate
347                                $(RELEASE_TREE) directory
348
349        release_export::        recursively copy specified
350                                cross-platform header files to the
351                                $(SOURCE_XPHEADERS_DIR)/include
352                                directory
353
354        release_md::            recursively copy all libraries to
355                                $(SOURCE_RELEASE_PREFIX)/
356                                $(SOURCE_RELEASE_LIB_DIR) directory;
357                                recursively copy all executables to
358                                $(SOURCE_RELEASE_PREFIX)/
359                                $(SOURCE_RELEASE_BIN_DIR) directory
360
361
362        TOOLS and AUTOMATION
363        --------------------
364        platform::              tool used to display the platform name
365                                as composed within the "arch.mk" file
366
367        autobuild::             automation rule used by "Bonsai" and
368                                "Tinderbox" to automatically generate
369                                binary releases on various platforms
370
371        check::                 automation tool used to run the
372                                "regress" and "reporter" tools
373                                on various regression test suites
374
375    The second section of "rules.mk" primarily contains several
376    "language" dependent build rules for binary releases.  These are
377    generally "computed" rules (created on the "fly"), and include
378    rules used by "C", "C++", assembly, the preprocessor, perl, and
379    the shell.
380
381    The rules which dwell in this section and their purpose:
382
383
384        CATEGORY/rule::                   Purpose
385        ===================               =============================
386
387        LIBRARIES
388        ---------
389        $(LIBRARY):                       build the static library
390                                          specified by the $(LIBRARY)
391                                          variable
392
393        $(IMPORT_LIBRARY):                build the import library
394                                          specified by the
395                                          $(IMPORT_LIBRARY) variable
396
397        $(SHARED_LIBRARY):                build the shared
398                                          (dynamic link) library
399                                          specified by the
400                                          $(SHARED_LIBRARY) variable
401
402
403        PROGRAMS
404        --------
405        $(PROGRAM):                       build the binary executable
406                                          specified by the $(PROGRAM)
407                                          rule
408
409        $(OBJDIR)/
410        $(PROG_PREFIX)%.pure:             build the "purified" binary
411                                          executable specified by this
412                                          rule
413
414
415        OBJECTS
416        -------
417        $(OBJDIR)/
418        $(PROG_PREFIX)%$(OBJ_SUFFIX):     build the object file
419                                          associated with the
420                                          makefile rule dependency:
421
422                                              %.c   = C file
423                                              %.cpp = C++ file
424                                              %.cc  = C++ file
425                                              %.s   = assembly file
426                                              %.S   = assembly file
427
428        $(OBJDIR)/
429        $(PROG_PREFIX)%:                  (NOTE: deprecated rule)
430                                          build the object file
431                                          associated with the
432                                          makefile rule dependency:
433
434                                              %.cpp = C++ file
435
436        MISCELLANEOUS
437        -------------
438        %.i:                              build the preprocessor file
439                                          associated with the
440                                          makefile rule dependency:
441
442                                              %.c   = C file
443                                              %.cpp = C++ file
444
445        %:                                process the specified file
446                                          using the method associated
447                                          with the makefile rule
448                                          dependency:
449
450                                              %.pl = perl script
451                                              %.sh = shell script
452
453        alltags:                          tool used to recursively
454                                          create a "ctags"-style
455                                          file for reference
456
457    The third section of "rules.mk' primarily contains several JAVA
458    "language" build rules for binary releases.  These are also
459    generally "computed" rules (created on the "fly").
460
461    The rules which dwell in this section and their purpose:
462
463
464        CATEGORY/rule::                   Purpose
465        ===================               =============================
466        $(JAVA_DESTPATH)::                create directory specified
467                                          as the Java destination path
468                                          for where classes are
469                                          deposited
470
471        $(JAVA_DESTPATH)/$(PACKAGE)::     create directories specified
472                                          within the $(PACKAGE)
473                                          variable
474
475        $(JMCSRCDIR)::                    create directory specified
476                                          as the JMC destination path
477
478        $(JRI_HEADER_CFILES):             used to generate/regenerate
479                                          JRI header files for "C"
480
481        $(JRI_STUB_CFILES):               used to generate/regenerate
482                                          JRI stub files for "C"
483
484        $(JNI_HEADERS):                   used to generate/regenerate
485                                          JNI header files for "C"
486
487    The fourth section of "rules.mk" primarily contains miscellaneous
488    build rules for binary releases.  Many of these rules are here to
489    create new subdirectories, manage dependencies, and/or override
490    standard gmake "Makefile" rules.
491
492    The rules which dwell in this section and their purpose:
493
494
495        CATEGORY/rule::                   Purpose
496        ===================               =============================
497
498        $(SOURCE_XP_DIR)/
499        release/include::                 create directory used to
500                                          house "C" header files
501                                          contained in a release
502
503        .DEFAULT:                         standard gmake rule
504
505        .SUFFIXES:                        standard gmake rule
506
507        .PRECIOUS:                        standard gmake rule
508
509        .PHONY:                           standard gmake rule
510
511