configure.in 10 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], [beta9])
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])

122
123
CFLAGS="$CFLAGS -D_POSIX_PTHREAD_SEMANTICS"

Matteo Quintiliani's avatar
Matteo Quintiliani committed
124
125
# Checks for header files.
AC_HEADER_STDC
126
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
127
128
AC_CHECK_HEADERS([windows.h winsock2.h])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
129
AS_IF([test "x$enable_libmseed" != xno], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
130
131
      [AC_CHECK_LIB([mseed], [msr_init],
		    [LIBS="$LIBS -lmseed"
132
		     AC_DEFINE([HAVE_LIBMSEED], [1], [Define if you have libmseed]) 
133
134
135
		     # 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
136
		#		  [AC_MSG_FAILURE([libmseed found but libnmxp does not support it. (Try --disable-libmseed to disable)])])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
137
138
		     ], 
		     [AC_MSG_WARN([
Matteo Quintiliani's avatar
Matteo Quintiliani committed
139
		      libmseed is not available (--disable-libmseed to disable)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
140
		     ])
141
142
143
		     # 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
144
145
146
				   ], 
				   )
      ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
147
      [
Matteo Quintiliani's avatar
Matteo Quintiliani committed
148
149
       # 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
150
      ]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
151
) 
152

153
154
155
156
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])
157

158
EWOSOURCES=no
159

Matteo Quintiliani's avatar
Matteo Quintiliani committed
160
# Earthworm check.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
161
AS_IF([test "x$enable_ew" != xno], 
162
      [
Matteo Quintiliani's avatar
Matteo Quintiliani committed
163
164
    AS_IF([test "x$EW_HOME" != x], 
	  [
165
	   CFLAGS="$CFLAGS -I$EW_HOME/$EW_VERSION/include $GLOBALFLAGS"
166
167
	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])],
168
			 AC_MSG_ERROR([Earthworm header files not found!])
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
203
204
	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)
205
206
207
208
209
210
		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)
211
212
213
214
	       ],
	      [
	       LIBS="$LIBS $EWOBJS"
	       ])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
215
	],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
216
	[AC_MSG_WARN([Earthworm files are not available (--disable-ew to disable)])]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
217
218
    )
    ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
219
    [AC_MSG_WARN([ew feature has been disabled!])]
220
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
221
222
AM_CONDITIONAL(ENABLE_EWSOURCES, test x$EWOS != x)
AM_CONDITIONAL(ENABLE_EW, test x$enable_ew != xno)
223

224
# Checks for files.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
225

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

Matteo Quintiliani's avatar
Matteo Quintiliani committed
228
# Seedlink check.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
229
AS_IF([test "x$enable_seedlink" != xno], 
230
231
232
233
234
      [
       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],
	      [
235
	       SEISCOMPDIR=/home/sysop/seiscomp3
236
237
238
239
240
241
	       ]
	      )
       AC_MSG_WARN([SEISCOMPDIR is set to ${SEISCOMPDIR}])
       AC_SUBST(SEISCOMPDIR)

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

246
247
248

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

# Checks for library functions.
262
# AC_FUNC_MALLOC
263
264
265
AC_FUNC_MKTIME
AC_FUNC_SELECT_ARGTYPES
AC_FUNC_STRERROR_R
Matteo Quintiliani's avatar
Matteo Quintiliani committed
266
AC_TYPE_SIGNAL
267
AC_CHECK_FUNCS([getcwd gethostbyname gettimeofday inet_ntoa memset mkdir select socket strcasecmp strchr strdup strerror strstr strtol])
268
269
270
271
272
273
274
275
276
277
278
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])

279
# Test whether _timezone is available. (On Windows only)
280
281
282
283
284
285
286
287
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)])
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
332
333
# 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
334
335

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

# AC_CONFIG_SUBDIRS([libnmxp])

341
AC_OUTPUT
Matteo Quintiliani's avatar
Matteo Quintiliani committed
342
343

AC_MSG_NOTICE([
344
345
      Compile nmxptool using 'make'.])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
346
AS_IF([test "x$enable_ew" != xno], 
347
348
349
350
351
352
      [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
353
AS_IF([test "x$enable_seedlink" != xno], 
354
      [AC_MSG_NOTICE([
Matteo Quintiliani's avatar
Matteo Quintiliani committed
355
      After compilation you can install nmxptool for Seedlink:
356
357
358
359
            make install-seiscomp-bin
            make install-seiscomp-templates])
      ]
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
360