Apologies for providing a patch against 0.9.22 instead of CVS!

Here's a new patch against CVS for the library search patch problem.

Cheers,

Ahilan
--- tcc.c.orig	2005-05-17 16:32:22.000000000 -0700
+++ tcc.c	2005-05-17 16:30:45.000000000 -0700
@@ -9696,19 +9696,6 @@
     tcc_define_symbol(s, "__PTRDIFF_TYPE__", "int");
     tcc_define_symbol(s, "__WCHAR_TYPE__", "int");
     
-    /* default library paths */
-#ifdef TCC_TARGET_PE
-    {
-        char buf[1024];
-        snprintf(buf, sizeof(buf), "%s/lib", tcc_lib_path);
-        tcc_add_library_path(s, buf);
-    }
-#else
-    tcc_add_library_path(s, "/usr/local/lib");
-    tcc_add_library_path(s, "/usr/lib");
-    tcc_add_library_path(s, "/lib");
-#endif
-
     /* no section zero */
     dynarray_add((void ***)&s->sections, &s->nb_sections, NULL);
 
@@ -9954,23 +9941,26 @@
     char buf[1024];
     int i;
     
-    /* first we look for the dynamic library if not static linking */
-    if (!s->static_link) {
+    /* look for the library */
+    for(i = 0; i < s->nb_library_paths; i++) {
+	/* if dynamically linking, prefer the dynamic library
+	   to the shared library */
+	if (!s->static_link) {
 #ifdef TCC_TARGET_PE
-        snprintf(buf, sizeof(buf), "%s.def", libraryname);
+	    snprintf(buf, sizeof(buf), "%s/%s.def", 
+		     s->library_paths[i], libraryname);
 #else
-        snprintf(buf, sizeof(buf), "lib%s.so", libraryname);
+	    snprintf(buf, sizeof(buf), "%s/lib%s.so", 
+		     s->library_paths[i], libraryname);
 #endif
-        if (tcc_add_dll(s, buf, 0) == 0)
-            return 0;
-    }
-
-    /* then we look for the static library */
-    for(i = 0; i < s->nb_library_paths; i++) {
-        snprintf(buf, sizeof(buf), "%s/lib%s.a", 
-                 s->library_paths[i], libraryname);
-        if (tcc_add_file_internal(s, buf, 0) == 0)
-            return 0;
+	    if (tcc_add_file_internal(s, buf, 0) == 0)
+		return 0;
+	}
+
+	snprintf(buf, sizeof(buf), "%s/lib%s.a", 
+		 s->library_paths[i], libraryname);
+	if (tcc_add_file_internal(s, buf, 0) == 0)
+	    return 0;
     }
     return -1;
 }
@@ -10539,6 +10529,19 @@
 
     optind = parse_args(s, argc - 1, argv + 1) + 1;
 
+    /* default library paths */
+#ifdef TCC_TARGET_PE
+    {
+        char buf[1024];
+        snprintf(buf, sizeof(buf), "%s/lib", tcc_lib_path);
+        tcc_add_library_path(s, buf);
+    }
+#else
+    tcc_add_library_path(s, "/usr/local/lib");
+    tcc_add_library_path(s, "/usr/lib");
+    tcc_add_library_path(s, "/lib");
+#endif
+
     if (print_search_dirs) {
         /* enough for Linux kernel */
         printf("install: %s/\n", tcc_lib_path);
_______________________________________________
Tinycc-devel mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/tinycc-devel

Reply via email to