You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2011/02/04 02:14:20 UTC

svn commit: r1067056 - in /subversion/trunk/tools/dev/windows-build: ./ Makefile README document-version.pl

Author: danielsh
Date: Fri Feb  4 01:14:19 2011
New Revision: 1067056

URL: http://svn.apache.org/viewvc?rev=1067056&view=rev
Log:
* tools/add/windows-build/:
    Add the Makefile that jcorvel and I have been using.  See README
    for TODO items.

Added:
    subversion/trunk/tools/dev/windows-build/
    subversion/trunk/tools/dev/windows-build/Makefile
    subversion/trunk/tools/dev/windows-build/README
    subversion/trunk/tools/dev/windows-build/document-version.pl

Added: subversion/trunk/tools/dev/windows-build/Makefile
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dev/windows-build/Makefile?rev=1067056&view=auto
==============================================================================
--- subversion/trunk/tools/dev/windows-build/Makefile (added)
+++ subversion/trunk/tools/dev/windows-build/Makefile Fri Feb  4 01:14:19 2011
@@ -0,0 +1,139 @@
+CONFIG=debug
+#CONFIG=release
+# will be appended to 'svn --version --quiet' output; set to zero to suppress
+BUILDDESCR=0
+
+MSBUILD=msbuild subversion_vcnet.sln /nologo /v:q /p:Configuration=$(CONFIG)
+CP=cp
+TEEPATH=C:\Path\To\Parent\Of\tee\dot\exe\and\other\utils\as\needed\see\below.80
+
+SOURCESDIR=C:\Path\To\Dependency\Sources
+SVNDIR=C:\Path\To\Subversion\SourceTree
+TARGETDIR=$(SVNDIR)\dist
+INSTALLDIR=E:\svn
+
+EXPATVER=2.0.0
+HTTPDVER=2.2.13
+NEONVER=0.28.2
+OPENSSLVER=0.9.8k
+SQLITEVER=3.6.3
+ZLIBVER=1.2.3
+#ENABLE_ML=--enable-ml
+
+PATCHESDIR=$(HOME)\mydiffs\svn
+OPENSSLDIR=$(SOURCESDIR)\openssl-$(OPENSSLVER)
+EXPATDIR=$(SOURCESDIR)\expat-$(EXPATVER)
+NEONDIR=$(SOURCESDIR)\neon-$(NEONVER)
+HTTPDDIR=$(SOURCESDIR)\httpd-$(HTTPDVER)
+#APRDIR=$(SOURCESDIR)\apr
+#APRUTILDIR=$(SOURCESDIR)\apr-util
+#APRICONVDIR=$(SOURCESDIR)\apr-iconv
+APRDIR=$(HTTPDDIR)\srclib\apr
+APRUTILDIR=$(HTTPDDIR)\srclib\apr-util
+APRICONVDIR=$(HTTPDDIR)\srclib\apr-iconv
+SQLITEDIR=$(SOURCESDIR)\sqlite-amalgamation
+ZLIBDIR=$(SOURCESDIR)\zlib-$(ZLIBVER)
+SERFDIR=$(SOURCESDIR)\serf
+
+all:
+	@echo Available targets: newfiles versionstamp
+	@echo Available targets: config
+	@echo Available targets: progname testname
+	@echo Available targets: all1 all2
+	@echo Available targets: buildlog package
+	@echo Available targets: check checklog
+TARGETDIRset: SVNDIRset
+	if X$(TARGETDIR) == X exit 1
+SVNDIRset:
+	if X$(SVNDIR) == X exit 1
+
+removealllocalmods:
+	svn revert -R .
+	svn status --no-ignore | xargs rm -rf --
+	svn status --no-ignore
+	# last, in case of wc format bump
+	rmdir /s /q dist local Release Debug
+
+newfiles: SVNDIRset
+	xcopy /s /y $(PATCHESDIR)\newfiles $(SVNDIR)
+versionstamp:
+	perl tools\dev\windows-build\document-version.pl subversion\include\svn_version.h $(TARGETDIR) $(SVNDIR) $(BUILDDESCR)
+	svn diff subversion\include\svn_version.h
+
+cleanup1: TARGETDIR
+	del log.all-tests log.gen-make.py log.devenv log.win-tests
+	rmdir /s /q $(TARGETDIR)\bin
+
+clean:
+	@echo "Sorry, '$@' target not yet implemented" >&2
+# TODO also copy sqlite3.dll if it's used
+install: TARGETDIRset
+	test ! -d $(INSTALLDIR)
+	mkdir $(INSTALLDIR)\bin
+	pushd $(TARGETDIR)\bin                      &&\
+	$(CP) *.exe        $(INSTALLDIR)/bin        &&\
+	$(CP) libapr*.dll  $(INSTALLDIR)/bin        &&\
+	$(CP) libeay32.dll $(INSTALLDIR)/bin        &&\
+	$(CP) ssleay32.dll $(INSTALLDIR)/bin        &&\
+	$(CP) libsvn*.dll  $(INSTALLDIR)/bin        &&\
+	$(CP) ..\*.diff    $(INSTALLDIR)            &&\
+	popd
+
+targetdir: TARGETDIRset
+	test -d $(TARGETDIR)\bin || mkdir $(TARGETDIR)\bin
+
+# TODO: pass --with-apr-* if you don't have httpd; make --with-* args optional
+config: targetdir
+	python gen-make.py --$(CONFIG) --with-httpd=$(HTTPDDIR) --with-neon=$(NEONDIR) --with-serf=$(SERFDIR) --with-openssl=$(OPENSSLDIR) --with-sqlite=$(SQLITEDIR) --with-zlib=$(ZLIBDIR) $(ENABLE_ML) --vsnet-version=2008 -t vcproj 2>&1 | tee log.gen-make
+
+# Visual Studio 2008
+libsvn_auth_gnome_keyring libsvn_auth_kwallet libsvn_client libsvn_delta libsvn_diff libsvn_fs libsvn_fs_base libsvn_fs_fs libsvn_fs_util libsvn_ra libsvn_ra_local libsvn_ra_neon libsvn_ra_serf libsvn_ra_svn libsvn_repos libsvn_subr libsvn_wc: targetdir
+	$(MSBUILD) /t:Libraries\$@
+	$(MAKE) package
+svn svnadmin svndumpfilter svnlook svnmucc svnserve svnsync svnversion entries-dump: targetdir
+	$(MSBUILD) /t:Programs\$@
+	$(MAKE) package
+auth-test cache-test changes-test checksum-test client-test compat-test config-test db-test diff-diff3-test dir-delta-editor dirent_uri-test error-test fs-base-test fs-pack-test fs-test hashdump-test key-test locks-test mergeinfo-test opt-test path-test ra-local-test random-test repos-test revision-test skel-test stream-test string-test strings-reps-test svn_test_fs svn_test_main svndiff-test target-test time-test translate-test tree-conflict-data-test utf-test vdelta-test window-test: targetdir
+	$(MSBUILD) /t:Tests\$@
+	$(MAKE) package
+
+__ALL__ __ALL_TESTS__: targetdir
+	$(MSBUILD) /t:$@
+	$(MAKE) package
+all1: targetdir
+	$(MSBUILD) /t:__ALL__
+	$(MAKE) package
+	@echo TODO entries-test
+all2: targetdir
+	$(MSBUILD) /t:__ALL_TESTS__
+	$(MAKE) package
+
+package:
+	test -d $(SVNDIR)\$(CONFIG)\Subversion\tests\cmdline || mkdir $(SVNDIR)\$(CONFIG)\Subversion\tests\cmdline
+	test -d $(TARGETDIR)\bin || mkdir $(TARGETDIR)\bin
+	for %%i in (svn svnadmin svndumpfilter svnlook svnserve svnsync svnversion) do @$(CP) $(CONFIG)\subversion\%%i\%%i.exe $(TARGETDIR)\bin
+	for %%i in (diff diff3 diff4) do @if exist $(CONFIG)\tools\diff\%%i.exe $(CP) $(CONFIG)\tools\diff\%%i.exe $(TARGETDIR)\bin
+	$(CP) $(APRDIR)\$(CONFIG)/*.dll $(TARGETDIR)\bin
+	$(CP) $(APRUTILDIR)\$(CONFIG)/*.dll $(TARGETDIR)\bin
+	$(CP) $(APRICONVDIR)\$(CONFIG)/*.dll $(TARGETDIR)\bin
+	$(CP) $(OPENSSLDIR)\out32dll/*.dll $(TARGETDIR)\bin
+	for %%i in (client delta diff fs ra repos subr wc) do @$(CP) $(CONFIG)\subversion\libsvn_%%i\*.dll $(TARGETDIR)\bin
+
+buildlog:
+	gvim -c "set autoread nowrap" -c "/\(\<0 \)\@<!error" log.devenv
+# 'make check'
+# TODO: also support svncheck, etc
+check:
+	echo %date% %time% :: Starting fsfs file >> log.all-tests
+	python win-tests.py --verbose --cleanup --bin=$(TARGETDIR)\bin --$(CONFIG) -f fsfs 2>&1 | %TEEPATH%\tee log.win-tests
+	echo %date% %time% :: Finished fsfs file >> log.all-tests
+
+
+# check errors
+checklog:
+	gvim -c "set autoread" -p log.win-tests *\*.log "+silent! /X\@<!FAIL\|XPASS"
+
+tags: .
+	REM vim +Ctags +quit
+	ctags -R .
+	$(CP) tags ..\svntags

Added: subversion/trunk/tools/dev/windows-build/README
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dev/windows-build/README?rev=1067056&view=auto
==============================================================================
--- subversion/trunk/tools/dev/windows-build/README (added)
+++ subversion/trunk/tools/dev/windows-build/README Fri Feb  4 01:14:19 2011
@@ -0,0 +1,13 @@
+Makefiles for automating the Windows build.
+
+* TODO:
+  - document: how to use
+  - known bugs/shortcomings
+  - separate the configurable parts to a Makefile.local.tmpl file
+  - allow serf,httpd,neon,etc to be optional
+  - auto-generate the list of individual targets from build.conf
+    (that list is not used by the default make targets)
+  - add 'make tools' to the default windows build
+
+See: http://svn.haxx.se/users/archive-2009-07/0764.shtml
+(Message-Id: <al...@daniel2.local>)

Added: subversion/trunk/tools/dev/windows-build/document-version.pl
URL: http://svn.apache.org/viewvc/subversion/trunk/tools/dev/windows-build/document-version.pl?rev=1067056&view=auto
==============================================================================
--- subversion/trunk/tools/dev/windows-build/document-version.pl (added)
+++ subversion/trunk/tools/dev/windows-build/document-version.pl Fri Feb  4 01:14:19 2011
@@ -0,0 +1,30 @@
+#!/usr/local/bin/perl -w
+use strict;
+
+use Tie::File;
+#use Cwd 'getcwd';
+
+die "Bad args '@ARGV'" unless (@ARGV >= 3  && @ARGV <= 4);
+
+my ($filename, $TARGETDIR, $SVNDIR, $BUILDDESCR) = (@ARGV, "");
+
+my (@file, $version, $lines);
+
+tie (@file, 'Tie::File', $filename)
+	or die $!;
+
+$version  =  `svnversion -n` or die;
+$version  =~ tr/M//d;
+$version .=  '-' . $BUILDDESCR if $BUILDDESCR;
+
+/^#define SVN_VER_TAG/ and s/(?<=dev build).*(?=\)"$)/-r$version/
+	for @file;
+/^#define SVN_VER_NUMTAG/ and s/(?<=-dev).*(?="$)/-r$version/
+	for @file;
+
+mkdir $TARGETDIR unless -d $TARGETDIR;
+
+chdir $SVNDIR;
+system "svn diff -x-p > $TARGETDIR\\$version.diff"
+	and die $!;
+