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

ruby-changes:51837

From: k0kubun <ko1@a...>
Date: Wed, 25 Jul 2018 22:54:07 +0900 (JST)
Subject: [ruby-changes:51837] k0kubun:r64051 (trunk): mjit.c: completely separate compile_c_to_so

k0kubun	2018-07-25 22:54:00 +0900 (Wed, 25 Jul 2018)

  New Revision: 64051

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=64051

  Log:
    mjit.c: completely separate compile_c_to_so
    
    by whether on mswin or not.
    
    This is needed because I'm going to renew the compilation process for
    unix, keeping mswin builds as it is, at first.
    
    This commit is not changing the behavior at all.

  Modified files:
    trunk/mjit.c
Index: mjit.c
===================================================================
--- mjit.c	(revision 64050)
+++ mjit.c	(revision 64051)
@@ -741,34 +741,18 @@ make_pch(void) https://github.com/ruby/ruby/blob/trunk/mjit.c#L741
 #define append_str(p, str) append_str2(p, str, sizeof(str)-1)
 #define append_lit(p, str) append_str2(p, str, rb_strlen_lit(str))
 
-/* Compile C file to so. It returns 1 if it succeeds. */
+#ifdef _MSC_VER
+
+/* Compile C file to so. It returns 1 if it succeeds. (mswin) */
 static int
 compile_c_to_so(const char *c_file, const char *so_file)
 {
     int exit_code;
-    const char *files[] = {
-#ifndef _MSC_VER
-        "-o",
-#endif
-        NULL, NULL,
-#ifdef __clang__
-        "-include-pch", NULL,
-#endif
-#ifdef _WIN32
-# ifdef _MSC_VER
-        "-link",
-# endif
-        libruby_pathflag,
-#endif
-        NULL,
-    };
+    const char *files[] = { NULL, NULL, "-link", libruby_pathflag, NULL };
     char **args;
-#ifdef _MSC_VER
     char *p;
     int solen;
-#endif
 
-#ifdef _MSC_VER
     solen = strlen(so_file);
     files[0] = p = (char *)malloc(sizeof(char) * (rb_strlen_lit("-Fe") + solen + 1));
     if (p == NULL)
@@ -777,13 +761,44 @@ compile_c_to_so(const char *c_file, cons https://github.com/ruby/ruby/blob/trunk/mjit.c#L761
     p = append_str2(p, so_file, solen);
     *p = '\0';
     files[1] = c_file;
+    args = form_args(5, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
+                     files, CC_LIBS, CC_DLDFLAGS_ARGS);
+    if (args == NULL)
+        return FALSE;
+
+    exit_code = exec_process(cc_path, args);
+    free(args);
+    free((char *)files[0]);
+
+    if (exit_code != 0)
+        verbose(2, "compile_c_to_so: compile error: %d", exit_code);
+    return exit_code == 0;
+}
+
 #else
+
+/* Compile C file to so. It returns 1 if it succeeds. (non-mswin) */
+static int
+compile_c_to_so(const char *c_file, const char *so_file)
+{
+    int exit_code;
+    const char *files[] = {
+        "-o", NULL, NULL,
+# ifdef __clang__
+        "-include-pch", NULL,
+# endif
+# ifdef _WIN32
+        libruby_pathflag,
+# endif
+        NULL,
+    };
+    char **args;
+
 # ifdef __clang__
     files[4] = pch_file;
 # endif
     files[2] = c_file;
     files[1] = so_file;
-#endif
     args = form_args(5, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS,
                      files, CC_LIBS, CC_DLDFLAGS_ARGS);
     if (args == NULL)
@@ -791,15 +806,14 @@ compile_c_to_so(const char *c_file, cons https://github.com/ruby/ruby/blob/trunk/mjit.c#L806
 
     exit_code = exec_process(cc_path, args);
     free(args);
-#ifdef _MSC_VER
-    free((char *)files[0]);
-#endif
 
     if (exit_code != 0)
         verbose(2, "compile_c_to_so: compile error: %d", exit_code);
     return exit_code == 0;
 }
 
+#endif
+
 static void *
 load_func_from_so(const char *so_file, const char *funcname, struct rb_mjit_unit *unit)
 {

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

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