6c648dd642
This is actually a fully functional build except: * All internal shared libraries are static linked to make sure there is no interference with ports (and to reduce build time). * It does not have the python/perl/etc plugin or API support. * By default, it installs as "svnlite" rather than "svn". * If WITH_SVN added in make.conf, you get "svn". * If WITHOUT_SVNLITE is in make.conf, this is completely disabled. To be absolutely clear, this is not intended for any use other than checking out freebsd source and committing, like we once did with cvs. It should be usable for small scale local repositories that don't need the python/perl plugin architecture.
168 lines
5.5 KiB
Plaintext
168 lines
5.5 KiB
Plaintext
Apache Portable Runtime Library (APR)
|
|
-------------------------------------
|
|
|
|
The Apache Portable Runtime Library provides a predictable and
|
|
consistent interface to underlying platform-specific
|
|
implementations, with an API to which software developers may code
|
|
and be assured of predictable if not identical behavior regardless
|
|
of the platform on which their software is built, relieving them of
|
|
the need to code special-case conditions to work around or take
|
|
advantage of platform-specific deficiencies or features.
|
|
|
|
APR and its companion libraries are implemented entirely in C
|
|
and provide a common programming interface across a wide variety
|
|
of operating system platforms without sacrificing performance.
|
|
Currently supported platforms include:
|
|
|
|
UNIX variants
|
|
Windows
|
|
Netware
|
|
Mac OS X
|
|
OS/2
|
|
|
|
To give a brief overview, the primary core
|
|
subsystems of APR 1.3 include the following:
|
|
|
|
Atomic operations
|
|
Dynamic Shared Object loading
|
|
File I/O
|
|
Locks (mutexes, condition variables, etc)
|
|
Memory management (high performance allocators)
|
|
Memory-mapped files
|
|
Multicast Sockets
|
|
Network I/O
|
|
Shared memory
|
|
Thread and Process management
|
|
Various data structures (tables, hashes, priority queues, etc)
|
|
|
|
For a more complete list, please refer to the following URLs:
|
|
|
|
http://apr.apache.org/docs/apr/modules.html
|
|
|
|
Users of APR 0.9 should be aware that migrating to the APR 1.x
|
|
programming interfaces may require some adjustments; APR 1.x is
|
|
neither source nor binary compatible with earlier APR 0.9 releases.
|
|
Users of APR 1.x can expect consistent interfaces and binary backwards
|
|
compatibility throughout the entire APR 1.x release cycle, as defined
|
|
in our versioning rules:
|
|
|
|
http://apr.apache.org/versioning.html
|
|
|
|
APR is already used extensively by the Apache HTTP Server
|
|
version 2 and the Subversion revision control system, to
|
|
name but a few. We list all known projects using APR at
|
|
http://apr.apache.org/projects.html -- so please let us know
|
|
if you find our libraries useful in your own projects!
|
|
|
|
|
|
Using a Subversion Checkout on Unix
|
|
===================================
|
|
|
|
If you are building APR from SVN, you need to perform a prerequisite
|
|
step. You must have autoconf, libtool and python installed for this
|
|
to work. The prerequisite is simply;
|
|
|
|
./buildconf
|
|
|
|
If you are building APR from a distribution tarball, buildconf is
|
|
already run for you, and you do not need autoconf, libtool or python
|
|
installed or to run buildconf unless you have patched APR's buildconf
|
|
inputs (such as configure.in, build.conf, virtually any file within
|
|
the build/ tree, or you add or remove source files).
|
|
|
|
Remember when updating from svn that you must rerun ./buildconf again
|
|
to effect any changes made to the build schema in your fresh update.
|
|
|
|
|
|
Configuring and Building APR on Unix
|
|
====================================
|
|
|
|
Simply;
|
|
|
|
./configure --prefix=/desired/path/of/apr
|
|
make
|
|
make test
|
|
make install
|
|
|
|
Configure has additional options, ./configure --help will offer you
|
|
those choices. You may also add CC=compiler CFLAGS="compiler flags"
|
|
etc. prior to the ./configure statement (on the same line). Please
|
|
be warned, some flags must be passed as part of the CC command,
|
|
itself, in order for autoconf to make the right determinations. Eg.;
|
|
|
|
CC="gcc -m64" ./configure --prefix=/desired/path/of/apr
|
|
|
|
will inform APR that you are compiling to a 64 bit CPU, and autoconf
|
|
must consider that when setting up all of APR's internal and external
|
|
type declarations.
|
|
|
|
For more verbose output from testall, you may wish to invoke testall
|
|
with the flag;
|
|
|
|
cd test
|
|
./testall -v
|
|
|
|
|
|
Building APR RPM files on Linux
|
|
===============================
|
|
|
|
Run the following to create SRPMs:
|
|
|
|
rpmbuild -ts apr-<version>.tar.bz2
|
|
rpmbuild -ts apr-util-<version>.tar.bz2
|
|
|
|
Run the following to create RPMs (or build from the SRPMs):
|
|
|
|
rpmbuild -tb apr-<version>.tar.bz2
|
|
rpmbuild -tb apr-util-<version>.tar.bz2
|
|
|
|
Resolve dependencies as appropriate.
|
|
|
|
|
|
Configuring and Building APR on Windows
|
|
=======================================
|
|
|
|
Using Visual Studio, you can build and run the test validation of APR.
|
|
The Makefile.win make file has a bunch of documentation about it's
|
|
options, but a trivial build is simply;
|
|
|
|
nmake -f Makefile.win
|
|
nmake -f Makefile.win PREFIX=c:\desired\path\of\apr install
|
|
|
|
Note you must manually modify the include\apr.hw file before you
|
|
build to change default options, see the #define APR_HAS_... or the
|
|
#define APR_HAVE_... statements. Be careful, many of these aren't
|
|
appropriate to be modified. The most common change is
|
|
|
|
#define APR_HAVE_IPV6 1
|
|
|
|
rather than 0 if this build of APR will be used strictly on machines
|
|
with the IPv6 adapter support installed.
|
|
|
|
It's trivial to include the apr.dsp (for a static library) or the
|
|
libapr.dsp (for a dynamic library) in your own build project, or you
|
|
can load apr.dsw in Visual Studio 2002 (.NET) or later, which will
|
|
convert these for you into apr.sln and associated .vcproj files.
|
|
|
|
When using APR as a dynamic library, nothing special is required,
|
|
simply link to libapr.lib. To use it as a static library, simply
|
|
define APR_DECLARE_STATIC before you include any apr header files
|
|
in your source, and link to apr.lib instead.
|
|
|
|
|
|
Generating Test Coverage information with gcc
|
|
=============================================
|
|
|
|
If you want to generate test coverage data, use the following steps:
|
|
|
|
./buildconf
|
|
CFLAGS="-fprofile-arcs -ftest-coverage" ./configure
|
|
make
|
|
cd test
|
|
make
|
|
./testall
|
|
cd ..
|
|
make gcov
|
|
|
|
|