Alexandre Julliard : winegcc: Add support for specifying a custom static library suffix.

Alexandre Julliard julliard at winehq.org
Mon Jan 25 11:21:00 CST 2010


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sat Jan 23 20:25:14 2010 +0100

winegcc: Add support for specifying a custom static library suffix.

---

 tools/winegcc/utils.c   |   10 ++++++----
 tools/winegcc/utils.h   |    3 ++-
 tools/winegcc/winegcc.c |    9 ++++++++-
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/tools/winegcc/utils.c b/tools/winegcc/utils.c
index 66c7e41..2a6a249 100644
--- a/tools/winegcc/utils.c
+++ b/tools/winegcc/utils.c
@@ -259,7 +259,7 @@ static char* try_lib_path(const char* dir, const char* pre,
 }
 
 static file_type guess_lib_type(enum target_platform platform, const char* dir,
-                                const char* library, char** file)
+                                const char* library, const char *suffix, char** file)
 {
     if (platform != PLATFORM_WINDOWS)
     {
@@ -277,19 +277,21 @@ static file_type guess_lib_type(enum target_platform platform, const char* dir,
     }
 
     /* static archives */
-    if ((*file = try_lib_path(dir, "lib", library, ".a", file_arh)))
+    if ((*file = try_lib_path(dir, "lib", library, suffix, file_arh)))
 	return file_arh;
 
     return file_na;
 }
 
-file_type get_lib_type(enum target_platform platform, strarray* path, const char* library, char** file)
+file_type get_lib_type(enum target_platform platform, strarray* path, const char *library,
+                       const char *suffix, char** file)
 {
     unsigned int i;
 
+    if (!suffix) suffix = ".a";
     for (i = 0; i < path->size; i++)
     {
-        file_type type = guess_lib_type(platform, path->base[i], library, file);
+        file_type type = guess_lib_type(platform, path->base[i], library, suffix, file);
 	if (type != file_na) return type;
     }
     return file_na;
diff --git a/tools/winegcc/utils.h b/tools/winegcc/utils.h
index 35afedd..f526c16 100644
--- a/tools/winegcc/utils.h
+++ b/tools/winegcc/utils.h
@@ -72,7 +72,8 @@ typedef enum {
 char* get_basename(const char* file);
 void create_file(const char* name, int mode, const char* fmt, ...);
 file_type get_file_type(const char* filename);
-file_type get_lib_type(enum target_platform platform, strarray* path, const char* library, char** file);
+file_type get_lib_type(enum target_platform platform, strarray* path, const char *library,
+                       const char *suffix, char** file);
 void spawn(const strarray* prefix, const strarray* arr, int ignore_errors);
 
 extern int verbose;
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index b3e58e0..852f105 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -199,6 +199,7 @@ struct options
     const char* output_name;
     const char* image_base;
     const char* section_align;
+    const char* lib_suffix;
     strarray* prefix;
     strarray* lib_dirs;
     strarray* linker_args;
@@ -520,7 +521,7 @@ static void add_library( struct options *opts, strarray *lib_dirs, strarray *fil
 {
     char *static_lib, *fullname = 0;
 
-    switch(get_lib_type(opts->target_platform, lib_dirs, library, &fullname))
+    switch(get_lib_type(opts->target_platform, lib_dirs, library, opts->lib_suffix, &fullname))
     {
     case file_arh:
         strarray_add(files, strmake("-a%s", fullname));
@@ -1333,6 +1334,12 @@ int main(int argc, char **argv)
                         else opts.wine_objdir = argv[++i];
                         raw_compiler_arg = raw_linker_arg = 0;
                     }
+                    else if (!strncmp("--lib-suffix", argv[i], 12) && opts.wine_objdir)
+                    {
+                        if (argv[i][12] == '=') opts.lib_suffix = argv[i] + 13;
+                        else opts.lib_suffix = argv[++i];
+                        raw_compiler_arg = raw_linker_arg = 0;
+                    }
                     break;
             }
 




More information about the wine-cvs mailing list