X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=scons%2Fcrossmingw.py;h=b2efccea7e81e8a28722eea94c4e76844c406aa2;hb=ecc119a96e86a4292f98de7492d30508a6df3870;hp=cf4887ba464924dc2032407ba2720eda8ef4a12b;hpb=33a1f495d4bb19288680b9812c6ec1235302d215;p=mesa.git diff --git a/scons/crossmingw.py b/scons/crossmingw.py index cf4887ba464..b2efccea7e8 100644 --- a/scons/crossmingw.py +++ b/scons/crossmingw.py @@ -41,21 +41,20 @@ import SCons.Builder import SCons.Tool import SCons.Util -# This is what we search for to find mingw: -prefixes = SCons.Util.Split(""" - mingw32- - mingw32msvc- - i386-mingw32- - i486-mingw32- - i586-mingw32- - i686-mingw32- - i386-mingw32msvc- - i486-mingw32msvc- - i586-mingw32msvc- - i686-mingw32msvc- +# These are the mingw toolchain prefixes we search for: +# (We only search for the mingw-w64 toolchain, and not the mingw.org one.) +prefixes32 = SCons.Util.Split(""" + i686-w64-mingw32- +""") +prefixes64 = SCons.Util.Split(""" + x86_64-w64-mingw32- """) def find(env): + if env['machine'] == 'x86_64': + prefixes = prefixes64 + else: + prefixes = prefixes32 for prefix in prefixes: # First search in the SCons path and then the OS path: if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'): @@ -84,7 +83,7 @@ def shlib_emitter(target, source, env): no_import_lib = env.get('no_import_lib', 0) if not dll: - raise SCons.Errors.UserError, "A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX") + raise SCons.Errors.UserError("A shared library should have exactly one target with the suffix: %s" % env.subst("$SHLIBSUFFIX")) if not no_import_lib and \ not env.FindIxes(target, 'LIBPREFIX', 'LIBSUFFIX'): @@ -108,7 +107,7 @@ def shlib_emitter(target, source, env): return (target, source) -shlib_action = SCons.Action.Action(shlib_generator, generator=1) +shlib_action = SCons.Action.Action(shlib_generator, '$SHLINKCOMSTR', generator=1) res_action = SCons.Action.Action('$RCCOM', '$RCCOMSTR') @@ -116,6 +115,8 @@ res_builder = SCons.Builder.Builder(action=res_action, suffix='.o', source_scanner=SCons.Tool.SourceFileScanner) SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan) + + def generate(env): mingw_prefix = find(env) @@ -127,9 +128,9 @@ def generate(env): if not path: path = [] if SCons.Util.is_String(path): - path = string.split(path, os.pathsep) + path = str.split(path, os.pathsep) - env['ENV']['PATH'] = string.join([dir] + path, os.pathsep) + env['ENV']['PATH'] = str.join(os.pathsep, [dir] + path) # Most of mingw is the same as gcc and friends... gnu_tools = ['gcc', 'g++', 'gnulink', 'ar', 'gas'] @@ -162,21 +163,16 @@ def generate(env): # Some setting from the platform also have to be overridden: env['OBJPREFIX'] = '' env['OBJSUFFIX'] = '.o' - env['LIBPREFIX'] = 'lib' - env['LIBSUFFIX'] = '.a' env['SHOBJPREFIX'] = '$OBJPREFIX' env['SHOBJSUFFIX'] = '$OBJSUFFIX' env['PROGPREFIX'] = '' env['PROGSUFFIX'] = '.exe' - env['LIBPREFIX'] = '' - env['LIBSUFFIX'] = '.lib' + env['LIBPREFIX'] = 'lib' + env['LIBSUFFIX'] = '.a' env['SHLIBPREFIX'] = '' env['SHLIBSUFFIX'] = '.dll' - env['LIBPREFIXES'] = [ '$LIBPREFIX' ] - env['LIBSUFFIXES'] = [ '$LIBSUFFIX' ] - - env.AppendUnique(LIBS = ['iberty']) - env.AppendUnique(LINKFLAGS = ['-Wl,--enable-stdcall-fixup']) + env['LIBPREFIXES'] = [ 'lib', '' ] + env['LIBSUFFIXES'] = [ '.a', '.lib' ] def exists(env): return find(env)