/[path-sandbox]/trunk/configure.ac
Gentoo

Contents of /trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 412 - (hide annotations) (download)
Sun Nov 16 05:32:35 2008 UTC (6 years ago) by vapier
File size: 6260 byte(s)
add tests for sb_printf()
1 vapier 377 AC_PREREQ([2.61])
2     AC_INIT([sandbox], [1.3.0], [sandbox@gentoo.org])
3 ferringb 2 AM_INIT_AUTOMAKE
4 ferringb 16 AC_CONFIG_HEADER([config.h])
5 ferringb 2
6 vapier 61 dnl Checks for programs.
7 ferringb 2 AC_PROG_CC
8 vapier 412 AM_PROG_CC_C_O
9 azarah 29 AC_ISC_POSIX
10     AC_PROG_INSTALL
11     AC_PROG_MAKE_SET
12     AC_PROG_AWK
13 azarah 236 AC_CHECK_PROGS([READELF], [readelf eu-readelf], [false])
14 vapier 405 AM_MISSING_PROG([AUTOM4TE], [autom4te])
15 azarah 29
16 vapier 21 AC_ENABLE_SHARED
17     AC_DISABLE_STATIC
18 vapier 61 dnl Next four lines is a hack to prevent libtool checking for CXX/F77
19 azarah 56 m4_undefine([AC_PROG_CXX])
20     m4_defun([AC_PROG_CXX],[])
21     m4_undefine([AC_PROG_F77])
22     m4_defun([AC_PROG_F77],[])
23 ferringb 2 AC_PROG_LIBTOOL
24    
25     AC_PREFIX_DEFAULT([/usr])
26 azarah 29
27 vapier 61 dnl Checks for libraries.
28     dnl Checks for header files.
29 ferringb 2 AC_FUNC_ALLOCA
30     AC_HEADER_DIRENT
31     AC_HEADER_STDC
32     AC_HEADER_SYS_WAIT
33 vapier 370 AC_CHECK_HEADERS_ONCE([ \
34     dirent.h \
35     dlfcn.h \
36 vapier 396 elf.h \
37 vapier 370 errno.h \
38 vapier 396 execinfo.h \
39 vapier 370 fcntl.h \
40     libgen.h \
41     limits.h \
42     memory.h \
43     signal.h \
44     stdarg.h \
45 vapier 396 stdbool.h \
46 vapier 370 stddef.h \
47     stdio.h \
48     stdlib.h \
49     string.h \
50     strings.h \
51 vapier 405 syscall.h \
52 vapier 370 unistd.h \
53     utime.h \
54     sys/file.h \
55     sys/mman.h \
56     sys/param.h \
57     sys/stat.h \
58     sys/time.h \
59     sys/types.h \
60     sys/wait.h \
61 vapier 21 ])
62 ferringb 2
63 vapier 61 dnl Checks for typedefs, structures, and compiler characteristics.
64 ferringb 2 AC_C_CONST
65     AC_TYPE_UID_T
66     AC_TYPE_MODE_T
67     AC_TYPE_SIZE_T
68     AC_CHECK_TYPES([ptrdiff_t])
69    
70 vapier 61 dnl Checks for library functions.
71 ferringb 2 AC_FUNC_CHOWN
72     AC_FUNC_FORK
73     AC_FUNC_LSTAT
74     AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
75     AC_TYPE_SIGNAL
76     AC_FUNC_STAT
77 vapier 396 AC_CHECK_FUNCS_ONCE([ \
78     backtrace \
79     ftruncate \
80     getcwd \
81     lchown \
82     memmove \
83     memcpy \
84     memset \
85     mkdir \
86     pathconf \
87     realpath \
88     rmdir \
89     setenv \
90     strcasecmp \
91     strchr \
92     strdup \
93     strerror \
94     strndup \
95     strrchr \
96     strspn \
97     strstr \
98 vapier 356 strtok_r \
99 vapier 21 ])
100 azarah 278 dnl For librcutil
101     AC_CHECK_FUNCS([remove])
102 ferringb 2
103 azarah 278 dnl Check if gcc provides va_copy or __va_copy (for librcutil)
104     AC_MSG_CHECKING([for va_copy])
105     AC_TRY_COMPILE([
106     #include <stdarg.h>
107     ], [
108     va_list ap, aq;
109     va_copy(ap, aq);
110     ],
111     [va_copy="va_copy"],
112     [AC_TRY_COMPILE([
113     #include <stdarg.h>
114     ], [
115     va_list ap, aq;
116     __va_copy(ap, aq);
117     ],
118     [va_copy="__va_copy"],
119     [AC_MSG_ERROR([Unable to determine name of va_copy macro])]
120     )]
121     )
122     AC_MSG_RESULT([$va_copy])
123     if test x"$va_copy" != xva_copy ; then
124     AC_DEFINE_UNQUOTED([va_copy], [$va_copy],
125     [Define to name of va_copy macro proviced by gcc if its not `va_copy'.]
126     )
127     fi
128    
129 vapier 243 dnl Verify people aren't doing stupid shit
130     if test x"$enable_static" != xno ; then
131     AC_MSG_ERROR([dont be a Kumba, building a libsandbox.a is stupid])
132     fi
133     if test x"$enable_shared" != xyes ; then
134     AC_MSG_ERROR([dont be a Kumba, omitting a libsandbox.so is stupid])
135     fi
136     if echo $CFLAGS | $EGREP -e -static >/dev/null 2>&1; then
137     AC_MSG_ERROR([dont be a Kumba, using -static in CFLAGS is stupid])
138     fi
139     if echo $LDFLAGS | $EGREP -e -static >/dev/null 2>&1; then
140     AC_MSG_ERROR([dont be a Kumba, using -static in LDFLAGS is stupid])
141     fi
142    
143 azarah 218 dnl Some libc's like those on bsd have dlopen() in libc, and not libdl
144     AC_CHECK_LIB([dl], [dlopen],
145 azarah 234 [have_libdl="yes"],
146     [have_libdl="no"]
147 azarah 218 )
148     if test x"$have_libdl" = xyes ; then
149 azarah 234 LIBDL="-ldl"
150     AC_SUBST([LIBDL])
151     DL_LIB="dl"
152 azarah 218 else
153 azarah 234 DL_LIB="c"
154     AC_CHECK_LIB([c], [dlopen],
155     [],
156     [AC_MSG_ERROR([Unable to determine library providing dlopen])]
157     )
158 azarah 218 fi
159    
160 vapier 62 dnl uClibc doesn't currently provide dlvsym() so lets
161     dnl verify the toolchain supports it
162 azarah 218 AC_CHECK_LIB([$DL_LIB], [dlvsym],
163 azarah 234 [AC_DEFINE([HAVE_DLVSYM], [1], [libdl supports dlvsym])],
164     [AC_DEFINE([HAVE_DLVSYM], [0], [libdl does not support dlvsym])]
165 vapier 62 )
166    
167 vapier 23 dnl when using libc5, (f)trucate's offset argument type is size_t with
168     dnl libc5, but it's off_t with libc6 (glibc2).
169 azarah 180 AC_MSG_CHECKING([truncate argument type])
170     TRUNC_ARG_TYPE=`echo '#include <unistd.h>' | $CC -E - | grep -q 'truncate.*size_t'`
171     if test "$TRUNC_ARG_TYPE"x != x ; then
172 azarah 234 AC_MSG_RESULT([size_t])
173     AC_DEFINE([TRUNCATE_T], [size_t], [truncate arg type])
174 vapier 23 else
175 azarah 234 AC_MSG_RESULT([off_t])
176     AC_DEFINE([TRUNCATE_T], [off_t], [truncate arg type])
177 vapier 23 fi
178    
179 azarah 220 dnl Check if libc provides RTLD_NEXT
180     AC_MSG_CHECKING([for RTLD_NEXT])
181 azarah 216 AC_TRY_COMPILE([
182 azarah 234 #define _GNU_SOURCE
183     #include <dlfcn.h>
184     ], [
185     #if !defined(RTLD_NEXT)
186     # error no RTLD_NEXT
187     #endif
188     ],
189     [have_rtld_next="yes"],
190     [have_rtld_next="no"]
191 azarah 217 )
192 azarah 220 AC_MSG_RESULT([$have_rtld_next])
193 azarah 235 if test x"$have_rtld_next" = xyes ; then
194 vapier 370 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
195 azarah 235 AC_DEFINE([HAVE_RTLD_NEXT], [1], [Have RTLD_NEXT enabled libc])
196     fi
197 azarah 216
198 vapier 53 dnl we need to handle symbols differently based upon their version,
199     dnl but we have to know which symbols the libc supports first
200 azarah 180 AC_MSG_CHECKING([libc path])
201 vapier 23 echo "int main(void) { return 0; }" > libctest.c
202 vapier 356 $CC $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-verbose -o libctest libctest.c > libctest.log 2>&1
203 vapier 238 cat libctest.log 1>&AS_MESSAGE_LOG_FD
204 vapier 356 LIBC_PATH=$(
205     $AWK '/attempt to open/ { if (($4 ~ /\/libc\.so/) && ($5 == "succeeded")) LIBC = $4; }; END {print LIBC}' libctest.log
206     )
207 azarah 234 rm -f libctest*
208 vapier 239 if test x"$LIBC_PATH" = x || ! test -r "$LIBC_PATH" ; then
209 vapier 238 AC_MSG_ERROR([Unable to determine LIBC PATH ($LIBC_PATH)])
210 vapier 53 fi
211 azarah 180 AC_MSG_RESULT([$LIBC_PATH])
212     AC_SUBST([LIBC_PATH])
213 vapier 23
214 vapier 53 dnl when intercepting libc calls, we have to know the name of the
215     dnl libc to load and search with dl*() calls
216 azarah 180 AC_MSG_CHECKING([libc version])
217 vapier 53 dnl the sed script at the end here looks funny but it's ok ...
218 azarah 234 echo "int main(void) { return 0; }" > libctest.c
219 vapier 356 $CC $CFLAGS $CPPFLAGS $LDFLAGS -Wall -o libctest libctest.c
220     LIBC_VERSION=$(
221     $READELF -d libctest | \
222     grep NEEDED.*libc\\.so | \
223     $AWK '{print $NF}' | sed -e ['s:\[::' -e 's:\]::']
224     )
225 azarah 234 rm -f libctest*
226 vapier 53 if test "$LIBC_VERSION"x = x ; then
227 azarah 234 AC_MSG_ERROR([Unable to determine LIBC VERSION])
228 vapier 53 fi
229 azarah 180 AC_MSG_RESULT([$LIBC_VERSION])
230 azarah 233 AC_DEFINE_UNQUOTED([LIBC_VERSION], ["$LIBC_VERSION"], [Name of libc to hook into])
231 vapier 53
232 vapier 356 dnl We add to CPPFLAGS rather than doing AC_DEFINE_UNQUOTED
233     dnl so we dont have to worry about fully expanding all of
234     dnl the variables ($sysconfdir defaults to "$prefix/etc")
235 azarah 309 SANDBOX_DEFINES='-DETCDIR="\"$(sysconfdir)\"" -DLIBSANDBOX_PATH="\"$(libdir)\"" -DSANDBOX_BASHRC_PATH="\"$(pkgdatadir)\""'
236     AC_SUBST([SANDBOX_DEFINES])
237    
238 vapier 404 CPPFLAGS="$CPPFLAGS -D_REENTRANT"
239     if test "$GCC" = yes; then
240     CFLAGS="$CFLAGS -Wall"
241     fi
242    
243 vapier 405 AC_CONFIG_TESTDIR([tests])
244    
245 azarah 183 AC_OUTPUT([
246 vapier 356 Makefile
247     scripts/Makefile
248     etc/Makefile
249     data/Makefile
250     libsbutil/Makefile
251     libsandbox/Makefile
252     src/Makefile
253 vapier 405 tests/atlocal
254     tests/Makefile
255     tests/package.m4
256 azarah 183 ])

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.20