From 8a4dff14ad7560aae83e9155d0c62ba7f8c101fd Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 1 Jun 2008 22:24:55 +0000 Subject: Add the bs build system from mpd-ke Dealing with autotools is too painful when having to deal with multiple build environments and configurations. git-svn-id: https://svn.musicpd.org/mpd/trunk@7368 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- bs/README | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 bs/README (limited to 'bs/README') diff --git a/bs/README b/bs/README new file mode 100644 index 000000000..c5992e34c --- /dev/null +++ b/bs/README @@ -0,0 +1,69 @@ +bs - build system +----------------- + +bs is an attempt at a fast and reliable build system that will let +developers build mpd without having to deal with the complexity of +autotools. It is still a work in progress, but it seems to be +reasonably usable (to developers) and fast. + +It is designed from the ground up to work with cross-compilation, as well as +multiple build targets/configurations from the same source tree (using the O +variable). + +It is NOT intended to replace autotools for distribution maintainers +or end users who are satisfied with autotools. + +SYNOPSIS +-------- + +# To build mpd in a directory "output" +./build.mk O=output defconfig +$EDITOR output/config.mk +./build.mk O=output + + +FEATURES +-------- + +* Designed for cross-compilation from the ground up +* Designed to easily handle multiple build directories from the same source + tree. Just set the O variable when invoking make (see synopsis). +* Automatic dependency analysis (if using GCC) +* Highly configurable (no auto-detection of dependencies to get wrong) +* Simple, no archaic M4 macros or unreadable auto-generated shell or makefiles + just human-maintained GNU Make and POSIX shell. + + +config.mk +--------- + +This is the configuration file a user should edit if they wish to +enable/disable features or tune settings. Once created, this +will NOT be modified by the build system, so user settings will +always be preserved. + + +VARIABLES +--------- + +These are conventions, not hard and fast rules (as there's no good way to +enforce them :) +mixed-case or lower-case variables are used by bs internally. +ALL_CAPS variables are designed to be changed by users. + + +REQUIREMENTS +------------ + +GNU Make, POSIX shell + common UNIX tools (awk, sed, mv, rm, mkdir). +git (version control system) is only required if you wish to autodownload +external dependencies (flac, tremor, mad, etc...) for static linking. + + +BUGS +---- + +Modifications to config.mk will over-rebuild. + +Changes to CFLAGS/LDFLAGS from the command-line are not yet checked in +rebuilds. -- cgit v1.2.3