Merge commit '58147d67806e1f54c447d7eabac35b1a5086c3a6'
[bpt/guile.git] / doc / ref / libguile-parallel.texi
CommitLineData
d32df132
AW
1@c -*-texinfo-*-
2@c This is part of the GNU Guile Reference Manual.
f88e9510 3@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2010, 2011, 2013
d32df132
AW
4@c Free Software Foundation, Inc.
5@c See the file guile.texi for copying conditions.
6
7@node Parallel Installations
8@section Parallel Installations
9
10@cindex pkg-config
11@cindex effective version
12
13Guile provides strong API and ABI stability guarantees during stable
f88e9510
AW
14series, so that if a user writes a program against Guile version 2.2.3,
15it will be compatible with some future version 2.2.7. We say in this
16case that 2.2 is the @dfn{effective version}, composed of the major and
17minor versions, in this case 2 and 2.
d32df132
AW
18
19Users may install multiple effective versions of Guile, with each
20version's headers, libraries, and Scheme files under their own
21directories. This provides the necessary stability guarantee for users,
22while also allowing Guile developers to evolve the language and its
23implementation.
24
25However, parallel installability does have a down-side, in that users
26need to know which version of Guile to ask for, when they build against
27Guile. Guile solves this problem by installing a file to be read by the
28@code{pkg-config} utility, a tool to query installed packages by name.
29Guile encodes the version into its pkg-config name, so that users can
30ask for @code{guile-2.0} or @code{guile-2.2}, as appropriate.
31
32For effective version @value{EFFECTIVE-VERSION}, for example, you would
33invoke @code{pkg-config --cflags --libs guile-@value{EFFECTIVE-VERSION}}
34to get the compilation and linking flags necessary to link to version
35@value{EFFECTIVE-VERSION} of Guile. You would typically run
36@code{pkg-config} during the configuration phase of your program and use
37the obtained information in the Makefile.
38
fe4ea685
LC
39Guile's @code{pkg-config} file,
40@file{guile-@value{EFFECTIVE-VERSION}.pc}, defines additional useful
41variables:
42
43@table @code
44@item sitedir
45@cindex @code{sitedir}
46The default directory where Guile looks for Scheme source and compiled
47files (@pxref{Installing Site Packages, %site-dir}). Run
48@command{pkg-config guile-@value{EFFECTIVE-VERSION} --variable=sitedir}
49to see its value. @xref{Autoconf Macros, GUILE_SITE_DIR}, for more on
50how to use it from Autoconf.
51
52@item extensiondir
53@cindex @code{extensiondir}
54The default directory where Guile looks for extensions---i.e., shared
55libraries providing additional features (@pxref{Modules and
56Extensions}). Run @command{pkg-config guile-@value{EFFECTIVE-VERSION}
57--variable=extensiondir} to see its value.
58@end table
59
60@noindent
d32df132
AW
61See the @code{pkg-config} man page, for more information, or its web
62site, @url{http://pkg-config.freedesktop.org/}.
d32df132
AW
63@xref{Autoconf Support}, for more on checking for Guile from within a
64@code{configure.ac} file.
65
66
67@c Local Variables:
68@c TeX-master: "guile.texi"
69@c End: