configure.in 9.96 KB
Newer Older
1
2
3
#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

Matteo Quintiliani's avatar
Matteo Quintiliani committed
4
AC_PREREQ(2.61)
5
6
7
8
9

dnl Name your program here
m4_define([full_package_name], [nmxptool])

dnl These three define the plug-in version number
Matteo Quintiliani's avatar
Matteo Quintiliani committed
10
m4_define([major_version], [1])
11
m4_define([minor_version], [2])
12
m4_define([micro_version], [4])
13
# Comment build_version for stable release
14
m4_define([build_version], [beta8])
15
16
17
18
19
20
21
22
23
24
25

m4_ifdef([build_version], [
	  m4_define([version],
		    [major_version.minor_version.micro_version-build_version])
	  ],
	  [
	  m4_define([version],
		    [major_version.minor_version.micro_version])
	   ]
	  )

26
27
28
29
30
31
32
33
34


m4_define([bug_report_address], [quintiliani@ingv.it])

# AC_INIT(FULL_PACKAGE_NAME, VERSION, BUG_REPORT_ADDRESS)
AC_INIT([full_package_name], [version], [bug_report_address])
AC_CONFIG_SRCDIR([src/nmxptool.c])
AC_CONFIG_HEADER([config.h])

35
36
AC_CANONICAL_SYSTEM

Matteo Quintiliani's avatar
Matteo Quintiliani committed
37
38
39
40
41
# Set BINARY_DIST_NAME_SUFFIX
BINARY_DIST_NAME_SUFFIX=$host
AC_MSG_NOTICE(BINARY_DIST_NAME_SUFFIX set to $BINARY_DIST_NAME_SUFFIX)
AC_SUBST(BINARY_DIST_NAME_SUFFIX)

42
43
44
45
46
#mtheo
# AM_INIT_AUTOMAKE(FULL_PACKAGE_NAME,VERSION)
AM_INIT_AUTOMAKE([full_package_name], [version])

# Checks for programs.
47
# AC_PROG_CXX
48
AC_PROG_CC
49
50
51
52
53
54
55
AM_PROG_CC_C_O
# AC_PROG_CPP
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_MAKE_SET
# AC_PROG_RANLIB Using `AC_PROG_RANLIB' is rendered obsolete by `AC_PROG_LIBTOOL'
AC_PROG_LIBTOOL
56
57

# Checks for libraries.
58
59
60
AC_CHECK_LIB(nsl,gethostent)
AC_SEARCH_LIBS(socket, socket, ,
	           [AC_CHECK_LIB(nsl, socket, LIBS="$LIBS -lsocket -lnsl", , -lsocket)])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
61
62
63
64

AC_SEARCH_LIBS(rt, nanosleep, ,
	           [AC_CHECK_LIB(rt, nanosleep, LIBS="$LIBS -lrt", , -lrt)])

65
66
67
AC_SEARCH_LIBS(ws2_32, puts, ,
		[AC_CHECK_LIB(ws2_32, puts, LIBS="$LIBS -lws2_32", , -lws2_32)])

68
69
70
71
72
73
AC_ARG_ENABLE([memdebug],
	      [AS_HELP_STRING([--enable-memdebug], [compile nmxptool for debugging memory leaks])],
	    [], 
	    [enable_memdebug=no]
) 

Matteo Quintiliani's avatar
Matteo Quintiliani committed
74
75
AC_ARG_ENABLE([libmseed],
	      [AS_HELP_STRING([--disable-libmseed], [disable saving data in mini-SEED records])],
76
	    [], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
77
	    [enable_libmseed=yes]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
78
79
) 

Matteo Quintiliani's avatar
Matteo Quintiliani committed
80
81
AC_ARG_ENABLE([ew],
	      [AS_HELP_STRING([--disable-ew], [do not compile nmxptool as Earthworm module])],
82
	    [], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
83
	    [enable_ew=yes]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
84
85
) 

Matteo Quintiliani's avatar
Matteo Quintiliani committed
86
87
AC_ARG_ENABLE([seedlink],
	      [AS_HELP_STRING([--disable-seedlink], [do not compile nmxptool as Seedlink plug-in])],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
88
	    [], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
89
	    [enable_seedlink=yes]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
90
91
) 

92
93
94
95
96
97
98
99
100
101
102
case "$OSTYPE" in
win32*)
    WINSOURCES=$OSTYPE
;;
msys*)
    WINSOURCES=$OSTYPE
;;
*)
    AC_MSG_WARN(Operating system is not Windows. $OSTYPE)
;;
esac
Matteo Quintiliani's avatar
Matteo Quintiliani committed
103
AM_CONDITIONAL(ENABLE_WINSOURCES, test x$WINSOURCES != x)
104
105
106
107
108

# mtheo
AM_PROG_LIBTOOL


109
110
111
112
113
114
115
116
117
# memdebug check.
AS_IF([test "x$enable_memdebug" != xno], 
      [
       CFLAGS="$CFLAGS -DNMXP_MEM_DEBUG"
       AC_MSG_WARN([memdebug has been enabled!])
       ]
)
AM_CONDITIONAL(ENABLE_MEMDEBUG, test x$enable_memdebug != xno)

118
119
120
121
AM_CONDITIONAL(ENABLE_DLL_PTHREAD, test x$DLL_PTHREAD != x)
AC_ARG_VAR(DIR_PTHREAD, [Directory containing PThread DDL library])
AC_ARG_VAR(DLL_PTHREAD, [Name of PThread DLL library - i.e. pthreadVC2.dll])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
122
123
# Checks for header files.
AC_HEADER_STDC
124
AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h sys/stat.h sys/time.h unistd.h pthread.h])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
125
126
AC_CHECK_HEADERS([windows.h winsock2.h])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
127
AS_IF([test "x$enable_libmseed" != xno], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
128
129
      [AC_CHECK_LIB([mseed], [msr_init],
		    [LIBS="$LIBS -lmseed"
130
		     AC_DEFINE([HAVE_LIBMSEED], [1], [Define if you have libmseed]) 
131
132
133
		     # AC_CHECK_LIB([nmxp], [nmxp_openSocket], [], [AC_MSG_ERROR([libnmxp not found!])]) 
		     # AC_CHECK_LIB([nmxp], [nmxp_data_msr_pack],
		#		  [],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
134
		#		  [AC_MSG_FAILURE([libmseed found but libnmxp does not support it. (Try --disable-libmseed to disable)])])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
135
136
		     ], 
		     [AC_MSG_WARN([
Matteo Quintiliani's avatar
Matteo Quintiliani committed
137
		      libmseed is not available (--disable-libmseed to disable)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
138
		     ])
139
140
141
		     # AC_CHECK_LIB([nmxp], [nmxp_openSocket], [], [AC_MSG_ERROR([libnmxp not found or it supports libmseed
				   # but libmseed is not available anymore! Try to recompile libnmxp!
				   # ])]) 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
142
143
144
				   ], 
				   )
      ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
145
      [
Matteo Quintiliani's avatar
Matteo Quintiliani committed
146
147
       # AC_CHECK_LIB([nmxp], [nmxp_openSocket], [], [AC_MSG_ERROR([libnmxp not found or supports libmseed (--enable-libmseed to enable)!])]) 
       AC_MSG_WARN([libmseed feature has been disabled!])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
148
      ]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
149
) 
150

151
152
153
154
AC_ARG_VAR(EW_HOME, [Earthworm home directory])
AC_ARG_VAR(EW_VERSION, [Earthworm version directory])
AC_ARG_VAR(EW_PARAMS, [Earthworm configuration files directory])
AC_ARG_VAR(GLOBALFLAGS, [C compiler flags for Earthworm])
155

156
EWOSOURCES=no
157

Matteo Quintiliani's avatar
Matteo Quintiliani committed
158
# Earthworm check.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
159
AS_IF([test "x$enable_ew" != xno], 
160
      [
Matteo Quintiliani's avatar
Matteo Quintiliani committed
161
162
    AS_IF([test "x$EW_HOME" != x], 
	  [
163
	   CFLAGS="$CFLAGS -I$EW_HOME/$EW_VERSION/include $GLOBALFLAGS"
164
165
	AC_CHECK_HEADERS([earthworm.h kom.h transport.h trace_buf.h],
			 [AC_DEFINE([HAVE_EARTHWORMFILES_H], [1], [Define if you have earthworm header file])],
166
			 AC_MSG_ERROR([Earthworm header files not found!])
167
			 )
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
	EWLIB=$EW_HOME/$EW_VERSION/lib
	EWOBJS="$EWLIB/kom.o $EWLIB/getutil.o $EWLIB/logit_mt.o $EWLIB/socket_ew_common.o $EWLIB/transport.o $EWLIB/sleep_ew.o $EWLIB/socket_ew.o $EWLIB/time_ew.o $EWLIB/threads_ew.o $EWLIB/sema_ew.o $EWLIB/swap.o $EWLIB/mem_circ_queue.o"
	AC_CHECK_FILES([$EWLIB/kom.o $EWLIB/getutil.o $EWLIB/logit_mt.o $EWLIB/socket_ew_common.o $EWLIB/transport.o $EWLIB/sleep_ew.o $EWLIB/socket_ew.o $EWLIB/time_ew.o $EWLIB/threads_ew.o $EWLIB/sema_ew.o $EWLIB/swap.o $EWLIB/mem_circ_queue.o],
		       [ ],
		       [
			AC_MSG_WARN(Earthworm object file is missing! Attempt to compile from source!)
			EWOSOURCES=yes
			]
		       )
	AC_DEFINE([HAVE_EARTHWORMOBJS], [1], [Define if you have all earthworm object files])
	AS_IF([test "x$EWOSOURCES" != xno],
	      [ 
		case "$OSTYPE" in
		solaris*)
		    EWOS=solaris
		;;
		darwin*)
		    EWOS=unix
		;;
		linux*)
		    EWOS=unix
		;;
		win32*)
		    EWOS=winnt
		;;
		msys*)
		    EWOS=winnt
		;;
		*)
		    EWOS=unix
		    AC_MSG_WARN(Unrecognised OS $OSTYPE)
		;;
		esac
		AC_MSG_WARN(EWOS set to $EWOS)
		AC_SUBST(EWOS)
203
204
205
206
207
208
		EW_LIBSRC=$EW_HOME/$EW_VERSION/src/libsrc
		EW_LIBSRC_UTIL=$EW_LIBSRC/util
		EW_LIBSRC_OS=$EW_LIBSRC/$EWOS
		AC_SUBST(EW_LIBSRC)
		AC_SUBST(EW_LIBSRC_UTIL)
		AC_SUBST(EW_LIBSRC_OS)
209
210
211
212
	       ],
	      [
	       LIBS="$LIBS $EWOBJS"
	       ])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
