@@ -2,34 +2,22 @@ AC_CONFIG_SRCDIR(src) AC_CANONICAL_HOST AC_PROG_CC -AC_PROG_OBJC AC_PROG_CPP AC_PROG_LN_S AC_PROG_EGREP CFLAGS="$CFLAGS -Wall" -OBJCFLAGS="$OBJCFLAGS -Wall -fobjc-exceptions" -OBJCFLAGS="$OBJCFLAGS -fconstant-string-class=OFConstString" -LIBS="$LIBS -lobjc" - -AX_CHECK_COMPILER_FLAGS(-pipe, [ - CFLAGS="$CFLAGS -pipe" - OBJCFLAGS="$OBJCFLAGS -pipe"]) -AX_CHECK_COMPILER_FLAGS(-fno-common, [ - CFLAGS="$CFLAGS -fno-common" - OBJCFLAGS="$OBJCFLAGS -fno-common"]) -AX_CHECK_COMPILER_FLAGS(-fno-constant-cfstrings, - [OBJCFLAGS="$OBJCFLAGS -fno-constant-cfstrings"]) +AX_CHECK_COMPILER_FLAGS(-pipe, [CFLAGS="$CFLAGS -pipe"]) +AX_CHECK_COMPILER_FLAGS(-fno-common, [CFLAGS="$CFLAGS -fno-common"]) AC_DEFINE(OF_CONFIG_H, 1, [Define so that we know we got our config.h]) BUILDSYS_LIB AC_DEFINE_UNQUOTED(PLUGIN_SUFFIX, "$PLUGIN_SUFFIX", [Suffix for plugins]) - if test x"$PLUGIN_SUFFIX" != "x"; then AC_SUBST(OFPLUGIN_M, "OFPlugin.m") AC_SUBST(OFPLUGIN, "OFPlugin") fi @@ -58,13 +46,10 @@ size_max="((size_t)-1)"]) AC_DEFINE_UNQUOTED(SIZE_MAX, $size_max, [Maximum value for size_t])]) AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl") -AC_CHECK_HEADER(objc/runtime.h, - [AC_DEFINE(HAVE_OBJC_RUNTIME_H, 1, [Whether we have objc/runtime.h])]) - AC_CHECK_FUNC(asprintf, [ have_asprintf="yes" AC_DEFINE(HAVE_ASPRINTF, 1, "Whether we have asprintf")], [ have_asprintf="no" AC_SUBST(ASPRINTF_C, "asprintf.c")]) @@ -136,13 +121,49 @@ test x"$ac_cv_have_ipv6" = x"yes" && \ AC_DEFINE(HAVE_IPV6, 1, "Whether we have IPv6 support") AC_CHECK_HEADERS(sys/mman.h) -if test x"$GCC" = x"yes"; then - CFLAGS="$CFLAGS -Werror" +AC_LANG([Objective C]) +AC_PROG_OBJC + +OBJCFLAGS="$OBJCFLAGS -Wall -fobjc-exceptions" +OBJCFLAGS="$OBJCFLAGS -fconstant-string-class=OFConstString" +LIBS="$LIBS -lobjc" + +AX_CHECK_COMPILER_FLAGS(-pipe, [OBJCFLAGS="$OBJCFLAGS -pipe"]) +AX_CHECK_COMPILER_FLAGS(-fno-common, [OBJCFLAGS="$OBJCFLAGS -fno-common"]) +AX_CHECK_COMPILER_FLAGS(-fno-constant-cfstrings, + [OBJCFLAGS="$OBJCFLAGS -fno-constant-cfstrings"]) + +AC_CHECK_HEADER(objc/runtime.h, + [AC_DEFINE(HAVE_OBJC_RUNTIME_H, 1, [Whether we have objc/runtime.h])]) + +test x"$GCC" = x"yes" && CFLAGS="$CFLAGS -Werror" +if test x"$GOBJC" = x"yes"; then + old_OBJCFLAGS="$OBJCFLAGS" OBJCFLAGS="$OBJCFLAGS -Werror" + + AC_MSG_CHECKING(whether gcc has bug objc/27438) + AC_TRY_COMPILE([ + #import + + @interface OFConstString + { + Class isa; + const char *string; + unsigned long size; + } + @end + + void *_OFConstStringClassReference; + ], [ + OFConstString *test = @""; + test++; /* Get rid of unused variable warning */ + ], [AC_MSG_RESULT(no)], [ + AC_MSG_RESULT([yes, disabling -Werror]) + OBJCFLAGS="$old_OBJCFLAGS"]) fi if test x"$cross_compiling" = x"yes"; then case "$host" in *-*-mingw*)