X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=scons%2Fcrossmingw.py;h=cc046229e2c6dcfc93da4099c3633bf107087330;hb=1a57717bbe8a2cedf2e1bb72cfd7ec85cd2350fc;hp=cf4887ba464924dc2032407ba2720eda8ef4a12b;hpb=374cf77b2f0f13f9380fb0c9d804222a83bdc2e0;p=mesa.git diff --git a/scons/crossmingw.py b/scons/crossmingw.py index cf4887ba464..cc046229e2c 100644 --- a/scons/crossmingw.py +++ b/scons/crossmingw.py @@ -42,7 +42,7 @@ import SCons.Tool import SCons.Util # This is what we search for to find mingw: -prefixes = SCons.Util.Split(""" +prefixes32 = SCons.Util.Split(""" mingw32- mingw32msvc- i386-mingw32- @@ -53,9 +53,21 @@ prefixes = SCons.Util.Split(""" i486-mingw32msvc- i586-mingw32msvc- i686-mingw32msvc- + i686-pc-mingw32- + i686-w64-mingw32- +""") +prefixes64 = SCons.Util.Split(""" + amd64-mingw32- + amd64-mingw32msvc- + amd64-pc-mingw32- + 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'): @@ -108,7 +120,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') @@ -162,21 +174,28 @@ 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['LIBPREFIXES'] = [ 'lib', '' ] + env['LIBSUFFIXES'] = [ '.a', '.lib' ] + + # MinGW port of gdb does not handle well dwarf debug info which is the + # default in recent gcc versions + env.AppendUnique(CCFLAGS = ['-gstabs']) + + env.AppendUnique(CPPDEFINES = [('__MSVCRT_VERSION__', '0x0700')]) + #env.AppendUnique(LIBS = ['iberty']) + env.AppendUnique(SHLINKFLAGS = ['-Wl,--enable-stdcall-fixup']) + #env.AppendUnique(SHLINKFLAGS = ['-Wl,--kill-at']) - env.AppendUnique(LIBS = ['iberty']) - env.AppendUnique(LINKFLAGS = ['-Wl,--enable-stdcall-fixup']) + # Avoid depending on gcc runtime DLLs + env.AppendUnique(LINKFLAGS = ['-static-libgcc']) def exists(env): return find(env)