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

ruby-changes:28416

From: akr <ko1@a...>
Date: Thu, 25 Apr 2013 23:17:42 +0900 (JST)
Subject: [ruby-changes:28416] akr:r40468 (trunk): * ext/curses/extconf.rb: Implement

akr	2013-04-25 23:17:33 +0900 (Thu, 25 Apr 2013)

  New Revision: 40468

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=40468

  Log:
    * ext/curses/extconf.rb: Implement
      --with-curses-version={function,variable} configure option for
      cross-compiling.

  Modified files:
    trunk/ChangeLog
    trunk/ext/curses/extconf.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 40467)
+++ ChangeLog	(revision 40468)
@@ -1,3 +1,9 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1
+Thu Apr 25 23:16:28 2013  Tanaka Akira  <akr@f...>
+
+	* ext/curses/extconf.rb: Implement
+	  --with-curses-version={function,variable} configure option for
+	  cross-compiling.
+
 Thu Apr 25 18:15:46 2013  Tanaka Akira  <akr@f...>
 
 	* ext/socket/extconf.rb: Don't use WIDE getaddrinfo by default.
Index: ext/curses/extconf.rb
===================================================================
--- ext/curses/extconf.rb	(revision 40467)
+++ ext/curses/extconf.rb	(revision 40468)
@@ -77,39 +77,57 @@ if header_library https://github.com/ruby/ruby/blob/trunk/ext/curses/extconf.rb#L77
   # SVR4 curses has a (undocumented) variable char *curses_version.
   # ncurses and PDcurses has a function char *curses_version().
   # Note that the original BSD curses doesn't provide version information.
+  #
+  # configure option:
+  #   --with-curses-version=function    for SVR4
+  #   --with-curses-version=variable    for ncurses and PDcurses
+  #   (not given)                       automatically determined
 
-  prolog = cpp_include(curses)
-  if checking_for(checking_message('function curses_version', curses)) {
-      try_run(<<-"End")
-        #{prolog}
-        int main(int argc, char *argv[])
-        {
-            curses_version();
-            return EXIT_SUCCESS;
-        }
-      End
-    }
+  case with_curses_version = with_config("curses-version")
+  when "function"
     $defs << '-DHAVE_FUNC_CURSES_VERSION'
-  end
-
-  if checking_for(checking_message('variable curses_version', curses)) {
-      try_run(<<-"End")
-        #{prolog}
-        extern char *curses_version;
-        int main(int argc, char *argv[])
-        {
-            int i = 0;
-            for (i = 0; i < 100; i++) {
-                if (curses_version[i] == 0)
-                    return 0 < i ? EXIT_SUCCESS : EXIT_FAILURE;
-                if (curses_version[i] & 0x80)
-                    return EXIT_FAILURE;
-            }
-            return EXIT_FAILURE;
-        }
-      End
-    }
+  when "variable"
     $defs << '-DHAVE_VAR_CURSES_VERSION'
+  when nil
+    function_p = nil
+    variable_p = nil
+    if [header, library].any? {|v| /ncurses|pdcurses|xcurses/i =~ v }
+      function_p = true
+    end
+    if !CROSS_COMPILING
+      prolog = cpp_include(curses)
+      function_p = checking_for(checking_message('function curses_version', curses)) {
+        try_run(<<-"End")
+          #{prolog}
+          int main(int argc, char *argv[])
+          {
+              curses_version();
+              return EXIT_SUCCESS;
+          }
+        End
+      }
+      variable_p = checking_for(checking_message('variable curses_version', curses)) {
+        try_run(<<-"End")
+          #{prolog}
+          extern char *curses_version;
+          int main(int argc, char *argv[])
+          {
+              int i = 0;
+              for (i = 0; i < 100; i++) {
+                  if (curses_version[i] == 0)
+                      return 0 < i ? EXIT_SUCCESS : EXIT_FAILURE;
+                  if (curses_version[i] & 0x80)
+                      return EXIT_FAILURE;
+              }
+              return EXIT_FAILURE;
+          }
+        End
+      }
+    end
+    $defs << '-DHAVE_FUNC_CURSES_VERSION' if function_p
+    $defs << '-DHAVE_VAR_CURSES_VERSION' if variable_p
+  else
+    warn "unexpeted value for --with-curses-version: #{with_curses_version}"
   end
 
   create_makefile("curses")

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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