[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]