| |
| 1. unpack the source tarball and cd to the resulting dir |
| |
| 2. # autoconf |
| this reads configure.in and generates the ./configure script |
| |
| 3. # ./configure |
| this probes your system and then, for each "file" named |
| in the AC_OUTPUT() macro near the end of configure.in, |
| read "file".in and generate "file". Variables named @somevariable@ |
| will be substituted with literal values. |
| |
| 4. step (3) produces several files. These files are generated by |
| configure from their respective .in file in the same directory. |
| You should have a read of these generated files and diff them |
| against their respective .in files to see what was substituted |
| by configure. |
| |
| src/include/builddefs |
| common definitions for the build environment. This is included |
| by all Makefiles, in conjunction with src/include/buildrules. |
| Note that most autoconf/configure build environments generate |
| Makefile (from Makefile.in) in every src dir. Instead, we |
| generate builddefs, and then include it in every Makefile. |
| |
| src/include/platform_defs.h |
| header containing conditional macros defining the C run-time |
| environment discovered by the configure script. |
| |
| 5. read some or all of the GNU tool chain documentation |
| GNU make : |
| http://www.delorie.com/gnu/docs/make/make_toc.html |
| autoconf : |
| http://www.delorie.com/gnu/docs/autoconf/autoconf_toc.html |
| libtool : |
| http://www.delorie.com/gnu/docs/libtool/libtool_toc.html |
| gcc/g++ : |
| http://www.delorie.com/gnu/docs/gcc/gcc_toc.html |
| |
| 6. Makefiles and build environment |
| First have a look at some Makefiles |
| |
| example using SUBDIRS : xfsprogs/Makefile |
| example static library: xfsprogs/libxfs/Makefile |
| example command : xfsprogs/bmap/Makefile |
| |
| All Makefiles must define TOPDIR as the root of the project. This |
| allows other stuff to be found relative to $(TOPDIR). |
| |
| All Makefiles should have the following structure, which is |
| much like commondefs and commonrules in the IRIX build environment, e.g. |
| |
| # ---------------------------------------------------------------------- |
| # TOPDIR must point to the root of the project |
| # The builddefs file defines lots of things. Read it. |
| TOPDIR = .. |
| include $(TOPDIR)/include/builddefs |
| |
| # first rule should always be "default" |
| default : sometarget |
| commands to build targets, if necessary |
| |
| # $(BUILDRULES) is defined in builddefs and includes rules for |
| # descending subdirs, building targets and installation rules |
| include $(BUILDRULES) |
| |
| install : default |
| $(INSTALL) sometargets somewhere |
| # ---------------------------------------------------------------------- |
| |
| 7. packaging |
| |
| # ./Makepkgs |
| this script generates all of the packages supported - each has a |
| subdirectory below xfsprogs/build where knowledge specific to |
| each package type is maintained. |
| |
| The script produces logs of each stage of the build (this info is |
| also echoed to the screen when the "verbose" option is provided): |
| |
| xfsprogs/Logs/configure - `autoconf; ./configure' output |
| xfsprogs/Logs/default - `make default' output |
| xfsprogs/Logs/dist - `make build dist' output |
| |
| On successful completion, the script echoes the names of packages |
| successfully generated. |