213
	],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
214
	[AC_MSG_WARN([Earthworm files are not available (--disable-ew to disable)])]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
215
216
    )
    ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
217
    [AC_MSG_WARN([ew feature has been disabled!])]
218
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
219
220
AM_CONDITIONAL(ENABLE_EWSOURCES, test x$EWOS != x)
AM_CONDITIONAL(ENABLE_EW, test x$enable_ew != xno)
221

222
# Checks for files.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
223

224
225
AC_ARG_VAR(SEISCOMPDIR, [SeisComP root directory - default is /home/sysop/seiscomp3])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
226
# Seedlink check.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
227
AS_IF([test "x$enable_seedlink" != xno], 
228
229
230
231
232
      [
       AC_CHECK_FILES([./src/seedlink_plugin.c ./src/seedlink_plugin.h], [], AC_MSG_ERROR([seedlink plug-in sources not found!]))

       AS_IF([test "x$SEISCOMPDIR" == x],
	      [
233
	       SEISCOMPDIR=/home/sysop/seiscomp3
234
235
236
237
238
239
	       ]
	      )
       AC_MSG_WARN([SEISCOMPDIR is set to ${SEISCOMPDIR}])
       AC_SUBST(SEISCOMPDIR)

       ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
240
    [AC_MSG_WARN([seedlink feature has been disabled!])]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
241
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
242
AM_CONDITIONAL(ENABLE_SEEDLINK, test x$enable_seedlink != xno)
243

244
245
246

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
247
AC_C_INLINE
248
AC_TYPE_INT16_T
249
AC_TYPE_INT32_T
250
251
AC_TYPE_UINT32_T
AC_TYPE_INT8_T
252
AC_TYPE_MODE_T
Matteo Quintiliani's avatar
Matteo Quintiliani committed
253
AC_TYPE_PID_T
254
255
256
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_STRUCT_TM
Matteo Quintiliani's avatar
Matteo Quintiliani committed
257
# AC_CHECK_SIZEOF([long int])
258
259

# Checks for library functions.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
260
AC_FUNC_MALLOC
261
262
263
AC_FUNC_MKTIME
AC_FUNC_SELECT_ARGTYPES
AC_FUNC_STRERROR_R
Matteo Quintiliani's avatar
Matteo Quintiliani committed
264
AC_TYPE_SIGNAL
265
AC_CHECK_FUNCS([getcwd gethostbyname gettimeofday inet_ntoa memset mkdir select socket strcasecmp strchr strdup strerror strstr strtol])
266
267
268
269
270
271
272
273
274
275
276
AC_CHECK_FUNCS([timegm], [], [
		AC_CHECK_FUNCS([getenv setenv unsetenv tzset],
			       [],
			       [AC_MSG_WARN([
				Computation of packet latencies could be wrong
				if local time is not equal to UTC.
				])]
			       )
])
AC_CHECK_MEMBERS([struct tm.tm_gmtoff])

277
# Test whether _timezone is available. (On Windows only)
278
279
280
281
282
283
284
285
AC_MSG_CHECKING([for global _timezone variable])
dnl FIXME: As above, don't want link check
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <time.h>]],
		  [[long z2 = _timezone;]])],
		  [AC_DEFINE(HAVE_UNDERSCORE_TIMEZONE, 1,
		   [Define if your platform has the global _timezone variable.])
		  AC_MSG_RESULT(yes)],
		  [AC_MSG_RESULT(no)])
