summaryrefslogtreecommitdiff
path: root/microkernel/mach/mig/building.mdwn
blob: 08a1c14ba1078f6e553b4dd5740d5b038b76f7fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# <a name="Building_the_Mach_Interface_Gene"> Building the Mach Interface Generator from Source </a>

If you want to build the Mach Interface Generator yourself instead of just using a pre-built package, follow these instructions.

## <a name="Getting_the_Source_Code"> Getting the Source Code </a>

You can chose between getting the [sources from the developers's rcs](http://www.gnu.org/software/hurd/mig-download.html#cvs):

    $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/hurd co mig

... or (if you are working on a Debian system) the ones that are used for the [current Debian mig package](http://packages.debian.net/source/unstable/mig):

    $ apt-get source mig

Please see [[Distrib/DebianFAQ]] before using _apt-get source_.

The unpacked source tree is around 1 MiB, and the build tree also is around 1 MiB.

## <a name="Preparing_for_the_Build"> Preparing for the Build </a>

### <a name="_on_Debian_systems"> ... on Debian systems </a>

Building the Mach Interface Generator requires the _build-essential_ and _fakeroot_ packages, their dependencies and additional packages that are specified by the source mig package:

    # apt-get install build-essential fakeroot
    # apt-get build-dep mig

### <a name="_on_non_Debian_systems"> ... on non-Debian systems </a>

Building the Mach Interface Generator requires a C compiler, a standard C library (with corresponding header files) and your favourite flavor of awk (gawk), yacc (bison), lex (flex) and make.

Additionally, you need to have GNU Mach's header files installed. See [[mach/gnumach/building]] about how to do that, then come back here.

## <a name="Building_and_Installing"> Building and Installing </a>

### <a name="_a_deb_file"> ... a _.deb_ file </a>

Change into the directory with the downloaded / unpacked MIG sources (_mig-1.3.1.99_):

    $ cd mig-1.3.1.99

Start the build process:

    $ dpkg-buildpackage -us -uc -b -rfakeroot

You can then install / distribute the _.deb_ file which will drop out one directory above the current one.

### <a name="_TODO_"> [TODO] </a>

The Mach Interface Generator has to be built in a separate directory:

    $ mkdir mig-build
    $ cd mig-build

Find the root directory where you installed GNU Mach's header files and where you now intend to install the Mach Interface Generator (_~/gnu_) and the path to your Mach Interface Generator sources (\_[...]/mig) and configure it:

    $ GNU=~/gnu
    $ TARGET_CPPFLAGS=-I"$GNU"/include [...]/mig/configure --prefix="$GNU"

Build and install the Mach Interface Generator into _$GNU_, i.e. _~/gnu/_ in our example:

    $ make all install

To make your _mig_ binary easily available, you should append something like the following to e.g. your _~/.bash\_profile_:

    PATH=~/gnu/bin:$PATH
    export PATH

If you already have e.g. _~/bin_ in your _$PATH_, you could also create a symbolic link:

    $ ln -s ~/gnu/bin/mig ~/bin/