[Bf-blender-cvs] [d5c2901] opensubdiv-modifier: OpenSubdiv: Missed this file in the previous commit

Sergey Sharybin noreply at git.blender.org
Mon Aug 4 19:08:55 CEST 2014


Commit: d5c2901d3f5369384d2953d0b8cef13c3dc54c54
Author: Sergey Sharybin
Date:   Mon Aug 4 23:08:40 2014 +0600
Branches: opensubdiv-modifier
https://developer.blender.org/rBd5c2901d3f5369384d2953d0b8cef13c3dc54c54

OpenSubdiv: Missed this file in the previous commit

===================================================================

A	extern/cuew/auto/cuda_extra.py

===================================================================

diff --git a/extern/cuew/auto/cuda_extra.py b/extern/cuew/auto/cuda_extra.py
new file mode 100644
index 0000000..fd4f466
--- /dev/null
+++ b/extern/cuew/auto/cuda_extra.py
@@ -0,0 +1,125 @@
+extra_code = """
+static void path_join(const char *path1,
+                      const char *path2,
+                      int maxlen,
+                      char *result) {
+#if defined(WIN32) || defined(_WIN32)
+  const char separator = '\\\\';
+#else
+  const char separator = '/';
+#endif
+  int n = snprintf(result, maxlen, "%s%c%s", path1, separator, path2);
+  if (n != -1 && n < maxlen) {
+    result[n] = '\\0';
+  }
+  else {
+    result[maxlen - 1] = '\\0';
+  }
+}
+
+static int path_exists(const char *path) {
+  struct stat st;
+  if (stat(path, &st)) {
+    return 0;
+  }
+  return 1;
+}
+
+const char *cuewCompilerPath(void) {
+#ifdef _WIN32
+  const char *defaultpaths[] = {"C:/CUDA/bin", NULL};
+  const char *executable = "nvcc.exe";
+#else
+  const char *defaultpaths[] = {
+    "/Developer/NVIDIA/CUDA-5.0/bin",
+    "/usr/local/cuda-5.0/bin",
+    "/usr/local/cuda/bin",
+    "/Developer/NVIDIA/CUDA-6.0/bin",
+    "/usr/local/cuda-6.0/bin",
+    "/Developer/NVIDIA/CUDA-5.5/bin",
+    "/usr/local/cuda-5.5/bin",
+    NULL};
+  const char *executable = "nvcc";
+#endif
+  int i;
+
+  const char *binpath = getenv("CUDA_BIN_PATH");
+
+  static char nvcc[65536];
+
+  if (binpath) {
+    path_join(binpath, executable, sizeof(nvcc), nvcc);
+    if (path_exists(nvcc))
+      return nvcc;
+  }
+
+  for (i = 0; defaultpaths[i]; ++i) {
+    path_join(defaultpaths[i], executable, sizeof(nvcc), nvcc);
+    if (path_exists(nvcc))
+      return nvcc;
+  }
+
+#ifndef _WIN32
+  {
+    FILE *handle = popen("which nvcc", "r");
+    if (handle) {
+      char buffer[4096] = {0};
+      int len = fread(buffer, 1, sizeof(buffer) - 1, handle);
+      buffer[len] = '\\0';
+      pclose(handle);
+
+      if (buffer[0])
+        return "nvcc";
+    }
+  }
+#endif
+
+  return NULL;
+}
+
+int cuewCompilerVersion(void) {
+  const char *path = cuewCompilerPath();
+  const char *marker = "Cuda compilation tools, release ";
+  FILE *pipe;
+  int major, minor;
+  char *versionstr;
+  char buf[128];
+  char output[65536] = "\\0";
+  char command[65536] = "\\0";
+
+  if (path == NULL)
+    return 0;
+
+  /* get --version output */
+  strncpy(command, path, sizeof(command));
+  strncat(command, " --version", sizeof(command) - strlen(path));
+  pipe = popen(command, "r");
+  if (!pipe) {
+    fprintf(stderr, "CUDA: failed to run compiler to retrieve version");
+    return 0;
+  }
+
+  while (!feof(pipe)) {
+    if (fgets(buf, sizeof(buf), pipe) != NULL) {
+      strncat(output, buf, sizeof(output) - strlen(output));
+    }
+  }
+
+  pclose(pipe);
+
+  /* parse version number */
+  versionstr = strstr(output, marker);
+  if (versionstr == NULL) {
+    fprintf(stderr, "CUDA: failed to find version number in:\\n\\n%s\\n", output);
+    return 0;
+  }
+  versionstr += strlen(marker);
+
+  if (sscanf(versionstr, "%d.%d", &major, &minor) < 2) {
+    fprintf(stderr, "CUDA: failed to parse version number from:\\n\\n%s\\n", output);
+    return 0;
+  }
+
+  return 10 * major + minor;
+}
+"""




More information about the Bf-blender-cvs mailing list