From b1b8f49a5b6d57cdec663efe0d43c5e3de4abbf3 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Mon, 18 Oct 2004 14:55:35 +0000 Subject: r3041: a start of a README/HOWTO for the samba4 build system. (still incomplete, but should be a good start...) can someone look for spelling and grammar mistakes... metze (This used to be commit 66565187724c9f42367b590c29ff9775cc7472b4) --- source4/build/smb_build/README.txt | 84 ++++++++++++++++++++++++++++++++++++++ source4/build/smb_build/public.m4 | 8 ++-- 2 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 source4/build/smb_build/README.txt (limited to 'source4') diff --git a/source4/build/smb_build/README.txt b/source4/build/smb_build/README.txt new file mode 100644 index 0000000000..1350f12336 --- /dev/null +++ b/source4/build/smb_build/README.txt @@ -0,0 +1,84 @@ +The Samba Build System +---------------------- +---------------------- + +Object Types +------------ +the build system knows about the following object types + +SUBSYSTEM: + a SUBSYSTEM is basicly a collection of functions, which provide an + an generic API for a specific problem (e.g. libldb provides an api + for gneric ldb databases. libldb_plugin provides a generic api + for calling ldb plugins, so 'libldb' and 'libldb_plugin' are subsystems) + +MODULE: + a MODULE is a specify implementation of a API provided by a SUBSYSTEM. + (e.g. 'libldb_tdb' and 'libldb_ldap' are implementations of the subsystem 'libldb' API, + and 'libldb_plugin_timestamp' is a module of the 'libldb_plugin' subsystem) + +EXT_LIB: + an EXT_LIB is an external library which is needed by a SUBSYSTEM, MODULE, BINARY or LIBRARY. + (e.g. 'gtk' or 'KRB5') + +BINARY: + a BINARY means a executable binary file. + (e.g. 'smbtorture' or 'ldbedit') + a BINARY typicly has only commandline handling and basic + functionality code in it and depends on the functions of + EXT_LIB's (required_libraries/REQUIRED_LIBRARIES) and/or + SUBSYSTEM's (required_subsystems/REQUIRED_SUBSYSTEMS). + +LIBRARY: + a LIBRARY means a static and/or shared library, + which depends on the used OS. + (e.g. for libldb 'libldb.so', 'libldb.so.0' 'libldb.so.0.0.1' + and libldb.a are created on linux) + a LIBRARY typicly has only glue code in it and depends on + the functions of EXT_LIB's (required_libraries/REQUIRED_LIBRARIES) + and/or SUBSYSTEM's (required_subsystems/REQUIRED_SUBSYSTEMS). + + +Macrodescriptions +---------------- +On top of build/smb_build/public.m4 is a list of all public macros of the build system. + + +Layout +------- + +Toplevel file: configure.in +- included by autogen.sh: aclocal.m4 + which includes the SMB_YXZ*() macros + +- default tests of the build system + are in build/smb_build/check_*.m4 + (mostly compiler and basic C type and function + checks) + +- subsystem specific stuff should be included by 'SMB_INLUDE_M4()' + + +Generating of 'configure' +------------------------- +you need to rerun ./autogen.sh when 'configure.in' or any +'.m4' file was modified, then you need to rerun configure. + + +Generating of 'config.status' +----------------------------- +you need to run ./config.status (or 'configure') after a '.mk' +file was changed. + + +Examples +-------- +for now please take a look at the .m4 and .mk files +you find in the source tree, they should be a good reference to start. + + +README-TODO +------------ +SMB_XYZ() vs. SMB_XYZ_MK() +meaning of the macros parameters and the .mk file handling +examples diff --git a/source4/build/smb_build/public.m4 b/source4/build/smb_build/public.m4 index b03eafe7b4..c9e02109c2 100644 --- a/source4/build/smb_build/public.m4 +++ b/source4/build/smb_build/public.m4 @@ -13,7 +13,7 @@ dnl 2:subsystem, dnl 3:default_build, dnl 4:init_obj_files, dnl 5:add_obj_files, -dnl 6:required_libs, +dnl 6:required_libraries, dnl 7:required_subsystems dnl ) dnl @@ -45,7 +45,7 @@ dnl SMB_SUBSYSTEM( dnl 1:name, dnl 2:init_obj_files, dnl 3:add_obj_files, -dnl 4:required_libs, +dnl 4:required_libraries, dnl 5:required_subsystems dnl ) dnl @@ -95,7 +95,7 @@ dnl 2:major_version dnl 3:minor_version dnl 4:release_version dnl 5:obj_files, -dnl 6:required_libs, +dnl 6:required_libraries, dnl 7:required_subsystems dnl ) dnl @@ -127,7 +127,7 @@ dnl 1:name, dnl 2:build_targets, dnl 3:install_path dnl 4:obj_files, -dnl 5:required_libs, +dnl 5:required_libraries, dnl 6:required_subsystems dnl ) dnl -- cgit