Jacek Caban : winegcc: Add support for using clang directly.
Alexandre Julliard
julliard at winehq.org
Tue Mar 3 16:24:54 CST 2020
Module: wine
Branch: master
Commit: aabfd2dd3abc8b6cf1c42ce0adbd5b6dca6d5db0
URL: https://source.winehq.org/git/wine.git/?a=commit;h=aabfd2dd3abc8b6cf1c42ce0adbd5b6dca6d5db0
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Mar 3 14:02:28 2020 +0100
winegcc: Add support for using clang directly.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
tools/winegcc/winegcc.c | 35 +++++++++++++++++++++++++++++------
1 file changed, 29 insertions(+), 6 deletions(-)
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index f2329e492c..d663103186 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -325,20 +325,23 @@ enum tool
static const struct
{
const char *base;
+ const char *llvm_base;
const char *deflt;
} tool_names[] =
{
- { "gcc", CC },
- { "g++", CXX },
- { "cpp", CPP },
- { "ld", LD },
+ { "gcc", "clang --driver-mode=gcc", CC },
+ { "g++", "clang --driver-mode=g++", CXX },
+ { "cpp", "clang --driver-mode=cpp", CPP },
+ { "ld", "ld.lld", LD },
};
static strarray* build_tool_name( struct options *opts, enum tool tool )
{
const char *base = tool_names[tool].base;
+ const char *llvm_base = tool_names[tool].llvm_base;
const char *deflt = tool_names[tool].deflt;
const char *path;
+ strarray *ret;
char* str;
if (opts->target && opts->version)
@@ -357,8 +360,28 @@ static strarray* build_tool_name( struct options *opts, enum tool tool )
str = xstrdup(deflt);
if ((path = find_binary( opts->prefix, str ))) return strarray_fromstring( path, " " );
- error( "Could not find %s\n", base );
- return NULL;
+
+ if (!opts->version) str = xstrdup( llvm_base );
+ else str = strmake( "%s-%s", llvm_base, opts->version );
+ path = find_binary( opts->prefix, str );
+ if (!path)
+ {
+ error( "Could not find %s\n", base );
+ return NULL;
+ }
+
+ ret = strarray_fromstring( path, " " );
+ if (!strncmp( llvm_base, "clang", 5 ))
+ {
+ if (opts->target)
+ {
+ strarray_add( ret, "-target" );
+ strarray_add( ret, opts->target );
+ }
+ strarray_add( ret, "-Wno-unused-command-line-argument" );
+ strarray_add( ret, "-fuse-ld=lld" );
+ }
+ return ret;
}
static strarray* get_translator(struct options *opts)
More information about the wine-cvs
mailing list