Browse Source

Merge pull request #177 from catap/master

Make build on osx easier (also tested on linux and cygwin)
miguelfreitas
miguelfreitas 11 years ago
parent
commit
b0ae82779a
  1. 5
      Makefile.am
  2. 21
      configure.ac
  3. 33
      doc/build-osx.md
  4. 41
      m4/ax_berkeley_db_cxx.m4

5
Makefile.am

@ -166,7 +166,7 @@ endif
twisterd_SOURCES = $(LIBTORRENT_SOURCES) $(BITCOIN_TWISTER_SOURCES) twisterd_SOURCES = $(LIBTORRENT_SOURCES) $(BITCOIN_TWISTER_SOURCES)
twisterd_LDFLAGS = twisterd_LDFLAGS = @OPENSSL_LDFLAGS@ @DB_CXX_LDFLAGS@
twisterd_DEPENDENCIES = $(LEVELDB_LIB) 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)/libtorrent/include \
-I$(top_srcdir)/src \ -I$(top_srcdir)/src \
-I$(top_srcdir)/src/leveldb/include -I$(top_srcdir)/src/leveldb/helpers \ -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@ AM_LDFLAGS = @OPENSSL_LDFLAGS@

21
configure.ac

@ -83,26 +83,22 @@ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
AS_ECHO AS_ECHO
AS_ECHO "Checking for boost libraries:" 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() 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_FILESYSTEM()
AX_BOOST_PROGRAM_OPTIONS() AX_BOOST_PROGRAM_OPTIONS()
AX_BOOST_THREAD() AX_BOOST_THREAD()
AX_BOOST_CHRONO() AX_BOOST_CHRONO()
CPPFLAGS="$BOOST_CPPFLAGS $CPPFLAGS"
LDFLAGS="$BOOST_LDFLAGS $LDFLAGS $BOOST_CHRONO_LIB"
############################################################################### ###############################################################################
# Checking for Berkeley DB C++ # Checking for Berkeley DB C++
############################################################################### ###############################################################################
AC_LANG([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 # Checking for functions and other stuffs
@ -772,6 +768,15 @@ Boost libraries:
CPPFlags: ${BOOST_CPPFLAGS} CPPFlags: ${BOOST_CPPFLAGS}
LDFlags: ${BOOST_LDFLAGS} LDFlags: ${BOOST_LDFLAGS}
boost.system: ${BOOST_SYSTEM_LIB} 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 END
AS_IF([test "x$ARG_ENABLE_PYTHON_BINDING" = "xyes"], [ AS_IF([test "x$ARG_ENABLE_PYTHON_BINDING" = "xyes"], [

33
doc/build-osx.md

@ -43,18 +43,6 @@ Instructions: HomeBrew
brew install boost miniupnpc openssl berkeley-db4 autoconf automake libtool 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` ### Building `twisterd`
1. Clone the github tree to get the source code and go into the directory. 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 git clone https://github.com/miguelfreitas/twister-core.git
cd twister-core cd twister-core
2. Set system variables to match your environment. THIS IS IMPORTANT! 2. Build twister using autotool
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
./autotool.sh ./autotool.sh
./configure --enable-logging ./configure --enable-logging --with-openssl=/usr/local/opt/openssl --with-libdb=/usr/local/opt/berkeley-db4
make make
(If you have multi core CPU, use "make -j N" where N = number of your cores) (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 make clean

41
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 # 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. # 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 # LICENSE
# #
# Copyright (c) 2008 Vaclav Slavik <vaclav.slavik@matfyz.cz> # Copyright (c) 2008 Vaclav Slavik <vaclav.slavik@matfyz.cz>
# Copyright (c) 2011 Stephan Suerken <absurd@debian.org> # Copyright (c) 2011 Stephan Suerken <absurd@debian.org>
# Copyright (c) 2014 Kirill A. Korinskiy <catap@catap.ru>
# #
# Copying and distribution of this file, with or without modification, are # Copying and distribution of this file, with or without modification, are
# permitted in any medium without royalty provided the copyright notice # permitted in any medium without royalty provided the copyright notice
# and this notice are preserved. This file is offered as-is, without any # and this notice are preserved. This file is offered as-is, without any
# warranty. # warranty.
#serial 3 #serial 4
AC_DEFUN([AX_BERKELEY_DB_CXX], AC_DEFUN([AX_BERKELEY_DB_CXX],
[ [
AC_LANG_ASSERT(C++) AC_LANG_ASSERT(C++)
old_LIBS="$LIBS" 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) minversion=ifelse([$1], ,,$1)
DB_CXX_HEADER="" DB_CXX_HEADER=""
DB_CXX_LIBS="" DB_CXX_LIBS=""
DB_CXX_LDFLAGS=""
DB_CXX_CPPFLAGS=""
if test -z $minversion ; then if test -z $minversion ; then
minvermajor=0 minvermajor=0
@ -59,13 +83,20 @@ AC_DEFUN([AX_BERKELEY_DB_CXX],
AC_MSG_CHECKING([for Berkeley DB (C++) >= $minversion]) AC_MSG_CHECKING([for Berkeley DB (C++) >= $minversion])
fi 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 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 if test -z $version ; then
db_cxx_lib="-ldb_cxx -ldb" db_cxx_lib="-ldb_cxx -ldb"
try_headers="db_cxx.h" try_headers="db_cxx.h"
else 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" try_headers="db$version/db_cxx.h db`echo $version | sed -e 's,\..*,,g'`/db_cxx.h"
fi fi
@ -102,13 +133,19 @@ AC_DEFUN([AX_BERKELEY_DB_CXX],
done done
LIBS="$old_LIBS" LIBS="$old_LIBS"
LDFLAGS="$old_LDFLAGS"
CPPFLAGS="$old_CPPFLAGS"
if test -z $DB_CXX_HEADER ; then if test -z $DB_CXX_HEADER ; then
AC_MSG_RESULT([not found]) AC_MSG_RESULT([not found])
DB_CXX_LDFLAGS=""
DB_CXX_CPPFLAGS=""
ifelse([$3], , :, [$3]) ifelse([$3], , :, [$3])
else else
AC_DEFINE_UNQUOTED(DB_CXX_HEADER, ["$DB_CXX_HEADER"], ["Berkeley DB C++ Header File"]) AC_DEFINE_UNQUOTED(DB_CXX_HEADER, ["$DB_CXX_HEADER"], ["Berkeley DB C++ Header File"])
AC_SUBST(DB_CXX_LIBS) AC_SUBST(DB_CXX_LIBS)
AC_SUBST(DB_CXX_LDFLAGS)
AC_SUBST(DB_CXX_CPPFLAGS)
ifelse([$2], , :, [$2]) ifelse([$2], , :, [$2])
fi fi
]) ])

Loading…
Cancel
Save