Replace Travis CI badge by GitHub CI
[libmodbus.git] / configure.ac
bloba90a75e6b7be6e27896081a8dc2457deb63ca2c5
1 # libmodbus package version number, (as distinct from shared library version)
2 # An odd micro number indicates in-progress development from Git
3 # An even micro number indicates a released version
5 # Making a point release:
6 # - increase libmodbus_version_micro to the next even number
8 # After the release:
9 # - increase libmodbus_version_minor to the next odd number
11 # Take care to update the libtool versioning when required (LIBMODBUS_LD_*).
12 # http://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
14 m4_define([libmodbus_version_major], [3])
15 m4_define([libmodbus_version_minor], [1])
16 m4_define([libmodbus_version_micro], [7])
18 m4_define([libmodbus_release_status],
19     [m4_if(m4_eval(libmodbus_version_minor % 2), [1], [snapshot], [release])])
21 m4_define([libmodbus_version],
22     [libmodbus_version_major.libmodbus_version_minor.libmodbus_version_micro])
24 AC_PREREQ([2.63])
25 AC_INIT([libmodbus],
26         [libmodbus_version],
27         [https://github.com/stephane/libmodbus/issues],
28         [libmodbus],
29         [http://libmodbus.org/])
30 AC_CONFIG_SRCDIR([src/modbus.c])
31 AC_CONFIG_AUX_DIR([build-aux])
32 AM_INIT_AUTOMAKE([check-news foreign 1.11 -Wall -Wno-portability silent-rules tar-pax subdir-objects])
33 AC_PROG_CC
34 AC_USE_SYSTEM_EXTENSIONS
35 AC_SYS_LARGEFILE
36 AC_CONFIG_MACRO_DIR([m4])
37 AM_SILENT_RULES([yes])
39 LIBMODBUS_VERSION_MAJOR=libmodbus_version_major
40 LIBMODBUS_VERSION_MINOR=libmodbus_version_minor
41 LIBMODBUS_VERSION_MICRO=libmodbus_version_micro
42 LIBMODBUS_VERSION=libmodbus_version
43 AC_SUBST(LIBMODBUS_VERSION_MAJOR)
44 AC_SUBST(LIBMODBUS_VERSION_MINOR)
45 AC_SUBST(LIBMODBUS_VERSION_MICRO)
46 AC_SUBST(LIBMODBUS_VERSION)
48 # ABI version
49 # http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
50 LIBMODBUS_LD_CURRENT=6
51 LIBMODBUS_LD_REVISION=0
52 LIBMODBUS_LD_AGE=1
53 LIBMODBUS_LT_VERSION_INFO=$LIBMODBUS_LD_CURRENT:$LIBMODBUS_LD_REVISION:$LIBMODBUS_LD_AGE
54 AC_SUBST(LIBMODBUS_LT_VERSION_INFO)
56 AC_CANONICAL_HOST
58 # OS check
59 os_win32="false"
60 os_cygwin="false"
61 os_qnx="false"
62 case "${host_os}" in
63       *mingw32*)
64     os_win32="true"
65   ;;
66       *nto-qnx*)
67     os_qnx="true"
68   ;;
69       *cygwin*)
70     os_cygwin="true"
71   ;;
72 esac
73 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "true")
74 AM_CONDITIONAL(OS_QNX, test "$os_qnx" = "true")
76 LT_INIT([disable-static win32-dll pic-only])
77 AC_CHECK_HEADERS([ \
78     arpa/inet.h \
79     byteswap.h \
80     errno.h \
81     fcntl.h \
82     limits.h \
83     linux/serial.h \
84     netdb.h \
85     netinet/in.h \
86     netinet/tcp.h \
87     sys/ioctl.h \
88     sys/params.h \
89     sys/socket.h \
90     sys/time.h \
91     sys/types.h \
92     termios.h \
93     time.h \
94     unistd.h \
97 # Check whether to build docs / install man pages
98 AC_LIBMODBUS_CHECK_BUILD_DOC
100 # Cygwin defines IPTOS_LOWDELAY but can't handle that flag so it's necessary to
101 # workaround that problem and Cygwin doesn't define MSG_DONTWAIT.
102 AC_CHECK_DECLS([__CYGWIN__])
104 # Check for network function in libnetwork for Haiku
105 AC_SEARCH_LIBS(accept, network socket)
107 # Checks for library functions.
108 AC_CHECK_FUNCS([accept4 getaddrinfo gettimeofday inet_ntoa select socket strerror strlcpy])
110 # Required for MinGW with GCC v4.8.1 on Win7
111 AC_DEFINE(WINVER, 0x0501, _)
113 # Required for bswap
114 AC_C_INLINE
116 # libtool
117 AC_PROG_CXX
119 # Various types
120 AC_TYPE_INT64_T
121 AC_TYPE_SIZE_T
122 AC_TYPE_SSIZE_T
123 AC_TYPE_UINT16_T
124 AC_TYPE_UINT32_T
125 AC_TYPE_UINT8_T
127 if test "$os_cygwin" = "false"; then
128     # Required for getaddrinfo (TCP IP - IPv6)
129     AC_CHECK_HEADERS([winsock2.h], HAVE_WINSOCK2_H=yes)
130     if test "x$HAVE_WINSOCK2_H" = "xyes"; then
131         LIBS="$LIBS -lws2_32"
132     AC_SUBST(LIBS)
133     fi
136 # Check for RS485 support (Linux kernel version 2.6.28+)
137 AC_CHECK_DECLS([TIOCSRS485], [], [], [[#include <sys/ioctl.h>]])
138 # Check for RTS flags
139 AC_CHECK_DECLS([TIOCM_RTS], [], [], [[#include <sys/ioctl.h>]])
141 # Wtype-limits is not supported by gcc 4.2 (default on recent Mac OS X)
142 my_CFLAGS="-Wall \
143 -Wmissing-declarations -Wmissing-prototypes \
144 -Wnested-externs -Wpointer-arith \
145 -Wpointer-arith -Wsign-compare -Wchar-subscripts \
146 -Wstrict-prototypes -Wshadow \
147 -Wformat-security"
148 AC_SUBST([my_CFLAGS])
150 # Build options
151 AC_ARG_ENABLE(tests,
152         AS_HELP_STRING([--disable-tests],
153         [Build tests (default: yes)]),,
154         [enable_tests=yes])
155 AM_CONDITIONAL(BUILD_TESTS, [test $enable_tests != no])
157 AC_CONFIG_HEADERS([config.h tests/unit-test.h])
158 AC_CONFIG_FILES([
159         Makefile
160         src/Makefile
161         src/modbus-version.h
162         src/win32/modbus.dll.manifest
163         tests/Makefile
164         doc/Makefile
165         libmodbus.pc
168 AC_OUTPUT
169 AC_MSG_RESULT([
170         $PACKAGE $VERSION
171         ===============
173         prefix:                 ${prefix}
174         sysconfdir:             ${sysconfdir}
175         libdir:                 ${libdir}
176         includedir:             ${includedir}
178         compiler:               ${CC}
179         cflags:                 ${CFLAGS}
180         ldflags:                ${LDFLAGS}
182         documentation:          ${ac_libmodbus_build_doc}
183         tests:                  ${enable_tests}