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/