286
287
288



289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
# Test whether SO_RCVTIMEO is broken. (On Solaris SO_RCVTIMEO is defined but not implemented)
AC_CACHE_CHECK([whether setsockopt(SO_RCVTIMEO) is broken],
ac_cv_so_rcvtimeo_broken, [dnl
			   AC_RUN_IFELSE([AC_LANG_SOURCE([[
					  #if defined(HAVE_SYS_TYPES_H)
					  #include <sys/types.h>
					  #endif

					  #if defined(HAVE_SYS_SOCKET_H)
					  #include <sys/socket.h>
					  #endif

					  #if defined(HAVE_SYS_TIME_H)
					  #include <sys/time.h>
					  #endif

					  int main(void) {

					  #ifdef HAVE_WINDOWS_H
					  return 0;
					  #else
					  
					  int fd;
					  int ret;
					  struct timeval new_tv;

					  /* Open the socket (INET/TCP).*/
					  fd = socket(AF_INET, SOCK_STREAM, 0);

					  /* set the timeout for the incoming queue */
					  /* 1 second for example */
					  new_tv.tv_sec = 1;
					  new_tv.tv_usec = 0;

					  ret = setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &new_tv, sizeof(new_tv)); 
					  return ret;

					  #endif
				      }
				      ]])],[ac_cv_so_rcvtimeo_broken=no],[ac_cv_so_rcvtimeo_broken=yes],[ac_cv_so_rcvtimeo_broken=cross])])
if test x"$ac_cv_so_rcvtimeo_broken" = x"yes"; then
    AC_DEFINE(HAVE_BROKEN_SO_RCVTIMEO, 1, [Define if setsockopt(SO_RCVTIMEO) is broken])
    fi
332
333

AC_CONFIG_FILES([Makefile
334
                 lib/Makefile
335
                 src/Makefile])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
336
337
338

# AC_CONFIG_SUBDIRS([libnmxp])

339
AC_OUTPUT
Matteo Quintiliani's avatar
Matteo Quintiliani committed
340
341

AC_MSG_NOTICE([
342
343
      Compile nmxptool using 'make'.])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
344
AS_IF([test "x$enable_ew" != xno], 
345
346
347
348
349
350
      [AC_MSG_NOTICE([
      After compilation you can install nmxptool for Earthworm:
            make install-ew-bin
            make install-ew-conf])
      ]
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
351
AS_IF([test "x$enable_seedlink" != xno], 
352
      [AC_MSG_NOTICE([
Matteo Quintiliani's avatar
Matteo Quintiliani committed
353
      After compilation you can install nmxptool for Seedlink:
354
355
356
357
            make install-seiscomp-bin
            make install-seiscomp-templates])
      ]
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
358