import SCons.Util
# This is what we search for to find mingw:
-prefixes = SCons.Util.Split("""
+prefixes32 = SCons.Util.Split("""
mingw32-
mingw32msvc-
i386-mingw32-
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'):
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')
# 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)