Skip to content

Enhanced Makefile System #1103

Closed
Closed
@llvmbot

Description

@llvmbot
Bugzilla Link 731
Resolution WONTFIX
Resolved on Feb 18, 2008 00:43
Version trunk
OS All
Blocks #970
Reporter LLVM Bugzilla Contributor
CC @tlattner

Extended Description

Currently, all significant Makefile logic is located in the Makefile.rules file.
This organization is awkward as it does not isoloate or encapsulate separate
functionalities into separate files. It also means that on every invocation (of
which there are many), make must process the entire file, most of which isn't
used on any given directory. Consequently, a revision to the makefile system is
desireable.

The envisioned system remains mostly compatible with the existing system, with a
few notable exceptions:

  1. All Makefile* crud is located in a new "make" directory at the top level.
  2. The Makefile.rules logic is split into separate Makefile. files where
    indicates the kind of thing to build (lib,archive,module,tool,etc.)
  3. Makefiles in the individual build directories no longer simply include
    Makefile.common but, rather, include one (or more) of the task makefiles
    found in the
  4. Certain variables such as BUILD_ARCHIVE are no longer necessitated, as they
    are replaced by including the appropriate Makefile.

In conjunction with this change, variable names should (once again) be
regularized using an understandable pattern, especially one that corresponds to
the use of the task names (e.g. all vars in Makefile.lib should be prefixed by
"lib" or "Lib" or "LIB"). Furthermore, the documentation will need to be updated.

Such a makefile system will make future enhancements easier as LLVM grows as
well as making it easier to maintain without having to grok all 1700 lines of
Makefile.rules.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillawontfixIssue is real, but we can't or won't fix it. Not invalid

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions