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 */ | ||||