[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

[RFC] Build System Documentation

From: Gabriela Gibson <gabriela.gibson_at_gmail.com>
Date: Mon, 18 Feb 2013 12:10:50 +0000

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

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.