Blame nss/coreconf/README

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