87 lines
3.1 KiB
Plaintext
87 lines
3.1 KiB
Plaintext
|
|
||
|
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 : attr/Makefile
|
||
|
example static library: attr/libattr/Makefile
|
||
|
example command : attr/getfattr/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 attr/package 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):
|
||
|
|
||
|
attr/Logs/configure - `autoconf; ./configure' output
|
||
|
attr/Logs/default - `make default' output
|
||
|
attr/Logs/dist - `make package dist' output
|
||
|
|
||
|
On successful completion, the script echoes the names of packages
|
||
|
successfully generated.
|