From 378c18e5f024ac5a8aef4cb40d7c9aa9633d144c Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 16:30:35 +0200 Subject: Adding upstream version 2.38.1. Signed-off-by: Daniel Baumann --- Documentation/howto-build-sys.txt | 95 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 Documentation/howto-build-sys.txt (limited to 'Documentation/howto-build-sys.txt') diff --git a/Documentation/howto-build-sys.txt b/Documentation/howto-build-sys.txt new file mode 100644 index 0000000..46d2793 --- /dev/null +++ b/Documentation/howto-build-sys.txt @@ -0,0 +1,95 @@ +util-linux build system +======================= + + - the build system is non-recursive, individual subdirectories use + Makemodule.am files. These files are merged together by automake + into one global Makefile in the top-level directory + + - all final build results (binaries, libtool scripts) are stored in top-level + source directory + + - all Makemodule.am files have to be designed as top-level makefiles, it + means with full paths (e.g. foo_SOURCES = subdir/foo.c) + + - always use '+=' operator for global variables (e.g. bin_PROGRAMS += foo) + + - use libcommon.la (without path!) for lib/ stuff (e.g. foo_LDADD = libcommon.la) + + - for libblkid, libuuid and libmount use lib.la in _LDADD and + -I$(ul_lib_incdir) in _CFLAGS, for example + + foo_LDADD = libmount.la + foo_CFLAGS = -I$(ul_libmount_incdir) + + - always use suffixes for hooks, for example + + install-exec-hook-foo: + ln -sf foo foooo + + INSTALL_EXEC_HOOKS += install-exec-hook-foo + + + - all util-linux specific autoconf macros use UL_ prefix + + - utils in Makefile.am files are enabled/disabled according to BUILD_ + conditions (AM_CONDITIONAL), for example: + + if BUILD_HWCLOCK + ... + endif + + - "if BUILD_" blocks are never nested within another "if BUILD_", + all dependencies have to be resolved in configure.ac (see UL_REQUIRES_BUILD()) + + - all BUILD_ in configure.am are always based on build_ variables, + for example: + + AM_CONDITIONAL([BUILD_HWCLOCK], test "x$build_hwclock" = xyes) + + the $build_ should be available in whole configure script + + - AC_ARG_ENABLE() status is always stored in $enable_ variable, possible + setting: + + "check" - util/feature is optional, if any subcomponent (function, lib, + ...) is missing a warning is printed and the util/feature is + disabled + + "yes" - util/feature is required, if any subcomponent (function, lib, + ...) is missing an error is printed and ./configure aborted + + "no" - the util/feature is unwanted + + The default status is always defined by UL_DEFAULT_ENABLE() and it might be + globally modified by $ul_default_estate (see AC_ARG_ENABLE([all-programs])). + + - it's possible to disable all programs, but enable just one (or more) + explicitly specified, for example: + + ./configure --disable-all-programs --enable-hwclock + + - some basic scenarios for the ./configure script are defined in the + tools/config-gen.d/ directory. If you want to use these predefined scenarios + then call + + ./tools/config-gen [ ...] + + for example + + ./tools/config-gen all selinux + + will build all utils with enabled selinux support. You can also define some + CFLAGS, for example: + + CFLAGS=$(rpm --eval '%optflags') ./tools/config-gen all + + will use the default distro flags. + + WARNING: config-gen is not designed for end-user or downstream distributions! + It's for development purpose only. All end-users and downstream have + to use standard ./configure script only. + + - the tools/config-gen script is also used for build system regression tests, + the test is not enabled by default, you have to use + + tests/run.sh build-sys --force -- cgit v1.2.3