--- /dev/null
+The Samba Build System\r
+----------------------\r
+----------------------\r
+\r
+Object Types\r
+------------\r
+the build system knows about the following object types\r
+\r
+SUBSYSTEM:\r
+ a SUBSYSTEM is basicly a collection of functions, which provide an\r
+ an generic API for a specific problem (e.g. libldb provides an api\r
+ for gneric ldb databases. libldb_plugin provides a generic api\r
+ for calling ldb plugins, so 'libldb' and 'libldb_plugin' are subsystems)\r
+\r
+MODULE:\r
+ a MODULE is a specify implementation of a API provided by a SUBSYSTEM.\r
+ (e.g. 'libldb_tdb' and 'libldb_ldap' are implementations of the subsystem 'libldb' API,\r
+ and 'libldb_plugin_timestamp' is a module of the 'libldb_plugin' subsystem) \r
+\r
+EXT_LIB:\r
+ an EXT_LIB is an external library which is needed by a SUBSYSTEM, MODULE, BINARY or LIBRARY.\r
+ (e.g. 'gtk' or 'KRB5')\r
+\r
+BINARY:\r
+ a BINARY means a executable binary file.\r
+ (e.g. 'smbtorture' or 'ldbedit')\r
+ a BINARY typicly has only commandline handling and basic \r
+ functionality code in it and depends on the functions of\r
+ EXT_LIB's (required_libraries/REQUIRED_LIBRARIES) and/or\r
+ SUBSYSTEM's (required_subsystems/REQUIRED_SUBSYSTEMS).\r
+\r
+LIBRARY:\r
+ a LIBRARY means a static and/or shared library,\r
+ which depends on the used OS.\r
+ (e.g. for libldb 'libldb.so', 'libldb.so.0' 'libldb.so.0.0.1'\r
+ and libldb.a are created on linux)\r
+ a LIBRARY typicly has only glue code in it and depends on\r
+ the functions of EXT_LIB's (required_libraries/REQUIRED_LIBRARIES) \r
+ and/or SUBSYSTEM's (required_subsystems/REQUIRED_SUBSYSTEMS).\r
+\r
+\r
+Macrodescriptions\r
+----------------\r
+On top of build/smb_build/public.m4 is a list of all public macros of the build system.\r
+\r
+\r
+Layout\r
+-------\r
+\r
+Toplevel file: configure.in\r
+- included by autogen.sh: aclocal.m4\r
+ which includes the SMB_YXZ*() macros\r
+\r
+- default tests of the build system\r
+ are in build/smb_build/check_*.m4\r
+ (mostly compiler and basic C type and function\r
+ checks)\r
+\r
+- subsystem specific stuff should be included by 'SMB_INLUDE_M4()'\r
+\r
+\r
+Generating of 'configure'\r
+-------------------------\r
+you need to rerun ./autogen.sh when 'configure.in' or any\r
+'.m4' file was modified, then you need to rerun configure.\r
+\r
+\r
+Generating of 'config.status'\r
+-----------------------------\r
+you need to run ./config.status (or 'configure') after a '.mk'\r
+file was changed.\r
+\r
+\r
+Examples\r
+--------\r
+for now please take a look at the .m4 and .mk files\r
+you find in the source tree, they should be a good reference to start.\r
+\r
+\r
+README-TODO\r
+------------\r
+SMB_XYZ() vs. SMB_XYZ_MK()\r
+meaning of the macros parameters and the .mk file handling\r
+examples\r