1# Source of configuration for Tokyo Tyrant
2
3
4
5#================================================================
6# Generic Settings
7#================================================================
8
9# Package name
10AC_INIT(tokyotyrant, 1.1.41)
11
12# Package information
13MYLIBVER=3
14MYLIBREV=24
15MYPROTVER="0.91"
16
17# Targets
18MYHEADERFILES="ttutil.h tculog.h tcrdb.h"
19MYLIBRARYFILES="libtokyotyrant.a"
20MYLIBOBJFILES="ttutil.o tculog.o tcrdb.o myconf.o"
21MYCOMMANDFILES="ttserver ttulmgr ttultest tcrtest tcrmttest tcrmgr"
22MYINITFILES="ttservctl"
23MYMAN1FILES="ttserver.1 ttulmgr.1 ttultest.1 tcrtest.1 tcrmttest.1 tcrmgr.1"
24MYMAN3FILES="ttutil.3 tculog.3 tcrdb.3"
25MYMAN8FILES="ttservctl.8"
26MYSCREXTFILES="ext"
27MYDOCUMENTFILES="COPYING ChangeLog THANKS doc tokyotyrant.idl"
28MYPCFILES="tokyotyrant.pc"
29
30# Building flags
31MYCFLAGS="-std=c99 -Wall -fPIC -fsigned-char -O2"
32MYCPPFLAGS="-I. -I\$(INCLUDEDIR) -I$HOME/include -I/usr/local/include"
33MYCPPFLAGS="$MYCPPFLAGS -DNDEBUG -D_GNU_SOURCE=1 -D_REENTRANT -D__EXTENSIONS__"
34MYLDFLAGS="-L. -L\$(LIBDIR) -L$HOME/lib -L/usr/local/lib"
35MYCMDLDFLAGS=""
36MYRUNPATH="\$(LIBDIR)"
37MYLDLIBPATHENV="LD_LIBRARY_PATH"
38MYPOSTCMD="true"
39
40# Building paths
41PATH="$PATH:$HOME/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"
42PATH="$PATH:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/xpg4/bin:/usr/xpg6/bin:/usr/ucb"
43CPATH="$HOME/include:/usr/local/include:$CPATH"
44LIBRARY_PATH="$HOME/lib:/usr/local/lib:$LIBRARY_PATH"
45LD_LIBRARY_PATH="$HOME/lib:/usr/local/lib:$LD_LIBRARY_PATH"
46PKG_CONFIG_PATH="$HOME/lib/pkgconfig:/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH"
47export PATH CPATH LIBRARY_PATH LD_LIBRARY_PATH PKG_CONFIG_PATH
48if type pkg-config > /dev/null 2>&1
49then
50  PATH="$PATH:`pkg-config --variable=bindir tokyocabinet`"
51  CPATH="$CPATH:`pkg-config --variable=includedir tokyocabinet`"
52  LIBRARY_PATH="$LIBRARY_PATH:`pkg-config --variable=libdir tokyocabinet`"
53  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:`pkg-config --variable=libdir tokyocabinet`"
54fi
55
56
57
58#================================================================
59# Options
60#================================================================
61
62
63# Internal variables
64enables=""
65
66# Debug mode
67AC_ARG_ENABLE(debug,
68  AC_HELP_STRING([--enable-debug], [build for debugging]))
69if test "$enable_debug" = "yes"
70then
71  MYCFLAGS="-std=c99 -Wall -fPIC -pedantic -fsigned-char -g -O0"
72  MYCPPFLAGS="$MYCPPFLAGS -UNDEBUG"
73  MYCMDLDFLAGS="$MYCMDLDFLAGS -static"
74  enables="$enables (debug)"
75fi
76
77# Developping mode
78AC_ARG_ENABLE(devel,
79  AC_HELP_STRING([--enable-devel], [build for development]))
80if test "$enable_devel" = "yes"
81then
82  MYCFLAGS="-std=c99 -Wall -fPIC -pedantic -fsigned-char -g -O2 -pipe"
83  MYCPPFLAGS="$MYCPPFLAGS -UNDEBUG"
84  enables="$enables (devel)"
85fi
86
87# Profiling mode
88AC_ARG_ENABLE(profile,
89  AC_HELP_STRING([--enable-profile], [build for profiling]))
90if test "$enable_profile" = "yes"
91then
92  MYCFLAGS="-std=c99 -Wall -fPIC -pedantic -fsigned-char -g -pg -O2 -pipe"
93  enables="$enables (profile)"
94fi
95
96# Static mode
97AC_ARG_ENABLE(static,
98  AC_HELP_STRING([--enable-static], [build by static linking]))
99if test "$enable_static" = "yes"
100then
101  MYCMDLDFLAGS="$MYCMDLDFLAGS -static"
102  enables="$enables (static)"
103fi
104
105# Disable shared object
106AC_ARG_ENABLE(shared,
107  AC_HELP_STRING([--disable-shared], [avoid to build shared libraries]))
108if test "$enable_shared" = "no"
109then
110  enables="$enables (no-shared)"
111fi
112
113# Enable Lua extension
114AC_ARG_ENABLE(lua,
115  AC_HELP_STRING([--enable-lua], [build with Lua extension]))
116if test "$enable_lua" = "yes"
117then
118  enables="$enables (lua)"
119  luaver=`lua -e 'v = string.gsub(_VERSION, ".* ", ""); print(v)'`
120  MYCPPFLAGS="$MYCPPFLAGS -I/usr/include/lua$luaver -I/usr/local/include/lua$luaver"
121  MYCPPFLAGS="$MYCPPFLAGS -I/usr/include/lua -I/usr/local/include/lua -D_MYLUA"
122  MYLDFLAGS="$MYLDFLAGS -L/usr/include/lua$luaver -L/usr/local/include/lua$luaver"
123  MYLDFLAGS="$MYLDFLAGS -L/usr/include/lua -L/usr/local/include/lua"
124  CPATH="$CPATH:/usr/include/lua$luaver:/usr/local/include/lua$luaver"
125  CPATH="$CPATH:/usr/include/lua:/usr/local/include/lua"
126  LIBRARY_PATH="$LIBRARY_PATH:/usr/lib/lua$luaver:/usr/local/lib/lua$luaver"
127  LIBRARY_PATH="$LIBRARY_PATH:/usr/lib/lua:/usr/local/lib/lua"
128  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/include/lua$luaver:/usr/local/include/lua$luaver"
129  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/include/lua:/usr/local/include/lua"
130fi
131
132# Specify the installation path of Tokyo Cabinet
133AC_ARG_WITH(tc,
134  AC_HELP_STRING([--with-tc=DIR], [search DIR/include and DIR/lib for Tokyo Cabinet]))
135if test -n "$with_tc"
136then
137  MYCPPFLAGS="$MYCPPFLAGS -I$with_tc/include"
138  MYLDFLAGS="$MYLDFLAGS -L$with_tc/lib"
139  MYRUNPATH="$MYRUNPATH:$with_tc/lib"
140  CPATH="$CPATH:$with_tc/include"
141  LIBRARY_PATH="$LIBRARY_PATH:$with_tc/lib"
142  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$with_tc/lib"
143fi
144
145# Specify the installation path of ZLIB
146AC_ARG_WITH(zlib,
147  AC_HELP_STRING([--with-zlib=DIR], [search DIR/include and DIR/lib for ZLIB]))
148if test -n "$with_zlib"
149then
150  MYCPPFLAGS="$MYCPPFLAGS -I$with_zlib/include"
151  MYLDFLAGS="$MYLDFLAGS -L$with_zlib/lib"
152  MYRUNPATH="$MYRUNPATH:$with_zlib/lib"
153  CPATH="$CPATH:$with_zlib/include"
154  LIBRARY_PATH="$LIBRARY_PATH:$with_zlib/lib"
155  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$with_zlib/lib"
156fi
157
158# Specify the installation path of BZIP2
159AC_ARG_WITH(bzip,
160  AC_HELP_STRING([--with-bzip=DIR], [search DIR/include and DIR/lib for BZIP2]))
161if test -n "$with_bzip"
162then
163  MYCPPFLAGS="$MYCPPFLAGS -I$with_bzip/include"
164  MYLDFLAGS="$MYLDFLAGS -L$with_bzip/lib"
165  MYRUNPATH="$MYRUNPATH:$with_bzip/lib"
166  CPATH="$CPATH:$with_bzip/include"
167  LIBRARY_PATH="$LIBRARY_PATH:$with_bzip/lib"
168  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$with_bzip/lib"
169fi
170
171# Specify the installation path of Lua
172AC_ARG_WITH(lua,
173  AC_HELP_STRING([--with-lua=DIR], [search DIR/include and DIR/lib for Lua]))
174if test -n "$with_lua"
175then
176  MYCPPFLAGS="$MYCPPFLAGS -I$with_lua/include"
177  MYLDFLAGS="$MYLDFLAGS -L$with_lua/lib"
178  MYRUNPATH="$MYRUNPATH:$with_lua/lib"
179  CPATH="$CPATH:$with_lua/include"
180  LIBRARY_PATH="$LIBRARY_PATH:$with_lua/lib"
181  LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$with_lua/lib"
182fi
183
184# Messages
185printf '#================================================================\n'
186printf '# Configuring Tokyo Tyrant version %s%s.\n' "$PACKAGE_VERSION" "$enables"
187printf '#================================================================\n'
188
189
190
191#================================================================
192# Checking Commands and Libraries
193#================================================================
194
195# C compiler
196AC_PROG_CC
197
198# Reset variables
199if test "$GCC" != "yes"
200then
201  AC_MSG_WARN([another compiler except for GCC was detected])
202  MYCFLAGS=""
203fi
204test -n "$CFLAGS" && MYCFLAGS="$CFLAGS $MYCFLAGS"
205test -n "$CPPFLAGS" && MYCPPFLAGS="$CPPFLAGS $MYCPPFLAGS"
206test -n "$LDFLAGS" && MYLDFLAGS="$LDFLAGS $MYLDFLAGS"
207
208# Byte order
209AC_C_BIGENDIAN(MYCPPFLAGS="$MYCPPFLAGS -D_MYBIGEND")
210
211# Underlying libraries
212AC_CHECK_LIB(c, main)
213AC_CHECK_LIB(m, main)
214AC_CHECK_LIB(pthread, main)
215AC_CHECK_LIB(rt, main)
216AC_CHECK_LIB(dl, main)
217AC_CHECK_LIB(nsl, main)
218AC_CHECK_LIB(socket, main)
219AC_CHECK_LIB(resolv, main)
220AC_CHECK_LIB(z, main)
221AC_CHECK_LIB(bz2, main)
222AC_CHECK_LIB(tokyocabinet, main)
223if test "$enable_lua" = "yes"
224then
225  AC_CHECK_LIB(lua, main)
226  AC_CHECK_LIB(lua$luaver, main)
227fi
228AC_CHECK_LIB(tokyotyrant, main, AC_MSG_WARN([old version of Tokyo Tyrant was detected]))
229
230# Necessary headers
231AC_CHECK_HEADER(stdlib.h, true, AC_MSG_ERROR([stdlib.h is required]))
232AC_CHECK_HEADER(stdint.h, true, AC_MSG_ERROR([stdint.h is required]))
233AC_CHECK_HEADER(unistd.h, true, AC_MSG_ERROR([unistd.h is required]))
234AC_CHECK_HEADER(pthread.h, true, AC_MSG_ERROR([pthread.h is required]))
235AC_CHECK_HEADER(tcutil.h, true, AC_MSG_ERROR([tcutil.h is required]))
236if test "$enable_lua" = "yes"
237then
238  AC_CHECK_HEADER(lua.h, true, AC_MSG_ERROR([lua.h is required]))
239fi
240
241# Shared libraries
242if test "$enable_shared" != "no" && test "$enable_profile" != "yes"
243then
244  if uname | grep Darwin >/dev/null
245  then
246    MYLIBRARYFILES="$MYLIBRARYFILES libtokyotyrant.$MYLIBVER.$MYLIBREV.0.dylib"
247    MYLIBRARYFILES="$MYLIBRARYFILES libtokyotyrant.$MYLIBVER.dylib"
248    MYLIBRARYFILES="$MYLIBRARYFILES libtokyotyrant.dylib"
249    MYLIBRARYFILES="$MYLIBRARYFILES ttskelmock.bundle ttskeldir.bundle ttskelproxy.bundle"
250    MYLIBRARYFILES="$MYLIBRARYFILES ttskelnull.bundle"
251    MYLDLIBPATHENV="DYLD_LIBRARY_PATH"
252  else
253    MYLIBRARYFILES="$MYLIBRARYFILES libtokyotyrant.so.$MYLIBVER.$MYLIBREV.0"
254    MYLIBRARYFILES="$MYLIBRARYFILES libtokyotyrant.so.$MYLIBVER"
255    MYLIBRARYFILES="$MYLIBRARYFILES libtokyotyrant.so"
256    MYLIBRARYFILES="$MYLIBRARYFILES ttskelmock.so ttskeldir.so ttskelproxy.so"
257    MYLIBRARYFILES="$MYLIBRARYFILES ttskelnull.so"
258  fi
259fi
260
261
262
263#================================================================
264# Generic Settings
265#================================================================
266
267# Export variables
268AC_SUBST(MYLIBVER)
269AC_SUBST(MYLIBREV)
270AC_SUBST(MYPROTVER)
271AC_SUBST(MYHEADERFILES)
272AC_SUBST(MYLIBRARYFILES)
273AC_SUBST(MYLIBOBJFILES)
274AC_SUBST(MYCOMMANDFILES)
275AC_SUBST(MYINITFILES)
276AC_SUBST(MYMAN1FILES)
277AC_SUBST(MYMAN3FILES)
278AC_SUBST(MYMAN8FILES)
279AC_SUBST(MYSCREXTFILES)
280AC_SUBST(MYDOCUMENTFILES)
281AC_SUBST(MYPCFILES)
282AC_SUBST(MYCFLAGS)
283AC_SUBST(MYCPPFLAGS)
284AC_SUBST(MYLDFLAGS)
285AC_SUBST(MYCMDLDFLAGS)
286AC_SUBST(MYRUNPATH)
287AC_SUBST(MYLDLIBPATHENV)
288AC_SUBST(MYPOSTCMD)
289
290# Targets
291AC_OUTPUT(Makefile tokyotyrant.pc)
292
293# Messages
294printf '#================================================================\n'
295printf '# Ready to make.\n'
296printf '#================================================================\n'
297
298
299
300# END OF FILE
301