Alexandre Julliard : makefiles: Expand the names of static libraries in linker commands.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 25 10:00:38 CDT 2016


Module: wine
Branch: master
Commit: 255b90c64c5f64ba65a5101436ea62d5f1df966e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=255b90c64c5f64ba65a5101436ea62d5f1df966e

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Fri Mar 25 15:19:53 2016 +0900

makefiles: Expand the names of static libraries in linker commands.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/makedep.c | 52 ++++++++++++++++++++++++++++------------------------
 1 file changed, 28 insertions(+), 24 deletions(-)

diff --git a/tools/makedep.c b/tools/makedep.c
index 8cbba1b..9ee316c 100644
--- a/tools/makedep.c
+++ b/tools/makedep.c
@@ -1926,16 +1926,17 @@ static struct strarray get_local_dependencies( const struct makefile *make, cons
 
 
 /*******************************************************************
- *         has_static_lib
+ *         get_static_lib
  *
- * Check if makefile builds the named static library.
+ * Check if makefile builds the named static library and return the full lib path.
  */
-static int has_static_lib( const struct makefile *make, const char *name )
+static const char *get_static_lib( const struct makefile *make, const char *name )
 {
-    if (!make->staticlib) return 0;
-    if (strncmp( make->staticlib, "lib", 3 )) return 0;
-    if (strncmp( make->staticlib + 3, name, strlen(name) )) return 0;
-    return !strcmp( make->staticlib + 3 + strlen(name), ".a" );
+    if (!make->staticlib) return NULL;
+    if (strncmp( make->staticlib, "lib", 3 )) return NULL;
+    if (strncmp( make->staticlib + 3, name, strlen(name) )) return NULL;
+    if (strcmp( make->staticlib + 3 + strlen(name), ".a" )) return NULL;
+    return base_dir_path( make, make->staticlib );
 }
 
 
@@ -1954,7 +1955,8 @@ static struct strarray add_default_libraries( const struct makefile *make, struc
 
     for (i = 0; i < all_libs.count; i++)
     {
-        int found = 0;
+        const char *lib = NULL;
+
         if (!strncmp( all_libs.str[i], "-l", 2 ))
         {
             const char *name = all_libs.str[i] + 2;
@@ -1963,17 +1965,17 @@ static struct strarray add_default_libraries( const struct makefile *make, struc
             {
                 const struct makefile *submake = top_makefile->submakes[j];
 
-                if ((found = has_static_lib( submake, name )))
-                {
-                    const char *lib = strmake( "%s/lib%s.a",
-                                               top_obj_dir_path( make, submake->base_dir ), name );
-                    strarray_add( deps, lib );
-                    strarray_add( &ret, lib );
-                    break;
-                }
+                if ((lib = get_static_lib( submake, name ))) break;
             }
         }
-        if (!found) strarray_add( &ret, all_libs.str[i] );
+
+        if (lib)
+        {
+            lib = top_obj_dir_path( make, lib );
+            strarray_add( deps, lib );
+            strarray_add( &ret, lib );
+        }
+        else strarray_add( &ret, all_libs.str[i] );
     }
     return ret;
 }
@@ -1991,6 +1993,7 @@ static struct strarray add_import_libs( const struct makefile *make, struct stra
     for (i = 0; i < imports.count; i++)
     {
         const char *name = imports.str[i];
+        const char *lib = NULL;
 
         for (j = 0; j < top_makefile->subdirs.count; j++)
         {
@@ -2007,15 +2010,16 @@ static struct strarray add_import_libs( const struct makefile *make, struct stra
                 break;
             }
 
-            if (has_static_lib( submake, name ))
-            {
-                const char *dir = top_obj_dir_path( make, submake->base_dir );
+            if ((lib = get_static_lib( submake, name ))) break;
+        }
 
-                strarray_add( deps, strmake( "%s/lib%s.a", dir, name ));
-                break;
-            }
+        if (lib)
+        {
+            lib = top_obj_dir_path( make, lib );
+            strarray_add( deps, lib );
+            strarray_add( &ret, lib );
         }
-        strarray_add( &ret, strmake( "-l%s", name ));
+        else strarray_add( &ret, strmake( "-l%s", name ));
     }
     return ret;
 }




More information about the wine-cvs mailing list