|
Packit |
40b132 |
OVERVIEW of "ns/coreconf":
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
This README file is an attempt to provide the reader with a simple
|
|
Packit |
40b132 |
synopsis of the "ns/coreconf" build system which was originally
|
|
Packit |
40b132 |
fundamentally designed and built to accomodate Netscape's binary
|
|
Packit |
40b132 |
release model. Wherever possible, an attempt has been made to
|
|
Packit |
40b132 |
comply with the NSPR 2.0 build system, including mimicing the
|
|
Packit |
40b132 |
compiler/linker flags, and directory naming structure. The reader
|
|
Packit |
40b132 |
should keep in mind that the system builds binary releases of
|
|
Packit |
40b132 |
header files, class files, libraries, and executables on numerous
|
|
Packit |
40b132 |
flavors of UNIX and Windows operating systems. Unfortunately,
|
|
Packit |
40b132 |
no serious attempt has ever been made to incorporate an ability to
|
|
Packit |
40b132 |
generate cross-platform binaries on an Apple MacIntosh platform.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
Note that this file will not attempt to redefine or document the
|
|
Packit |
40b132 |
architecture of this system. However, documents on this subject
|
|
Packit |
40b132 |
are available at the following URL:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
http://warp/hardcore/prj-ttools/specs/release/index.html
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
DEPENDENCIES of "ns/coreconf":
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The "ns/coreconf" build system requires the specified versions of
|
|
Packit |
40b132 |
the following platform-dependent tools:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
UNIX Platforms:
|
|
Packit |
40b132 |
--------------
|
|
Packit |
40b132 |
gmake (version 3.74 or later)
|
|
Packit |
40b132 |
perl 4.0 (NOTE: perl 5.003 or later recommended)
|
|
Packit |
40b132 |
uname
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
Windows Platforms:
|
|
Packit |
40b132 |
-----------------
|
|
Packit |
40b132 |
gmake 3.74 (must use hacked Netscape version)
|
|
Packit |
40b132 |
shmsdos.exe (contained in Netscape gmake.exe)
|
|
Packit |
40b132 |
nsinstall.exe (contained in Netscape gmake.exe)
|
|
Packit |
40b132 |
perl.exe (version 4.0 for everything except testing;
|
|
Packit |
40b132 |
NOTE: MKS toolkit perl 5.002 is broken)
|
|
Packit |
40b132 |
perl5.exe (for testing;
|
|
Packit |
40b132 |
NOTE: perl 5.003 or later recommended;
|
|
Packit |
40b132 |
MKS toolkit perl 5.002 is broken)
|
|
Packit |
40b132 |
uname.exe (use nstools version)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
ENHANCEMENTS to "ns/coreconf":
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
With the advent of Certificate Server 4.0 using the ns/coreconf
|
|
Packit |
40b132 |
build system, several changes had to be made to enhance
|
|
Packit |
40b132 |
ns/coreconf support for building Java/JNI classes/programs, as
|
|
Packit |
40b132 |
well as libraries slated to be released as binaries. While the
|
|
Packit |
40b132 |
following may not represent an exhaustive list of these changes,
|
|
Packit |
40b132 |
it does attempt to be at least somewhat comprehensive:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(1) During the course of these enhancements, a total of
|
|
Packit |
40b132 |
four files have been modified, and four new files have
|
|
Packit |
40b132 |
been added.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The following files have been modified:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- command.mk: removed old definition of JAR
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- config.mk: added include statement of new
|
|
Packit |
40b132 |
"jdk.mk" file
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- ruleset.mk: allowed the $(MKPROG) variable to be
|
|
Packit |
40b132 |
overridden by supplying it with a
|
|
Packit |
40b132 |
default value of $(CC); augmented
|
|
Packit |
40b132 |
numerous definitions to enhance
|
|
Packit |
40b132 |
ability of ns/coreconf to produce
|
|
Packit |
40b132 |
a more robust set of libraries;
|
|
Packit |
40b132 |
added some JNI definitions; PACKAGE
|
|
Packit |
40b132 |
definition may be overridden by new
|
|
Packit |
40b132 |
"jdk.mk" file
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- rules.mk: separated the compile phase of a
|
|
Packit |
40b132 |
program from the link phase of a
|
|
Packit |
40b132 |
program such that a developer can
|
|
Packit |
40b132 |
now strictly override program linkage
|
|
Packit |
40b132 |
by simply supplying a $(MKPROG)
|
|
Packit |
40b132 |
variable; augmented NETLIBDEPTH
|
|
Packit |
40b132 |
to use CORE_DEPTH but retain backward
|
|
Packit |
40b132 |
compatibility; added JNI section;
|
|
Packit |
40b132 |
modified .PRECIOUS rule;
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The following files have been added:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- README: this file; an ASCII-based text
|
|
Packit |
40b132 |
document used to summarize the
|
|
Packit |
40b132 |
ns/coreconf build system and
|
|
Packit |
40b132 |
suitable (paginated) for printing
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- jdk.mk: a file comprising most (if not all)
|
|
Packit |
40b132 |
of the default Java related build
|
|
Packit |
40b132 |
information; the definitions in this
|
|
Packit |
40b132 |
file are only included if NS_USE_JDK
|
|
Packit |
40b132 |
has been defined
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- jniregen.pl: a perl script used to create a
|
|
Packit |
40b132 |
dependency for when JNI files should
|
|
Packit |
40b132 |
be regenerated (based upon any change
|
|
Packit |
40b132 |
to the ".class" file from which the
|
|
Packit |
40b132 |
".h" file was originally generated)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- outofdate.pl: a perl script used to create a
|
|
Packit |
40b132 |
dependency for when ".class" files
|
|
Packit |
40b132 |
should be regenerated (based upon
|
|
Packit |
40b132 |
any change to the ".java" file
|
|
Packit |
40b132 |
from which the ".class" file was
|
|
Packit |
40b132 |
originally generated)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(2) As stated above, the ns/coreconf build system now separates
|
|
Packit |
40b132 |
the link phase of a program from its compilation phase.
|
|
Packit |
40b132 |
While ns/coreconf still works exactly as it used to because
|
|
Packit |
40b132 |
the $(MKPROG) variable is assigned $(CC) by default, a developer
|
|
Packit |
40b132 |
may now override this behavior by simply supplying their
|
|
Packit |
40b132 |
own unique value for $(MKPROG) on every platform. This allows
|
|
Packit |
40b132 |
a program compiled with $(CC) to link with external libraries
|
|
Packit |
40b132 |
that may contain "C++" linkage. Before this change, a
|
|
Packit |
40b132 |
programmer would need to reference their own local copy of
|
|
Packit |
40b132 |
rules.mk (see the ns/sectools/cmd/pk12util program for
|
|
Packit |
40b132 |
an example of how this used to be accomplished).
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(3) Currently, the ns/coreconf build system differs from the
|
|
Packit |
40b132 |
NSPR 2.0 build system which utilizes an "_s" to denote
|
|
Packit |
40b132 |
static libraries from import libraries. In fact, the
|
|
Packit |
40b132 |
ns/coreconf build system adds no prefixes or suffixes to
|
|
Packit |
40b132 |
distinguish one version of static libraries from another.
|
|
Packit |
40b132 |
Note that both the ns/coreconf build system as well as the
|
|
Packit |
40b132 |
NSPR 2.0 build system do nothing to provide a method of
|
|
Packit |
40b132 |
distinguishing 16-bit from 32-bit static libraries on the
|
|
Packit |
40b132 |
same machine, either, since:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
a) this might only provide difficulty during
|
|
Packit |
40b132 |
development, since static libraries always
|
|
Packit |
40b132 |
need to be embedded within a program
|
|
Packit |
40b132 |
(note this is highly unlikely, since libraries
|
|
Packit |
40b132 |
for different platforms are subdivided via
|
|
Packit |
40b132 |
a well-known subdirectory structure, and
|
|
Packit |
40b132 |
a developer may use multiple trees for
|
|
Packit |
40b132 |
development),
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
b) this maintains backwards compatibility,
|
|
Packit |
40b132 |
something very important since no legacy
|
|
Packit |
40b132 |
programs will need to change their link phase, and
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
c) Netscape as a company has dropped any plans
|
|
Packit |
40b132 |
of future development of 16-bit products.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(4) Since several members of the Hardcore Security group did
|
|
Packit |
40b132 |
not favor NSPR 2.0's solution of adding an "_s" to static
|
|
Packit |
40b132 |
libraries on Windows platforms as a method to distinguish
|
|
Packit |
40b132 |
them from their import library cousins, a different solution
|
|
Packit |
40b132 |
was proposed and has been recently implemented for ns/coreconf:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- a 16 has been added as a suffix to both dynamic and
|
|
Packit |
40b132 |
import libraries built on 16-bit Windows platforms
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
- a 32 has been added as a suffix to both dynamic and
|
|
Packit |
40b132 |
import libraries built on 32-bit Windows platforms
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
Since the HCL release process currently only contains a
|
|
Packit |
40b132 |
single instance of building a dynamic library,
|
|
Packit |
40b132 |
ns/security/lib/fortcrypt/fort12.dll, the impact of this
|
|
Packit |
40b132 |
change should be relatively small. (Note: HCL was the
|
|
Packit |
40b132 |
old name of NSS.)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
It should be noted that although this would additionally
|
|
Packit |
40b132 |
limit the 8.3 namespace on 16-bit platforms, it is highly
|
|
Packit |
40b132 |
unlikely that any future development will be performed on
|
|
Packit |
40b132 |
this platform.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(5) The $(LIBRARY_VERSION) tag has been added to all non-static
|
|
Packit |
40b132 |
libraries created on UNIX operating systems to alleviate
|
|
Packit |
40b132 |
any future confusion for binary releases which utilize this
|
|
Packit |
40b132 |
tag. Again, it should be noted that this tag is only
|
|
Packit |
40b132 |
utilized on non-static libraries, since more than one
|
|
Packit |
40b132 |
version of the library may need to exist simultaneously
|
|
Packit |
40b132 |
if multiple products are utilized.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
Currently, only one HCL released library utilizes this tag:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
ns/security/lib/fortcrypt/fort12.a
|
|
Packit |
40b132 |
(e. g. - in this library, the tag has been set to '12')
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
Again, it should be noted that although this would
|
|
Packit |
40b132 |
additionally limit the 8.3 namespace on 16-bit platforms,
|
|
Packit |
40b132 |
it is highly unlikely that any future development will be
|
|
Packit |
40b132 |
performed on this platform.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(6) The $(JDK_DEBUG_SUFFIX) extension has been added to all
|
|
Packit |
40b132 |
library and program names to support debug versions of
|
|
Packit |
40b132 |
Java programs (e. g. - java_g, javac_g, etc).
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
Once again, it should be noted that although this would
|
|
Packit |
40b132 |
additionally limit the 8.3 namespace on 16-bit platforms,
|
|
Packit |
40b132 |
it is highly unlikely that any future Java development
|
|
Packit |
40b132 |
will be performed on this platform.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(7) Most (if not all) default definitions for java have been
|
|
Packit |
40b132 |
encapsulated within their own file, jdk.mk, which is
|
|
Packit |
40b132 |
always included by default in ns/coreconf/config.mk.
|
|
Packit |
40b132 |
However, the definitions within this file are only ever
|
|
Packit |
40b132 |
activated if NS_USE_JDK has been set to be 1.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(8) Two perl scripts (jniregen.pl and outofdate.pl) have been
|
|
Packit |
40b132 |
added to the system to foster a more robust development
|
|
Packit |
40b132 |
environment for composing Java and JNI programs
|
|
Packit |
40b132 |
utilizing the ns/coreconf build system. Both of these
|
|
Packit |
40b132 |
perl scripts are related to resolving dependencies which
|
|
Packit |
40b132 |
can not be accomplished through normal makefile dependencies.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
(9) This file, README, was created in an attempt to allow
|
|
Packit |
40b132 |
developers who have familiarity with ns/coreconf a simple
|
|
Packit |
40b132 |
roadmap for what has changed, as well as a top-level view of
|
|
Packit |
40b132 |
what comprises ns/coreconf. This file was written in
|
|
Packit |
40b132 |
ASCII (rather than HTML) primarily to promote simple
|
|
Packit |
40b132 |
paginated printing.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
OVERVIEW of "config.mk":
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
This file contains the configuration information necessary to
|
|
Packit |
40b132 |
build each "Core Components" source module:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
include file name Purpose
|
|
Packit |
40b132 |
=================== =======================================
|
|
Packit |
40b132 |
arch.mk source and release <architecture> tags
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
command.mk default command macros
|
|
Packit |
40b132 |
(NOTE: may be overridden in $(OS_CONFIG).mk)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(OS_CONFIG).mk <architecture>-specific macros
|
|
Packit |
40b132 |
(dependent upon <architecture> tags)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
tree.mk release <tree> tags
|
|
Packit |
40b132 |
(dependent upon <architecture> tags)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
module.mk source and release <component> tags
|
|
Packit |
40b132 |
(NOTE: A component is also called a module
|
|
Packit |
40b132 |
or a subsystem. This file is dependent upon
|
|
Packit |
40b132 |
$(MODULE) being defined on the command
|
|
Packit |
40b132 |
line, as an environment variable, or in
|
|
Packit |
40b132 |
individual makefiles, or more
|
|
Packit |
40b132 |
appropriately, manifest.mn)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
version.mk release <version> tags
|
|
Packit |
40b132 |
(dependent upon $(MODULE) being defined on
|
|
Packit |
40b132 |
the command line, as an environment variable,
|
|
Packit |
40b132 |
or in individual makefiles, or more
|
|
Packit |
40b132 |
appropriately, manifest.mn)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
location.mk macros to figure out binary code location
|
|
Packit |
40b132 |
(dependent upon <platform> tags)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
source.mk <component>-specific source path
|
|
Packit |
40b132 |
(dependent upon <user_source_tree>,
|
|
Packit |
40b132 |
<source_component>, <version>, and
|
|
Packit |
40b132 |
<platform> tags)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
headers.mk include switch for support header files
|
|
Packit |
40b132 |
(dependent upon <tree>, <component>, <version>,
|
|
Packit |
40b132 |
and <platform> tags)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
prefix.mk compute program prefixes
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
suffix.mk compute program suffixes
|
|
Packit |
40b132 |
(dependent upon <architecture> tags)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
jdk.mk define JDK
|
|
Packit |
40b132 |
(dependent upon <architecture>,
|
|
Packit |
40b132 |
<source>, and <suffix> tags)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
ruleset.mk Master "Core Components" rule set
|
|
Packit |
40b132 |
(should always be the last file
|
|
Packit |
40b132 |
included by config.mk)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
OVERVIEW of "rules.mk":
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The "rules.mk" file consists of four sections. The first section
|
|
Packit |
40b132 |
contains the "master" build rules for all binary releases. While
|
|
Packit |
40b132 |
this section can (and should) largely be thought of as "language"
|
|
Packit |
40b132 |
independent, it does utilize the "perl" scripting language to
|
|
Packit |
40b132 |
perform both the "import" and "release" of binary modules.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The rules which dwell in this section and their purpose:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
CATEGORY/rule:: Purpose
|
|
Packit |
40b132 |
=================== =======================================
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
GENERAL
|
|
Packit |
40b132 |
-------
|
|
Packit |
40b132 |
all:: "default" all-encompassing rule which
|
|
Packit |
40b132 |
performs "export libs program install"
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
export:: recursively copy specified
|
|
Packit |
40b132 |
cross-platform header files to the
|
|
Packit |
40b132 |
$(SOURCE_XPHEADERS_DIR) directory;
|
|
Packit |
40b132 |
recursively copy specified
|
|
Packit |
40b132 |
machine-dependent header files to the
|
|
Packit |
40b132 |
$(SOURCE_MDHEADERS_DIR) directory;
|
|
Packit |
40b132 |
although all rules can be written to
|
|
Packit |
40b132 |
repetively "chain" into other sections,
|
|
Packit |
40b132 |
this rule is the most commonly used
|
|
Packit |
40b132 |
rule to "chain" into other sections
|
|
Packit |
40b132 |
such as Java providing a simple
|
|
Packit |
40b132 |
mechanism which allows no need for
|
|
Packit |
40b132 |
developers to memorize specialized
|
|
Packit |
40b132 |
rules
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
libs:: recursively build
|
|
Packit |
40b132 |
static (archival) $(LIBRARY), shared
|
|
Packit |
40b132 |
(dynamic link) $(SHARED_LIBRARY),
|
|
Packit |
40b132 |
and/or import $(IMPORT_LIBRARY)
|
|
Packit |
40b132 |
libraries
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
program:: recursively build $(PROGRAM)
|
|
Packit |
40b132 |
executable
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
install:: recursively copy all libraries to
|
|
Packit |
40b132 |
$(SOURCE_LIB_DIR) directory;
|
|
Packit |
40b132 |
recursively copy all executables to
|
|
Packit |
40b132 |
$(SOURCE_BIN_DIR) directory
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
clean:: remove all files specified in the
|
|
Packit |
40b132 |
$(ALL_TRASH) variable
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
clobber:: synonym for "clean::" rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
realclean:: remove all files specified by
|
|
Packit |
40b132 |
$(wildcard *.OBJ), dist, and in
|
|
Packit |
40b132 |
the $(ALL_TRASH) variable
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
clobber_all:: synonym for "realclean::" rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
private_export:: recursively copy specified
|
|
Packit |
40b132 |
cross-platform header files to the
|
|
Packit |
40b132 |
$(SOURCE_XPPRIVATE_DIR) directory
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
IMPORT
|
|
Packit |
40b132 |
------
|
|
Packit |
40b132 |
import:: uses perl script to retrieve specified
|
|
Packit |
40b132 |
VERSION of the binary release from
|
|
Packit |
40b132 |
$(RELEASE_TREE)
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
RELEASE
|
|
Packit |
40b132 |
-------
|
|
Packit |
40b132 |
release_clean:: remove all files from the
|
|
Packit |
40b132 |
$(SOURCE_RELEASE_PREFIX) directory
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
release:: place specified VERSION of the
|
|
Packit |
40b132 |
binary release in the appropriate
|
|
Packit |
40b132 |
$(RELEASE_TREE) directory
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
release_export:: recursively copy specified
|
|
Packit |
40b132 |
cross-platform header files to the
|
|
Packit |
40b132 |
$(SOURCE_XPHEADERS_DIR)/include
|
|
Packit |
40b132 |
directory
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
release_md:: recursively copy all libraries to
|
|
Packit |
40b132 |
$(SOURCE_RELEASE_PREFIX)/
|
|
Packit |
40b132 |
$(SOURCE_RELEASE_LIB_DIR) directory;
|
|
Packit |
40b132 |
recursively copy all executables to
|
|
Packit |
40b132 |
$(SOURCE_RELEASE_PREFIX)/
|
|
Packit |
40b132 |
$(SOURCE_RELEASE_BIN_DIR) directory
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
release_jars:: use perl script to package appropriate
|
|
Packit |
40b132 |
files in the $(XPCLASS_JAR),
|
|
Packit |
40b132 |
$(XPHEADER_JAR), $(MDHEADER_JAR), and
|
|
Packit |
40b132 |
$(MDBINARY_JAR) jar files
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
release_cpdistdir:: use perl script to copy the
|
|
Packit |
40b132 |
$(XPCLASS_JAR), $(XPHEADER_JAR),
|
|
Packit |
40b132 |
$(MDHEADER_JAR), and $(MDBINARY_JAR)
|
|
Packit |
40b132 |
jar files to the specified VERSION
|
|
Packit |
40b132 |
of the $(RELEASE_TREE) directory
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
TOOLS and AUTOMATION
|
|
Packit |
40b132 |
--------------------
|
|
Packit |
40b132 |
platform:: tool used to display the platform name
|
|
Packit |
40b132 |
as composed within the "arch.mk" file
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
autobuild:: automation rule used by "Bonsai" and
|
|
Packit |
40b132 |
"Tinderbox" to automatically generate
|
|
Packit |
40b132 |
binary releases on various platforms
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
tests:: automation tool used to run the
|
|
Packit |
40b132 |
"regress" and "reporter" tools
|
|
Packit |
40b132 |
on various regression test suites
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The second section of "rules.mk" primarily contains several
|
|
Packit |
40b132 |
"language" dependent build rules for binary releases. These are
|
|
Packit |
40b132 |
generally "computed" rules (created on the "fly"), and include
|
|
Packit |
40b132 |
rules used by "C", "C++", assembly, the preprocessor, perl, and
|
|
Packit |
40b132 |
the shell.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The rules which dwell in this section and their purpose:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
CATEGORY/rule:: Purpose
|
|
Packit |
40b132 |
=================== =============================
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
LIBRARIES
|
|
Packit |
40b132 |
---------
|
|
Packit |
40b132 |
$(LIBRARY): build the static library
|
|
Packit |
40b132 |
specified by the $(LIBRARY)
|
|
Packit |
40b132 |
variable
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(IMPORT_LIBRARY): build the import library
|
|
Packit |
40b132 |
specified by the
|
|
Packit |
40b132 |
$(IMPORT_LIBRARY) variable
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(SHARED_LIBRARY): build the shared
|
|
Packit |
40b132 |
(dynamic link) library
|
|
Packit |
40b132 |
specified by the
|
|
Packit |
40b132 |
$(SHARED_LIBRARY) variable
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
PROGRAMS
|
|
Packit |
40b132 |
--------
|
|
Packit |
40b132 |
$(PROGRAM): build the binary executable
|
|
Packit |
40b132 |
specified by the $(PROGRAM)
|
|
Packit |
40b132 |
rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(OBJDIR)/
|
|
Packit |
40b132 |
$(PROG_PREFIX)%.pure: build the "purified" binary
|
|
Packit |
40b132 |
executable specified by this
|
|
Packit |
40b132 |
rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
OBJECTS
|
|
Packit |
40b132 |
-------
|
|
Packit |
40b132 |
$(OBJDIR)/
|
|
Packit |
40b132 |
$(PROG_PREFIX)%$(OBJ_SUFFIX): build the object file
|
|
Packit |
40b132 |
associated with the
|
|
Packit |
40b132 |
makefile rule dependency:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
%.c = C file
|
|
Packit |
40b132 |
%.cpp = C++ file
|
|
Packit |
40b132 |
%.cc = C++ file
|
|
Packit |
40b132 |
%.s = assembly file
|
|
Packit |
40b132 |
%.S = assembly file
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(OBJDIR)/
|
|
Packit |
40b132 |
$(PROG_PREFIX)%: (NOTE: deprecated rule)
|
|
Packit |
40b132 |
build the object file
|
|
Packit |
40b132 |
associated with the
|
|
Packit |
40b132 |
makefile rule dependency:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
%.cpp = C++ file
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
MISCELLANEOUS
|
|
Packit |
40b132 |
-------------
|
|
Packit |
40b132 |
%.i: build the preprocessor file
|
|
Packit |
40b132 |
associated with the
|
|
Packit |
40b132 |
makefile rule dependency:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
%.c = C file
|
|
Packit |
40b132 |
%.cpp = C++ file
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
%: process the specified file
|
|
Packit |
40b132 |
using the method associated
|
|
Packit |
40b132 |
with the makefile rule
|
|
Packit |
40b132 |
dependency:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
%.pl = perl script
|
|
Packit |
40b132 |
%.sh = shell script
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
alltags: tool used to recursively
|
|
Packit |
40b132 |
create a "ctags"-style
|
|
Packit |
40b132 |
file for reference
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The third section of "rules.mk' primarily contains several JAVA
|
|
Packit |
40b132 |
"language" build rules for binary releases. These are also
|
|
Packit |
40b132 |
generally "computed" rules (created on the "fly").
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The rules which dwell in this section and their purpose:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
CATEGORY/rule:: Purpose
|
|
Packit |
40b132 |
=================== =============================
|
|
Packit |
40b132 |
$(JAVA_DESTPATH):: create directory specified
|
|
Packit |
40b132 |
as the Java destination path
|
|
Packit |
40b132 |
for where classes are
|
|
Packit |
40b132 |
deposited
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(JAVA_DESTPATH)/$(PACKAGE):: create directories specified
|
|
Packit |
40b132 |
within the $(PACKAGE)
|
|
Packit |
40b132 |
variable
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(JMCSRCDIR):: create directory specified
|
|
Packit |
40b132 |
as the JMC destination path
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(JRI_HEADER_CFILES): used to generate/regenerate
|
|
Packit |
40b132 |
JRI header files for "C"
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(JRI_STUB_CFILES): used to generate/regenerate
|
|
Packit |
40b132 |
JRI stub files for "C"
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(JNI_HEADERS): used to generate/regenerate
|
|
Packit |
40b132 |
JNI header files for "C"
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The fourth section of "rules.mk" primarily contains miscellaneous
|
|
Packit |
40b132 |
build rules for binary releases. Many of these rules are here to
|
|
Packit |
40b132 |
create new subdirectories, manage dependencies, and/or override
|
|
Packit |
40b132 |
standard gmake "Makefile" rules.
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
The rules which dwell in this section and their purpose:
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
CATEGORY/rule:: Purpose
|
|
Packit |
40b132 |
=================== =============================
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(PUBLIC_EXPORT_DIR):: create directory used to
|
|
Packit |
40b132 |
house public "C" header files
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(PRIVATE_EXPORT_DIR):: create directory used to
|
|
Packit |
40b132 |
house private "C" header
|
|
Packit |
40b132 |
files
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(SOURCE_XP_DIR)/
|
|
Packit |
40b132 |
release/include:: create directory used to
|
|
Packit |
40b132 |
house "C" header files
|
|
Packit |
40b132 |
contained in a release
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(MKDEPENDENCIES):: for UNIX systems, create
|
|
Packit |
40b132 |
a directory used to house
|
|
Packit |
40b132 |
dependencies and utilize
|
|
Packit |
40b132 |
the $(MKDEPEND) rule to
|
|
Packit |
40b132 |
create them
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
$(MKDEPEND):: cd to the dependency
|
|
Packit |
40b132 |
directory and create them
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
depend:: if $(OBJS) exist, perform the
|
|
Packit |
40b132 |
$(MKDEPEND) rule followed by
|
|
Packit |
40b132 |
the $(MKDEPENDENCIES) rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
dependclean:: remove all files contained
|
|
Packit |
40b132 |
in the dependency repository
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
.DEFAULT: standard gmake rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
.SUFFIXES: standard gmake rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
.PRECIOUS: standard gmake rule
|
|
Packit |
40b132 |
|
|
Packit |
40b132 |
.PHONY: standard gmake rule
|
|
Packit |
40b132 |
|