Description
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:
- All Makefile* crud is located in a new "make" directory at the top level.
- The Makefile.rules logic is split into separate Makefile. files where
indicates the kind of thing to build (lib,archive,module,tool,etc.) - 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 - 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.