blob: eba776b88e424b18b8865f4494d5d99cbab89ab2 [file] [log] [blame]
Jeff Thompsonb7523002013-10-09 10:25:00 -07001# To build using autotools on OS X:
2# $ sudo port install autoconf
3# $ sudo port install automake
4# $ sudo port install doxygen
5# Enter the following to show directory for m4 macros, and download the the following into there (use sudo):
6# $ aclocal --print
7# http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_cxx_compile_stdcxx_11.m4
8# http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_prog_doxygen.m4
9# http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_check_openssl.m4
10# http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_lib_sqlite3.m4
11# http://git.savannah.gnu.org/gitweb/?p=autoconf-archive.git;a=blob_plain;f=m4/ax_prefix_config_h.m4
12
Jeff Thompsonff092f52013-06-19 13:38:12 -070013AC_PREREQ([2.59])
Jeff Thompson93a24162013-09-27 13:28:13 -070014AC_INIT([ndn-cpp], [0.2], [ndn-lib@lists.cs.ucla.edu], [ndn-cpp], [https://github.com/named-data/ndn-cpp])
Jeff Thompsonff092f52013-06-19 13:38:12 -070015AM_INIT_AUTOMAKE([1.10 -Wall no-define foreign])
16
Jeff Thompson23cb7422013-10-09 16:11:47 -070017AC_CONFIG_MACRO_DIR([m4])
Jeff Thompson5d16a902013-10-10 11:15:14 -070018AC_CONFIG_SRCDIR([configure.ac])
Jeff Thompson6e229042013-10-10 11:09:49 -070019# Create config.h without prefixes. Put it in the include directory so CFLAGS will have -I./include .
20AC_CONFIG_HEADERS(include/config.h)
21# Add prefixes and output to a unique file name which will go into the ndn-cpp include install directory.
22AX_PREFIX_CONFIG_H(include/ndn-cpp/ndn-cpp-config.h)
Jeff Thompson47053ad2013-08-05 10:36:53 -070023AM_MAINTAINER_MODE
Jeff Thompson3b3aabf2013-06-21 16:50:20 -070024AM_PROG_AR
Jeff Thompson4f031642013-08-05 11:03:16 -070025AC_PROG_LIBTOOL
Jeff Thompson23cb7422013-10-09 16:11:47 -070026LT_PREREQ([2.2])
27LT_INIT()
Jeff Thompson4f031642013-08-05 11:03:16 -070028AC_PROG_CXX
Jeff Thompson1a1b4c02013-06-28 22:28:51 -070029AM_PROG_CC_C_O
Jeff Thompsonfcc4daa2013-10-01 14:52:23 -070030AC_PROG_OBJCXX
Jeff Thompsonff092f52013-06-19 13:38:12 -070031AC_LANG([C++])
Jeff Thompsonb18b6eb2013-10-11 18:28:50 -070032
33# Special case.
34case "$host" in
35 *-darwin* | *-macos10*)
36 if test -d /opt/local ; then
37 CFLAGS="$CFLAGS -I/opt/local/include"
38 CXXFLAGS="$CXXFLAGS -I/opt/local/include"
39 CPPFLAGS="$CPPFLAGS -I/opt/local/include"
40 LDFLAGS="$LDFLAGS -L/opt/local/lib"
41 elif test -d /sw ; then
42 CFLAGS="$CFLAGS -I/sw/include"
43 CXXFLAGS="$CXXFLAGS -I/sw/include"
44 CPPFLAGS="$CPPFLAGS -I/sw/include"
45 LDFLAGS="$LDFLAGS -L/sw/lib"
46 fi
47 ;;
48esac
49
Jeff Thompson32a23332013-10-07 18:39:00 -070050AC_TYPE_SIZE_T
51AC_TYPE_INT8_T
52AC_TYPE_INT16_T
53AC_TYPE_INT32_T
54AC_TYPE_INT64_T
55AC_TYPE_UINT8_T
56AC_TYPE_UINT16_T
57AC_TYPE_UINT32_T
58AC_TYPE_UINT64_T
Jeff Thompsonea946202013-10-18 14:35:32 -070059AC_CHECK_FUNCS([memcmp] [memcpy] [memset])
60AC_CHECK_FUNCS([strchr], :, AC_MSG_ERROR([*** strchr not found. Check 'config.log' for more details.]))
61AC_CHECK_FUNCS([sscanf], :, AC_MSG_ERROR([*** sscanf not found. Check 'config.log' for more details.]))
Jeff Thompsond32bab62013-10-18 14:55:26 -070062AC_CHECK_HEADERS([time.h], :, AC_MSG_ERROR([*** time.h not found. Check 'config.log' for more details.]))
Jeff Thompsonea946202013-10-18 14:35:32 -070063AC_CHECK_HEADERS([sys/time.h], :, AC_MSG_ERROR([*** sys/time.h not found. Check 'config.log' for more details.]))
64AC_CHECK_FUNCS([gettimeofday], :, AC_MSG_ERROR([*** gettimeofday not found. processEvents requires it. Check 'config.log' for more details.]))
Jeff Thompson1b8f4c92013-06-19 16:18:46 -070065AX_CXX_COMPILE_STDCXX_11(, optional)
Jeff Thompson6e229042013-10-10 11:09:49 -070066AC_C_INLINE
Jeff Thompsonff092f52013-06-19 13:38:12 -070067
68AC_MSG_CHECKING([for std::shared_ptr])
69AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
70 [[#include <memory>]]
71 [[std::shared_ptr<int> have_shared_ptr;]])
72], [
73 AC_MSG_RESULT([yes])
74 AC_DEFINE_UNQUOTED([HAVE_STD_SHARED_PTR], 1, [1 if have the `std::shared_ptr' class.])
75], [
76 AC_MSG_RESULT([no])
77 AC_DEFINE_UNQUOTED([HAVE_STD_SHARED_PTR], 0, [1 if have the `std::shared_ptr' class.])
78])
Jeff Thompson9e9ea9f2013-06-22 10:31:18 -070079AC_MSG_CHECKING([for boost::shared_ptr])
Jeff Thompsonff092f52013-06-19 13:38:12 -070080AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
81 [[#include <boost/shared_ptr.hpp>]]
82 [[boost::shared_ptr<int> have_shared_ptr;]])
83], [
84 AC_MSG_RESULT([yes])
85 AC_DEFINE_UNQUOTED([HAVE_BOOST_SHARED_PTR], 1, [1 if have the `boost::shared_ptr' class.])
86], [
87 AC_MSG_RESULT([no])
88 AC_DEFINE_UNQUOTED([HAVE_BOOST_SHARED_PTR], 0, [1 if have the `boost::shared_ptr' class.])
89])
90
Jeff Thompsona28eed82013-08-22 16:21:10 -070091AC_MSG_CHECKING([for std::function])
92AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
93 [[#include <functional>]]
94 [[std::function<int> have_function();]])
95], [
96 AC_MSG_RESULT([yes])
97 AC_DEFINE_UNQUOTED([HAVE_STD_FUNCTION], 1, [1 if have the `std::function' class.])
98], [
99 AC_MSG_RESULT([no])
100 AC_DEFINE_UNQUOTED([HAVE_STD_FUNCTION], 0, [1 if have the `std::function' class.])
101])
102AC_MSG_CHECKING([for boost::function])
103AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
104 [[#include <boost/function.hpp>]]
105 [[boost::function<int> have_function();]])
106], [
107 AC_MSG_RESULT([yes])
108 AC_DEFINE_UNQUOTED([HAVE_BOOST_FUNCTION], 1, [1 if have the `boost::function' class.])
109], [
110 AC_MSG_RESULT([no])
111 AC_DEFINE_UNQUOTED([HAVE_BOOST_FUNCTION], 0, [1 if have the `boost::function' class.])
112])
113
Jeff Thompsonea946202013-10-18 14:35:32 -0700114AC_MSG_CHECKING([for gmtime support])
115AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
Jeff Thompsond32bab62013-10-18 14:55:26 -0700116 [[#include <time.h>]]
Jeff Thompsonea946202013-10-18 14:35:32 -0700117 [[#include <sys/time.h>]]
118 [[struct timeval tv;]]
119 [[int result1 = gettimeofday(&tv, 0);]]
120 [[time_t time1 = time(0);]]
121 [[struct tm* tm1 = gmtime(&time1);]]
122 [[time_t time2 = timegm(tm1);]])
123], [
124 AC_MSG_RESULT([yes])
125 AC_DEFINE_UNQUOTED([HAVE_GMTIME_SUPPORT], 1, [1 if have sys/time gmtime support including timegm.])
126], [
127 AC_MSG_RESULT([no])
128 AC_DEFINE_UNQUOTED([HAVE_GMTIME_SUPPORT], 0, [1 if have sys/time gmtime support including timegm.])
129])
130
Jeff Thompsond0f62e12013-10-09 17:41:25 -0700131# Require libcrypto.
132AC_CHECK_LIB([crypto], [EVP_EncryptInit], [],
133 [AC_MSG_FAILURE([can't find openssl crypto lib])])
134
Jeff Thompsonbb6b5682013-10-09 18:22:38 -0700135# Conditionally use libsqlite3. AX_LIB_SQLITE3 defines HAVE_SQLITE3 in confdefs.h .
Jeff Thompsond0f62e12013-10-09 17:41:25 -0700136AX_LIB_SQLITE3()
Jeff Thompsonbb6b5682013-10-09 18:22:38 -0700137if grep -q "#define HAVE_SQLITE3" confdefs.h ; then
Jeff Thompsonf21e2242013-10-09 19:01:49 -0700138 AC_CHECK_LIB([sqlite3], [sqlite3_open], [],
139 [AC_MSG_FAILURE([have sqlite2 headers but no libsqlite3])])
Jeff Thompsond0f62e12013-10-09 17:41:25 -0700140fi
141
Jeff Thompsonf21e2242013-10-09 19:01:49 -0700142# Conditionally use the OSX Security framework .
143AC_MSG_CHECKING([for OSX Security framework])
Jeff Thompson9cf9dfb2013-10-04 16:36:52 -0700144AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
145 [[#include <CoreFoundation/CoreFoundation.h>]]
146 [[#include <Security/Security.h>]]
147 [[#include <CoreServices/CoreServices.h>]]
148 [[void test() { SecKeychainRef x; }]])
149], [
150 AC_MSG_RESULT([yes])
Jeff Thompsonf21e2242013-10-09 19:01:49 -0700151 HAVE_OSX_SECURITY=1
Jeff Thompson9cf9dfb2013-10-04 16:36:52 -0700152], [
153 AC_MSG_RESULT([no])
Jeff Thompsonf21e2242013-10-09 19:01:49 -0700154 HAVE_OSX_SECURITY=0
Jeff Thompson9cf9dfb2013-10-04 16:36:52 -0700155])
Jeff Thompsonf21e2242013-10-09 19:01:49 -0700156AC_DEFINE_UNQUOTED([HAVE_OSX_SECURITY], $HAVE_OSX_SECURITY, [1 if have the OSX framework.])
157if test "$HAVE_OSX_SECURITY" == "1" ; then
158 LIBS="$LIBS -framework Security"
159fi
Jeff Thompson9cf9dfb2013-10-04 16:36:52 -0700160
Jeff Thompsonca45e552013-06-26 17:40:06 -0700161DX_HTML_FEATURE(ON)
162DX_CHM_FEATURE(OFF)
163DX_CHI_FEATURE(OFF)
164DX_MAN_FEATURE(OFF)
165DX_RTF_FEATURE(OFF)
166DX_XML_FEATURE(OFF)
167DX_PDF_FEATURE(OFF)
168DX_PS_FEATURE(OFF)
169DX_INIT_DOXYGEN([$PACKAGE_NAME],[Doxyfile])
170
Jeff Thompson6e229042013-10-10 11:09:49 -0700171AC_CONFIG_FILES([Makefile
172 include/Makefile])
Jeff Thompsonff092f52013-06-19 13:38:12 -0700173AC_OUTPUT