1 dnl SMB Build Environment CC Checks
2 dnl -------------------------------------------------------
3 dnl Copyright (C) Stefan (metze) Metzmacher 2004
4 dnl Released under the GNU GPL
5 dnl -------------------------------------------------------
8 AC_LIBREPLACE_CC_CHECKS
11 # Set the debug symbol option if we have
12 # --enable-*developer or --enable-debug
13 # and the compiler supports it
15 if test x$ac_cv_prog_cc_g = xyes -a x$debug = xyes; then
19 ############################################
20 # check if the compiler handles c99 struct initialization
21 LIBREPLACE_C99_STRUCT_INIT(samba_cv_c99_struct_initialization=yes,
22 samba_cv_c99_struct_initialization=no)
24 if test x"$samba_cv_c99_struct_initialization" != x"yes"; then
25 AC_MSG_WARN([C compiler does not support c99 struct initialization!])
26 AC_MSG_ERROR([Please Install gcc from http://gcc.gnu.org/])
29 ############################################
30 # check if the compiler can handle negative enum values
31 # and don't truncate the values to INT_MAX
32 # a runtime test is needed here
33 AC_CACHE_CHECK([that the C compiler understands negative enum values],SMB_BUILD_CC_NEGATIVE_ENUM_VALUES, [
37 enum negative_values { NEGATIVE_VALUE = 0xFFFFFFFF };
39 enum negative_values v1 = NEGATIVE_VALUE;
40 unsigned v2 = NEGATIVE_VALUE;
42 if (v1 != 0xFFFFFFFF) {
43 printf("%u != 0xFFFFFFFF\n", v1);
46 if (v2 != 0xFFFFFFFF) {
47 printf("%u != 0xFFFFFFFF\n", v2);
54 SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes,SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=no)])
55 if test x"$SMB_BUILD_CC_NEGATIVE_ENUM_VALUES" != x"yes"; then
56 AC_MSG_WARN([using --unit-enums for pidl])
57 PIDL_ARGS="$PIDL_ARGS --uint-enums"
60 AC_MSG_CHECKING([for test routines])
61 AC_TRY_RUN([#include "${srcdir-.}/build/tests/trivial.c"],
63 AC_MSG_ERROR([cant find test code. Aborting config]),
64 AC_MSG_WARN([cannot run when cross-compiling]))
67 # Check if the compiler support ELF visibility for symbols
70 visibility_attribute=no
72 if test x"$GCC" = x"yes" ; then
73 AX_CFLAGS_GCC_OPTION([-fvisibility=hidden], VISIBILITY_CFLAGS)
76 if test -n "$VISIBILITY_CFLAGS"; then
77 AC_MSG_CHECKING([whether the C compiler supports the visibility attribute])
80 CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
82 void vis_foo1(void) {}
83 __attribute__((visibility("default"))) void vis_foo2(void) {}
84 #include "${srcdir-.}/build/tests/trivial.c"
87 AC_DEFINE(HAVE_VISIBILITY_ATTR,1,[Whether the C compiler supports the visibility attribute])
88 visibility_attribute=yes
94 AC_SUBST(visibility_attribute)
97 # Check if the compiler can handle the options we selected by
101 if test x$developer = xyes; then
102 OLD_CFLAGS="${CFLAGS}"
104 CFLAGS="${CFLAGS} -D_SAMBA_DEVELOPER_DONNOT_USE_O2_"
105 DEVELOPER_CFLAGS="-DDEBUG_PASSWORD -DDEVELOPER"
106 if test x"$GCC" = x"yes" ; then
108 # warnings we want...
110 AX_CFLAGS_GCC_OPTION(-Wall, DEVELOPER_CFLAGS)
111 AX_CFLAGS_GCC_OPTION(-Wshadow, DEVELOPER_CFLAGS)
112 AX_CFLAGS_GCC_OPTION(-Werror-implicit-function-declaration, DEVELOPER_CFLAGS)
113 AX_CFLAGS_GCC_OPTION(-Wstrict-prototypes, DEVELOPER_CFLAGS)
114 AX_CFLAGS_GCC_OPTION(-Wpointer-arith, DEVELOPER_CFLAGS)
115 AX_CFLAGS_GCC_OPTION(-Wcast-qual, DEVELOPER_CFLAGS)
116 AX_CFLAGS_GCC_OPTION(-Wcast-align, DEVELOPER_CFLAGS)
117 AX_CFLAGS_GCC_OPTION(-Wwrite-strings, DEVELOPER_CFLAGS)
118 AX_CFLAGS_GCC_OPTION(-Wmissing-format-attribute, DEVELOPER_CFLAGS)
119 AX_CFLAGS_GCC_OPTION(-Wformat=2, DEVELOPER_CFLAGS)
120 AX_CFLAGS_GCC_OPTION(-Wdeclaration-after-statement, DEVELOPER_CFLAGS)
121 AX_CFLAGS_GCC_OPTION(-Wunused-macros, DEVELOPER_CFLAGS)
122 # AX_CFLAGS_GCC_OPTION(-Wextra, DEVELOPER_CFLAGS)
123 # AX_CFLAGS_GCC_OPTION(-Wc++-compat, DEVELOPER_CFLAGS)
124 # AX_CFLAGS_GCC_OPTION(-Wmissing-prototypes, DEVELOPER_CFLAGS)
125 # AX_CFLAGS_GCC_OPTION(-Wmissing-declarations, DEVELOPER_CFLAGS)
126 # AX_CFLAGS_GCC_OPTION(-Wmissing-field-initializers, DEVELOPER_CFLAGS)
128 # warnings we don't want...
130 AX_CFLAGS_GCC_OPTION(-Wno-format-y2k, DEVELOPER_CFLAGS)
131 AX_CFLAGS_GCC_OPTION(-Wno-unused-parameter, DEVELOPER_CFLAGS)
133 AX_CFLAGS_IRIX_OPTION(-fullwarn, DEVELOPER_CFLAGS)
136 CFLAGS="${OLD_CFLAGS}"
138 if test -n "$DEVELOPER_CFLAGS"; then
139 OLD_CFLAGS="${CFLAGS}"
140 CFLAGS="${CFLAGS} ${DEVELOPER_CFLAGS}"
141 AC_MSG_CHECKING([that the C compiler can use the DEVELOPER_CFLAGS])
142 AC_TRY_COMPILE([],[],
144 DEVELOPER_CFLAGS=""; AC_MSG_RESULT(no))
145 CFLAGS="${OLD_CFLAGS}"
148 # allow for --with-hostcc=gcc
149 AC_ARG_WITH(hostcc,[ --with-hostcc=compiler choose host compiler],
152 if test z"$cross_compiling" = "yes"; then
160 AC_PATH_PROG(GCOV,gcov)