1#                                               -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ(2.60)
5AC_INIT([MFS], [2.0.91], [bugs@moosefs.com], [moosefs])
6release=1
7
8dnl AC_CONFIG_SRCDIR([MFSCommunication.h])
9AC_CONFIG_HEADER([config.h])
10AC_CANONICAL_TARGET
11AM_INIT_AUTOMAKE([1.14 foreign subdir-objects])
12AM_SILENT_RULES([yes])
13AC_CONFIG_MACRO_DIRS([m4])
14
15versmaj=$(echo $PACKAGE_VERSION | cut -d. -f1)
16versmid=$(echo $PACKAGE_VERSION | cut -d. -f2)
17versmin=$(echo $PACKAGE_VERSION | cut -d. -f3)
18AC_DEFINE_UNQUOTED([VERSMAJ], [$versmaj], [Major MFS version])
19AC_DEFINE_UNQUOTED([VERSMID], [$versmid], [Middle MFS version])
20AC_DEFINE_UNQUOTED([VERSMIN], [($versmin)*2], [Minor MFS version])
21AC_DEFINE_UNQUOTED([VERSHEX], [(($versmaj)*0x10000+($versmid)*0x100+($versmin)*2)], [Full MFS version as a hex number])
22#AC_DEFINE_UNQUOTED([VERSMIN], [$versmin], [Minor MFS version])
23#AC_DEFINE_UNQUOTED([VERSHEX], [(($versmaj)*0x10000+($versmid)*0x100+($versmin))], [Full MFS version as a hex number])
24AC_DEFINE_UNQUOTED([RELEASE], [$release], [Release number])
25AC_DEFINE_UNQUOTED([VERSION2INT(maj,med,min)], [((maj)*0x10000+(med)*0x100+(((maj)>1)?((min)*2):(min)))], [Version converter from human readable format to binary format used in MFS packets])
26AC_DEFINE_UNQUOTED([VERSSTR], ["${PACKAGE_VERSION}-${release}"], [MFS version - string])
27
28# Checks for programs.
29AC_PROG_CC(mycc gcc llvm-gcc clang)
30dnl AC_PROG_CXX(clang++ llvm-g++ g++)
31AC_PROG_LN_S
32AC_PROG_LIBTOOL
33
34AC_ARG_ENABLE([addresssanitizer], [AS_HELP_STRING([--enable-addresssanitizer], [Build with address sanitizer on (debug only)])], [ enable_addresssanitizer=yes ])
35AC_ARG_ENABLE([gperftools], [AS_HELP_STRING([--enable-gperftools], [Build with google perftools on (debug only)])], [ enable_gperftools=yes ])
36AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug], [Build version without optimizations])], [ enable_debug=yes ])
37
38if test "X$MFS_FORCE_DEBUG" = "XYES"; then
39	enable_debug=yes
40fi
41
42if test "$GCC" = "yes"; then
43	if test "$enable_addresssanitizer" = "yes" -o "$enable_gperftools" = "yes" -o "$enable_debug" = "yes" ; then
44		CFLAGS="-O0 -fno-omit-frame-pointer -g -DMFSDEBUG  -std=c99 -Wall -Wextra -Wshadow -pedantic -fwrapv"
45	else
46		CFLAGS="-O2 $CFLAGS -g -std=c99 -Wall -Wextra -Wshadow -pedantic -fwrapv"
47	fi
48	if test "$enable_addresssanitizer" = "yes"; then
49		CFLAGS="$CFLAGS -fsanitize=address"
50	fi
51	if test "$enable_gperftools" = "yes"; then
52		CPPFLAGS="$CPPFLAGS -DGPERFTOOLS"
53		LDFLAGS="$LDFLAGS -L/opt/local/lib -lprofiler"
54	fi
55fi
56
57case $target_os in
58  *linux*)
59	fuse=maybe
60	CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -DDEFAULT_SUGID_CLEAR_MODE_EXT"
61	;;
62  *solaris*)
63	# OpenSolaris has fuse available and is still identified as "solaris"
64	fuse=maybe
65	CPPFLAGS="$CPPFLAGS -D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS -DDEFAULT_SUGID_CLEAR_MODE_OSX"
66	;;
67  *darwin*)
68	fuse=maybe
69	# MacFUSE installs to different prefix than pkgconfig
70	if test -f /usr/local/lib/pkgconfig/fuse.pc ; then
71		PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
72		export PKG_CONFIG_PATH
73	fi
74	CPPFLAGS="$CPPFLAGS -DDEFAULT_SUGID_CLEAR_MODE_OSX"
75	;;
76  *bsd*)
77	fuse=maybe
78	CPPFLAGS="$CPPFLAGS -DDEFAULT_SUGID_CLEAR_MODE_BSD"
79	;;
80  *)
81	fuse=no
82	;;
83esac
84
85AX_PTHREAD(, [AC_MSG_ERROR([Posix threads not found])])
86dnl AC_CHECK_LIB([pthread], [pthread_create])
87
88# Checks for libraries.
89
90# Solaris:
91AC_SEARCH_LIBS([socket], [socket])
92AC_SEARCH_LIBS([getaddrinfo], [nsl])
93# FreeBSD:
94AC_SEARCH_LIBS([kvm_open], [kvm])
95# All:
96AC_SEARCH_LIBS([round], [m])
97# Linux:
98AC_SEARCH_LIBS([clock_gettime], [rt])
99
100# Checks for header files.
101AC_HEADER_DIRENT
102AC_HEADER_STDC
103AC_HEADER_SYS_WAIT
104AC_CHECK_HEADERS([arpa/inet.h fcntl.h inttypes.h limits.h netdb.h netinet/in.h stddef.h stdlib.h string.h sys/socket.h sys/statvfs.h sys/time.h syslog.h unistd.h],, [AC_MSG_ERROR([One of required headers was not found])])
105
106# Checks for typedefs, structures, and compiler characteristics.
107AC_C_CONST
108AC_C_BIGENDIAN
109AC_C_INLINE
110AC_C_VOLATILE
111AC_C_FLEXIBLE_ARRAY_MEMBER
112AC_HEADER_STDBOOL
113AC_TYPE_INT8_T
114AC_TYPE_UINT8_T
115AC_TYPE_INT16_T
116AC_TYPE_UINT16_T
117AC_TYPE_INT32_T
118AC_TYPE_UINT32_T
119AC_TYPE_INT64_T
120AC_TYPE_UINT64_T
121AC_TYPE_UID_T
122AC_TYPE_MODE_T
123AC_TYPE_OFF_T
124AC_TYPE_PID_T
125AC_TYPE_SIZE_T
126AC_STRUCT_ST_BLOCKS
127AC_CHECK_MEMBERS([struct stat.st_rdev])
128AC_CHECK_MEMBERS([struct stat.st_birthtime])
129AC_CHECK_MEMBERS([struct stat.st_blksize])
130AC_CHECK_MEMBERS([struct stat.st_flags])
131AC_CHECK_MEMBER([struct sockaddr_in.sin_len], [ AC_DEFINE(HAVE_SOCKADDR_SIN_LEN, 1, [Do we have sockaddr.sin_len?]) ], [], [
132#include <sys/types.h>
133#include <sys/socket.h>
134#include <netinet/in.h>
135])
136
137AC_HEADER_TIME
138AC_STRUCT_TM
139AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,, [
140#ifdef TM_IN_SYS_TIME
141#  include <sys/time.h>
142#else
143#  include <time.h>
144#endif
145])
146
147AC_SYS_LARGEFILE
148
149# Checks for library functions.
150AC_FUNC_STRERROR_R
151AC_FUNC_CLOSEDIR_VOID
152AC_FUNC_FORK
153AC_FUNC_LSTAT
154AC_FUNC_MALLOC
155AC_FUNC_MEMCMP
156AC_FUNC_REALLOC
157dnl AC_FUNC_SELECT_ARGTYPES
158AC_FUNC_STAT
159# required functions
160AC_CHECK_FUNCS([atexit bzero ftruncate getaddrinfo getpass gettimeofday memmove memset mkdir realpath poll socket strchr strdup strtol strtoul ftello fseeko],, [AC_MSG_ERROR([One of required functions was not found])])
161
162# optional temporary file function
163AC_CHECK_FUNCS([mkstemp mktemp])
164
165# optional error conversion functions
166AC_CHECK_FUNCS([strerror perror])
167
168# optional system functions
169AC_CHECK_FUNCS([dup2 mlockall getcwd])
170
171# check for mmap support
172AC_CHECK_HEADERS([sys/mman.h], [AC_CHECK_FUNCS([mmap])])
173dnl AC_CHECK_HEADERS([sys/mman.h])
174
175# optional I/O functions
176AC_CHECK_FUNCS([pread pwrite readv writev])
177
178# optional resource usage function and headers
179AC_CHECK_FUNCS([getrusage setitimer])
180AC_CHECK_HEADERS([sys/rusage.h sys/resource.h])
181AC_CHECK_MEMBERS([struct rusage.ru_maxrss],,, [
182#include <sys/time.h>
183#ifdef HAVE_GETRUSAGE
184#  ifdef HAVE_SYS_RESOURCE_H
185#    include <sys/resource.h>
186#  endif
187#  ifdef HAVE_SYS_RUSAGE_H
188#    include <sys/rusage.h>
189#  endif
190#endif
191])
192
193# optional clock related headers and functions
194AC_CHECK_HEADERS([mach/mach.h mach/mach_time.h], [AC_CHECK_FUNCS([mach_absolute_time mach_timebase_info])])
195AC_CHECK_FUNCS([clock_gettime])
196
197# optional getgroups headers
198AC_CHECK_HEADERS([sys/sysctl.h])
199
200# glibc tuning
201AC_CHECK_HEADERS([malloc.h])
202AC_CHECK_FUNCS([mallopt])
203
204# core dumps
205AC_CHECK_HEADERS([sys/prctl.h], [AC_CHECK_FUNCS([prctl])])
206
207dnl optional thread functions
208dnl AC_CHECK_FUNCS([pthread_spin_lock])
209
210dnl optional interfaces (Linux, FreeBSD)
211dnl AC_CHECK_FUNCS([fopencookie funopen])
212
213AC_LANG([C])
214
215AC_MSG_CHECKING([for __builtin_bswap16])
216AC_RUN_IFELSE(
217	[AC_LANG_PROGRAM([#include <inttypes.h>],[uint16_t x = __builtin_bswap16(0x1234)])],
218	[
219	AC_MSG_RESULT(yes)
220	AC_DEFINE_UNQUOTED([BSWAP16(x)], [__builtin_bswap16(x)], [bswap16])
221	],[
222	AC_MSG_RESULT(no)
223	AC_DEFINE_UNQUOTED([BSWAP16(x)], [((((x)<<8)&0xFF00) | (((x)>>8)&0xFF))], [bswap16])
224	])
225
226AC_MSG_CHECKING([for __builtin_bswap32])
227AC_RUN_IFELSE(
228	[AC_LANG_PROGRAM([#include <inttypes.h>],[uint32_t x = __builtin_bswap32(0x12345678)])],
229	[
230	AC_MSG_RESULT(yes)
231	AC_DEFINE_UNQUOTED([BSWAP32(x)], [__builtin_bswap32(x)], [bswap32])
232	],[
233	AC_MSG_RESULT(no)
234	AC_DEFINE_UNQUOTED([BSWAP32(x)], [((((x)<<24)&0xFF000000) | (((x)<<8)&0xFF0000) | (((x)>>8)&0xFF00) | (((x)>>24)&0xFF))], [bswap32])
235	])
236
237AC_MSG_CHECKING([for __builtin_bswap64])
238AC_RUN_IFELSE(
239	[AC_LANG_PROGRAM([#include <inttypes.h>],[uint64_t x = __builtin_bswap64(0x123456789ABCDEF0)])],
240	[
241	AC_MSG_RESULT(yes)
242	AC_DEFINE_UNQUOTED([BSWAP64(x)], [__builtin_bswap64(x)], [bswap64])
243	],[
244	AC_MSG_RESULT(no)
245	AC_DEFINE_UNQUOTED([BSWAP64(x)], [((((x)<<56)&0xFF00000000000000) | (((x)<<40)&0xFF000000000000) | (((x)<<24)&0xFF0000000000) | (((x)<<8)&0xFF00000000) | (((x)>>8)&0xFF000000) | (((x)>>24)&0xFF0000) | (((x)>>40)&0xFF00) | (((x)>>56)&0xFF))], [bswap64])
246	])
247
248
249# Check for Mac OS X's broken poll
250if test "$ac_cv_func_poll" = "yes"; then
251AC_MSG_CHECKING([if poll works on devices])
252AC_RUN_IFELSE(
253	[AC_LANG_PROGRAM([[
254#include <stdlib.h>
255#include <fcntl.h>
256#include <poll.h>
257]],[[
258int main(void) {
259	struct pollfd fds[1];
260	int fd;
261	fd = open("/dev/null", 1);
262	fds[0].fd = fd;
263	fds[0].events = POLLIN;
264	fds[0].revents = 0;
265	if (poll(fds, 1, 0) < 0 || (fds[0].revents & POLLNVAL) != 0) {
266		exit(1); /* Does not work for devices -- fail */
267	}
268		exit(0);
269	}
270]])],[ac_have_working_poll=yes],[ac_have_working_poll=no])
271if test "$ac_have_working_poll" = "no" ; then
272	AC_DEFINE_UNQUOTED(BROKEN_POLL, 1,[poll does not work properly on devices])
273fi
274AC_MSG_RESULT($ac_have_working_poll)
275fi dnl poll() was found
276
277
278AC_MSG_CHECKING([for __sync_OP_and_fetch])
279AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>]],
280	       [[unsigned long long int foo, bar; bar = __sync_add_and_fetch(&foo, 1); bar = __sync_sub_and_fetch(&foo, 1); bar = __sync_or_and_fetch(&foo, 1); bar = __sync_and_and_fetch(&foo, 1); bar = __sync_xor_and_fetch(&foo, 1); ]])],
281	       [ac_have___sync_op_and_fetch=yes], [ac_have___sync_op_and_fetch=no])
282if test "$ac_have___sync_op_and_fetch" = "yes" ; then
283	AC_DEFINE_UNQUOTED(HAVE___SYNC_OP_AND_FETCH, 1, [have __sync_OP_and_fetch intrinsics])
284fi
285AC_MSG_RESULT($ac_have___sync_op_and_fetch)
286
287
288AC_MSG_CHECKING([for __sync_fetch_and_OP])
289AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>]],
290	       [[unsigned long long int foo, bar; bar = __sync_fetch_and_add(&foo, 1); bar = __sync_fetch_and_sub(&foo, 1); bar = __sync_fetch_and_or(&foo, 1); bar = __sync_fetch_and_and(&foo, 1); bar = __sync_fetch_and_xor(&foo, 1); ]])],
291	       [ac_have___sync_fetch_and_op=yes], [ac_have___sync_fetch_and_op=no])
292if test "$ac_have___sync_fetch_and_op" = "yes" ; then
293	AC_DEFINE_UNQUOTED(HAVE___SYNC_FETCH_AND_OP, 1, [have __sync_fetch_and_OP intrinsics])
294fi
295AC_MSG_RESULT($ac_have___sync_fetch_and_op)
296
297
298AC_CHECK_PROGS([KILL], [kill])
299PKG_PROG_PKG_CONFIG
300PKG_CHECK_MODULES([SYSTEMD], [systemd], [
301	systemdunitdir="`$PKG_CONFIG --variable=systemdsystemunitdir systemd`"
302], [
303	systemdunitdir=no
304])
305AC_SUBST([systemdunitdir])
306
307dnl this is work in progress
308dnl AC_ARG_ENABLE([lightmfs], [AS_HELP_STRING([--enable-lightmfs], [Build special version])])
309
310AC_ARG_ENABLE([generalmans],
311	[AS_HELP_STRING([--disable-general-mans], [Do not install general mans])])
312AC_ARG_ENABLE([mfsmaster],
313	[AS_HELP_STRING([--disable-mfsmaster], [Do not build mfsmaster])])
314AC_ARG_ENABLE([mfsmetalogger],
315	[AS_HELP_STRING([--disable-mfsmetalogger], [Do not build mfsmetalogger])])
316AC_ARG_ENABLE([mfssupervisor],
317	[AS_HELP_STRING([--disable-mfssupervisor], [Do not build mfssupervisor])])
318AC_ARG_ENABLE([mfschunkserver],
319	[AS_HELP_STRING([--disable-mfschunkserver], [Do not build mfschunkserver])])
320AC_ARG_ENABLE([mfsmount],
321	[AS_HELP_STRING([--disable-mfsmount], [Do not build mfsmount])])
322AC_ARG_ENABLE([mfscgi],
323	[AS_HELP_STRING([--disable-mfscgi], [Do not install CGI scripts])])
324AC_ARG_ENABLE([mfscli],
325	[AS_HELP_STRING([--disable-mfscli], [Do not install CLI script])])
326AC_ARG_ENABLE([mfscgiserv],
327	[AS_HELP_STRING([--disable-mfscgiserv], [Do not install CGI server])])
328AC_ARG_ENABLE([mfsnetdump],
329	[AS_HELP_STRING([--disable-mfsnetdump], [Do not build mfsnetdump])])
330AC_ARG_WITH([mfscgi-dir],
331	[AS_HELP_STRING([--with-mfscgi-dir=CGIDIR], [Choose CGI directory (default=DATADIR/mfscgi)])],
332	[CGIDIR=$withval],
333	[CGIDIR=$datadir/mfscgi])
334AC_ARG_WITH([mfscgiserv-dir],
335	[AS_HELP_STRING([--with-mfscgiserv-dir=CGISERVDIR], [Choose CGI directory (default=SBINDIR)])],
336	[CGISERVDIR=$withval],
337	[CGISERVDIR=$sbindir])
338AC_ARG_WITH([zlib],
339	[AS_HELP_STRING([--without-zlib], [Do not use zlib for PNG compression])],
340	[use_zlib=$withval],
341	[use_zlib=yes])
342AC_ARG_WITH([systemdsystemunitdir],
343	[AS_HELP_STRING([--with-systemdsystemunitdir=PATH], [Path to install systemd units (no=omit)])],
344	[systemdunitdir=$withval])
345
346AM_CONDITIONAL([WITH_SYSTEMD], [test "$systemdunitdir" != "no"])
347
348if test "$enable_mfscgi" != "no" -o "$enable_mfscli" != "no" -o "$enable_mfscgiserv" != "no"; then
349	AM_PATH_PYTHON([2.5],,[:])
350	if test "$PYTHON" = ":"; then
351		enable_mfscgi=no
352		enable_mfscli=no
353		enable_mfssgiserv=no
354		PYTHON="/usr/bin/env python"
355	fi
356fi
357dnl if test "$enable_mfscgi" = "no"; then
358dnl	enable_mfscgiserv=no
359dnl fi
360AM_CONDITIONAL([WITH_PYTHON], [test "$enable_mfscgi" != "no" -o "$enable_mfscli" != "no" -o "$enable_mfscgiserv" != "no"])
361AM_CONDITIONAL([BUILD_SCRIPTS], [test "$enable_mfscgi" != "no" -o "$enable_mfscli" != "no" -o "$enable_mfscgiserv" != "no"])
362AM_CONDITIONAL([INSTALL_CGI], [test "$enable_mfscgi" != "no"])
363AM_CONDITIONAL([INSTALL_CLI], [test "$enable_mfscli" != "no"])
364AM_CONDITIONAL([INSTALL_CGISERV], [test "$enable_mfscgiserv" != "no"])
365AC_SUBST([CGIDIR])
366AC_SUBST([CGISERVDIR])
367AC_SUBST([PYTHON])
368
369AM_CONDITIONAL([BUILD_MASTER], [test "$enable_mfsmaster" != "no"])
370AM_CONDITIONAL([BUILD_METALOGGER], [test "$enable_mfsmetalogger" != "no"])
371AM_CONDITIONAL([BUILD_SUPERVISOR], [test "$enable_mfssupervisor" != "no"])
372AM_CONDITIONAL([BUILD_CHUNKSERVER], [test "$enable_mfschunkserver" != "no"])
373
374
375pcap=no
376AC_SEARCH_LIBS([pcap_lib_version],[pcap],[ AC_CHECK_HEADERS([pcap.h],[pcap=yes]) ])
377
378if test "$pcap" != "yes" -a "enable_mfsnetdump" != "no"; then
379	echo "****** mfsnetdump disabled ******"
380	echo "* mfsnetdump needs pcap library *"
381	echo "*********************************"
382	enable_mfsnetdump=no
383fi
384
385AM_CONDITIONAL([BUILD_NETDUMP], [test "$enable_mfsnetdump" != "no"])
386
387if test "$fuse" != "no" -a "enable_mfsmount" != "no"; then
388	if test -n "$PKG_CONFIG"; then
389		PKG_CHECK_MODULES([FUSE], [fuse >= 2.6], , [fuse=no])
390	else
391		echo "no pkg-config - can't check FUSE version"
392		fuse=no
393	fi
394fi
395if test "$fuse" = "no"; then
396	if test "$enable_mfsmount" = "yes"; then
397		if test -n "$PKG_CONFIG"; then
398			AC_MSG_ERROR([mfsmount build was forced, but fuse library is too old or not installed])
399		else
400			AC_MSG_ERROR([mfsmount build was forced, but pkg-config not installed])
401		fi
402	else
403		if test "$enable_mfsmount" != "no"; then
404			if test -n "$PKG_CONFIG"; then
405				echo "******************************** mfsmount disabled ********************************"
406				echo "* fuse library is too old or not installed - mfsmount needs version 2.6 or higher *"
407				echo "***********************************************************************************"
408			else
409				echo "**** mfsmount disabled *****"
410				echo "* pkg-config not installed *"
411				echo "****************************"
412			fi
413		fi
414	fi
415fi
416if test "$fuse" != "no" ; then
417	case $target_os in
418		freebsd6*)
419		echo "*************************************************************************"
420		echo "* Dynamic linker in FreeBSD 6.x doesn't support symbol versioning.      *"
421		echo "* It causes calling wrong functions from libfuse and crashing mfsmount. *"
422		echo "* Due to above switching libfuse from dynamic linking to static.        *"
423		echo "*************************************************************************"
424		FUSE_LIBS="-pthread /usr/local/lib/libfuse.a /usr/local/lib/libiconv.a"
425		AC_SUBST(FUSE_LIBS)
426		;;
427	esac
428fi
429
430AC_CHECK_LIB(fuse, fuse_version, [AC_DEFINE([HAVE_FUSE_VERSION],[1],[libfuse has function fuse_version])])
431
432AM_CONDITIONAL([BUILD_MOUNT], [test "$fuse" != "no" -a "$enable_mfsmount" != "no"])
433
434AM_CONDITIONAL([CREATE_ETC_MFS], [test "$enable_mfsmaster" != "no" -o "$enable_mfsmetalogger" != "no" -o "$enable_mfschunkserver" != "no" -o "$enable_mfsmount" != "no"])
435AM_CONDITIONAL([CREATE_DATA_DIR], [test "$enable_mfsmaster" != "no" -o "$enable_mfsmetalogger" != "no" -o "$enable_mfschunkserver" != "no" -o "$enable_mfscgiserv" != "no"])
436
437if test "$use_zlib" = "yes"; then
438
439	zlib=no
440	AC_CHECK_LIB(z, zlibVersion, [ AC_CHECK_HEADERS(zlib.h,[zlib=yes]) ])
441
442	if test "$zlib" = "no"; then
443		ZLIB_LIBS=
444		if test "$enable_mfsmaster" != "no" -o "$enable_mfschunkserver" != "no"; then
445			AC_MSG_ERROR([zlib development library not found])
446		fi
447	else
448		ZLIB_LIBS=-lz
449	fi
450	AC_SUBST([ZLIB_LIBS])
451fi
452
453test "$prefix" = "NONE" && prefix=$ac_default_prefix
454test "$exec_prefix" = "NONE" && exec_prefix=$prefix
455eval DATA_PATH=${localstatedir}/mfs
456eval ETC_PATH=${sysconfdir}
457eval BIN_PATH=${bindir}
458eval SBIN_PATH=${sbindir}
459# use system /var/run when using system-wide installation prefix
460if test "${prefix#/usr}" != "${prefix}" -o "${prefix#/opt}" != "${prefix}"; then
461	RUN_PATH=/var/run/mfs
462else
463	RUN_PATH=${prefix}/var/run/mfs
464fi
465AC_SUBST([DATA_PATH])
466AC_SUBST([ETC_PATH])
467AC_SUBST([BIN_PATH])
468AC_SUBST([SBIN_PATH])
469AC_SUBST([RUN_PATH])
470AC_DEFINE_UNQUOTED([PREFIX], ["${prefix}"], [Installation prefix])
471AC_DEFINE_UNQUOTED([ETC_PATH], ["$ETC_PATH"], [Configuration directory])
472AC_DEFINE_UNQUOTED([DATA_PATH], ["$DATA_PATH"], [Data directory])
473AC_DEFINE_UNQUOTED([RUN_PATH], ["$RUN_PATH"], [PID file directory])
474
475DEFAULT_USER=nobody
476DEFAULT_GROUP=
477AC_ARG_WITH([default-user],
478	[AS_HELP_STRING([--with-default-user=USER], [Choose default user to run daemons as])],
479	[DEFAULT_USER=$withval])
480AC_ARG_WITH([default-group],
481	[AS_HELP_STRING([--with-default-group=GROUP], [Choose default group to run daemons as])],
482	[DEFAULT_GROUP=$withval])
483AC_DEFINE_UNQUOTED([DEFAULT_USER], ["$DEFAULT_USER"], [Default working user])
484AC_DEFINE_UNQUOTED([DEFAULT_GROUP], ["$DEFAULT_GROUP"], [Default working group])
485AC_SUBST([DEFAULT_USER])
486AC_SUBST([DEFAULT_GROUP])
487
488DEFAULT_PORTBASE=9400
489DEFAULT_MASTERNAME=mfsmaster
490AC_ARG_WITH([default-portbase],
491	[AS_HELP_STRING([--with-default-portbase=NUMBER], [Default communiaction port base (default=9400, which means ports 9419,9420,etc.)])],
492	[DEFAULT_PORTBASE=$withval])
493AC_ARG_WITH([default-mastername],
494	[AS_HELP_STRING([--with-default-mastername=MASTER_DNS_NAME], [Defines default DNS name pointing to all masters (default=mfsmaster)])],
495	[DEFAULT_MASTERNAME=$withval])
496DEFAULT_MASTER_CONTROL_PORT=$((DEFAULT_PORTBASE+19))
497DEFAULT_MASTER_CS_PORT=$((DEFAULT_PORTBASE+20))
498DEFAULT_MASTER_CLIENT_PORT=$((DEFAULT_PORTBASE+21))
499DEFAULT_CS_DATA_PORT=$((DEFAULT_PORTBASE+22))
500DEFAULT_CGISERV_HTTP_PORT=$((DEFAULT_PORTBASE+25))
501AC_DEFINE_UNQUOTED([DEFAULT_PORTBASE], [$DEFAULT_PORTBASE], [Default port base])
502AC_DEFINE_UNQUOTED([DEFAULT_MASTER_CONTROL_PORT], ["$DEFAULT_MASTER_CONTROL_PORT"], [Default master command port])
503AC_DEFINE_UNQUOTED([DEFAULT_MASTER_CS_PORT], ["$DEFAULT_MASTER_CS_PORT"], [Default master chunkserver port])
504AC_DEFINE_UNQUOTED([DEFAULT_MASTER_CLIENT_PORT], ["$DEFAULT_MASTER_CLIENT_PORT"], [Default master client port])
505AC_DEFINE_UNQUOTED([DEFAULT_CS_DATA_PORT], ["$DEFAULT_CS_DATA_PORT"], [Default chunkserver data port])
506AC_DEFINE_UNQUOTED([DEFAULT_CGISERV_HTTP_PORT], ["$DEFAULT_CGISERV_HTTP_PORT"], [Default cgiserver http port])
507AC_DEFINE_UNQUOTED([DEFAULT_MASTERNAME], ["$DEFAULT_MASTERNAME"], [Default master name])
508AC_SUBST([DEFAULT_PORTBASE])
509AC_SUBST([DEFAULT_MASTER_CONTROL_PORT])
510AC_SUBST([DEFAULT_MASTER_CS_PORT])
511AC_SUBST([DEFAULT_MASTER_CLIENT_PORT])
512AC_SUBST([DEFAULT_CS_DATA_PORT])
513AC_SUBST([DEFAULT_CGISERV_HTTP_PORT])
514AC_SUBST([DEFAULT_MASTERNAME])
515
516if test "$enable_lightmfs" = "yes"; then
517	PROTO_BASE=65536
518	LIGHT_MFS=1
519else
520	PROTO_BASE=0
521	LIGHT_MFS=0
522fi
523AC_SUBST([PROTO_BASE])
524AC_SUBST([LIGHT_MFS])
525AC_DEFINE_UNQUOTED([PROTO_BASE], [$PROTO_BASE], [Base value for protocol commands])
526AC_DEFINE_UNQUOTED([LIGHT_MFS], [$LIGHT_MFS], [Build light version])
527
528AC_SUBST([release])
529
530AC_CONFIG_FILES([Makefile
531		mfsmanpages/Makefile
532		mfschunkserver/Makefile
533		mfsscripts/Makefile
534		mfsdata/Makefile
535		mfsmaster/Makefile
536		mfsmetadump/Makefile
537		mfsmetalogger/Makefile
538		mfssupervisor/Makefile
539		mfsmount/Makefile
540		mfsnetdump/Makefile
541		mfstests/Makefile
542		systemd/Makefile
543		mfsscripts/mfscli.py
544		mfsscripts/chart.cgi
545		mfsscripts/index.html
546		mfsscripts/mfscgiserv.py
547		mfsdata/mfschunkserver.cfg
548		mfsdata/mfsmaster.cfg
549		mfsdata/mfsmetalogger.cfg
550		mfsdata/mfsmount.cfg
551		systemd/moosefs-cgiserv.service
552		systemd/moosefs-chunkserver.service
553		systemd/moosefs-master.service
554		systemd/moosefs-metalogger.service
555])
556AC_OUTPUT
557