works with the linker on the system, and define _warn_references to nothing if not.tags/json-c-0.11-20130402
@@ -1,5 +1,8 @@ | |||||
/* config.h.in. Generated from configure.in by autoheader. */ | /* config.h.in. Generated from configure.in by autoheader. */ | ||||
/* Define if .gnu.warning accepts long strings. */ | |||||
#undef HAS_GNU_WARNING_LONG | |||||
/* Define to 1 if you have the <dlfcn.h> header file. */ | /* Define to 1 if you have the <dlfcn.h> header file. */ | ||||
#undef HAVE_DLFCN_H | #undef HAVE_DLFCN_H | ||||
@@ -114,9 +117,6 @@ | |||||
/* Define to the one symbol short name of this package. */ | /* Define to the one symbol short name of this package. */ | ||||
#undef PACKAGE_TARNAME | #undef PACKAGE_TARNAME | ||||
/* Define to the home page for this package. */ | |||||
#undef PACKAGE_URL | |||||
/* Define to the version of this package. */ | /* Define to the version of this package. */ | ||||
#undef PACKAGE_VERSION | #undef PACKAGE_VERSION | ||||
@@ -37,6 +37,24 @@ AC_FUNC_MALLOC | |||||
AC_FUNC_REALLOC | AC_FUNC_REALLOC | ||||
AC_CHECK_FUNCS(strcasecmp strdup strndup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp) | AC_CHECK_FUNCS(strcasecmp strdup strndup strerror snprintf vsnprintf vasprintf open vsyslog strncasecmp) | ||||
#check if .section.gnu.warning accepts long strings (for __warn_references) | |||||
AC_LANG_PUSH([C]) | |||||
AC_MSG_CHECKING([if .gnu.warning accepts long strings]) | |||||
AC_LINK_IFELSE([[ | |||||
extern void json_object_get(); | |||||
__asm__(".section .gnu.json_object_get,\n\t.ascii \"Please link against libjson-c instead of libjson\"\n\t.text"); | |||||
int main(int c,char* v) {return 0;} | |||||
]], [ | |||||
AC_DEFINE(HAS_GNU_WARNING_LONG, 1, [Define if .gnu.warning accepts long strings.]) | |||||
AC_MSG_RESULT(yes) | |||||
], [ | |||||
AC_MSG_RESULT(no) | |||||
]) | |||||
AC_LANG_POP([C]) | |||||
AM_PROG_LIBTOOL | AM_PROG_LIBTOOL | ||||
AC_CONFIG_FILES([ | AC_CONFIG_FILES([ | ||||
@@ -7,11 +7,10 @@ | |||||
#ifndef __warn_references | #ifndef __warn_references | ||||
#ifdef __GNUC__ | |||||
#define __warn_references(sym,msg) \ | |||||
__asm(".pushsection .gnu.warning." #sym "\n" \ | |||||
".ascii \"" msg "\"\n" \ | |||||
".popsection"); | |||||
#if defined(__GNUC__) && defined (HAS_GNU_WARNING_LONG) | |||||
#define __warn_references(sym,msg) \ | |||||
__asm__(".section .gnu" #sym ",\n\t.ascii \"" msg "\"\n\t.text"); | |||||
#else | #else | ||||
#define __warn_references(sym,msg) /* nothing */ | #define __warn_references(sym,msg) /* nothing */ | ||||