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

Contents of /trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 356 - (hide annotations) (download)
Thu Apr 19 01:27:04 2007 UTC (7 years, 6 months ago) by vapier
File size: 5733 byte(s)
cleanup style a bit and drop multilib code
1 azarah 180 AC_PREREQ([2.59])
2 azarah 327 AC_INIT([sandbox], [1.2.20alpha2], [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 azarah 29 AC_ISC_POSIX
9     AC_PROG_INSTALL
10     AC_PROG_MAKE_SET
11     AC_PROG_AWK
12 azarah 236 AC_CHECK_PROGS([READELF], [readelf eu-readelf], [false])
13 azarah 29
14 vapier 21 AC_ENABLE_SHARED
15     AC_DISABLE_STATIC
16 vapier 61 dnl Next four lines is a hack to prevent libtool checking for CXX/F77
17 azarah 56 m4_undefine([AC_PROG_CXX])
18     m4_defun([AC_PROG_CXX],[])
19     m4_undefine([AC_PROG_F77])
20     m4_defun([AC_PROG_F77],[])
21 ferringb 2 AC_PROG_LIBTOOL
22    
23     AC_PREFIX_DEFAULT([/usr])
24 azarah 29
25 vapier 61 dnl Checks for libraries.
26     dnl Checks for header files.
27 ferringb 2 AC_FUNC_ALLOCA
28     AC_HEADER_DIRENT
29     AC_HEADER_STDC
30     AC_HEADER_SYS_WAIT
31 vapier 21 AC_CHECK_HEADERS([ \
32 vapier 356 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 vapier 21 ])
36 ferringb 2
37 vapier 61 dnl Checks for typedefs, structures, and compiler characteristics.
38 ferringb 2 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 vapier 61 dnl Checks for library functions.
45 ferringb 2 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 vapier 21 AC_CHECK_FUNCS([ \
52 vapier 356 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 vapier 21 ])
58 azarah 278 dnl For librcutil
59     AC_CHECK_FUNCS([remove])
60 ferringb 2
61 azarah 278 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 vapier 243 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 azarah 218 dnl Some libc's like those on bsd have dlopen() in libc, and not libdl
102     AC_CHECK_LIB([dl], [dlopen],
103 azarah 234 [have_libdl="yes"],
104     [have_libdl="no"]
105 azarah 218 )
106     if test x"$have_libdl" = xyes ; then
107 azarah 234 LIBDL="-ldl"
108     AC_SUBST([LIBDL])
109     DL_LIB="dl"
110 azarah 218 else
111 azarah 234 DL_LIB="c"
112     AC_CHECK_LIB([c], [dlopen],
113     [],
114     [AC_MSG_ERROR([Unable to determine library providing dlopen])]
115     )
116 azarah 218 fi
117    
118 vapier 62 dnl uClibc doesn't currently provide dlvsym() so lets
119     dnl verify the toolchain supports it
120 azarah 218 AC_CHECK_LIB([$DL_LIB], [dlvsym],
121 azarah 234 [AC_DEFINE([HAVE_DLVSYM], [1], [libdl supports dlvsym])],
122     [AC_DEFINE([HAVE_DLVSYM], [0], [libdl does not support dlvsym])]
123 vapier 62 )
124    
125 vapier 23 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 azarah 180 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 azarah 234 AC_MSG_RESULT([size_t])
131     AC_DEFINE([TRUNCATE_T], [size_t], [truncate arg type])
132 vapier 23 else
133 azarah 234 AC_MSG_RESULT([off_t])
134     AC_DEFINE([TRUNCATE_T], [off_t], [truncate arg type])
135 vapier 23 fi
136    
137 azarah 220 dnl Check if libc provides RTLD_NEXT
138     AC_MSG_CHECKING([for RTLD_NEXT])
139 azarah 216 AC_TRY_COMPILE([
140 azarah 234 #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 azarah 217 )
150 azarah 220 AC_MSG_RESULT([$have_rtld_next])
151 azarah 235 if test x"$have_rtld_next" = xyes ; then
152     AC_DEFINE([HAVE_RTLD_NEXT], [1], [Have RTLD_NEXT enabled libc])
153     fi
154 azarah 216
155 vapier 53 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 azarah 180 AC_MSG_CHECKING([libc path])
158 vapier 23 echo "int main(void) { return 0; }" > libctest.c
159 vapier 356 $CC $CFLAGS $CPPFLAGS $LDFLAGS -Wl,-verbose -o libctest libctest.c > libctest.log 2>&1
160 vapier 238 cat libctest.log 1>&AS_MESSAGE_LOG_FD
161 vapier 356 LIBC_PATH=$(
162     $AWK '/attempt to open/ { if (($4 ~ /\/libc\.so/) && ($5 == "succeeded")) LIBC = $4; }; END {print LIBC}' libctest.log
163     )
164 azarah 234 rm -f libctest*
165 vapier 239 if test x"$LIBC_PATH" = x || ! test -r "$LIBC_PATH" ; then
166 vapier 238 AC_MSG_ERROR([Unable to determine LIBC PATH ($LIBC_PATH)])
167 vapier 53 fi
168 azarah 180 AC_MSG_RESULT([$LIBC_PATH])
169     AC_SUBST([LIBC_PATH])
170 vapier 23
171 vapier 53 dnl when intercepting libc calls, we have to know the name of the
172     dnl libc to load and search with dl*() calls
173 azarah 180 AC_MSG_CHECKING([libc version])
174 vapier 53 dnl the sed script at the end here looks funny but it's ok ...
175 azarah 234 echo "int main(void) { return 0; }" > libctest.c
176 vapier 356 $CC $CFLAGS $CPPFLAGS $LDFLAGS -Wall -o libctest libctest.c
177     LIBC_VERSION=$(
178     $READELF -d libctest | \
179     grep NEEDED.*libc\\.so | \
180     $AWK '{print $NF}' | sed -e ['s:\[::' -e 's:\]::']
181     )
182 azarah 234 rm -f libctest*
183 vapier 53 if test "$LIBC_VERSION"x = x ; then
184 azarah 234 AC_MSG_ERROR([Unable to determine LIBC VERSION])
185 vapier 53 fi
186 azarah 180 AC_MSG_RESULT([$LIBC_VERSION])
187 azarah 233 AC_DEFINE_UNQUOTED([LIBC_VERSION], ["$LIBC_VERSION"], [Name of libc to hook into])
188 vapier 53
189 vapier 356 dnl We add to CPPFLAGS rather than doing AC_DEFINE_UNQUOTED
190     dnl so we dont have to worry about fully expanding all of
191     dnl the variables ($sysconfdir defaults to "$prefix/etc")
192 azarah 309 SANDBOX_DEFINES='-DETCDIR="\"$(sysconfdir)\"" -DLIBSANDBOX_PATH="\"$(libdir)\"" -DSANDBOX_BASHRC_PATH="\"$(pkgdatadir)\""'
193     AC_SUBST([SANDBOX_DEFINES])
194    
195 azarah 183 AC_OUTPUT([
196 vapier 356 Makefile
197     scripts/Makefile
198     etc/Makefile
199     data/Makefile
200     libsbutil/Makefile
201     libsandbox/Makefile
202     src/Makefile
203 azarah 183 ])

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.20