Fix exclusion logic at thread creation and allow main thread to exit.
[npth.git] / configure.ac
1 # configure.ac                                          -*- Autoconf -*-
2 # Copyright (C) 2011 g10 Code GmbH
3 # This file is part of NPTH.
4 #
5 # NPTH is free software; you can redistribute it and/or modify it
6 # under the terms of either
7 #
8 # - the GNU Lesser General Public License as published by the Free
9 # Software Foundation; either version 3 of the License, or (at
10 # your option) any later version.
11 #
12 # or
13 #
14 # - the GNU General Public License as published by the Free
15 # Software Foundation; either version 2 of the License, or (at
16 # your option) any later version.
17 #
18 # or both in parallel, as here.
19 #
20 # NPTH is distributed in the hope that it will be useful, but WITHOUT
21 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
22 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General
23 # Public License for more details.
24 #
25 # You should have received a copy of the GNU Lesser General Public
26 # License along with this program; if not, see <http://www.gnu.org/licenses/>.
27
28 # Process this file with autoconf to produce a configure script.
29
30 AC_PREREQ([2.67])
31 min_automake_version="1.11"
32
33 # Version number: Remember to change it immediately *after* a release.
34 #                 Make sure to run  "svn up" and "./autogen.sh --force"
35 #                  before a "make dist".  See below for the LT versions.
36 #
37 # The SVN version is usually the next intended release version with
38 # the string "-svnNNN" appended.  The reason for this is that tests for a
39 # specific feature can already be done under the assumption that the
40 # SVN version is the most recent one in a branch.  To disable the SVN
41 # version for the real release, set the my_issvn macro to no.
42 m4_define(my_version, [0.0])
43 m4_define(my_issvn, [yes])
44
45 m4_define([git_revision], m4_esyscmd([git branch -v 2>/dev/null \
46           | awk '/^\* / {printf "%s",$3}']))
47 AC_INIT([npth],
48         [my_version[]m4_if(my_issvn,[yes],[-git[]git_revision])],
49         [gnupg-devel@gnupg.org])
50
51 # LT Version numbers, remember to change them just *before* a release.
52 #   (Code changed:                      REVISION++)
53 #   (Interfaces added/removed/changed:  CURRENT++, REVISION=0)
54 #   (Interfaces added:                  AGE++)
55 #   (Interfaces removed/changed:        AGE=0)
56 #
57 LIBNPTH_LT_CURRENT=0
58 LIBNPTH_LT_AGE=0
59 LIBNPTH_LT_REVISION=0
60
61 # If the API is changed in an incompatible way: increment the next counter.
62 NPTH_CONFIG_API_VERSION=1
63 ##############################################
64
65 m4_define([git_brevis],m4_esyscmd(printf "%u" 0x[]m4_substr(git_revision,0,4)))
66 BUILD_REVISION=m4_if(git_revision,[],[svn_revision],[git_brevis])
67 PACKAGE=$PACKAGE_NAME
68 VERSION=$PACKAGE_VERSION
69
70 AC_CONFIG_SRCDIR([src/npth.h])
71 AC_CONFIG_HEADERS([config.h])
72 AC_CONFIG_MACRO_DIR([m4])
73 AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
74 AM_MAINTAINER_MODE
75 AC_CANONICAL_HOST
76
77 # Enable GNU extensions on systems that have them.
78 AC_GNU_SOURCE
79
80 AH_VERBATIM([_REENTRANT],
81 [#ifndef _REENTRANT
82 # define _REENTRANT 1
83 #endif])
84
85 # Checks for programs.
86 AC_PROG_CC
87
88 AC_SUBST(LIBNPTH_LT_CURRENT)
89 AC_SUBST(LIBNPTH_LT_AGE)
90 AC_SUBST(LIBNPTH_LT_REVISION)
91
92 AC_SUBST(PACKAGE)
93 AC_SUBST(VERSION)
94 AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of this package])
95 AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version of this package])
96
97 # Don't default to build static libs.
98 LT_PREREQ([2.2.6])
99 LT_INIT([win32-dll disable-static])
100 LT_LANG([Windows Resource])
101
102 # For now we hardcode the use of version scripts.  It would be better
103 # to write a test for this or even implement this within libtool.
104 have_ld_version_script=no
105 case "${host}" in
106     *-*-linux*)
107         have_ld_version_script=yes
108         ;;
109     *-*-gnu*)
110         have_ld_version_script=yes
111         ;;
112     *-apple-darwin*)
113         AC_DEFINE(_XOPEN_SOURCE, 500, Activate POSIX interface on MacOS X)
114         ;;
115 esac
116
117 AM_CONDITIONAL(HAVE_LD_VERSION_SCRIPT, test "$have_ld_version_script" = "yes")
118
119 have_w32_system=no
120 have_w32ce_system=no
121 have_w64_system=no
122 case "${host}" in
123     x86_64-*mingw32*)
124         have_w64_system=yes
125         ;;
126     *-mingw32ce*)
127         have_w32ce_system=yes
128         ;;
129 esac
130 case "${host}" in
131     *-mingw32ce*|*-mingw32*)
132         have_w32_system=yes
133         ;;
134     *)
135         ;;
136 esac
137
138 if test "$have_w32_system" = yes; then
139    AC_DEFINE(HAVE_W32_SYSTEM,1,
140              [Defined if we run on any kind of W32 API based system])
141    ACSUBST
142 fi
143 AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
144
145 if test "$have_w64_system" = yes; then
146    AC_DEFINE(HAVE_W64_SYSTEM,1,
147              [Defined if we run on a 64 bit W32 API based system])
148 fi
149 AM_CONDITIONAL(HAVE_W64_SYSTEM, test "$have_w64_system" = yes)
150
151 # Checks for libraries.
152
153 have_pthread=no
154 AC_CHECK_LIB(pthread,pthread_create,have_pthread=yes)
155 if test "$have_pthread" = yes; then
156   AC_DEFINE(HAVE_PTHREAD, ,[Define if we have pthread.])
157 fi
158
159 # Checks for header files.
160 AC_CHECK_HEADERS([sys/socket.h])
161
162 # Checks for typedefs, structures, and compiler characteristics.
163 AC_TYPE_PID_T
164 AC_TYPE_SIZE_T
165 AC_TYPE_SSIZE_T
166
167 # Generate values for the DLL version info
168 if test "$have_w32_system" = yes; then
169     BUILD_TIMESTAMP=`date --iso-8601=minutes`
170     changequote(,)dnl
171     BUILD_FILEVERSION=`echo "$VERSION" | sed 's/\([0-9.]*\).*/\1./;s/\./,/g'`
172     changequote([,])dnl
173     BUILD_FILEVERSION="${BUILD_FILEVERSION}${BUILD_REVISION}"
174 fi
175 AC_SUBST(BUILD_REVISION)
176 AC_SUBST(BUILD_TIMESTAMP)
177 AC_SUBST(BUILD_FILEVERSION)
178
179 # Substitution used for npth-config
180 NPTH_CONFIG_LIBS="-lposix -lrt"
181 NPTH_CONFIG_CFLAGS=""
182 NPTH_CONFIG_HOST="$host"
183 AC_SUBST(NPTH_CONFIG_API_VERSION)
184 AC_SUBST(NPTH_CONFIG_LIBS)
185 AC_SUBST(NPTH_CONFIG_CFLAGS)
186 AC_SUBST(NPTH_CONFIG_HOST)
187
188 run_tests="yes"
189 AC_ARG_ENABLE(tests,
190   AC_HELP_STRING([--disable-tests], [disable tests]),
191          run_tests=$enableval)
192 AM_CONDITIONAL(RUN_TESTS, test "$run_tests" = "yes")
193
194 # Last check.
195 die=no
196 if test "$have_pthread" = "no"; then
197    die=yes
198    AC_MSG_NOTICE([[
199 ***
200 *** You need Pthread to build this program.
201 *** Normally, this library comes with your system.  On Windows, you can use:
202 ***   http://sourceware.org/pthreads-win32/
203 ***]])
204 fi
205
206 if test "$die" = "yes"; then
207     AC_MSG_ERROR([[
208 ***
209 *** Required libraries not found. Please consult the above messages
210 *** and install them before running configure again.
211 ***]])
212 fi
213
214 # Checks for library functions.
215 AC_CHECK_FUNCS([select])
216
217 AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile])
218 AC_CONFIG_FILES(src/npth-config, chmod +x src/npth-config)
219 AC_OUTPUT