I've written up some documentation about the build system, could I
please have some feedback as to usefulness, style, shape etc?
thanks,
Gabriela
-------------------------------------------------------------------
The Subversion Build System, an overview
-----------------------------------------
0. Introduction
1. Example compile
2. Updating the build system after adding changes
3.. Debugging the build system with remake
4. Further reading and assorted manuals
5. Adding components to the build system
6. Adding a library
7. Adding an executable
8. Adding an external component
A I. A list of all build system files and a short description of each
A II. A short walkthrough of some of the files that make it all happen
0. Introduction
---------------
The Subversion build system is a bespoke system written by Greg Stein,
which combines standard tools (autoconf, make) with internal scripts
to speed up the compile cycle.
The Subversion build system provides a number of services:
* Download of external packages/dependencies
A shell script, (get-deps.sh) downloads external packages, unpacks
them, and places them in appropriately named directories.
* Platform specific build configuration
Subversion uses the Autoconf package to detect platform specific
features such as presence of C library functions and location of
standard unix utilities. It is invoked using the command
"./configure". The behaviour of this is changed in a number of
places:
Makefile.in
configure.ac
aclocal.m4
build/ac-macros/*.m4
Please see appendix I for a walkthrough of these files.
* Subversion-specific build configuration
Subversion uses an internally-written set of python scripts to
generate lists of targets and dependencies. It is invoked using the
command "./autogen.sh". This command, among other things, calls
gen-make.py, which in turn calls several more python file in
build/generate. The configuration file for this is build.conf and
the output is a file named build-outputs.mk.
Next, configure uses configure.ac, Makefile.in and build-outputs.mk
to generate the Makefile.
Historically, ./configure took a long time to run, and this setup
significantly reduced the compile time for Subversion.
For a full list of files with a short description, see appendix II.
2. Example compile
------------------
svn co https://svn.apache.org/repos/asf/subversion/trunk
cd trunk
./get-deps.sh
./autogen.sh
./configure --enable-maintainer-mode --prefix=/dev/null
make
3. Debugging the build system
-----------------------------
Running configure produces a useful log file in trunk/configure.log.
'remake' (link below) is a very useful tool to help with debugging the
output of 'make' (see section 4 for the manual).
Sample output of remake:
##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
cd subversion/svn_hello_world && /bin/bash /home/g/trunk/libtool
--tag=CC --silent --mode=link gcc -g -O2 -g -O2 -pthread -rpath
/dev/null/lib -o svn_hello_world
##<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In
function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld returned 1 exit status
build-outputs.mk:1008: *** [subversion/svn_hello_world/svn_hello_world]
Error 1
#0 subversion/svn_hello_world/svn_hello_world at
/home/g/trunk/build-outputs.mk:1008
#1 lib at /home/g/trunk/build-outputs.mk:1174
#2 local-all at /home/g/trunk/Makefile:386
#3 all at /home/g/trunk/Makefile:378
Command-line invocation:
" none
4. Further reading and assorted manuals
----------------------------------------
autoconf http://www.gnu.org/software/autoconf/manual/autoconf.html
remake http://bashdb.sourceforge.net/remake/remake.html/index.html
make http://www.gnu.org/software/make/manual/make.html
M4 Macros http://mbreen.com/m4.html
Libtool http://www.gnu.org/software/libtool/manual/libtool.html
5. Adding components to the build system
------------------------------------------
The following sections step through making minimal additions to the
build system, the examples presents comprise a librabry, a minimal
execturable and a 3rd party package.
6. Adding a library
-------------------
First, the C files which comprise a library:
Index: subversion/libsvn_hello_world/libsvn_hello_world.c
===================================================================
--- subversion/libsvn_hello_world/libsvn_hello_world.c (revision 0)
+++ subversion/libsvn_hello_world/libsvn_hello_world.c (revision 0)
@@ -0,0 +1,18 @@
+#include <stdio.h>
+#include <string.h>
+#include "svn_pools.h"
+#include "svn_string.h"
+
+void libsvn_hello_world()
+{
+ const char * hello = "hello, world\n";
+ apr_pool_t * pool;
+
+ /* Token call into both svn and apr apis, to show that we have
+ successfully linked and compiled against the api */
+ pool = apr_allocator_owner_get(svn_pool_create_allocator(FALSE));
+
+ printf("%s", hello);
+
+ return;
+}
Index: subversion/libsvn_hello_world/libsvn_hello_world_main.c
===================================================================
--- subversion/libsvn_hello_world/libsvn_hello_world_main.c (revision 0)
+++ subversion/libsvn_hello_world/libsvn_hello_world_main.c (revision 0)
@@ -0,0 +1,8 @@
+#include "libsvn_hello_world.h"
+
+int
+main(int argc, char ** argv)
+{
+ libsvn_hello_world();
+ return 0;
+}
Index: subversion/libsvn_hello_world/libsvn_hello_world.h
===================================================================
--- subversion/libsvn_hello_world/libsvn_hello_world.h (revision 0)
+++ subversion/libsvn_hello_world/libsvn_hello_world.h (revision 0)
@@ -0,0 +1,6 @@
+#ifndef _SVN_HELLO_WORLD_
+#define _SVN_HELLO_WORLD_ 1
+
void svn_hello_world(void);
+
+#endif
Finally, we need to update build.conf:
Index: build.conf
===================================================================
--- build.conf (revision 1441170)
+++ build.conf (working copy)
@@ -109,6 +108,14 @@ swig-checkout-files = common.swg swigrun.swg runti
# external-project - visual studio project to depend on
#
+
+[libsvn_hello_world]
+description = Hello World component
+type = lib
+path = subversion/libsvn_hello_world
+libs = libsvn_subr aprutil apr
+install = lib
+
# The subversion command-line client
[svn]
description = Subversion Client
7. Adding an executable
------------------------
The C files which comprise a stand-alone application:
Index: subversion/svn_hello_world/svn_hello_world.c
===================================================================
--- subversion/svn_hello_world/svn_hello_world.c (revision 0)
+++ subversion/svn_hello_world/svn_hello_world.c (revision 0)
@@ -0,0 +1,21 @@
+#include <stdio.h>
+#include <string.h>
+/* #include <assert.h> */
+
+/* #include <apr_strings.h> */
+#include "svn_pools.h"
+#include "svn_string.h"
+
+void svn_hello_world()
+{
+ const char * hello = "hello, world\n";
+ apr_pool_t * pool;
+
+ /* Token call into both svn and apr apis, to show that we have
+ successfully linked and compiled against the api */
+ pool = apr_allocator_owner_get(svn_pool_create_allocator(FALSE));
*+
+ printf("%s", hello);
+
+ return;
+}
Index: subversion/svn_hello_world/svn_hello_world_main.c
===================================================================
--- subversion/svn_hello_world/svn_hello_world_main.c (revision 0)
+++ subversion/svn_hello_world/svn_hello_world_main.c (revision 0)
@@ -0,0 +1,8 @@
+#include "svn_hello_world.h"
+
+int
+main(int argc, char ** argv)
+{
+ svn_hello_world();
+ return 0;
+}
Index: subversion/svn_hello_world/svn_hello_world.h
===================================================================
--- subversion/svn_hello_world/svn_hello_world.h (revision 0)
+++ subversion/svn_hello_world/svn_hello_world.h (revision 0)
@@ -0,0 +1,6 @@
+#ifndef _SVN_HELLO_WORLD_
+#define _SVN_HELLO_WORLD_ 1
+
+void svn_hello_world(void);
+
+#endif
Then, a section had to be added to build.conf:
Index: build.conf
===================================================================
--- build.conf (revision 1441170)
+++ build.conf (working copy)
@@ -62,7 +62,6 @@ private-built-includes =
subversion/svn/svn-help.inc
subversion/svn/svn-help.man
-
test-scripts =
subversion/tests/cmdline/*_tests.py
@@ -109,6 +108,14 @@ swig-checkout-files = common.swg swigrun.swg runti
# external-project - visual studio project to depend on
#
+
+[svn_hello_world]
+description = Hello World component
+type = exe
+path = subversion/svn_hello_world
+libs = libsvn_subr aprutil apr
+install = bin
+
# The subversion command-line client
[svn]
description = Subversion Client
8. Adding an external component
-------------------------------
For this section, we'll take apart how to add the GoogleTest C++ library
to the Subversion build system.
Index: configure.ac
===================================================================
--- configure.ac (revision 1442814)
+++ configure.ac (working copy)
@@ -633,7 +633,23 @@ fi
AC_SUBST(SVN_GNOME_KEYRING_INCLUDES)
AC_SUBST(SVN_GNOME_KEYRING_LIBS)
+dnl gtest -----------------
+AC_ARG_ENABLE([gtest],
+ [AS_HELP_STRING([--enable-gtest],
+ [Enable tests using the Google C++ Testing Framework.
+ ])],
+ enable_gtest=yes,
+ [])
+if test "$enable_gtest" = "yes"; then
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([HAVE_GTEST], [1],
+ [Is gtest enabled?])
+else
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST([HAVE_GTEST])
+
dnl Ev2 experimental features ----------------------
dnl Note: The Ev2 implementations will be built unconditionally, but by
dnl providing this flag, users can choose to use the currently-shimmed Ev2
@@ -839,6 +855,12 @@ if test "$svn_lib_kwallet" = "yes"; then
INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-kwallet-lib"
fi
+if test "$enable_gtest" = "yes"; then
+ BUILD_RULES="$BUILD_RULES libgtest"
+ INSTALL_RULES="`echo $INSTALL_RULES | $SED 's/install-lib/install-lib
install-gtest/'`"
+ INSTALL_STATIC_RULES="$INSTALL_STATIC_RULES install-gtest"
+fi
+
if test "$found_gnome_keyring" = "yes"; then
BUILD_RULES="$BUILD_RULES gnome-keyring-lib"
INSTALL_RULES="`echo $INSTALL_RULES | $SED
's/install-lib/install-lib install-gnome-keyring-lib/'`"
Index: get-deps.sh
===================================================================
--- get-deps.sh (revision 1442814)
+++ get-deps.sh (working copy)
@@ -115,7 +115,11 @@ get_gtest() {
unzip -q $TEMPDIR/$GTEST.zip
- mv $GTEST gtest
+ mv $GTEST libgtest
+ echo "Gtest has been installed, please note:"
+ echo "autogen.sh will issue spurious header warnings."
+ echo "./configure --enable-gtest will issue repeated spurious
warnings that"
+ echo "the option --enable-gtest is not recognsed."
}
# main()
Index: Makefile.in
===================================================================
--- Makefile.in (revision 1442814)
+++ Makefile.in (working copy)
@@ -135,6 +135,8 @@ APACHE_INCLUDES = @APACHE_INCLUDES@
APACHE_LIBEXECDIR = $(DESTDIR)@APACHE_LIBEXECDIR@
APACHE_LDFLAGS = @APACHE_LDFLAGS@
+GTEST_INCLUDES = -Ilibgtest -Ilibgtest/include/
-Ilibgtest/include/gtest/internal -Ilibgtest/include/gtest
+
SWIG = @SWIG@
SWIG_PY_INCLUDES = @SWIG_PY_INCLUDES@
-I$(SWIG_SRC_DIR)/python/libsvn_swig_py
SWIG_PY_COMPILE = @SWIG_PY_COMPILE@
@@ -183,9 +185,10 @@ SWIG_LDFLAGS = @SWIG_LDFLAGS@ $(EXTRA_SWIG_LDFLAGS
COMPILE = $(CC) $(CMODEFLAGS) $(CPPFLAGS) $(CMAINTAINERFLAGS)
$(CFLAGS) $(INCLUDES)
COMPILE_CXX = $(CXX) $(CXXMODEFLAGS) $(CPPFLAGS) $(CXXMAINTAINERFLAGS)
$(CXXFLAGS) $(INCLUDES)
+COMPILE_GTEST_CXX = $(COMPILE_CXX) $(GTEST_INCLUDES) -o $@ -c
LT_COMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE) $(LT_CFLAGS)
LT_COMPILE_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=compile
$(COMPILE_CXX) $(LT_CFLAGS)
-
+LT_COMPILE_GTEST_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=compile
$(COMPILE_CXX) $(LT_FLAGS) $(GTEST_INCLUDES) -o $@ -c
# Execute a command that loads libraries from the build dir
LT_EXECUTE = $(LIBTOOL) $(LTFLAGS) --mode=execute `for f in
$(abs_builddir)/subversion/*/*.la; do echo -dlopen $$f; done`
@@ -209,6 +212,8 @@ LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(L
LINK_LIB = $(LINK) $(LT_SO_VERSION)
LINK_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX) $(LT_LDFLAGS)
$(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
LINK_CXX_LIB = $(LINK_CXX) $(LT_SO_VERSION)
+## LINK_GTEST_CXX = ar -rv libgtest.a src/gtest-all.lo
+LINK_GTEST_CXX = $(LIBTOOL) $(LTCXXFLAGS) --mode=link $(CXX)
$(LT_LDFLAGS) $(CXXFLAGS) $(LDFLAGS) -rpath $(libdir)
# special link rule for mod_dav_svn
LINK_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC)
$(LT_LDFLAGS) $(CFLAGS) $(LDFLAGS) -rpath $(APACHE_LIBEXECDIR)
-avoid-version -module $(APACHE_LDFLAGS)
Index: build.conf
===================================================================
--- build.conf (revision 1442814)
+++ build.conf (working copy)
@@ -652,8 +652,26 @@ install = tests
compile-cmd = $(COMPILE_CXXHL_CXX)
link-cmd = $(LINK_CXX)
+
#
----------------------------------------------------------------------------
#
+# Gtest targets
+#
+
+# renamed from gtest to libgtest because libtool couldn't output
+# a library that didn't have the prefix 'lib'
+[libgtest]
+description = Gtest Test Suite
+type = lib
+path = libgtest
+headers = include/gtest
+sources = src/gtest-all.cc
+install = libgtest-install
+compile-cmd = $(LT_COMPILE_GTEST_CXX)
+link-cmd = $(LINK_CXX)
+
+#
----------------------------------------------------------------------------
+#
# TESTING TARGETS
#
Appendix I :
A list of all build system files and a short description of each
-----------------------------------------------------------------
trunk/:
------
aclocal.m4 list of m4 files in build/ac-local/ that will be
read by autoconf
autogen.sh the main script of the build system
build.conf Data file used by gen-make.py to generate
build-outputs.mk
build-outputs.mk see build.conf
config.log log of the most recent comile to aid debugging
config.nice previous configure invocation
config.status generated by configure, re-run to recreate the current
configuration
configure configure script generated by calling autogen.sh
configure.ac Input data and code generation for the configure script.
gen-make.opts datafile used by gen-make.py
gen-make.py Python script that drives the generator system in
/build/generator
get-deps.sh downloads various packages and unzips them.
libtool Provide generalized library-building support services.
Makefile generated by configure
Makefile.in data and macros for compiler directives used to generate
Makefile
trunk/build/:
-------------
buildcheck.sh Check version numbers of autoconf, autoheader, libtool
and
integrity of APR m4 files
config.guess Script to guess what kind of computer is used
config.sub map variations of machine specifications
find_python.sh check for the correct pytho version
get-py-info.py get-py-info.py: get various Python info (for building)
getversion.py Parse version numbers from C header files
install-sh Used by configure to correctly place files and their
permissions
libtool.m4 Libtool's m4 macro file
ltmain.sh part of libtool
lt~obsolete.m4 part of libtool
ltoptions.m4 part of libtool
ltsugar.m4 part of libtool
ltversion.m4 part of libtool
PrintPath Look for program[s] somewhere in $PATH.
run_ctypesgen.sh Helper script to generate the ctypesgen wrappers
run_tests.py run tests on Subversion
transform_config_hw.py Generate svn_private_config.h from
svn_private_config.hw while editing SVN_BUILD_HOST
transform_libtool_scripts.sh generated by gen-make.py for use by
Makefile.in
transform_sql.py create a header file with the
appropriate SQL
variables from an SQL file
trunk/build/ac-macros/:
----------------------
M4 macro files for assorted packages that are compiled along with Subversion
apache.m4
apr.m4
apr_memcache.m4
Builaprutil.m4
berkeley-db.m4
compiler.m4
ctypesgen.m4
find_apr.m4
find_apu.m4
gssapi.m4
java.m4
kwallet.m4
macosx.m4
sasl.m4
serf.m4
sqlite.m4
svn-macros.m4
swig.m4
zlib.m4
trunk/build/generator/:
-----------------------
extractor.py extract function names from declarations in header files
ezt.py EZT 'easy' templating
gen_base.py infrastructure for generating makefiles,
dependencies, etc.
gen_make.py generate makefiles and dependencies
gen_msvc_dsp.py generate Microsoft Visual C++ 6 projects
gen_vcnet_vcproj.py generate Microsoft Visual C++.NET projects
gen_win.py base class for generating windows projects
__init__.py empty file
trunk/build/generator/swig:
checkout_swig_header.py checkout files from the SWIG library into
Subversion's proxy directory
external_runtime.py external_runtime.py: Generate external runtime
files
for SWIG
header_wrappers.py Generates SWIG proxy wrappers around Subversion
header
files
__init__.py generator.swig: Base class for SWIG-related
generators
trunk/build/generator/templates/:
--------------------------------
Files generated by python using the EZT template generator
build_locale.ezt
build_zlib.ezt
makefile.ezt
msvc_dsp.ezt
msvc_dsw.ezt
serf.dsp.ezt
serf.vcproj.ezt
serf.vcxproj.ezt
svn_config.dsp.ezt
svn_config.vcproj.ezt
svn_config.vcxproj.ezt
svn_locale.dsp.ezt
svn_locale.vcproj.ezt
svn_locale.vcxproj.ezt
vcnet_sln.ezt
vcnet_vc7_sln.ezt
vcnet_vcproj.ezt
vcnet_vcxproj.ezt
vcnet_vcxproj_filters.ezt
zlib.dsp.ezt
zlib.vcproj.ezt
zlib.vcxproj.ezt
trunk/build/generator/util/:
---------------------------
executable.py Utilities for dealing with external executables
__init__.py empty file
trunk/build/hudson/:
-------------------
The hudson build system:
jobs
README
trunk/build/hudson/jobs/:
------------------------
subversion-1.6.x-solaris
subversion-1.6.x-ubuntu
subversion-doxygen
subversion-javadoc
subversion-trunk-solaris
subversion-trunk-ubuntu
trunk/build/hudson/jobs/subversion-1.6.x-solaris/:
--------------------------------------------------
config.xml
trunk/build/hudson/jobs/subversion-1.6.x-ubuntu/:
-------------------------------------------------
config.xml
trunk/build/hudson/jobs/subversion-doxygen/:
--------------------------------------------
config.xml
trunk/build/hudson/jobs/subversion-javadoc/:
--------------------------------------------
config.xml
trunk/build/hudson/jobs/subversion-trunk-solaris/:
--------------------------------------------------
config.xml
trunk/build/hudson/jobs/subversion-trunk-ubuntu/:
--------------------------------------------------
config.xml
trunk/build/win32/:
-------------------
Files to assist with windows 32 issues:
empty.c
make_dist.conf.template
make_dist.py
make_gem.rb
svn.ico
svn.rc
vc6-build.bat.in
Appendix II:
A short walkthrough of some of the files that make it all happen
-----------------------------------------------------------------
autogen.sh
----------
calls build/buildcheck.sh which checks autoconf and autoheader
and copies libtool stuff
sets up libtool services
checks for python
calls gen-make.py build.conf
produces configure
gen-make.py
-------------
main(fname, gentype, verfname=None,
skip_depends=0, other_options=None):
computes the header dependencies (not sure what this means)
write the (above obtained?) sqlite headers
offer debug output if --debug is defined
useage_exit & class Options:
It also offers interactive useage service -- when is that used?
build.conf -- used by gen-make.py to generate build-outputs.mk
--------------------------------------------------------------
[options] section:
define includes
define private includes
test scripts
SWIG includes of perl, ruby
Build target definition list by target:
---------------------------------------
[svn] The subversion command-line client
[svnadmin] The subversion repository administration tool
[svndumpfilter] The subversion repository dump filtering tool
[svnlook] The subversion repository inspection tool
[svnserve] Subversion Server
[svnsync] Subversion repository replicator
[svnversion] Subversion Revision Extractor
[svnrdump] Subversion remote repository dumper and loader
[svnmucc] Subversion Multiple URL Command Client
[libsvn_auth_gnome_keyring] Subversion GNOME Keyring Library
[libsvn_auth_kwallet] Subversion KWallet Library
[libsvn_client] Subversion Client Library
[libsvn_delta] Subversion Delta Library
[libsvn_diff] Subversion Diff Library
[libsvn_fs] Subversion Repository Filesystem Library
[libsvn_fs_base]
[libsvn_fs_fs]
[libsvn_fs_util] Low-level grab bag of utilities
[libsvn_ra] Subversion Repository Access Library
[libsvn_ra_serf] Accessing repositories via DAV through serf
[libsvn_ra_svn] Accessing repositories via SVN
[libsvn_ra_local] Accessing repositories via direct libsvn_fs
[libsvn_repos] Subversion Repository Library
[libsvn_subr] Subversion General Utility Library
[libsvn_wc] Subversion Working Copy Library
[mod_dav_svn] Subversion plug-in for the Apache DAV module
[mod_authz_svn] Subversion path-based authorization module for
Apache
[mod_dontdothat] Apache Httpd module to block certain kinds of
Apache Subversion requests
Constructed Headers
-------------------
[rep_cache] Schema for the rep-sharing feature
[wc_queries] Queries on the WC database
[subr_sqlite] sql-header
Targets for i18n support
Targets for SWIG support
JavaHL targets
C++HL targets
Gtest targets
C testing framework
Testing Targets:
----------------
Tests for libsvn_fs_base
Tests for libsvn_fs_fs
Tests for libsvn_fs
Tests for libsvn_repos
Tests for libsvn_subr
Tests for libsvn_delta
Tests for libsvn_client
Tests for libsvn_diff
Tests for libsvn_ra
Tests for libsvn_ra_local
Tests for libsvn_wc
libsvn_delta API cmdline programs that should be rehomed
External targets (no build needed)
[__ALL_TESTS__]
[__LIBS__]
[__CONFIG__]
SWIG, JAVAH, PERL, RUBY, PYTHON [variables]
configure.ac
------------
set up AUTOCONF
look for programs(compiler etc)
Libraries, for which we may have source to build
(apr, gssapi and so on)
Libtool stuff
trang
doxygen
Check for trang.
Check for doxygen
Check for libraries
Expat
Berkeley DB
Mac OS specific features
APR_HAS_DSO
D-Bus (required for support for KWallet)
GPG Agent
GNOME Keyring
Ev2 experimental features
I18n
Some commented out code: AH_BOTTOM([
GETTEXT_CODESET:Used to simulate makefile conditionals
libmagic
KWallet
plaintext passwords
Build and install rules
Check for header files-- typedefs, structures, and compiler
characteristics, etc
Process some configuration options
AC_ARG_WITH(
ssl,openssl,debug...
AC_SUBST([libsvn_auth_gnome_keyring_LDFLAGS]) -- lots of LDFLAGS for
almost
everything
compose help & options for ./configure
Scripting and Bindings languages
Python: Used for testsuite, and bindings
The minimum version for the JVM runtime
Perl
Ruby
Swig
decide whether we want to link against the RA/FS libraries
JavaHL
Miscellaneous bits
(CPPFLAGS),
BSD Makefile stuff
Detection complete - output and run config.status
Ensure that SWIG is checked after reconfiguration.
Print final messages to user
Makefile.in
-----------
assign:
directory variables
SVN CCP directives
some _swig_* items, files and directories
javahl items
Gettext items
compilers, shell, libtool, inclues
apache includes
swig items
ctypes
apr
flags for make
CFLAGS
special compilation for files destined for libsvn_swig_* (e.g. swigutil_*.c)
special compilation for files destined for javahl (i.e. C++)
special compilation for files destined for cxxhl
special link rule for mod_dav_svn
Special LDFLAGS for some libraries
Compilation of SWIG-generated C source code
link the wrapper objects into an extension library/module
install swig
additional installation rules for the SWIG wrappers
assorted swig
Automate JAR creation using Makefile generator's javahl-java.jar
property. Enhance generator to support JAR installation.
Ruby variables
make targets
make check
targets for external projects
documentation rules
install targets
install bindings
clean targets
swig targets, make and clean
install tools
Received on 2013-02-18 13:11:09 CET