INFO: The new Git default branch name is "main". Details here: https://about.gitlab.com/blog/2021/03/10/new-git-default-branch-name/

configure.in 8.8 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])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
12
m4_define([micro_version], [1])
13
# Comment build_version for stable release
Matteo Quintiliani's avatar
Matteo Quintiliani committed
14
m4_define([build_version], [beta6])
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)])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
68
69
AC_ARG_ENABLE([libmseed],
	      [AS_HELP_STRING([--disable-libmseed], [disable saving data in mini-SEED records])],
70
	    [], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
71
	    [enable_libmseed=yes]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
72
73
) 

Matteo Quintiliani's avatar
Matteo Quintiliani committed
74
75
AC_ARG_ENABLE([ew],
	      [AS_HELP_STRING([--disable-ew], [do not compile nmxptool as Earthworm module])],
76
	    [], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
77
	    [enable_ew=yes]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
78
79
) 

Matteo Quintiliani's avatar
Matteo Quintiliani committed
80
81
AC_ARG_ENABLE([seedlink],
	      [AS_HELP_STRING([--disable-seedlink], [do not compile nmxptool as Seedlink plug-in])],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
82
	    [], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
83
	    [enable_seedlink=yes]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
84
85
) 

86
87
88
89
90
91
92
93
94
95
96
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
97
AM_CONDITIONAL(ENABLE_WINSOURCES, test x$WINSOURCES != x)
98
99
100
101
102

# mtheo
AM_PROG_LIBTOOL


Matteo Quintiliani's avatar
Matteo Quintiliani committed
103
104
# Checks for header files.
AC_HEADER_STDC
105
AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h stdint.h stdlib.h string.h sys/socket.h unistd.h])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
106
107
AC_CHECK_HEADERS([windows.h winsock2.h])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
108
AS_IF([test "x$enable_libmseed" != xno], 
Matteo Quintiliani's avatar
Matteo Quintiliani committed
109
110
      [AC_CHECK_LIB([mseed], [msr_init],
		    [LIBS="$LIBS -lmseed"
111
		     AC_DEFINE([HAVE_LIBMSEED], [1], [Define if you have libmseed]) 
112
113
114
		     # 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
115
		#		  [AC_MSG_FAILURE([libmseed found but libnmxp does not support it. (Try --disable-libmseed to disable)])])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
116
117
		     ], 
		     [AC_MSG_WARN([
Matteo Quintiliani's avatar
Matteo Quintiliani committed
118
		      libmseed is not available (--disable-libmseed to disable)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
119
		     ])
120
121
122
		     # 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
123
124
125
				   ], 
				   )
      ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
126
      [
Matteo Quintiliani's avatar
Matteo Quintiliani committed
127
128
       # 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
129
      ]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
130
) 
131

132
133
134
135
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])
136

137
EWOSOURCES=no
138

Matteo Quintiliani's avatar
Matteo Quintiliani committed
139
# Earthworm check.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
140
AS_IF([test "x$enable_ew" != xno], 
141
      [
Matteo Quintiliani's avatar
Matteo Quintiliani committed
142
143
    AS_IF([test "x$EW_HOME" != x], 
	  [
144
	   CFLAGS="$CFLAGS -I$EW_HOME/$EW_VERSION/include $GLOBALFLAGS"
145
146
	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])],
147
			 AC_MSG_ERROR([Earthworm header files not found!])
148
			 )
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
	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)
184
185
186
187
188
189
		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)
190
191
192
193
	       ],
	      [
	       LIBS="$LIBS $EWOBJS"
	       ])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
194
	],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
195
	[AC_MSG_WARN([Earthworm files are not available (--disable-ew to disable)])]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
196
197
    )
    ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
198
    [AC_MSG_WARN([ew feature has been disabled!])]
199
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
200
201
AM_CONDITIONAL(ENABLE_EWSOURCES, test x$EWOS != x)
AM_CONDITIONAL(ENABLE_EW, test x$enable_ew != xno)
202

203
# Checks for files.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
204
205

# Seedlink check.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
206
AS_IF([test "x$enable_seedlink" != xno], 
207
208
209
210
211
212
213
214
215
216
217
218
      [
       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],
	      [
	       SEISCOMPDIR=/home/sysop/seiscomp
	       ]
	      )
       AC_MSG_WARN([SEISCOMPDIR is set to ${SEISCOMPDIR}])
       AC_SUBST(SEISCOMPDIR)

       ],
Matteo Quintiliani's avatar
Matteo Quintiliani committed
219
    [AC_MSG_WARN([seedlink feature has been disabled!])]
Matteo Quintiliani's avatar
Matteo Quintiliani committed
220
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
221
AM_CONDITIONAL(ENABLE_SEEDLINK, test x$enable_seedlink != xno)
222

223
224
225

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
226
AC_TYPE_INT16_T
227
AC_TYPE_INT32_T
228
229
AC_TYPE_UINT32_T
AC_TYPE_INT8_T
Matteo Quintiliani's avatar
Matteo Quintiliani committed
230
AC_TYPE_PID_T
231
232
233
AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_STRUCT_TM
Matteo Quintiliani's avatar
Matteo Quintiliani committed
234
# AC_CHECK_SIZEOF([long int])
235
236

# Checks for library functions.
Matteo Quintiliani's avatar
Matteo Quintiliani committed
237
AC_FUNC_MALLOC
238
239
240
AC_FUNC_MKTIME
AC_FUNC_SELECT_ARGTYPES
AC_FUNC_STRERROR_R
241
AC_CHECK_FUNCS([gethostbyname gettimeofday inet_ntoa memset select socket strcasecmp strchr strdup strerror strtol])
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
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])

# 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
296
297

AC_CONFIG_FILES([Makefile
298
                 lib/Makefile
299
                 src/Makefile])
Matteo Quintiliani's avatar
Matteo Quintiliani committed
300
301
302

# AC_CONFIG_SUBDIRS([libnmxp])

303
AC_OUTPUT
Matteo Quintiliani's avatar
Matteo Quintiliani committed
304
305

AC_MSG_NOTICE([
306
307
      Compile nmxptool using 'make'.])

Matteo Quintiliani's avatar
Matteo Quintiliani committed
308
AS_IF([test "x$enable_ew" != xno], 
309
310
311
312
313
314
      [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
315
AS_IF([test "x$enable_seedlink" != xno], 
316
      [AC_MSG_NOTICE([
Matteo Quintiliani's avatar
Matteo Quintiliani committed
317
      After compilation you can install nmxptool for Seedlink:
318
319
320
321
            make install-seiscomp-bin
            make install-seiscomp-templates])
      ]
)
Matteo Quintiliani's avatar
Matteo Quintiliani committed
322