c-strtof, c-strtod, c-strtold: Make multithread-safe.
[gnulib.git] / doc / build-automation.texi
blob250723e717d5b1ea6f66e6142519d43f02e32048
1 @node Building gnulib
2 @section Building gnulib
4 If you wish to help the gnulib development effort with build logs for
5 your favorite platform, you may perform these steps:
7 @enumerate
9 @item Prerequisites tools
11 Install the proper development tools.  To build and test all of
12 Gnulib, you will need development tools for the programming languages
13 C, C++, Java, and Perl, along with standard POSIX utilities such as
14 @command{awk}, @command{make} and @command{sh}.  You will also need
15 development tools that include Autoconf, Automake, Bison, Gettext,
16 Git, GNU M4, Gperf, Libtool, and Texinfo.  Some of these tools are
17 needed only by some modules.  More details can be found in Gnulib's
18 @file{DEPENDENCIES} file.
20 @item Obtain Gnulib
22 See @url{https://www.gnu.org/software/gnulib/} for how to get the
23 current Gnulib sources via Git.
25 @item Create gnulib directory
27 On a machine with GNU development tools installed and with a gnulib
28 git checkout, use
30 @example
31 gnulib-tool --create-testdir --with-tests --dir=...
32 @end example
34 Alternatively, pick a small set of modules and run
36 @example
37 gnulib-tool --create-megatestdir --with-tests --dir=... autobuild MODULES
38 @end example
40 @noindent
41 (You can't do this will all of Gnulib at once: @code{gnulib-tool} would run
42 for a week and produce a directory that takes more than 100 GB, maybe even 1 TB,
43 of disk space.)
45 @item Transfer gnulib directory
47 Transfer this directory to a build machine (HP-UX, Cygwin, or
48 whatever).  Often it is easier to transfer one file, and this can be
49 achieved by running, inside the directory the following commands:
51 @example
52 ./configure
53 make dist
54 @end example
56 And then transferring the @file{dummy-0.tar.gz} file.
58 @item Build modules
60 On the build machine, run ./do-autobuild (or "nohup ./do-autobuild").
61 It creates a directory @file{logs/} with a log file for each module.
63 @end enumerate