Skip to content


Subversion checkout URL

You can clone with
Download ZIP
100644 236 lines (178 sloc) 8.68 kb
77ffd04 @wrowe Provide a readme - others please review and expand upon this.
wrowe authored
1 Apache Portable Runtime Library (APR)
de354b5 @wrowe Reflect merger of apr-util/STATUS into apr/STATUS
wrowe authored
2 =====================================
77ffd04 @wrowe Provide a readme - others please review and expand upon this.
wrowe authored
4 The Apache Portable Runtime Library provides a predictable and
5 consistent interface to underlying platform-specific
6 implementations, with an API to which software developers may code
7 and be assured of predictable if not identical behavior regardless
8 of the platform on which their software is built, relieving them of
9 the need to code special-case conditions to work around or take
10 advantage of platform-specific deficiencies or features.
12 APR and its companion libraries are implemented entirely in C
13 and provide a common programming interface across a wide variety
14 of operating system platforms without sacrificing performance.
15 Currently supported platforms include:
17 UNIX variants
18 Windows
19 Netware
20 Mac OS X
21 OS/2
23 To give a brief overview, the primary core
24 subsystems of APR 1.3 include the following:
26 Atomic operations
27 Dynamic Shared Object loading
28 File I/O
29 Locks (mutexes, condition variables, etc)
30 Memory management (high performance allocators)
31 Memory-mapped files
32 Multicast Sockets
33 Network I/O
34 Shared memory
35 Thread and Process management
36 Various data structures (tables, hashes, priority queues, etc)
de354b5 @wrowe Reflect merger of apr-util/STATUS into apr/STATUS
wrowe authored
38 APR 2.0 also provides a number of utility functions and library
39 compatibility interfaces. These were formerly part of APR-util,
40 a seperate utility library in version 1 releases. These include;
42 Hashing and UUID services
43 Multiple SQL DBD client interfaces
44 Multiple flat-database DBM client interfaces
45 Typesafe function Hooks abstraction
46 MemCache interface
47 Date parsing rourtines
48 Resource Lists
49 Thread Pools
50 Queues
51 Relocatable Memory Management functions
52 String filename-style pattern matching
53 URI Parsing
54 Charset translation (iconv based)
55 XML parsing (expat based)
77ffd04 @wrowe Provide a readme - others please review and expand upon this.
wrowe authored
57 For a more complete list, please refer to the following URLs:
61 Users of APR 0.9 should be aware that migrating to the APR 1.x
62 programming interfaces may require some adjustments; APR 1.x is
63 neither source nor binary compatible with earlier APR 0.9 releases.
64 Users of APR 1.x can expect consistent interfaces and binary backwards
65 compatibility throughout the entire APR 1.x release cycle, as defined
66 in our versioning rules:
70 APR is already used extensively by the Apache HTTP Server
71 version 2 and the Subversion revision control system, to
72 name but a few. We list all known projects using APR at
73 -- so please let us know
74 if you find our libraries useful in your own projects!
de354b5 @wrowe Reflect merger of apr-util/STATUS into apr/STATUS
wrowe authored
77 Database Providers
78 ==================
79 Interfaces for copy-left licensed MySQL and gdbm DBD drivers, and
80 Berkeley DB DBM all ship as part of the distribution. To avoid licensing
81 incompatibilities, these are not built by default. To enable support,
82 the corresponding use the --with-{provider} option, but be aware that
83 these licenses may introduce licensing implications for your compiled code.
84 Similarly, the bindings for propritary drivers such as Oracle must also be
85 explicitly enabled.
87 Whenever distributing apr-util in combination with database client
88 drivers, always review the license requirements of all components.
dc10b07 @wrowe Fold into a single readme
wrowe authored
91 Using a Subversion Checkout on Unix
92 ===================================
94 If you are building APR from SVN, you need to perform a prerequisite
95 step. You must have autoconf, libtool and python installed for this
96 to work. The prerequisite is simply;
98 ./buildconf
100 If you are building APR from a distribution tarball, buildconf is
101 already run for you, and you do not need autoconf, libtool or python
102 installed or to run buildconf unless you have patched APR's buildconf
103 inputs (such as, build.conf, virtually any file within
104 the build/ tree, or you add or remove source files).
106 Remember when updating from svn that you must rerun ./buildconf again
107 to effect any changes made to the build schema in your fresh update.
110 Configuring and Building APR on Unix
111 ====================================
113 Simply;
115 ./configure --prefix=/desired/path/of/apr
116 make
117 make test
118 make install
120 Configure has additional options, ./configure --help will offer you
121 those choices. You may also add CC=compiler CFLAGS="compiler flags"
122 etc. prior to the ./configure statement (on the same line). Please
123 be warned, some flags must be passed as part of the CC command,
124 itself, in order for autoconf to make the right determinations. Eg.;
126 CC="gcc -m64" ./configure --prefix=/desired/path/of/apr
128 will inform APR that you are compiling to a 64 bit CPU, and autoconf
129 must consider that when setting up all of APR's internal and external
130 type declarations.
132 For more verbose output from testall, you may wish to invoke testall
133 with the flag;
135 cd test
136 ./testall -v
bc47219 @minfrin Add RPM build instructions. Submitted by Dan Poirier.
minfrin authored
139 Building APR RPM files on Linux
140 ===============================
142 Run the following to create SRPMs:
144 rpmbuild -ts apr-<version>.tar.bz2
145 rpmbuild -ts apr-util-<version>.tar.bz2
147 Run the following to create RPMs (or build from the SRPMs):
149 rpmbuild -tb apr-<version>.tar.bz2
150 rpmbuild -tb apr-util-<version>.tar.bz2
152 Resolve dependencies as appropriate.
dc10b07 @wrowe Fold into a single readme
wrowe authored
155 Configuring and Building APR on Windows
156 =======================================
158 Using Visual Studio, you can build and run the test validation of APR.
159 The make file has a bunch of documentation about it's
160 options, but a trivial build is simply;
162 nmake -f
163 nmake -f PREFIX=c:\desired\path\of\apr install
165 Note you must manually modify the include\apr.hw file before you
166 build to change default options, see the #define APR_HAS_... or the
167 #define APR_HAVE_... statements. Be careful, many of these aren't
168 appropriate to be modified. The most common change is
170 #define APR_HAVE_IPV6 1
172 rather than 0 if this build of APR will be used strictly on machines
173 with the IPv6 adapter support installed.
175 It's trivial to include the apr.dsp (for a static library) or the
176 libapr.dsp (for a dynamic library) in your own build project, or you
177 can load apr.dsw in Visual Studio 2002 (.NET) or later, which will
178 convert these for you into apr.sln and associated .vcproj files.
180 When using APR as a dynamic library, nothing special is required,
181 simply link to libapr.lib. To use it as a static library, simply
182 define APR_DECLARE_STATIC before you include any apr header files
183 in your source, and link to apr.lib instead.
de354b5 @wrowe Reflect merger of apr-util/STATUS into apr/STATUS
wrowe authored
185 On windows, selection of database drivers is via the environment values
395cc0e Mark apr_dbd_freetds as unsupported and remove it from all builds
Nick Kew authored
186 DBD_LIST (for mysql, oracle, pgsql, sqlite2 and/or sqlite3)
de354b5 @wrowe Reflect merger of apr-util/STATUS into apr/STATUS
wrowe authored
187 and DBM_LIST (db and/or gdbm). DBD odbc and DBM sdbm are unconditionally
188 compiled and installed, do not include these in the list.
dc10b07 @wrowe Fold into a single readme
wrowe authored
191 Generating Test Coverage information with gcc
192 =============================================
194 If you want to generate test coverage data, use the following steps:
196 ./buildconf
197 CFLAGS="-fprofile-arcs -ftest-coverage" ./configure
198 make
199 cd test
200 make
201 ./testall
202 cd ..
203 make gcov
de354b5 @wrowe Reflect merger of apr-util/STATUS into apr/STATUS
wrowe authored
206 Cryptographic Software Notice
207 =============================
208 This distribution includes cryptographic software. The country in
209 which you currently reside may have restrictions on the import,
210 possession, use, and/or re-export to another country, of
211 encryption software. BEFORE using any encryption software, please
212 check your country's laws, regulations and policies concerning the
213 import, possession, or use, and re-export of encryption software, to
214 see if this is permitted. See for more
215 information.
217 The U.S. Government Department of Commerce, Bureau of Industry and
218 Security (BIS), has classified this software as Export Commodity
219 Control Number (ECCN) 5D002.C.1, which includes information security
220 software using or performing cryptographic functions with asymmetric
221 algorithms. The form and manner of this Apache Software Foundation
222 distribution makes it eligible for export under the License Exception
223 ENC Technology Software Unrestricted (TSU) exception (see the BIS
224 Export Administration Regulations, Section 740.13) for both object
225 code and source code.
227 The following provides more details on the included cryptographic
228 software:
76e618d @minfrin Update the crypto notices for apr_crypto.
minfrin authored
230 APR provides an abstract interface for symmetrical cryptographic
231 functions that make use of a general-purpose encryption library,
232 such as OpenSSL, NSS, or the operating system's platform-specific
233 facilities. This interface is known as the apr_crypto interface,
234 with implementation beneath the /crypto directory.
de354b5 @wrowe Reflect merger of apr-util/STATUS into apr/STATUS
wrowe authored
Something went wrong with that request. Please try again.