(no commit message)
[bitbake.git] / doc / DEVEL
1 OpenEmbedded Developer Documentation
2 --
3
4 How to add the build of a package to OpenEmbedded
5 (henceforth known as "OE") in a few easy steps!
6
7 First, you'll want to create the .oe.
8         vi content/packagename_version.oe
9         :wq
10
11 (Note the underscore separating the packagename and the version.)
12
13 Next, we need to add some content.  First, define the
14 "SRC_URI" variable to point to the upstream source tarball.
15         SRC_URI:=${GNU_MIRROR}/ncurses/ncurses-5.3.tar.gz
16
17 Then, we need to tell the system what will be extracted by
18 that tarball:
19         S=${WORKDIR}/${P}
20
21 (Note: "P" defaults to ${PN}-${PV}, which is package name,
22 and package version, respectively.)
23 (Also note that S=${WORKDIR}/${P} is automatically set, so you
24 just need to override, if the package extracts into another directory.)
25
26 Finally, we need to make some decisions on how to build this.
27 Take a look at the sources.  If you see a 'configure.in', 
28 or 'configure.ac', this is an autoconf/automake based buildsystem.
29 In this case, you're nearly done!
30
31 Simply tell the buildsystem that:
32         inherit autotools
33
34 And attempt a build!
35         oebuild content/packagename_version.oe
36
37 If the build either is not autotools based, or deviates from it in
38 any way, you can override any of the steps.  For example:
39
40         do_compile () {
41                 touch blahblah
42                 oe_runmake all
43         }
44
45 or
46
47         do_install () {
48                 oe_runmake 'PREFIX=${D}' install
49         }
50
51 And so on.  See $OEDIR/bin/classes/base.oeclass for an idea
52 as to what tasks exist by default, and what their default behaviors are.
53 The system will automatically assume that your .oe inherits base, in addition
54 to whatever oeclasses you inherit manually.