ruby-changes:6024
From: nobu <ko1@a...>
Date: Sun, 22 Jun 2008 10:07:42 +0900 (JST)
Subject: [ruby-changes:6024] Ruby:r17534 (ruby_1_8): * configure.in (STRINGIZE, NO_STRING_LITERAL_CONCATENATION): added
nobu 2008-06-22 10:07:22 +0900 (Sun, 22 Jun 2008) New Revision: 17534 Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/configure.in branches/ruby_1_8/defines.h branches/ruby_1_8/version.c Log: * configure.in (STRINGIZE, NO_STRING_LITERAL_CONCATENATION): added check. [ruby-dev:34883] * version.c (ruby_description, ruby_copyright): made constants if possible. * defines.h (STRINGIZE): default definition for C89. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/defines.h?r1=17534&r2=17533&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/version.c?r1=17534&r2=17533&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/configure.in?r1=17534&r2=17533&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=17534&r2=17533&diff_format=u Index: ruby_1_8/configure.in =================================================================== --- ruby_1_8/configure.in (revision 17533) +++ ruby_1_8/configure.in (revision 17534) @@ -296,6 +296,41 @@ AC_DEFINE(TOKEN_PASTE(x,y),[x/**/y]) fi +AC_CACHE_CHECK(stringization, rb_cv_stringization, [ + rb_cv_stringization=no + for string in "#expr" '"expr"'; do + AC_COMPILE_IFELSE([ + AC_LANG_BOOL_COMPILE_TRY([ +#define STRINGIZE0(expr) $string +#define STRINGIZE(expr) STRINGIZE0(expr) +#undef real_test_for_stringization +#define test_for_stringization -.real_test_for_stringization.- +const char stringized[[]] = STRINGIZE(test_for_stringization); +], [sizeof(stringized) == 32])], + [rb_cv_stringization="$string"; break], + [rb_cv_stringization=no]) + done] +) +AC_DEFINE(STRINGIZE(expr),STRINGIZE0(expr)) +if test x"$rb_cv_stringization" != xno -a "$rb_cv_stringization" != "#expr"; then + AC_DEFINE_UNQUOTED(STRINGIZE0(expr),$rb_cv_stringization) + AC_DEFINE(OLD_FASHIONED_STRINGIZATION,1) +fi + +AC_CACHE_CHECK([string literal concatenation], + rb_cv_string_literal_concatenation, [ + AC_COMPILE_IFELSE([ + AC_LANG_BOOL_COMPILE_TRY([ +const char concatenated_literal[[]] = "literals" "to" + "be" "concatenated."; +], [sizeof(concatenated_literal) == 26])], + [rb_cv_string_literal_concatenation=yes], + [rb_cv_string_literal_concatenation=no])] +) +if test "$rb_cv_string_literal_concatenation" = no; then + AC_DEFINE(NO_STRING_LITERAL_CONCATENATION,1) +fi + AC_CACHE_CHECK(for variable length prototypes and stdarg.h, rb_cv_stdarg, [AC_TRY_COMPILE([ #include <stdarg.h> Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 17533) +++ ruby_1_8/ChangeLog (revision 17534) @@ -1,3 +1,13 @@ +Sun Jun 22 10:07:20 2008 Nobuyoshi Nakada <nobu@r...> + + * configure.in (STRINGIZE, NO_STRING_LITERAL_CONCATENATION): added + check. [ruby-dev:34883] + + * version.c (ruby_description, ruby_copyright): made constants if + possible. + + * defines.h (STRINGIZE): default definition for C89. + Sun Jun 22 09:51:14 2008 Nobuyoshi Nakada <nobu@r...> * object.c (rb_class_superclass): rdoc improvement, a patch from Index: ruby_1_8/version.c =================================================================== --- ruby_1_8/version.c (revision 17533) +++ ruby_1_8/version.c (revision 17534) @@ -21,36 +21,44 @@ const char ruby_release_date[] = RUBY_RELEASE_DATE; const char ruby_platform[] = RUBY_PLATFORM; const int ruby_patchlevel = RUBY_PATCHLEVEL; -const char *ruby_description; -const char *ruby_copyright; +#if !NO_STRING_LITERAL_CONCATENATION +const char ruby_description[] = RUBY_DESCRIPTION; +const char ruby_copyright[] = RUBY_COPYRIGHT; +#else +char ruby_description[128]; +char ruby_copyright[128]; +#endif void Init_version() { - static char description[128]; - static char copyright[128]; VALUE v = MKSTR(version); VALUE d = MKSTR(release_date); VALUE p = MKSTR(platform); +#if NO_STRING_LITERAL_CONCATENATION VALUE tmp; +#endif rb_define_global_const("RUBY_VERSION", v); rb_define_global_const("RUBY_RELEASE_DATE", d); rb_define_global_const("RUBY_PLATFORM", p); rb_define_global_const("RUBY_PATCHLEVEL", INT2FIX(RUBY_PATCHLEVEL)); + rb_define_global_const("RUBY_REVISION", INT2FIX(RUBY_REVISION)); + rb_define_global_const("RUBY_DESCRIPTION", MKSTR(description)); + rb_define_global_const("RUBY_COPYRIGHT", MKSTR(copyright)); - snprintf(description, sizeof(description), "ruby %s (%s %s %d) [%s]", +#if NO_STRING_LITERAL_CONCATENATION + snprintf(ruby_description, sizeof(ruby_description), "ruby %s (%s %s %d) [%s]", RUBY_VERSION, RUBY_RELEASE_DATE, RUBY_RELEASE_STR, RUBY_RELEASE_NUM, RUBY_PLATFORM); - ruby_description = description; - tmp = rb_obj_freeze(rb_str_new2(description)); + tmp = rb_obj_freeze(rb_str_new2(ruby_description)); rb_define_global_const("RUBY_DESCRIPTION", tmp); - snprintf(copyright, sizeof(copyright), "ruby - Copyright (C) %d-%d %s", + snprintf(ruby_copyright, sizeof(ruby_copyright), "ruby - Copyright (C) %d-%d %s", RUBY_BIRTH_YEAR, RUBY_RELEASE_YEAR, RUBY_AUTHOR); - ruby_copyright = copyright; - tmp = rb_obj_freeze(rb_str_new2(copyright)); + tmp = rb_obj_freeze(rb_str_new2(ruby_copyright)); rb_define_global_const("RUBY_COPYRIGHT", tmp); +#endif /* obsolete constants */ rb_define_global_const("VERSION", v); Index: ruby_1_8/defines.h =================================================================== --- ruby_1_8/defines.h (revision 17533) +++ ruby_1_8/defines.h (revision 17534) @@ -51,6 +51,11 @@ void *xrealloc _((void*,long)); void xfree _((void*)); +#define STRINGIZE(expr) STRINGIZE0(expr) +#ifndef STRINGIZE0 +#define STRINGIZE0(expr) #expr +#endif + #if SIZEOF_LONG_LONG > 0 # define LONG_LONG long long #elif SIZEOF___INT64 > 0 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/