blob: 6fe1a77d9376c06d2e8b0d5d790cbbbe543f1177 [file] [log] [blame]
#
# Makefile.in: template Makefile for Subversion
#
# ====================================================================
# Copyright (c) 2000-2003 CollabNet. All rights reserved.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at http://subversion.tigris.org/license-1.html.
# If newer versions of this license are posted there, you may use a
# newer version instead, at your option.
#
# This software consists of voluntary contributions made by many
# individuals. For exact contribution history, see the revision
# history and logs, available at http://subversion.tigris.org/.
# ====================================================================
#
top_builddir = .
top_srcdir = @top_srcdir@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
VPATH = @top_srcdir@
SVN_RA_LIB_DEPS = @SVN_RA_LIB_DEPS@
SVN_RA_LIB_LINK = @SVN_RA_LIB_LINK@
DESIGN_DIR = doc/programmer/design
BOOK_TOP = doc/book
BOOK_DIR = ${BOOK_TOP}/book
MDOCS_DIR = ${BOOK_TOP}/misc-docs
DOC_DIRS = $(DESIGN_DIR) $(BOOK_DIR) $(MDOCS_DIR)
SWIG_SRC_DIR = $(abs_srcdir)/subversion/bindings/swig
SWIG_BUILD_DIR = $(abs_builddir)/subversion/bindings/swig
EXTERNAL_PROJECT_DIRS = @SVN_SUBDIRS@
NEON_LIBS = @NEON_LIBS@
SVN_APR_LIBS = @SVN_APR_LIBS@
SVN_APRUTIL_LIBS = @SVN_APRUTIL_LIBS@
SVN_DB_LIBS = @SVN_DB_LIBS@
LIBS = @LIBS@
prefix = @prefix@
exec_prefix = @exec_prefix@
libdir = @libdir@
base_libdir = @libdir@
dav_libdir = @libdir@
fs_libdir = @libdir@
bindir = @bindir@
fs_bindir = @bindir@
includedir = @includedir@
mandir = @mandir@
srcdir = @srcdir@
infodir = @infodir@
datadir = @datadir@
docdir = @docdir@
# where to install libsvn_swig_*
swig_py_libdir = @libdir@
swig_java_libdir = @libdir@
swig_pl_libdir = @libdir@
### these possibly need further discussion
swig_pydir = @libdir@/svn-python/libsvn
swig_pydir_extra = @libdir@/svn-python/svn
swig_javadir = @libdir@/svn-java
swig_pldir = @libdir@/svn-perl
### should search for these...
MAKEINFO = @MAKEINFO@
TEXI2DVI = texi2dvi
DVIPS = dvips
DVIPDF = dvipdf
CC = @CC@
EXEEXT = @EXEEXT@
SHELL = @SHELL@
LIBTOOL = @SVN_LIBTOOL@
LTFLAGS = --silent
LT_LDFLAGS = @LT_LDFLAGS@
INCLUDES = @SVN_EXTRA_INCLUDES@ @SVN_NEON_INCLUDES@ \
@SVN_DB_INCLUDES@ @SVN_APR_INCLUDES@ @SVN_APRUTIL_INCLUDES@
APACHE_INCLUDES = @APACHE_INCLUDES@
APACHE_TARGET = @APACHE_TARGET@
APACHE_LIBEXECDIR = $(DESTDIR)@APACHE_LIBEXECDIR@
SWIG = @SWIG@
SWIG_INCLUDES = -I$(SWIG_SRC_DIR) \
-I$(abs_srcdir)/subversion/include \
$(SVN_APR_INCLUDES)
SWIG_LDFLAGS = @SWIG_LDFLAGS@
SWIG_PY_INCLUDES = @SWIG_PY_INCLUDES@
SWIG_PY_COMPILE = @SWIG_PY_COMPILE@
SWIG_PY_LINK = @SWIG_PY_LINK@
SWIG_JAVA_INCLUDES = @SWIG_JAVA_INCLUDES@
SWIG_JAVA_COMPILE = $(CC) -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC
SWIG_JAVA_LINK = $(CC) -shared
SWIG_PL_INCLUDES = @SWIG_PL_INCLUDES@
SWIG_PL_COMPILE = @SWIG_PL_COMPILE@
SWIG_PL_LINK = @SWIG_PL_LINK@
SVN_APR_INCLUDES = @SVN_APR_INCLUDES@
SVN_APR_PREFIX = @SVN_APR_PREFIX@
MKDIR = @MKDIR@
# the EXTRA_ exist so that extra flags can be passed at 'make' time
CFLAGS = @CFLAGS@ $(EXTRA_CFLAGS)
CPPFLAGS = @CPPFLAGS@ $(EXTRA_CPPFLAGS)
LDFLAGS = @LDFLAGS@ $(EXTRA_LDFLAGS)
COMPILE = $(CC) $(CPPFLAGS) $(CFLAGS) $(INCLUDES)
LT_COMPILE = $(LIBTOOL) $(LTFLAGS) --mode=compile $(COMPILE)
# special compilation for files destined for mod_dav_svn
COMPILE_APACHE_MOD = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(APACHE_INCLUDES) $(INCLUDES) -o $@ -c
# special compilation for files destined for libsvn_swig_* (e.g. swigutil_*.c)
COMPILE_SWIG_PY = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) -DSWIGPYTHON $(CFLAGS) $(SWIG_PY_INCLUDES) $(INCLUDES) -o $@ -c
COMPILE_SWIG_JAVA = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(SWIG_JAVA_INCLUDES) $(INCLUDES) -o $@ -c
COMPILE_SWIG_PL = $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) $(CPPFLAGS) $(CFLAGS) $(SWIG_PL_INCLUDES) $(INCLUDES) -o $@ -c
LINK = $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) $(LT_LDFLAGS) $(CFLAGS) $(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
# these commands run SWIG to generate wrapper source files (*.c)
### should we protect against swig not being available?
RUN_SWIG_PY = $(SWIG) -c -python $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -o $@
RUN_SWIG_PL = $(SWIG) -c -perl $(SWIG_INCLUDES) $(SWIG_PL_INCLUDES) -o $@
RUN_SWIG_JAVA = cd ${SWIG_SRC_DIR}/java/org/tigris/subversion/swig && $(SWIG) -c -java -package 'org.tigris.subversion.swig' $(SWIG_INCLUDES) -o ${abs_builddir}/$@
# Compilation of SWIG-generated C source code
COMPILE_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PY_COMPILE) $(CPPFLAGS) $(SWIG_INCLUDES) $(SWIG_PY_INCLUDES) -prefer-pic -c -o $@
COMPILE_JAVA_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_JAVA_COMPILE) -DSWIGJAVA $(SWIG_INCLUDES) $(SWIG_JAVA_INCLUDES) -prefer-pic -c -o $@
COMPILE_PL_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=compile $(SWIG_PL_COMPILE) $(CPPFLAGS) $(SWIG_INCLUDES) $(SWIG_PL_INCLUDES) -prefer-pic -c -o $@
# these commands link the wrapper objects into an extension library/module
LINK_PY_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=link $(SWIG_PY_LINK) $(SWIG_LDFLAGS) -rpath $(swig_pydir) -avoid-version -module
LINK_JAVA_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=link $(SWIG_JAVA_LINK) $(SWIG_LDFLAGS) -rpath $(swig_javadir) -avoid-version -module
LINK_PL_WRAPPER = $(LIBTOOL) $(LTFLAGS) --mode=link $(SWIG_PL_LINK) $(SWIG_LDFLAGS) -rpath $(swig_pldir) -avoid-version -module
INSTALL = @INSTALL@
INSTALL_LIB = $(LIBTOOL) --mode=install $(INSTALL)
INSTALL_BASE_LIB = $(INSTALL_LIB)
INSTALL_FS_LIB = $(INSTALL_LIB)
INSTALL_DAV_LIB = $(INSTALL_LIB)
INSTALL_BIN = $(LIBTOOL) --mode=install $(INSTALL)
INSTALL_FS_BIN = $(INSTALL_BIN)
INSTALL_INCLUDE = $(INSTALL) -m 644
INSTALL_MOD_SHARED = @APXS@ -i -S LIBEXECDIR="$(APACHE_LIBEXECDIR)" @MOD_ACTIVATION@
INSTALL_MOD_STATIC = $(INSTALL) -m 644
INSTALL_DATA = $(INSTALL) -m 644
### this isn't correct yet
INSTALL_SWIG_PY = $(INSTALL_LIB)
INSTALL_SWIG_PY_LIB = $(INSTALL_LIB)
INSTALL_SWIG_JAVA = $(INSTALL_LIB)
INSTALL_SWIG_JAVA_LIB = $(INSTALL_LIB)
INSTALL_SWIG_PL = $(INSTALL_LIB)
INSTALL_SWIG_PL_LIB = $(INSTALL_LIB)
# additional installation rules for the SWIG wrappers
INSTALL_EXTRA_SWIG_PY=\
$(top_srcdir)/build/copy-swig-py.sh "$(PYTHON)" "$(INSTALL_DATA)" "${SWIG_SRC_DIR}/python" "$(DESTDIR)$(swig_pydir)" ; \
$(top_srcdir)/build/copy-swig-py.sh "$(PYTHON)" "$(INSTALL_DATA)" "${SWIG_SRC_DIR}/python/svn" "$(DESTDIR)$(swig_pydir_extra)"; \
if test $(abs_srcdir) != $(abs_builddir); then \
$(top_srcdir)/build/copy-swig-py.sh "$(PYTHON)" "$(INSTALL_DATA)" "${SWIG_BUILD_DIR}/python" "$(DESTDIR)$(swig_pydir)" ; \
fi
INSTALL_EXTRA_SWIG_JAVA=:
APXS = @APXS@
PYTHON = @PYTHON@
JDK = @JDK@
JAVAC = @JAVAC@
JAR = @JAR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
TESTS = $(TEST_PROGRAMS) @FS_TEST_PROGRAMS@
all: external-all local-all
clean: external-clean local-clean
distclean: external-distclean local-distclean
extraclean: external-extraclean local-extraclean
install: external-install local-install revision-install
@INCLUDE_OUTPUTS@
local-all: @BUILD_RULES@ @SWIG_BUILD_RULES@
# clean everything but the bulky test output, returning the system back
# to before 'make' was run.
fast-clean: doc-clean
@list='$(BUILD_DIRS)'; for i in $$list; do \
echo "Cleaning $$i ..." ; \
(cd $$i && rm -f *.o *.lo *.la *.la-a && rm -rf .libs) ; \
done
rm -f $(CLEAN_FILES)
# clean all but bulky test output, returning to before './configure' was run.
fast-distclean: fast-clean
rm -f Makefile config.cache config.log config.status libtool \
svn_private_config.h svn-config
# clean everything out, returning to before './autogen.sh' was run.
local-extraclean: local-distclean
rm -f build-outputs.mk svn_private_config.h.in configure \
ac-helpers/config.guess ac-helpers/config.sub \
ac-helpers/libtool.m4 ac-helpers/ltconfig \
ac-helpers/ltmain.sh
# clean everything, including test output.
local-clean: fast-clean check-clean
# clean everything, including test output.
local-distclean: fast-distclean check-clean
local-install: @INSTALL_RULES@ @SWIG_INSTALL_RULES@
### HACK!! Find a better way to do this
revision-install:
subversion/svnversion/svnversion $(top_srcdir) /repos/svn/trunk > $(DESTDIR)$(includedir)/subversion-1/svn-revision.txt
install-static: @INSTALL_STATIC_RULES@
# "make check CLEANUP=true" will clean up directories for successful tests.
# "make check TESTS=subversion/tests/clients/cmdline/basic_tests.py"
# will perform only basic tests (likewise for other tests).
check: $(TEST_DEPS) @FS_TEST_DEPS@
@$(PYTHON) $(top_srcdir)/build/pycheck.py; \
flags="--verbose"; \
if test "$(CLEANUP)" != ""; then \
flags="--cleanup $$flags"; \
fi; \
if test "$(BASE_URL)" != ""; then \
flags="--url $(BASE_URL) $$flags"; \
fi; \
$(PYTHON) $(top_srcdir)/build/run_tests.py $$flags \
'$(abs_srcdir)' '$(abs_builddir)' '$(PYTHON)' '$(SHELL)' \
$(TESTS)
# First, set up Apache as documented in
# subversion/tests/clients/cmdline/README.
davcheck:
@$(MAKE) check BASE_URL=http://localhost
# Automatically configure and run Apache httpd on a random port, and then
# run make check.
davautocheck:
@sh $(top_srcdir)/subversion/tests/clients/cmdline/davautocheck.sh
# First, run:
# subversion/svnserve/svnserve -d -r `pwd`/subversion/tests/clients/cmdline
svncheck:
@$(MAKE) check BASE_URL=svn://localhost
# First make sure you can ssh to localhost and that "svnserve" is in
# the path of the resulting shell.
svnsshcheck:
@$(MAKE) check \
BASE_URL=svn+ssh://localhost`pwd`/subversion/tests/clients/cmdline
check-clean:
rm -rf subversion/tests/clients/cmdline/repositories \
subversion/tests/clients/cmdline/working_copies \
subversion/tests/clients/cmdline/local_tmp \
subversion/tests/libsvn_fs/test-repo-* \
subversion/tests/libsvn_repos/test-repo-* \
subversion/tests/libsvn_subr/z \
tests.log
mkdir-init:
@list='$(BUILD_DIRS) $(DOC_DIRS)'; \
for i in $$list doc; do \
echo "mkdir $$i" ; \
$(MKDIR) $$i ; \
done
# recursive targets to handle external projects (e.g. APR, Neon)
external-all external-install:
@target=`echo $@ | sed s/external-//`; \
list='$(EXTERNAL_PROJECT_DIRS)'; \
for i in $$list; do \
echo "------ making $$target in $$i"; \
(cd $$i && $(MAKE) $$target) || exit 1; \
echo "------ completed $$target in $$i"; \
done;
### apr-util relies on generated files in apr, so reverse the
### list so that it is cleaned before apr.
external-clean external-distclean:
@target=`echo $@ | sed s/external-//`; \
list='$(EXTERNAL_PROJECT_DIRS)'; \
for i in $$list; do \
revlist="$$i $$revlist"; \
done; \
for i in $$revlist; do \
echo "------ making $$target in $$i"; \
(cd $$i && $(MAKE) $$target) || exit 1; \
echo "------ completed $$target in $$i"; \
done;
### temporary hack. Neon does not have an "extraclean" and neither does db
### If we don't have extraclean -- do the next best thing.
external-extraclean:
@list='$(EXTERNAL_PROJECT_DIRS)'; \
for i in $$list; do \
revlist="$$i $$revlist"; \
done; \
for i in $$revlist; do \
if test "$$i" = "neon" || test "$$i" = "db/dist"; then \
echo "------ making distclean(no extraclean) in $$i"; \
(cd $$i && $(MAKE) distclean) || exit 1; \
echo "------ completed distclean(no extraclean) in $$i"; \
else \
echo "------ making extraclean in $$i"; \
(cd $$i && $(MAKE) extraclean) || exit 1; \
echo "------ completed extraclean in $$i"; \
fi; \
done;
# DOCUMENTATION RULES
# Every single document in every format.
doc: doc-design doc-book doc-misc-docs
# Build all types of a certain doc.
doc-book: doc-book-html doc-book-pdf doc-book-ps
doc-misc-docs: doc-misc-docs-html doc-misc-docs-pdf doc-misc-docs-ps
doc-design: doc-design-info doc-design-html doc-design-txt
# Build all docs of a certain type.
doc-all-html: doc-design-html doc-book-html doc-misc-docs-html
doc-all-pdf: doc-design-pdf doc-book-pdf dock-misc-docs-pdf
doc-all-ps: doc-design-ps doc-book-ps dock-misc-docs-ps
doc-all-info: doc-design-info
# Different outputs for the 'design' document, written in texinfo.
# Assumes you have {makeinfo, texi2dvi, dvips, dvipdf} installed.
doc-design-info: doc/programmer/design/svn-design.info
doc-design-html: doc/programmer/design/svn-design.html
doc-design-txt: doc/programmer/design/svn-design.txt
doc-design-dvi: doc/programmer/design/svn-design.dvi
doc-design-ps: doc/programmer/design/svn-design.ps
doc-design-pdf: doc/programmer/design/svn-design.pdf
# Different outputs for the main Subversion 'book', written in docbook.
# Assumes you have {xsltproc, fop, stylesheets} installed.
doc-book-html:
cd ${BOOK_TOP} && $(MAKE) book-html
doc-book-pdf:
cd ${BOOK_TOP} && $(MAKE) book-pdf
doc-book-ps:
cd ${BOOK_TOP} && $(MAKE) book-ps
# Different outputs for the misc docs.
# Assumes you have {xsltproc, fop, stylesheets} installed.
doc-misc-docs-html:
cd ${BOOK_TOP} && $(MAKE) misc-docs-html
doc-misc-docs-pdf:
cd ${BOOK_TOP} && $(MAKE) misc-docs-pdf
doc-misc-docs-ps:
cd ${BOOK_TOP} && $(MAKE) misc-docs-ps
doc-clean:
for d in $(DOC_DIRS); \
do \
(cd $$d; \
rm -f *.info *.info-[1-9] \
*.aux *.cp *.fn *.ky *.log *.pg *.toc \
*.tp *.vr \
*.dvi *.txt *.html *.ps *.pdf *.fo); \
done
### Migrate Java build targets to build-outputs.mk when needed to
### build other pure Java code.
JAVA_API_DIR = $(abs_srcdir)/subversion/bindings/java
JAVA_API_SOURCES = org/tigris/subversion/*.java \
org/tigris/subversion/auth/*.java \
org/tigris/subversion/client/*.java \
org/tigris/subversion/opt/*.java \
org/tigris/subversion/wc/*.java
java-api:
@if [ ! -d $(JAVA_API_DIR)/build ]; then mkdir $(JAVA_API_DIR)/build; fi
cd $(JAVA_API_DIR) && \
$(JAVAC) -g -d $(JAVA_API_DIR)/build $(JAVA_API_SOURCES)
$(JAR) cf $(JAVA_API_DIR)/build/svn-api.jar -C $(JAVA_API_DIR)/build org
java-api-clean:
@rm -rf $(JAVA_API_DIR)/build
SWIG_JAVA_DIR = $(abs_srcdir)/subversion/bindings/swig/java
SWIG_JAVA_SOURCES = org/tigris/subversion/client/*.java \
org/tigris/subversion/swig/*.java \
org/tigris/subversion/util/*.java
swig-java-jar:
@if [ ! -d $(SWIG_JAVA_DIR)/build ]; then \
mkdir $(SWIG_JAVA_DIR)/build; \
fi
cd $(SWIG_JAVA_DIR) && \
$(JAVAC) -classpath $(JAVA_API_DIR)/build/svn-api.jar -g \
-d $(SWIG_JAVA_DIR)/build $(SWIG_JAVA_SOURCES)
$(JAR) cf $(SWIG_JAVA_DIR)/build/svn-swig.jar \
-C $(SWIG_JAVA_DIR)/build/org .
#
# Implicit rules for creating outputs from input files
#
.SUFFIXES:
.SUFFIXES: .c .lo .o .la-a .la .texi .info .dvi .txt .html .ps .pdf
.c.o:
$(COMPILE) -o $@ -c $<
.c.lo:
$(LT_COMPILE) -o $@ -c $<
.la.la-a:
sed "/library_names/s/'.*'/''/" $< > $@
.texi.info:
$(MAKEINFO) -I `dirname $<` -o $@ $<
.texi.dvi:
wd=`pwd` ; cd `dirname $@` ; $(TEXI2DVI) $$wd/$<
.texi.txt:
$(MAKEINFO) -I `dirname $<` --no-headers -o $@ $<
.texi.html:
$(MAKEINFO) -I `dirname $<` --no-split --html -o $@ $<
.dvi.ps:
$(DVIPS) $< -o $@
.dvi.pdf:
$(DVIPDF) $< $@
install-docs: install-man @INSTALL_INFO@
manroot = $(mandir)/man
install-man:
@list='$(MANPAGES)'; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
ext=`echo $$i | sed -e 's/^.*\\.//'`; \
$(MKDIR) $(DESTDIR)$(manroot)$$ext; \
inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
inst=`echo $$inst | sed -e 's/^.*\///'`; \
inst=`echo $$inst`.$$ext; \
echo "$(INSTALL_DATA) $$file $(DESTDIR)$(manroot)$$ext/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(manroot)$$ext/$$inst; \
done
install-info: doc-all-info
$(MKDIR) $(DESTDIR)$(infodir)
@list='$(INFOPAGES)'; \
for i in $$list; do \
if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
else file=$$i; fi; \
inst=`echo $$file | sed -e 's/^.*\///'`; \
echo "$(INSTALL_DATA) $$file $(DESTDIR)$(infodir)/$$inst"; \
$(INSTALL_DATA) $$file $(DESTDIR)$(infodir)/$$inst; \
done