From 7b2b70dcdf961652c91e82f4f4008205f8f198fb Mon Sep 17 00:00:00 2001 From: "Kirill A. Korinskiy" Date: Sat, 22 Mar 2014 14:36:30 +0200 Subject: [PATCH] Make build on osx easier --- Makefile.am | 5 ++--- configure.ac | 23 +++++++++++++--------- doc/build-osx.md | 33 +++----------------------------- m4/ax_berkeley_db_cxx.m4 | 41 ++++++++++++++++++++++++++++++++++++++-- 4 files changed, 58 insertions(+), 44 deletions(-) diff --git a/Makefile.am b/Makefile.am index 7c5c9d19..0a12adf4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -166,7 +166,7 @@ endif twisterd_SOURCES = $(LIBTORRENT_SOURCES) $(BITCOIN_TWISTER_SOURCES) -twisterd_LDFLAGS = +twisterd_LDFLAGS = @OPENSSL_LDFLAGS@ @DB_CXX_LDFLAGS@ twisterd_DEPENDENCIES = $(LEVELDB_LIB) @@ -178,7 +178,6 @@ AM_CPPFLAGS = -ftemplate-depth-100 -DBOOST_SPIRIT_THREADSAFE -D_FILE_OFFSET_BITS -I$(top_srcdir)/libtorrent/include \ -I$(top_srcdir)/src \ -I$(top_srcdir)/src/leveldb/include -I$(top_srcdir)/src/leveldb/helpers \ - @DEBUGFLAGS@ @OPENSSL_INCLUDES@ + @DEBUGFLAGS@ @OPENSSL_INCLUDES@ @DB_CXX_CPPFLAGS@ AM_LDFLAGS = @OPENSSL_LDFLAGS@ - diff --git a/configure.ac b/configure.ac index 59d956b4..9319a5e4 100644 --- a/configure.ac +++ b/configure.ac @@ -83,26 +83,22 @@ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], AS_ECHO AS_ECHO "Checking for boost libraries:" -AX_BOOST_BASE([1.44]) +AX_BOOST_BASE([1.44], [], + [AC_MSG_ERROR(Boost library not found. Try using --with-boost=)]) AX_BOOST_SYSTEM() -AS_IF([test -z "$BOOST_SYSTEM_LIB"], - [AC_MSG_ERROR(Boost.System library not found. Try using --with-boost-libdir=)]) AX_BOOST_FILESYSTEM() AX_BOOST_PROGRAM_OPTIONS() AX_BOOST_THREAD() AX_BOOST_CHRONO() -CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS" -LDFLAGS="$BOOST_LDFLAGS $LDFLAGS $BOOST_CHRONO_LIB" - - ############################################################################### # Checking for Berkeley DB C++ ############################################################################### AC_LANG([C++]) -AX_BERKELEY_DB_CXX(4.8) +AX_BERKELEY_DB_CXX(4.8, [], + [AC_MSG_ERROR(Berkeley DB C++ library not found. Try using --with-libdb=)]) ############################################################################### # Checking for functions and other stuffs @@ -772,6 +768,15 @@ Boost libraries: CPPFlags: ${BOOST_CPPFLAGS} LDFlags: ${BOOST_LDFLAGS} boost.system: ${BOOST_SYSTEM_LIB} + boost.filesystem: ${BOOST_FILESYSTEM_LIB} + boost.program_opts: ${BOOST_PROGRAM_OPTIONS_LIB} + boost.thread: ${BOOST_THREAD_LIB} + +Berkeley DB C++ library: + header: ${DB_CXX_HEADER} + libraries: ${DB_CXX_LIBS} + LDFlags: ${DB_CXX_LDFLAGS} + CPPFlags: ${DB_CXX_CPPFLAGS} END AS_IF([test "x$ARG_ENABLE_PYTHON_BINDING" = "xyes"], [ @@ -830,7 +835,7 @@ OpenSSL library: OpenSSL Libs: ${OPENSSL_LIBS} OpenSSL LDFlags: ${OPENSSL_LDFLAGS} OpenSSL Includes: ${OPENSSL_INCLUDES} -END +END ]) cat config.report diff --git a/doc/build-osx.md b/doc/build-osx.md index 8add73bb..e59b5d75 100644 --- a/doc/build-osx.md +++ b/doc/build-osx.md @@ -43,18 +43,6 @@ Instructions: HomeBrew brew install boost miniupnpc openssl berkeley-db4 autoconf automake libtool -Note: After you have installed the dependencies, you should check that the Brew-installed -version of OpenSSL is the one available for compilation. You can check this by typing - - openssl version - -into Terminal. You should see OpenSSL 1.0.1e 11 Feb 2013. - -If that's not the case, you *could* `brew link --force openssl` but it's a bad idea. -Instead, it's enough to make sure the right openssl binary is on your $PATH: - - export PATH=/usr/local/opt/openssl/bin:$PATH - ### Building `twisterd` 1. Clone the github tree to get the source code and go into the directory. @@ -63,29 +51,14 @@ Instead, it's enough to make sure the right openssl binary is on your $PATH: git clone https://github.com/miguelfreitas/twister-core.git cd twister-core -2. Set system variables to match your environment. THIS IS IMPORTANT! - - - export OPENSSL_INCLUDE_PATH=/usr/local/opt/openssl/include - export OPENSSL_LIB_PATH=/usr/local/opt/openssl/lib - export BDB_INCLUDE_PATH=/usr/local/opt/berkeley-db4/include - export BDB_LIB_PATH=/usr/local/opt/berkeley-db4/lib - export BOOST_INCLUDE_PATH=/usr/local/opt/boost/include - export BOOST_LIB_PATH=/usr/local/opt/boost/lib - export BOOST_LIB_SUFFIX=-mt - export LDFLAGS="-L$OPENSSL_LIB_PATH -L$BDB_LIB_PATH -L$BOOST_LIB_PATH" - export CPPFLAGS="-I$OPENSSL_INCLUDE_PATH -I$BDB_INCLUDE_PATH -I$BOOST_INCLUDE_PATH" - export PATH=${BDB_INCLUDE_PATH}:${PATH} - -3. Build twister using autotool - +2. Build twister using autotool ./autotool.sh - ./configure --enable-logging + ./configure --enable-logging --with-openssl=/usr/local/opt/openssl --with-libdb=/usr/local/opt/berkeley-db4 make (If you have multi core CPU, use "make -j N" where N = number of your cores) -4. If things go south, before trying again, make sure you clean it up: +3. If things go south, before trying again, make sure you clean it up: make clean diff --git a/m4/ax_berkeley_db_cxx.m4 b/m4/ax_berkeley_db_cxx.m4 index f35e5e89..42b47223 100644 --- a/m4/ax_berkeley_db_cxx.m4 +++ b/m4/ax_berkeley_db_cxx.m4 @@ -21,28 +21,52 @@ # in your C/C++ code. DB_CXX_LIBS is set to linker flags needed to link # against the library (e.g. -ldb3.1_cxx) and AC_SUBST is called on it. # +# when specified user-selected spot (via --with-libdb) also sets +# +# DB_CXX_CPPFLAGS to the include directives required +# DB_CXX_LDFLAGS to the -L flags required +# # LICENSE # # Copyright (c) 2008 Vaclav Slavik # Copyright (c) 2011 Stephan Suerken +# Copyright (c) 2014 Kirill A. Korinskiy # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. -#serial 3 +#serial 4 AC_DEFUN([AX_BERKELEY_DB_CXX], [ AC_LANG_ASSERT(C++) old_LIBS="$LIBS" + old_LDFLAGS="$LDFLAGS" + old_CPPFLAGS="$CPPFLAGS" + + libdbdir="" + AC_ARG_WITH(libdb, + AS_HELP_STRING([--with-libdb=DIR], + [root of the Berkeley DB directory]), + [ + case "$withval" in + "" | y | ye | yes | n | no) + AC_MSG_ERROR([Invalid --with-libdb value]) + ;; + *) libdbdir="$withval" + ;; + esac + ], []) minversion=ifelse([$1], ,,$1) DB_CXX_HEADER="" DB_CXX_LIBS="" + DB_CXX_LDFLAGS="" + DB_CXX_CPPFLAGS="" if test -z $minversion ; then minvermajor=0 @@ -59,13 +83,20 @@ AC_DEFUN([AX_BERKELEY_DB_CXX], AC_MSG_CHECKING([for Berkeley DB (C++) >= $minversion]) fi + if test x$libdbdir != x""; then + DB_CXX_CPPFLAGS="-I${libdbdir}/include" + DB_CXX_LDFLAGS="-L${libdbdir}/lib" + LDFLAGS="$DB_CXX_LDFLAGS $old_LDFLAGS" + CPPFLAGS="$DB_CXX_CPPFLAGS $old_CPPFLAGS" + fi + for version in "" 5.0 4.9 4.8 4.7 4.6 4.5 4.4 4.3 4.2 4.1 4.0 3.6 3.5 3.4 3.3 3.2 3.1 ; do if test -z $version ; then db_cxx_lib="-ldb_cxx -ldb" try_headers="db_cxx.h" else - db_cxx_lib="-ldb_cxx-$version -ldb-$version" + db_cxx_lib="$libdbdir -ldb_cxx-$version -ldb-$version" try_headers="db$version/db_cxx.h db`echo $version | sed -e 's,\..*,,g'`/db_cxx.h" fi @@ -102,13 +133,19 @@ AC_DEFUN([AX_BERKELEY_DB_CXX], done LIBS="$old_LIBS" + LDFLAGS="$old_LDFLAGS" + CPPFLAGS="$old_CPPFLAGS" if test -z $DB_CXX_HEADER ; then AC_MSG_RESULT([not found]) + DB_CXX_LDFLAGS="" + DB_CXX_CPPFLAGS="" ifelse([$3], , :, [$3]) else AC_DEFINE_UNQUOTED(DB_CXX_HEADER, ["$DB_CXX_HEADER"], ["Berkeley DB C++ Header File"]) AC_SUBST(DB_CXX_LIBS) + AC_SUBST(DB_CXX_LDFLAGS) + AC_SUBST(DB_CXX_CPPFLAGS) ifelse([$2], , :, [$2]) fi ])