diff options
Diffstat (limited to 'tools/dev/unix-build/Makefile.svn')
-rw-r--r-- | tools/dev/unix-build/Makefile.svn | 188 |
1 files changed, 156 insertions, 32 deletions
diff --git a/tools/dev/unix-build/Makefile.svn b/tools/dev/unix-build/Makefile.svn index 2c0561c..91aa899 100644 --- a/tools/dev/unix-build/Makefile.svn +++ b/tools/dev/unix-build/Makefile.svn @@ -45,6 +45,7 @@ EXCLUSIVE_WC_LOCKS ?= 1 USE_HTTPV1 ?= no USE_AUTHZ_SHORT_CIRCUIT ?= no RAMDISK ?= /ramdisk +MAKE_JOBS ?= 4 PWD = $(shell pwd) UNAME = $(shell uname) @@ -71,6 +72,12 @@ endif # 2.2 endif # 2.3 endif # 2.4 +ifeq ($(UNAME),OpenBSD) +# Pick the correct base compiler (ie. clang rather than ancient gcc 4.2.1) +CC = cc +CXX = c++ +endif + TAG ?= none ifeq ($(TAG),none) BRANCH ?= trunk @@ -170,18 +177,19 @@ FETCH_CMD = wget -c SUBVERSION_REPOS_URL = https://svn.apache.org/repos/asf/subversion BDB_URL = http://download.oracle.com/berkeley-db/$(BDB_DIST) APR_URL = https://svn.apache.org/repos/asf/apr/apr -APR_ICONV_URL = https://www.apache.org/dist/apr/$(APR_ICONV_DIST) +APR_ICONV_URL = https://archive.apache.org/dist/apr/$(APR_ICONV_DIST) GNU_ICONV_URL = https://ftp.gnu.org/pub/gnu/libiconv/$(GNU_ICONV_DIST) APR_UTIL_URL = https://svn.apache.org/repos/asf/apr/apr-util HTTPD_URL = https://archive.apache.org/dist/httpd/$(HTTPD_DIST) -NEON_URL = http://webdav.org/neon/$(NEON_DIST) +#NEON_URL = http://webdav.org/neon/$(NEON_DIST) +NEON_URL = http://ftp.openbsd.org/pub/OpenBSD/distfiles/$(NEON_DIST) SERF_URL = https://svn.apache.org/repos/asf/serf/tags/$(SERF_VER) SERF_OLD_URL = https://svn.apache.org/repos/asf/serf/tags/$(SERF_OLD_VER) SQLITE_URL = https://www.sqlite.org/2017/$(SQLITE_DIST) CYRUS_SASL_URL = ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$(CYRUS_SASL_DIST) LIBMAGIC_URL = ftp://ftp.astron.com/pub/file/$(LIBMAGIC_DIST) RUBY_URL = https://cache.ruby-lang.org/pub/ruby/2.4/$(RUBY_DIST) -BZ2_URL = http://bzip.org/$(BZ2_VER)/$(BZ2_DIST) +BZ2_URL = https://ftp.openbsd.org/pub/OpenBSD/distfiles/$(BZ2_DIST) PYTHON_URL = https://python.org/ftp/python/$(PYTHON_VER)/$(PYTHON_DIST) JUNIT_URL = https://downloads.sourceforge.net/project/junit/junit/$(JUNIT_VER)/$(JUNIT_DIST) GETTEXT_URL = https://ftp.gnu.org/pub/gnu/gettext/$(GETTEXT_DIST) @@ -238,6 +246,10 @@ endif # We need this to make sure some targets below pick up the right libraries LD_LIBRARY_PATH=$(PREFIX)/apr/lib:$(PREFIX)/gettext/lib:$(PREFIX)/iconv/lib:$(PREFIX)/bdb/lib:$(PREFIX)/neon/lib:$(PREFIX)/serf/lib:$(PREFIX)/sqlite/lib:$(PREFIX)/cyrus-sasl/lib:$(PREFIX)/iconv/lib:$(PREFIX)/libmagic/lib:$(PREFIX)/ruby/lib:$(PREFIX)/python/lib:$(PREFIX)/svn-$(WC)/lib +# We need this to make sure some targets below pick up the right pkg-config files +PKG_CONFIG_PATH=$(PREFIX)/apr/lib/pkgconfig:$(PREFIX)/neon/lib/pkgconfig:$(PREFIX)/serf/lib/pkgconfig:$(PREFIX)/sqlite/lib/pkgconfig:$(PREFIX)/ruby/lib/pkgconfig:$(PREFIX)/python/lib/pkgconfig:$(PREFIX)/lz4/lib/pkgconfig + + ####################################################################### # Main targets. ####################################################################### @@ -331,6 +343,7 @@ $(BDB_OBJDIR)/.retrieved: $(DISTDIR)/$(BDB_DIST) $(BDB_OBJDIR)/.configured: $(BDB_OBJDIR)/.retrieved cd $(BDB_SRCDIR)/build_unix \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + CC=$(CC) CXX=$(CXX) \ ../dist/configure \ --prefix=$(PREFIX)/bdb \ --enable-debug @@ -338,7 +351,7 @@ $(BDB_OBJDIR)/.configured: $(BDB_OBJDIR)/.retrieved # compile bdb $(BDB_OBJDIR)/.compiled: $(BDB_OBJDIR)/.configured - (cd $(BDB_SRCDIR)/build_unix && env MAKEFLAGS= make) + (cd $(BDB_SRCDIR)/build_unix && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install bdb @@ -388,6 +401,8 @@ $(APR_OBJDIR)/.configured: $(APR_OBJDIR)/.retrieved $(BDB_OBJDIR)/.installed cd $(APR_SRCDIR) && ./buildconf cd $(APR_OBJDIR) \ && env CFLAGS="-O0 -g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ + CC=$(CC) CXX=$(CXX) \ $(APR_SRCDIR)/configure \ --prefix=$(PREFIX)/apr \ --enable-maintainer-mode \ @@ -397,7 +412,7 @@ $(APR_OBJDIR)/.configured: $(APR_OBJDIR)/.retrieved $(BDB_OBJDIR)/.installed # compile apr $(APR_OBJDIR)/.compiled: $(APR_OBJDIR)/.configured - (cd $(APR_OBJDIR) && env MAKEFLAGS= make) + (cd $(APR_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install apr @@ -436,7 +451,9 @@ $(APR_ICONV_OBJDIR)/.configured: $(APR_ICONV_OBJDIR)/.retrieved \ $(APR_OBJDIR)/.installed cd $(APR_ICONV_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(APR_ICONV_SRCDIR)/configure \ --prefix=$(PREFIX)/apr \ --with-apr=$(PREFIX)/apr @@ -445,7 +462,7 @@ $(APR_ICONV_OBJDIR)/.configured: $(APR_ICONV_OBJDIR)/.retrieved \ # compile apr-iconv $(APR_ICONV_OBJDIR)/.compiled: $(APR_ICONV_OBJDIR)/.configured (cd $(APR_ICONV_OBJDIR) \ - && env MAKEFLAGS= make CPPFLAGS="-D_OSD_POSIX" CFLAGS="-g -O0 $(PROFILE_CFLAGS)") + && env MAKEFLAGS= make CPPFLAGS="-D_OSD_POSIX" CFLAGS="-g -O0 $(PROFILE_CFLAGS)" -j${MAKE_JOBS}) touch $@ # install apr-iconv @@ -520,6 +537,7 @@ $(GNU_ICONV_OBJDIR)/.configured: $(GNU_ICONV_OBJDIR)/.retrieved ${MAKE} -f Makefile.devel lib/aliases.h cd $(GNU_ICONV_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(GNU_ICONV_SRCDIR)/configure \ --prefix=$(PREFIX)/iconv \ --enable-extra-encodings @@ -527,7 +545,7 @@ $(GNU_ICONV_OBJDIR)/.configured: $(GNU_ICONV_OBJDIR)/.retrieved # compile gnu-iconv $(GNU_ICONV_OBJDIR)/.compiled: $(GNU_ICONV_OBJDIR)/.configured - (cd $(GNU_ICONV_OBJDIR) && env MAKEFLAGS= make) + (cd $(GNU_ICONV_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install gnu-iconv @@ -590,7 +608,9 @@ $(APR_UTIL_OBJDIR)/.configured: $(APR_UTIL_OBJDIR)/.retrieved \ cd $(APR_UTIL_SRCDIR) && ./buildconf --with-apr=$(APR_SRCDIR) cd $(APR_UTIL_OBJDIR) \ && env LD_LIBRARY_PATH=$(PREFIX)/bdb/lib \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ $(APR_UTIL_SRCDIR)/configure \ --prefix=$(PREFIX)/apr \ @@ -602,7 +622,7 @@ $(APR_UTIL_OBJDIR)/.configured: $(APR_UTIL_OBJDIR)/.retrieved \ # compile apr-util $(APR_UTIL_OBJDIR)/.compiled: $(APR_UTIL_OBJDIR)/.configured - (cd $(APR_UTIL_OBJDIR) && env MAKEFLAGS= make) + (cd $(APR_UTIL_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install apr-util @@ -681,6 +701,13 @@ $(HTTPD_OBJDIR)/acinclude.diff: echo >>$@.tmp ' AC_CHECK_FUNCS(SSL_set_state)' mv -f $@.tmp $@ +# fix build without APR_HAS_THREADS (broken by r1750836) +ifneq ($(THREADING),yes) +HTTPD_REVERT_1750836_CMD = (cd $(HTTPD_SRCDIR)/modules/proxy && svn diff -c-1750836 https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x/modules/proxy/proxy_util.c | patch) +else +HTTPD_REVERT_1750836_CMD = true +endif + # retrieve httpd $(HTTPD_OBJDIR)/.retrieved: $(DISTDIR)/$(HTTPD_DIST) \ $(HTTPD_OBJDIR)/chil-engine.diff $(HTTPD_OBJDIR)/ssl-set-state.diff \ @@ -709,6 +736,7 @@ $(HTTPD_OBJDIR)/.retrieved: $(DISTDIR)/$(HTTPD_DIST) \ < $(HTTPD_SRCDIR)/modules/ssl/${f}.orig \ > $(HTTPD_SRCDIR)/modules/ssl/${f};\ ) + $(HTTPD_REVERT_1750836_CMD) touch $@ # configure httpd @@ -717,7 +745,9 @@ $(HTTPD_OBJDIR)/.configured: $(HTTPD_OBJDIR)/.retrieved \ cd $(HTTPD_SRCDIR) && ./buildconf cd $(HTTPD_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(HTTPD_SRCDIR)/configure \ --prefix=$(PREFIX)/httpd \ --enable-maintainer-mode \ @@ -731,7 +761,7 @@ $(HTTPD_OBJDIR)/.configured: $(HTTPD_OBJDIR)/.retrieved \ # compile httpd $(HTTPD_OBJDIR)/.compiled: $(HTTPD_OBJDIR)/.configured - (cd $(HTTPD_OBJDIR) && env MAKEFLAGS= make) + (cd $(HTTPD_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install httpd @@ -802,6 +832,8 @@ $(NEON_OBJDIR)/.configured: $(NEON_OBJDIR)/.retrieved fi cd $(NEON_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + CC=$(CC) CXX=$(CXX) \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(NEON_SRCDIR)/configure \ PATH=$(NEON_OBJDIR):$$PATH \ --prefix=$(PREFIX)/neon \ @@ -812,7 +844,7 @@ $(NEON_OBJDIR)/.configured: $(NEON_OBJDIR)/.retrieved # compile neon $(NEON_OBJDIR)/.compiled: $(NEON_OBJDIR)/.configured - (cd $(NEON_OBJDIR) && env MAKEFLAGS= make) + (cd $(NEON_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install neon @@ -860,11 +892,13 @@ $(SERF_OBJDIR)/.retrieved: $(SERF_OBJDIR)/.compiled: $(SERF_OBJDIR)/.retrieved \ $(APR_UTIL_OBJDIR)/.installed cd $(SERF_SRCDIR) && \ - scons DEBUG=1 \ + scons -j${MAKE_JOBS} DEBUG=1 \ CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ APR=$(PREFIX)/apr \ APU=$(PREFIX)/apr \ - PREFIX=$(PREFIX)/serf + PREFIX=$(PREFIX)/serf \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) touch $@ # install serf @@ -905,6 +939,7 @@ $(SERF_OLD_OBJDIR)/.compiled: $(SERF_OLD_OBJDIR)/.retrieved \ $(APR_UTIL_OBJDIR)/.installed cd $(SERF_OLD_SRCDIR) && \ env CFLAGS="-O0 -g $(PROFILE_CFLAGS) -DAPR_POOL_DEBUG" \ + CC=$(CC) CXX=$(CXX) \ ./serfmake --with-apr=$(PREFIX)/apr \ --prefix=$(PREFIX)/serf-old \ build @@ -956,6 +991,8 @@ endif $(SQLITE_OBJDIR)/.configured: $(SQLITE_OBJDIR)/.retrieved cd $(SQLITE_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ + CC=$(CC) CXX=$(CXX) \ $(SQLITE_SRCDIR)/configure \ --prefix=$(PREFIX)/sqlite \ $(THREADSAFE_FLAG) @@ -963,7 +1000,7 @@ $(SQLITE_OBJDIR)/.configured: $(SQLITE_OBJDIR)/.retrieved # compile sqlite $(SQLITE_OBJDIR)/.compiled: $(SQLITE_OBJDIR)/.configured - (cd $(SQLITE_OBJDIR) && env MAKEFLAGS= make) + (cd $(SQLITE_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install sqlite @@ -1025,7 +1062,9 @@ $(CYRUS_SASL_OBJDIR)/.configured: $(CYRUS_SASL_OBJDIR)/.retrieved \ cd $(CYRUS_SASL_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" \ CPPFLAGS="-I/usr/include/kerberosV" \ + CC=$(CC) CXX=$(CXX) \ GREP="`which grep`" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(CYRUS_SASL_SRCDIR)/configure \ --with-dbpath=$(PREFIX)/cyrus-sasl/etc/sasldb2 \ --with-plugindir=$(PREFIX)/cyrus-sasl/lib/sasl2 \ @@ -1037,7 +1076,7 @@ $(CYRUS_SASL_OBJDIR)/.configured: $(CYRUS_SASL_OBJDIR)/.retrieved \ --prefix=$(PREFIX)/cyrus-sasl touch $@ -# compile cyrus-sasl +# compile cyrus-sasl (ignore MAKE_JOBS; multiple jobs cause random build failures) $(CYRUS_SASL_OBJDIR)/.compiled: $(CYRUS_SASL_OBJDIR)/.configured (cd $(CYRUS_SASL_OBJDIR) && env MAKEFLAGS= make) touch $@ @@ -1077,6 +1116,8 @@ $(LIBMAGIC_OBJDIR)/.retrieved: $(DISTDIR)/$(LIBMAGIC_DIST) $(LIBMAGIC_OBJDIR)/.configured: $(LIBMAGIC_OBJDIR)/.retrieved cd $(LIBMAGIC_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + CC=$(CC) CXX=$(CXX) \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(LIBMAGIC_SRCDIR)/configure \ --enable-fsect-man5 \ --prefix=$(PREFIX)/libmagic @@ -1084,7 +1125,7 @@ $(LIBMAGIC_OBJDIR)/.configured: $(LIBMAGIC_OBJDIR)/.retrieved # compile libmagic $(LIBMAGIC_OBJDIR)/.compiled: $(LIBMAGIC_OBJDIR)/.configured - (cd $(LIBMAGIC_OBJDIR) && env MAKEFLAGS= make) + (cd $(LIBMAGIC_OBJDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install libmagic @@ -1111,13 +1152,54 @@ ruby-clean: $(DISTDIR)/$(RUBY_DIST): cd $(DISTDIR) && $(FETCH_CMD) $(RUBY_URL) +$(RUBY_OBJDIR)/openssl_missing.patch: + mkdir -p $(dir $@) + echo > $@.tmp 'Index: ext/openssl/openssl_missing.h' + echo >> $@.tmp '--- ext/openssl/openssl_missing.h.orig' + echo >> $@.tmp '+++ ext/openssl/openssl_missing.h' + echo >> $@.tmp '@@ -119,6 +119,9 @@ void ossl_HMAC_CTX_free(HMAC_CTX *);' + echo >> $@.tmp ' #if !defined(HAVE_X509_STORE_SET_EX_DATA)' + echo >> $@.tmp ' # define X509_STORE_set_ex_data(x, idx, data) \' + echo >> $@.tmp ' CRYPTO_set_ex_data(&(x)->ex_data, (idx), (data))' + echo >> $@.tmp '+#endif' + echo >> $@.tmp '+' + echo >> $@.tmp '+#if !defined(HAVE_X509_STORE_GET_EX_NEW_INDEX)' + echo >> $@.tmp ' # define X509_STORE_get_ex_new_index(l, p, newf, dupf, freef) \' + echo >> $@.tmp ' CRYPTO_get_ex_new_index(CRYPTO_EX_INDEX_X509_STORE, (l), (p), \' + echo >> $@.tmp ' (newf), (dupf), (freef))' + echo >> $@.tmp '@@ -192,6 +195,7 @@ void ossl_X509_REQ_get0_signature(const X509_REQ *, co' + echo >> $@.tmp ' #endif' + echo >> $@.tmp ' ' + echo >> $@.tmp ' #if !defined(HAVE_OPAQUE_OPENSSL)' + echo >> $@.tmp '+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x2070000fL' + echo >> $@.tmp ' #define IMPL_PKEY_GETTER(_type, _name) \' + echo >> $@.tmp ' static inline _type *EVP_PKEY_get0_##_type(EVP_PKEY *pkey) { \' + echo >> $@.tmp ' return pkey->pkey._name; }' + echo >> $@.tmp '@@ -243,6 +247,7 @@ IMPL_PKEY_GETTER(EC_KEY, ec)' + echo >> $@.tmp ' #undef IMPL_PKEY_GETTER' + echo >> $@.tmp ' #undef IMPL_KEY_ACCESSOR2' + echo >> $@.tmp ' #undef IMPL_KEY_ACCESSOR3' + echo >> $@.tmp '+#endif' + echo >> $@.tmp ' #endif /* HAVE_OPAQUE_OPENSSL */' + echo >> $@.tmp ' ' + echo >> $@.tmp ' #if defined(HAVE_AUTHENTICATED_ENCRYPTION) && !defined(EVP_CTRL_AEAD_GET_TAG)' + mv -f $@.tmp $@ + +ifeq ($(UNAME),OpenBSD) +RUBY_SSL_EX_NEW_DATA_PATCH = sed -i -e '/^have_func("X509_STORE_set_ex_data")$$/ { p; s/^.*$$/\have_func("X509_STORE_get_ex_new_index")/; }' +else +RUBY_SSL_EX_NEW_DATA_PATCH = true +endif + # retrieve ruby # -$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST) +$(RUBY_OBJDIR)/.retrieved: $(DISTDIR)/$(RUBY_DIST) $(RUBY_OBJDIR)/openssl_missing.patch $(call do_check_sha256,$(RUBY_DIST)) [ -d $(RUBY_OBJDIR) ] || mkdir -p $(RUBY_OBJDIR) tar -C $(SRCDIR) -zxf $(DISTDIR)/$(RUBY_DIST) -which ghead && sed -i -e "s/head -c/ghead -c/" $(RUBY_SRCDIR)/configure + $(RUBY_SSL_EX_NEW_DATA_PATCH) $(RUBY_SRCDIR)/ext/openssl/extconf.rb + cd $(RUBY_SRCDIR) && patch -p0 < $(RUBY_OBJDIR)/openssl_missing.patch touch $@ ifeq ($(THREADING),yes) @@ -1130,6 +1212,8 @@ endif $(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved cd $(RUBY_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + CC=$(CC) CXX=$(CXX) \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(RUBY_SRCDIR)/configure \ --prefix=$(PREFIX)/ruby \ --enable-shared \ @@ -1140,7 +1224,7 @@ $(RUBY_OBJDIR)/.configured: $(RUBY_OBJDIR)/.retrieved --without-gmp touch $@ -# compile ruby +# compile ruby (ignore MAKE_JOBS; multiple jobs cause random build failures) $(RUBY_OBJDIR)/.compiled: $(RUBY_OBJDIR)/.configured (cd $(RUBY_OBJDIR) && env MAKEFLAGS= make) touch $@ @@ -1177,7 +1261,8 @@ $(BZ2_OBJDIR)/.retrieved: $(DISTDIR)/$(BZ2_DIST) # compile bz2 $(BZ2_OBJDIR)/.compiled: $(BZ2_OBJDIR)/.retrieved - (cd $(BZ2_SRCDIR) && env MAKEFLAGS= make CFLAGS="-g $(PROFILE_CFLAGS) -fPIC") + (cd $(BZ2_SRCDIR) && env MAKEFLAGS= make CC=$(CC) CXX=$(CXX) \ + CFLAGS="-g $(PROFILE_CFLAGS) -fPIC" -j${MAKE_JOBS}) touch $@ # install bz2 @@ -1237,9 +1322,11 @@ $(PYTHON_OBJDIR)/.configured: $(PYTHON_OBJDIR)/.retrieved \ $(BZ2_OBJDIR)/.installed cd $(PYTHON_OBJDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`" \ + CC=$(CC) CXX=$(CXX) \ CPPFLAGS="-I$(PREFIX)/bz2/include" \ LDFLAGS="-Wl,-rpath=$(PREFIX)/python/lib -L$(PREFIX)/bz2/lib" \ LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(PYTHON_SRCDIR)/configure \ --prefix=$(PREFIX)/python \ --enable-shared \ @@ -1253,7 +1340,7 @@ $(PYTHON_OBJDIR)/.compiled: $(PYTHON_OBJDIR)/.configured (cd $(PYTHON_OBJDIR) && \ env MAKEFLAGS= \ LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \ - make) + make -j${MAKE_JOBS}) touch $@ # install python @@ -1306,7 +1393,9 @@ $(GETTEXT_OBJDIR)/.retrieved: $(DISTDIR)/$(GETTEXT_DIST) $(GETTEXT_OBJDIR)/.configured: $(GETTEXT_OBJDIR)/.retrieved cd $(GETTEXT_SRCDIR) \ && env CFLAGS="-g $(PROFILE_CFLAGS)" GREP="`which grep`"\ + CC=$(CC) CXX=$(CXX) \ LDFLAGS="-L$(PREFIX)/iconv/lib" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ $(GETTEXT_SRCDIR)/configure \ --prefix=$(PREFIX)/gettext \ --with-libiconv-prefix=$(PREFIX)/iconv \ @@ -1324,7 +1413,7 @@ $(GETTEXT_OBJDIR)/.configured: $(GETTEXT_OBJDIR)/.retrieved # compile gettext $(GETTEXT_OBJDIR)/.compiled: $(GETTEXT_OBJDIR)/.configured - (cd $(GETTEXT_SRCDIR) && env MAKEFLAGS= make) + (cd $(GETTEXT_SRCDIR) && env MAKEFLAGS= make -j${MAKE_JOBS}) touch $@ # install gettext @@ -1365,7 +1454,8 @@ $(LZ4_OBJDIR)/.configured: $(LZ4_OBJDIR)/.retrieved # compile lz4 $(LZ4_OBJDIR)/.compiled: $(LZ4_OBJDIR)/.configured (cd $(LZ4_SRCDIR)/lib && \ - env MAKEFLAGS= $(MAKE) PREFIX=$(PREFIX)/lz4) + env MAKEFLAGS= $(MAKE) CC=$(CC) CXX=$(CXX) \ + -j${MAKE_JOBS} PREFIX=$(PREFIX)/lz4) touch $@ # install lz4 @@ -1467,6 +1557,7 @@ SERF_FLAG=--with-serf="$(PREFIX)/serf" # serf >= 1.3.0 is built with scons and no longer sets up rpath linker flags, # so we have to do that ourselves :( SERF_LDFLAG=-Wl,-rpath,$(PREFIX)/serf/lib -Wl,-rpath,$(PREFIX)/bdb/lib +LZ4_LDFLAG=-Wl,-rpath,$(PREFIX)/lz4/lib MOD_DAV_SVN=modules/svn-$(WC)/mod_dav_svn.so MOD_AUTHZ_SVN=modules/svn-$(WC)/mod_authz_svn.so MOD_DONTDOTHAT=modules/svn-$(WC)/mod_dontdothat.so @@ -1492,6 +1583,17 @@ SVN_WITH_HTTPD=--with-apxs="$(PREFIX)/httpd/bin/apxs" \ SVN_WITH_SASL=--with-sasl="$(PREFIX)/cyrus-sasl" endif +# On OpenBSD, MExtUtils -e ldopts outputs -L/usr/local/lib, which can +# cause us to link Perl bindings against the wrong set of SVN libraries. +# As a workaround, we patch the configure script after it has been generated. +ifeq ($(UNAME),OpenBSD) +SWIG_PL_INCLUDES_HACK= sed -i 's^\($$PERL -MExtUtils::Embed -e ccopts\)^\1 | sed -e s@-I/usr/local/include@@^' $(svn_builddir)/configure +SWIG_PL_LINK_HACK= sed -i 's^\($$PERL -MExtUtils::Embed -e ldopts\)^\1 | sed -e s@-L/usr/local/lib@@^' $(svn_builddir)/configure +else +SWIG_PL_INCLUDES_HACK=true +SWIG_PL_LINK_HACK=true +endif + $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST) \ $(APR_OBJDIR)/.installed $(APR_UTIL_OBJDIR)/.installed \ $(BDB_OBJDIR)/.installed $(SQLITE_OBJDIR)/.installed \ @@ -1500,11 +1602,15 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST) \ $(SERF_OBJDIR)/.installed $(SERF_OLD_OBJDIR)/.installed \ $(RUBY_OBJDIR)/.installed $(PYTHON_OBJDIR)/.installed cd $(SVN_SRCDIR) && ./autogen.sh + $(SWIG_PL_INCLUDES_HACK) + $(SWIG_PL_LINK_HACK) cd $(svn_builddir) && \ - env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib $(SERF_LDFLAG) -L$(PREFIX)/gettext/lib -L$(PREFIX)/iconv/lib" \ + env LDFLAGS="-L$(PREFIX)/neon/lib -L$(PREFIX)/apr/lib $(SERF_LDFLAG) $(LZ4_LDFLAG) -L$(PREFIX)/gettext/lib -L$(PREFIX)/iconv/lib" \ + CC=$(CC) CXX=$(CXX) \ CFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \ CXXFLAGS="-I$(PREFIX)/gettext/include -DAPR_POOL_DEBUG" \ LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):$$LD_LIBRARY_PATH" \ + PKG_CONFIG_PATH=$(PKG_CONFIG_PATH) \ GREP="`which grep`" \ PATH=$(PREFIX)/ruby/bin:$(PREFIX)/python/bin:$(PREFIX)/gettext/bin:$$PATH \ $(SVN_SRCDIR)/configure \ @@ -1533,7 +1639,7 @@ $(SVN_OBJDIR)/.configured: $(SVN_OBJDIR)/.retrieved $(DISTDIR)/$(JUNIT_DIST) \ # compile svn $(SVN_OBJDIR)/.compiled: $(SVN_OBJDIR)/.configured cd $(svn_builddir) \ - && env MAKEFLAGS= make EXTRA_CFLAGS="$(PROFILE_CFLAGS) $(W_NO_SYSTEM_HEADERS)" + && env MAKEFLAGS= make -j${MAKE_JOBS} EXTRA_CFLAGS="$(PROFILE_CFLAGS) $(W_NO_SYSTEM_HEADERS)" touch $@ # install svn @@ -1552,17 +1658,30 @@ $(SVN_OBJDIR)/.pre-generated-swig-cleaned: && env MAKEFLAGS= make clean-swig touch $@ + +# On OpenBSD, Perl's LDDLFLAGS include -L/usr/local/lib, which can cause +# us to link Perl bindings against the wrong set of SVN libraries. +# We manually fix up the generated Makefile.PL to work around this issue. +ifeq ($(UNAME),OpenBSD) +MAKEFILE_PL_LDDLFLAGS_HACK= sed -i 's@^WriteMakefile@$$config{LDDLFLAGS} =~ s+-L/usr/local/lib++; WriteMakefile@' \ + $(SVN_SRCDIR)/subversion/bindings/swig/perl/native/Makefile.PL +else +MAKEFILE_PL_LDDLFLAGS_HACK=true +endif + $(SVN_OBJDIR)/.bindings-compiled: $(SVN_OBJDIR)/.installed $(SVN_OBJDIR)/.pre-generated-swig-cleaned cd $(svn_builddir) \ && env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ - env MAKEFLAGS= make swig-py + env MAKEFLAGS= make -j${MAKE_JOBS} swig-py cd $(svn_builddir) && \ env PATH=$(PREFIX)/ruby/bin:$$PATH \ - LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make swig-rb + LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make -j${MAKE_JOBS} swig-rb if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \ + cd $(svn_builddir) && make $(SVN_SRCDIR)/subversion/bindings/swig/perl/native/Makefile.PL; \ + $(MAKEFILE_PL_LDDLFLAGS_HACK); \ cd $(svn_builddir) \ && env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ - env MAKEFLAGS= make swig-pl; \ + env MAKEFLAGS= make -j${MAKE_JOBS} swig-pl; \ fi if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \ cd $(svn_builddir) \ @@ -1576,13 +1695,15 @@ $(SVN_OBJDIR)/.bindings-installed: $(SVN_OBJDIR)/.bindings-compiled env MAKEFLAGS= make install-swig-py cd $(svn_builddir) && \ env PATH=$(PREFIX)/ruby/bin:$$PATH \ - LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) env MAKEFLAGS= make install-swig-rb + LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) MAKEFLAGS= make install-swig-rb if [ $(ENABLE_PERL_BINDINGS) = yes ]; then \ cd $(svn_builddir) \ - && env MAKEFLAGS= make install-swig-pl-lib; \ - cd subversion/bindings/swig/perl/native \ - && perl Makefile.PL PREFIX="$(SVN_PREFIX)" \ - && env MAKEFLAGS= make install; \ + && env MAKEFLAGS= LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ + make install-swig-pl-lib; \ + cd subversion/bindings/swig/perl/native \ + && perl Makefile.PL PREFIX="$(SVN_PREFIX)" \ + && env MAKEFLAGS= LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ + make install; \ fi if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \ cd $(svn_builddir) \ @@ -1913,6 +2034,7 @@ endif HTTPD_CMD = env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \ $(PREFIX)/httpd/bin/apachectl +HTTPD_LOG_ROTATE = mv $(PREFIX)/httpd/logs/error_log $(PREFIX)/httpd/logs/error_log.old HTTPD_START_CMD = $(HTTPD_CMD) -f $(HTTPD_CHECK_CONF) -k start HTTPD_START_CMD_PROXY = $(HTTPD_CMD) -f $(HTTPD_PROXY_CONF) HTTPD_START_CMD_DEBUG = $(HTTPD_START_CMD) -X @@ -1931,6 +2053,7 @@ SVNSERVE_STOP_CMD = kill `cat $(PWD)/svnserve-$(WC).pid`; sleep 3; \ rm -f $(PWD)/svnserve-$(WC).pid start-httpd: $(HTTPD_CHECK_CONF) + -$(HTTPD_LOG_ROTATE) $(HTTPD_START_CMD) @echo "To run tests over http, run:" @echo " make check BASE_URL=http://localhost:$(HTTPD_CHECK_PORT)" @@ -1971,6 +2094,7 @@ define do_check env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) $(LIB_PTHREAD_HACK) \ env MAKEFLAGS= make check PARALLEL=$(PARALLEL) CLEANUP=$(CLEANUP) \ EXCLUSIVE_WC_LOCKS=$(EXCLUSIVE_WC_LOCKS) \ + SVN_BIN_DIR=$(SVN_PREFIX)/bin \ MEMCACHED_SERVER=$(MEMCACHED_SERVER) $1 FS_TYPE=$$fs; \ for log in tests.log fails.log; do \ test -f $$log && mv -f $$log $$log.$@-$$fs; \ @@ -2052,7 +2176,7 @@ svn-check-javahl: -if [ $(ENABLE_JAVA_BINDINGS) = yes ]; then \ (cd $(svn_builddir) && \ env LD_LIBRARY_PATH=$(LD_LIBRARY_PATH) \ - env MAKEFLAGS= make $(JAVAHL_CHECK_TARGET) 2>&1) | \ + MAKEFLAGS= make $(JAVAHL_CHECK_TARGET) 2>&1) | \ tee $(svn_builddir)/tests.log.bindings.javahl; \ fi |