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. 23
      configure.ac
  3. 33
      doc/build-osx.md
  4. 41
      m4/ax_berkeley_db_cxx.m4

5
Makefile.am

@ -166,7 +166,7 @@ endif @@ -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 @@ -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@

23
configure.ac

@ -83,26 +83,22 @@ AC_CACHE_CHECK([for __attribute__((visibility("hidden")))], @@ -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: @@ -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: @@ -830,7 +835,7 @@ OpenSSL library:
OpenSSL Libs: ${OPENSSL_LIBS}
OpenSSL LDFlags: ${OPENSSL_LDFLAGS}
OpenSSL Includes: ${OPENSSL_INCLUDES}
END
END
])
cat config.report

33
doc/build-osx.md

@ -43,18 +43,6 @@ Instructions: HomeBrew @@ -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: @@ -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

41
m4/ax_berkeley_db_cxx.m4

@ -21,28 +21,52 @@ @@ -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 <vaclav.slavik@matfyz.cz>
# 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
# 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], @@ -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], @@ -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
])

Loading…
Cancel
Save