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

Contents of /trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 327 - (show annotations) (download)
Tue Jul 11 18:49:26 2006 UTC (8 years, 3 months ago) by azarah
File size: 5919 byte(s)
Release sandbox-1.2.20alpha2.

1 AC_PREREQ([2.59])
2 AC_INIT([sandbox], [1.2.20alpha2], [sandbox@gentoo.org])
3 AM_INIT_AUTOMAKE
4 AC_CONFIG_HEADER([config.h])
5
6 dnl Checks for programs.
7 AC_PROG_CC
8 AC_ISC_POSIX
9 AC_PROG_INSTALL
10 AC_PROG_MAKE_SET
11 AC_PROG_AWK
12 AC_CHECK_PROGS([READELF], [readelf eu-readelf], [false])
13
14 AC_ENABLE_SHARED
15 AC_DISABLE_STATIC
16 dnl Next four lines is a hack to prevent libtool checking for CXX/F77
17 m4_undefine([AC_PROG_CXX])
18 m4_defun([AC_PROG_CXX],[])
19 m4_undefine([AC_PROG_F77])
20 m4_defun([AC_PROG_F77],[])
21 AC_PROG_LIBTOOL
22
23 AC_PREFIX_DEFAULT([/usr])
24
25 dnl Checks for libraries.
26 dnl Checks for header files.
27 AC_FUNC_ALLOCA
28 AC_HEADER_DIRENT
29 AC_HEADER_STDC
30 AC_HEADER_SYS_WAIT
31 AC_CHECK_HEADERS([ \
32 fcntl.h limits.h memory.h stddef.h \
33 stdlib.h string.h strings.h sys/file.h \
34 sys/param.h sys/time.h unistd.h utime.h \
35 ])
36
37 dnl Checks for typedefs, structures, and compiler characteristics.
38 AC_C_CONST
39 AC_TYPE_UID_T
40 AC_TYPE_MODE_T
41 AC_TYPE_SIZE_T
42 AC_CHECK_TYPES([ptrdiff_t])
43
44 dnl Checks for library functions.
45 AC_FUNC_CHOWN
46 AC_FUNC_FORK
47 AC_FUNC_LSTAT
48 AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
49 AC_TYPE_SIGNAL
50 AC_FUNC_STAT
51 AC_CHECK_FUNCS([ \
52 bzero ftruncate getcwd lchown memmove \
53 memcpy memset mkdir pathconf realpath \
54 rmdir setenv strcasecmp strchr strdup \
55 strerror strndup strrchr strspn strstr \
56 strtok_r \
57 ])
58 dnl For librcutil
59 AC_CHECK_FUNCS([remove])
60
61 dnl Check if gcc provides va_copy or __va_copy (for librcutil)
62 AC_MSG_CHECKING([for va_copy])
63 AC_TRY_COMPILE([
64 #include <stdarg.h>
65 ], [
66 va_list ap, aq;
67 va_copy(ap, aq);
68 ],
69 [va_copy="va_copy"],
70 [AC_TRY_COMPILE([
71 #include <stdarg.h>
72 ], [
73 va_list ap, aq;
74 __va_copy(ap, aq);
75 ],
76 [va_copy="__va_copy"],
77 [AC_MSG_ERROR([Unable to determine name of va_copy macro])]
78 )]
79 )
80 AC_MSG_RESULT([$va_copy])
81 if test x"$va_copy" != xva_copy ; then
82 AC_DEFINE_UNQUOTED([va_copy], [$va_copy],
83 [Define to name of va_copy macro proviced by gcc if its not `va_copy'.]
84 )
85 fi
86
87 dnl Verify people aren't doing stupid shit
88 if test x"$enable_static" != xno ; then
89 AC_MSG_ERROR([dont be a Kumba, building a libsandbox.a is stupid])
90 fi
91 if test x"$enable_shared" != xyes ; then
92 AC_MSG_ERROR([dont be a Kumba, omitting a libsandbox.so is stupid])
93 fi
94 if echo $CFLAGS | $EGREP -e -static >/dev/null 2>&1; then
95 AC_MSG_ERROR([dont be a Kumba, using -static in CFLAGS is stupid])
96 fi
97 if echo $LDFLAGS | $EGREP -e -static >/dev/null 2>&1; then
98 AC_MSG_ERROR([dont be a Kumba, using -static in LDFLAGS is stupid])
99 fi
100
101 dnl Some libc's like those on bsd have dlopen() in libc, and not libdl
102 AC_CHECK_LIB([dl], [dlopen],
103 [have_libdl="yes"],
104 [have_libdl="no"]
105 )
106 if test x"$have_libdl" = xyes ; then
107 LIBDL="-ldl"
108 AC_SUBST([LIBDL])
109 DL_LIB="dl"
110 else
111 DL_LIB="c"
112 AC_CHECK_LIB([c], [dlopen],
113 [],
114 [AC_MSG_ERROR([Unable to determine library providing dlopen])]
115 )
116 fi
117
118 dnl uClibc doesn't currently provide dlvsym() so lets
119 dnl verify the toolchain supports it
120 AC_CHECK_LIB([$DL_LIB], [dlvsym],
121 [AC_DEFINE([HAVE_DLVSYM], [1], [libdl supports dlvsym])],
122 [AC_DEFINE([HAVE_DLVSYM], [0], [libdl does not support dlvsym])]
123 )
124
125 dnl when using libc5, (f)trucate's offset argument type is size_t with
126 dnl libc5, but it's off_t with libc6 (glibc2).
127 AC_MSG_CHECKING([truncate argument type])
128 TRUNC_ARG_TYPE=`echo '#include <unistd.h>' | $CC -E - | grep -q 'truncate.*size_t'`
129 if test "$TRUNC_ARG_TYPE"x != x ; then
130 AC_MSG_RESULT([size_t])
131 AC_DEFINE([TRUNCATE_T], [size_t], [truncate arg type])
132 else
133 AC_MSG_RESULT([off_t])
134 AC_DEFINE([TRUNCATE_T], [off_t], [truncate arg type])
135 fi
136
137 dnl Check if libc provides RTLD_NEXT
138 AC_MSG_CHECKING([for RTLD_NEXT])
139 AC_TRY_COMPILE([
140 #define _GNU_SOURCE
141 #include <dlfcn.h>
142 ], [
143 #if !defined(RTLD_NEXT)
144 # error no RTLD_NEXT
145 #endif
146 ],
147 [have_rtld_next="yes"],
148 [have_rtld_next="no"]
149 )
150 AC_MSG_RESULT([$have_rtld_next])
151 if test x"$have_rtld_next" = xyes ; then
152 AC_DEFINE([HAVE_RTLD_NEXT], [1], [Have RTLD_NEXT enabled libc])
153 fi
154
155 dnl we need to handle symbols differently based upon their version,
156 dnl but we have to know which symbols the libc supports first
157 AC_MSG_CHECKING([libc path])
158 echo "int main(void) { return 0; }" > libctest.c
159 $CC $CFLAGS -Wl,-verbose -o libctest libctest.c &> libctest.log
160 cat libctest.log 1>&AS_MESSAGE_LOG_FD
161 LIBC_PATH=`$AWK '/attempt to open/ { if (($4 ~ /\/libc\.so/) && ($5 == "succeeded")) LIBC = $4; }; END {print LIBC}' libctest.log`
162 rm -f libctest*
163 if test x"$LIBC_PATH" = x || ! test -r "$LIBC_PATH" ; then
164 AC_MSG_ERROR([Unable to determine LIBC PATH ($LIBC_PATH)])
165 fi
166 AC_MSG_RESULT([$LIBC_PATH])
167 AC_SUBST([LIBC_PATH])
168
169 dnl when intercepting libc calls, we have to know the name of the
170 dnl libc to load and search with dl*() calls
171 AC_MSG_CHECKING([libc version])
172 dnl the sed script at the end here looks funny but it's ok ...
173 dnl they're m4 escape sequences for left and right brackets
174 echo "int main(void) { return 0; }" > libctest.c
175 $CC -Wall -o libctest libctest.c
176 LIBC_VERSION=`$READELF -d libctest | grep NEEDED.*libc\\.so | $AWK '{print $NF}' | sed -e 's:\@<:@::' -e 's:\@:>@::'`
177 rm -f libctest*
178 if test "$LIBC_VERSION"x = x ; then
179 AC_MSG_ERROR([Unable to determine LIBC VERSION])
180 fi
181 AC_MSG_RESULT([$LIBC_VERSION])
182 AC_DEFINE_UNQUOTED([LIBC_VERSION], ["$LIBC_VERSION"], [Name of libc to hook into])
183
184 dnl check if we have 32bit or 64bit output
185 AC_ARG_ENABLE([multilib],
186 AS_HELP_STRING([--enable-multilib],
187 [enable building for multilib setups (default=disabled)]),
188 [enable_multilib="$enableval"],
189 [enable_multilib="no"]
190 )
191
192 if test x"$enable_multilib" != xno ; then
193 AC_DEFINE([SB_HAVE_MULTILIB], [1], [Have multilib enabled system])
194 fi
195
196 SANDBOX_DEFINES='-DETCDIR="\"$(sysconfdir)\"" -DLIBSANDBOX_PATH="\"$(libdir)\"" -DSANDBOX_BASHRC_PATH="\"$(pkgdatadir)\""'
197 AC_SUBST([SANDBOX_DEFINES])
198
199 AC_OUTPUT([
200 Makefile
201 scripts/Makefile
202 etc/Makefile
203 data/Makefile
204 libsbutil/Makefile
205 libsandbox/Makefile
206 src/Makefile
207 ])

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.20