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

Contents of /trunk/configure.ac

Parent Directory Parent Directory | Revision Log Revision Log


Revision 243 - (hide annotations) (download)
Mon Feb 6 05:02:51 2006 UTC (8 years, 6 months ago) by vapier
File size: 5048 byte(s)
add static/shared library checks to prevent anyone else wasting our time
1 azarah 180 AC_PREREQ([2.59])
2 azarah 229 AC_INIT([sandbox], [1.2.17], [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 azarah 234 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 azarah 234 bzero ftruncate getcwd lchown memmove \
53     memcpy memset mkdir pathconf realpath \
54     rmdir setenv strcasecmp strchr strdup \
55     strerror strndup strrchr strspn strstr \
56 azarah 235 strtok_r \
57 vapier 21 ])
58 ferringb 2
59 vapier 243 dnl Verify people aren't doing stupid shit
60     if test x"$enable_static" != xno ; then
61     AC_MSG_ERROR([dont be a Kumba, building a libsandbox.a is stupid])
62     fi
63     if test x"$enable_shared" != xyes ; then
64     AC_MSG_ERROR([dont be a Kumba, omitting a libsandbox.so is stupid])
65     fi
66     if echo $CFLAGS | $EGREP -e -static >/dev/null 2>&1; then
67     AC_MSG_ERROR([dont be a Kumba, using -static in CFLAGS is stupid])
68     fi
69     if echo $LDFLAGS | $EGREP -e -static >/dev/null 2>&1; then
70     AC_MSG_ERROR([dont be a Kumba, using -static in LDFLAGS is stupid])
71     fi
72    
73 azarah 218 dnl Some libc's like those on bsd have dlopen() in libc, and not libdl
74     AC_CHECK_LIB([dl], [dlopen],
75 azarah 234 [have_libdl="yes"],
76     [have_libdl="no"]
77 azarah 218 )
78     if test x"$have_libdl" = xyes ; then
79 azarah 234 LIBDL="-ldl"
80     AC_SUBST([LIBDL])
81     DL_LIB="dl"
82 azarah 218 else
83 azarah 234 DL_LIB="c"
84     AC_CHECK_LIB([c], [dlopen],
85     [],
86     [AC_MSG_ERROR([Unable to determine library providing dlopen])]
87     )
88 azarah 218 fi
89    
90 vapier 62 dnl uClibc doesn't currently provide dlvsym() so lets
91     dnl verify the toolchain supports it
92 azarah 218 AC_CHECK_LIB([$DL_LIB], [dlvsym],
93 azarah 234 [AC_DEFINE([HAVE_DLVSYM], [1], [libdl supports dlvsym])],
94     [AC_DEFINE([HAVE_DLVSYM], [0], [libdl does not support dlvsym])]
95 vapier 62 )
96    
97 vapier 23 dnl when using libc5, (f)trucate's offset argument type is size_t with
98     dnl libc5, but it's off_t with libc6 (glibc2).
99 azarah 180 AC_MSG_CHECKING([truncate argument type])
100     TRUNC_ARG_TYPE=`echo '#include <unistd.h>' | $CC -E - | grep -q 'truncate.*size_t'`
101     if test "$TRUNC_ARG_TYPE"x != x ; then
102 azarah 234 AC_MSG_RESULT([size_t])
103     AC_DEFINE([TRUNCATE_T], [size_t], [truncate arg type])
104 vapier 23 else
105 azarah 234 AC_MSG_RESULT([off_t])
106     AC_DEFINE([TRUNCATE_T], [off_t], [truncate arg type])
107 vapier 23 fi
108    
109 azarah 220 dnl Check if libc provides RTLD_NEXT
110     AC_MSG_CHECKING([for RTLD_NEXT])
111 azarah 216 AC_TRY_COMPILE([
112 azarah 234 #define _GNU_SOURCE
113     #include <dlfcn.h>
114     ], [
115     #if !defined(RTLD_NEXT)
116     # error no RTLD_NEXT
117     #endif
118     ],
119     [have_rtld_next="yes"],
120     [have_rtld_next="no"]
121 azarah 217 )
122 azarah 220 AC_MSG_RESULT([$have_rtld_next])
123 azarah 235 if test x"$have_rtld_next" = xyes ; then
124     AC_DEFINE([HAVE_RTLD_NEXT], [1], [Have RTLD_NEXT enabled libc])
125     fi
126 azarah 216
127 vapier 53 dnl we need to handle symbols differently based upon their version,
128     dnl but we have to know which symbols the libc supports first
129 azarah 180 AC_MSG_CHECKING([libc path])
130 vapier 23 echo "int main(void) { return 0; }" > libctest.c
131 vapier 238 $CC $CFLAGS -Wl,-verbose -o libctest libctest.c &> libctest.log
132     cat libctest.log 1>&AS_MESSAGE_LOG_FD
133     LIBC_PATH=`$AWK '/attempt to open/ { if (($4 ~ /\/libc\.so/) && ($5 == "succeeded")) LIBC = $4; }; END {print LIBC}' libctest.log`
134 azarah 234 rm -f libctest*
135 vapier 239 if test x"$LIBC_PATH" = x || ! test -r "$LIBC_PATH" ; then
136 vapier 238 AC_MSG_ERROR([Unable to determine LIBC PATH ($LIBC_PATH)])
137 vapier 53 fi
138 azarah 180 AC_MSG_RESULT([$LIBC_PATH])
139     AC_SUBST([LIBC_PATH])
140 vapier 23
141 vapier 53 dnl when intercepting libc calls, we have to know the name of the
142     dnl libc to load and search with dl*() calls
143 azarah 180 AC_MSG_CHECKING([libc version])
144 vapier 53 dnl the sed script at the end here looks funny but it's ok ...
145     dnl they're m4 escape sequences for left and right brackets
146 azarah 234 echo "int main(void) { return 0; }" > libctest.c
147     $CC -Wall -o libctest libctest.c
148 vapier 53 LIBC_VERSION=`readelf -d libctest | grep NEEDED.*libc\\.so | $AWK '{print $NF}' | sed -e 's:\@<:@::' -e 's:\@:>@::'`
149 azarah 234 rm -f libctest*
150 vapier 53 if test "$LIBC_VERSION"x = x ; then
151 azarah 234 AC_MSG_ERROR([Unable to determine LIBC VERSION])
152 vapier 53 fi
153 azarah 180 AC_MSG_RESULT([$LIBC_VERSION])
154 azarah 233 AC_DEFINE_UNQUOTED([LIBC_VERSION], ["$LIBC_VERSION"], [Name of libc to hook into])
155 vapier 53
156 azarah 179 dnl check if we have 32bit or 64bit output
157 azarah 181 AC_ARG_ENABLE([multilib],
158 azarah 234 AS_HELP_STRING([--enable-multilib],
159     [enable building for multilib setups (default=disabled)]),
160     [enable_multilib="$enableval"],
161     [enable_multilib="no"]
162 azarah 181 )
163    
164 azarah 216 if test x"$enable_multilib" != xno ; then
165 azarah 234 AC_DEFINE([SB_HAVE_MULTILIB], [1], [Have multilib enabled system])
166 azarah 179 fi
167    
168 azarah 183 AC_OUTPUT([
169 azarah 234 Makefile
170     scripts/Makefile
171     data/Makefile
172     src/Makefile
173 azarah 183 ])

Properties

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

  ViewVC Help
Powered by ViewVC 1.1.20