if(FLAG_NO_STRICT_ALIASING)\r
set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing")\r
endif()\r
+if(FLAG_VISIBILITY)\r
+ add_definitions(-DXML_ENABLE_VISIBILITY=1)\r
+ set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden")\r
+endif(FLAG_VISIBILITY)\r
if (WARNINGS_AS_ERRORS)\r
if(MSVC)\r
add_definitions(/WX)\r
add_definitions(-DHAVE_EXPAT_CONFIG_H)\r
\r
check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING)\r
+check_c_compiler_flag("-fvisibility=hidden" FLAG_VISIBILITY)\r
LDFLAGS="${LDFLAGS} -fno-strict-aliasing"
fi
+AC_MSG_CHECKING(whether compiler supports visibility)
+OLDCFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -fvisibility=hidden -Wall -Werror"
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([[void __attribute__((visibility("default"))) foo(void); void foo(void) {}]])],
+ AC_MSG_RESULT(yes); CFLAGS="$OLDCFLAGS -fvisibility=hidden -DXML_ENABLE_VISIBILITY=1",
+ AC_MSG_RESULT(no); CFLAGS="$OLDCFLAGS")
+
dnl Checks for header files.
AC_HEADER_STDC
# endif
#endif /* not defined XML_STATIC */
-#if !defined(XMLIMPORT) && defined(__GNUC__) && (__GNUC__ >= 4)
+#ifndef XML_ENABLE_VISIBILITY
+# define XML_ENABLE_VISIBILITY 0
+#endif
+
+#if !defined(XMLIMPORT) && XML_ENABLE_VISIBILITY
# define XMLIMPORT __attribute__ ((visibility ("default")))
#endif
#endif
+#ifdef XML_ENABLE_VISIBILITY
+#if XML_ENABLE_VISIBILITY
+__attribute__ ((visibility ("default")))
+#endif
+#endif
void
_INTERNAL_trim_to_complete_utf8_characters(const char * from, const char ** fromLimRef);