diff --git a/SCons/Config/gnu b/SCons/Config/gnu index e9b0b993..fac295b0 100644 --- a/SCons/Config/gnu +++ b/SCons/Config/gnu @@ -178,6 +178,36 @@ if conf.CheckRequirement('memset', 'char c[128] = "test";'): conf.Finish() +# +# Some platforms, like FreeBSD, require -pthread flag to be passed +# instead of -lpthread. +# + +def check_pthread(ctx): + ctx.Message('Checking for -pthread... ') + + last_flags = ctx.env['LINKFLAGS'] + + ctx.env.Append(LINKFLAGS = '-pthread') + + test = """ + int __main() { + return 0; + } + """ + + result = not ctx.TryLink(test, '.c') + ctx.Result(result) + + ctx.env.Replace(LINKFLAGS = last_flags) + + return result + +conf = defenv.Configure(custom_tests = { 'CheckPThread' : check_pthread }) +if conf.CheckPThread(): + makensis_env.Append(LINKFLAGS = '-pthread') +conf.Finish() + ### return Return('stub_env makensis_env plugin_env util_env cp_util_env') diff --git a/Source/SConscript b/Source/SConscript index 54071757..ed58843f 100644 --- a/Source/SConscript +++ b/Source/SConscript @@ -48,7 +48,6 @@ zlib_files = Split(""" libs = Split(""" gdi32 user32 - version pthread stdc++ iconv @@ -58,6 +57,11 @@ Import('env AddAvailableLibs') ##### Use available libraries +if env['PLATFORM'] == 'win32': + # XXX will cause problems if makensis is cross compiled + # on freebsd, libversion.a exists and gives trouble if linked + libs += ['version'] + AddAvailableLibs(env, libs) ##### Configuration defines diff --git a/Source/mmap.cpp b/Source/mmap.cpp index c23626f5..c6c9951c 100644 --- a/Source/mmap.cpp +++ b/Source/mmap.cpp @@ -3,6 +3,7 @@ #include // for f* #include // for assert #ifndef _WIN32 +# include // for freebsd # include # include # include