aboutsummaryrefslogtreecommitdiffstats
path: root/bs/README
diff options
context:
space:
mode:
Diffstat (limited to 'bs/README')
-rw-r--r--bs/README69
1 files changed, 69 insertions, 0 deletions
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.