
1: DBus Installation 2: ================= 3: 4: Quick start 5: =========== 6: 7: DBus uses GNU AutoTools for its build system, thus the basic install 8: procedure can be summarized as: 9: 10: ./configure --prefix=/usr 11: make 12: su make install 13: 14: The configure script will automatically determine whether to try and 15: build bindings for GLib, Qt, Qt3, Python and Mono based on what tools 16: are installed on the host system. The default build behaviour can be 17: overridden using the --enable-XXX/--disable-XXX arguments to configure. 18: A typical scenario in which it is desirable to override automatic 19: detection, is during packaging of binary builds, where a predictable 20: dependancy chain is required. For more details on GNU AutoTools 21: installation, consult the generic instructions later in this document 22: 23: External software dependancies 24: ============================== 25: 26: The only fundamental requirement to build DBus is an XML parser, 27: however, there are a number of other software packages which (if 28: present) will enhance functionality. 29: 30: Core library 31: ------------ 32: 33: Requisite: 34: 35: - Gettext 36: - expat or libxml-2 37: 38: NB, expat is the recommended XML parser because it has more robust 39: handling of OOM conditions. 40: 41: Optional: 42: 43: - libselinux (for SELinux integration) 44: - dnotify (for automatic service file reload) 45: - doxygen (for API documentation) 46: - xmlto (for Spec & other XML documentation) 47: 48: GLib Bindings 49: ------------- 50: 51: Requisite: 52: 53: - GLib >= 2.4 54: 55: Optional: 56: 57: - GTK+ >= 2.4 (for dbus-viewer tool) 58: 59: Qt Bindings 60: ----------- 61: 62: Requisite: 63: 64: - QtCore and QtXml >= 4.1.3 65: 66: Optional: 67: 68: - QtTest (for Qt Unit tests) 69: - QtGui >= 4.1.3 (for the chat example program) 70: 71: Note: Qt 4.1.3 is not available in released form. You need to download 72: the 4.1.3 snapshots from Trolltech. However, the Qt binding compiles 73: and works in Qt 4.1.2, but not the dbusidl2cpp tool. 74: 75: Note that DBus detects QtCore and QtXml during the configure process 76: using pkg-config. You may need to set the PKG_CONFIG_PATH to include 77: the Qt4 library directory. If you don't have your Qt4 installed, then 78: you may also need to use the --with-qt-moc directive to point to the 79: Qt4 moc executable (e.g. $QTDIR/bin/moc). 80: 81: 82: Qt 3 Bindings 83: ------------- 84: 85: Requisite: 86: 87: - Qt >= 3.1 88: 89: Mono Bindings 90: ------------- 91: 92: Requisite: 93: 94: - Mono >= 0.95 95: 96: Optional: 97: 98: - MonoDoc >= 0.16 (for API documentation) 99: 100: Python Bindings 101: --------------- 102: 103: Requisite: 104: 105: - Python >= 2.4 106: - Pyrex 107: 108: ==================================================================== 109: 110: The rest of this document contains the generic GNU AutoTools install 111: insructions.... 112: 113: Basic Installation 114: ================== 115: 116: These are generic installation instructions. 117: 118: The `configure' shell script attempts to guess correct values for 119: various system-dependent variables used during compilation. It uses 120: those values to create a `Makefile' in each directory of the package. 121: It may also create one or more `.h' files containing system-dependent 122: definitions. Finally, it creates a shell script `config.status' that 123: you can run in the future to recreate the current configuration, a file 124: `config.cache' that saves the results of its tests to speed up 125: reconfiguring, and a file `config.log' containing compiler output 126: (useful mainly for debugging `configure'). 127: 128: If you need to do unusual things to compile the package, please try 129: to figure out how `configure' could check whether to do them, and mail 130: diffs or instructions to the address given in the `README' so they can 131: be considered for the next release. If at some point `config.cache' 132: contains results you don't want to keep, you may remove or edit it. 133: 134: The file `configure.in' is used to create `configure' by a program 135: called `autoconf'. You only need `configure.in' if you want to change 136: it or regenerate `configure' using a newer version of `autoconf'. 137: 138: The simplest way to compile this package is: 139: 140: 1. `cd' to the directory containing the package's source code and type 141: `./configure' to configure the package for your system. If you're 142: using `csh' on an old version of System V, you might need to type 143: `sh ./configure' instead to prevent `csh' from trying to execute 144: `configure' itself. 145: 146: Running `configure' takes awhile. While running, it prints some 147: messages telling which features it is checking for. 148: 149: 2. Type `make' to compile the package. 150: 151: 3. Optionally, type `make check' to run any self-tests that come with 152: the package. 153: 154: 4. Type `make install' to install the programs and any data files and 155: documentation. 156: 157: 5. You can remove the program binaries and object files from the 158: source code directory by typing `make clean'. To also remove the 159: files that `configure' created (so you can compile the package for 160: a different kind of computer), type `make distclean'. There is 161: also a `make maintainer-clean' target, but that is intended mainly 162: for the package's developers. If you use it, you may have to get 163: all sorts of other programs in order to regenerate files that came 164: with the distribution. 165: 166: Compilers and Options 167: ===================== 168: 169: Some systems require unusual options for compilation or linking that 170: the `configure' script does not know about. You can give `configure' 171: initial values for variables by setting them in the environment. Using 172: a Bourne-compatible shell, you can do that on the command line like 173: this: 174: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure 175: 176: Or on systems that have the `env' program, you can do it like this: 177: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure 178: 179: Compiling For Multiple Architectures 180: ==================================== 181: 182: You can compile the package for more than one kind of computer at the 183: same time, by placing the object files for each architecture in their 184: own directory. To do this, you must use a version of `make' that 185: supports the `VPATH' variable, such as GNU `make'. `cd' to the 186: directory where you want the object files and executables to go and run 187: the `configure' script. `configure' automatically checks for the 188: source code in the directory that `configure' is in and in `..'. 189: 190: If you have to use a `make' that does not supports the `VPATH' 191: variable, you have to compile the package for one architecture at a time 192: in the source code directory. After you have installed the package for 193: one architecture, use `make distclean' before reconfiguring for another 194: architecture. 195: 196: Installation Names 197: ================== 198: 199: By default, `make install' will install the package's files in 200: `/usr/local/bin', `/usr/local/man', etc. You can specify an 201: installation prefix other than `/usr/local' by giving `configure' the 202: option `--prefix=PATH'. 203: 204: You can specify separate installation prefixes for 205: architecture-specific files and architecture-independent files. If you 206: give `configure' the option `--exec-prefix=PATH', the package will use 207: PATH as the prefix for installing programs and libraries. 208: Documentation and other data files will still use the regular prefix. 209: 210: In addition, if you use an unusual directory layout you can give 211: options like `--bindir=PATH' to specify different values for particular 212: kinds of files. Run `configure --help' for a list of the directories 213: you can set and what kinds of files go in them. 214: 215: If the package supports it, you can cause programs to be installed 216: with an extra prefix or suffix on their names by giving `configure' the 217: option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 218: 219: Optional Features 220: ================= 221: 222: Some packages pay attention to `--enable-FEATURE' options to 223: `configure', where FEATURE indicates an optional part of the package. 224: They may also pay attention to `--with-PACKAGE' options, where PACKAGE 225: is something like `gnu-as' or `x' (for the X Window System). The 226: `README' should mention any `--enable-' and `--with-' options that the 227: package recognizes. 228: 229: For packages that use the X Window System, `configure' can usually 230: find the X include and library files automatically, but if it doesn't, 231: you can use the `configure' options `--x-includes=DIR' and 232: `--x-libraries=DIR' to specify their locations. 233: 234: Specifying the System Type 235: ========================== 236: 237: There may be some features `configure' can not figure out 238: automatically, but needs to determine by the type of host the package 239: will run on. Usually `configure' can figure that out, but if it prints 240: a message saying it can not guess the host type, give it the 241: `--host=TYPE' option. TYPE can either be a short name for the system 242: type, such as `sun4', or a canonical name with three fields: 243: CPU-COMPANY-SYSTEM 244: 245: See the file `config.sub' for the possible values of each field. If 246: `config.sub' isn't included in this package, then this package doesn't 247: need to know the host type. 248: 249: If you are building compiler tools for cross-compiling, you can also 250: use the `--target=TYPE' option to select the type of system they will 251: produce code for and the `--build=TYPE' option to select the type of 252: system on which you are compiling the package. 253: 254: Sharing Defaults 255: ================ 256: 257: If you want to set default values for `configure' scripts to share, 258: you can create a site shell script called `config.site' that gives 259: default values for variables like `CC', `cache_file', and `prefix'. 260: `configure' looks for `PREFIX/share/config.site' if it exists, then 261: `PREFIX/etc/config.site' if it exists. Or, you can set the 262: `CONFIG_SITE' environment variable to the location of the site script. 263: A warning: not all `configure' scripts look for a site script. 264: 265: Operation Controls 266: ================== 267: 268: `configure' recognizes the following options to control how it 269: operates. 270: 271: `--cache-file=FILE' 272: Use and save the results of the tests in FILE instead of 273: `./config.cache'. Set FILE to `/dev/null' to disable caching, for 274: debugging `configure'. 275: 276: `--help' 277: Print a summary of the options to `configure', and exit. 278: 279: `--quiet' 280: `--silent' 281: `-q' 282: Do not print messages saying which checks are being made. To 283: suppress all normal output, redirect it to `/dev/null' (any error 284: messages will still be shown). 285: 286: `--srcdir=DIR' 287: Look for the package's source code in directory DIR. Usually 288: `configure' can determine that directory automatically. 289: 290: `--version' 291: Print the version of Autoconf used to generate the `configure' 292: script, and exit. 293: 294: `configure' also accepts some other, not widely useful, options.