def find_boost(env): prefixes = [env["prefix"], "C:\\Boost"] crosscompile = env["host"] include = find_include(prefixes, "boost/config.hpp", default_prefixes=not crosscompile) if include: prefix, includefile = include[0] env["boostdir"] = join(prefix, "include") env["boostlibdir"] = join(prefix, "lib") if not env.get("boost_suffix"): for libdir in ["lib", "lib64"]: if glob(join(prefix, libdir, "libboost_*-mt.*")): env["boost_suffix"] = "-mt" env["boostlibdir"] = join(prefix, libdir) break else: env["boost_suffix"] = "" return includes = find_include(prefixes, "boost/config.hpp", include_subdir="include/boost-*") if includes: versions = [] for prefix, includefile in includes: try: versions.append( map( int, re.findall(r"^boost-(\d*)_(\d*)$", basename(dirname( dirname(includefile))))[0])) except IndexError: versions.append((0, 0)) version_nums = map(lambda (major, minor): 100000 * major + 100 * minor, versions) include_index = version_nums.index(max(version_nums)) prefix, includefile = includes[include_index] version = versions[include_index] env["boostdir"] = join( prefix, "include", "boost-" + str(version[0]) + "_" + str(version[1])) env["boostlibdir"] = join(prefix, "lib") if not env.get("boost_suffix"): libs = glob(join(prefix, "lib", "libboost_*")) for lib in libs: try: env["boost_suffix"] = re.findall( r"libboost_\w*(-.*%d_%d)" % tuple(version), lib)[0] break except: pass
def CheckLua(context, require_version): env = context.env backup = env.Clone().Dictionary() context.Message("Checking for Lua development files version " + require_version + "... ") version = ".".join(require_version.split(".")[0:2]) if env.get("luadir"): env.Append(LIBPATH = ["$luadir"], CPPPATH = ["$luadir/include"], LIBS = "lua" + version) found = True else: found = run_pkg_config(context, "lua >= " + require_version) or run_pkg_config(context, "lua" + version + " >= " + require_version) or run_pkg_config(context, "lua-" + version + " >= " + require_version) if not found: try: prefix, include = find_include([env["prefix"]], "lualib.h", default_prefixes=not env["host"])[0] found = True context.Log("Found Lua header " + include + ".\n") env.Append(LIBPATH = [join(prefix, "lib")], CPPPATH = [join(prefix, "include")], LIBS = ["lua"]) except IndexError: pass result = found and context.TryLink(""" #include <lualib.h> #include <lauxlib.h> int main() { luaL_newstate(); } """, ".c") if result: context.Result("yes") return True else: context.Result("no") env.Replace(**backup) return False
def CheckGettextLibintl(context): env = context.env backup = env.Clone().Dictionary() context.Message("Checking for Gettext's libintl... ") test_program = """ #include <libintl.h> int main() { textdomain("test"); char* text = gettext("foo"); } \n""" if not env.get("gettextdir") and context.TryLink(test_program, ".c"): context.Result("libc built-in") return True prefixes = [env["prefix"]] if env.get("gettextdir"): prefixes = [env["gettextdir"]] + prefixes includes = find_include(prefixes, "libintl.h", "", not env["host"]) if includes: env.AppendUnique(CPPPATH=[join(includes[0][0], "include")], LIBPATH=[join(includes[0][0], "lib")]) env.AppendUnique(LIBS=["intl"]) if context.TryLink("/* external libintl*/\n" + test_program, ".c"): context.Result("external") return True context.Result("no") env.Replace(**backup) return False
def find_boost(env): prefixes = [env["prefix"], "C:\\Boost"] crosscompile = env["host"] include = find_include(prefixes, "boost/config.hpp", default_prefixes=not crosscompile) if include: prefix, includefile = include[0] env["boostdir"] = join(prefix, "include") env["boostlibdir"] = join(prefix, "lib") if not env.get("boost_suffix"): for libdir in ["lib", "lib64"]: if glob(join(prefix, libdir, "libboost_*-mt.*")): env["boost_suffix"] = "-mt" env["boostlibdir"] = join(prefix, libdir) break else: env["boost_suffix"] = "" return includes = find_include(prefixes, "boost/config.hpp", include_subdir="include/boost-*") if includes: versions = [] for prefix, includefile in includes: try: testname = basename(dirname(dirname(includefile))) major, minor = re.findall(r"^boost-(\d*)_(\d*)$", testname)[0] versions.append((int(major), int(minor))) except IndexError: versions.append((0,0)) version_nums = [100000 * major_minor[0] + 100 * major_minor[1] for major_minor in versions] include_index = version_nums.index(max(version_nums)) prefix, includefile = includes[include_index] version = versions[include_index] env["boostdir"] = join(prefix, "include", "boost-" + str(version[0]) + "_" + str(version[1])) env["boostlibdir"] = join(prefix, "lib") if not env.get("boost_suffix"): libs = glob(join(prefix, "lib", "libboost_*")) for lib in libs: try: env["boost_suffix"] = re.findall(r"libboost_\w*(-.*%d_%d)" % tuple(version), lib)[0] break except: pass
def CheckGettextLibintl(context): env = context.env backup = env.Clone().Dictionary() context.Message("Checking for Gettext's libintl... ") test_program = """ #include <libintl.h> int main() { textdomain("test"); char* text = gettext("foo"); } \n""" if not env.get("gettextdir") and context.TryLink(test_program, ".c"): context.Result("libc built-in") return True prefixes = [env["prefix"]] if env.get("gettextdir"): prefixes = [env["gettextdir"]] + prefixes includes = find_include(prefixes, "libintl.h", "", not env["host"]) if includes: env.AppendUnique( CPPPATH = [join(includes[0][0], "include")], LIBPATH = [join(includes[0][0], "lib")] ) env.AppendUnique(LIBS = ["intl"]) if context.TryLink("/* exteral libintl*/\n" + test_program, ".c"): context.Result("external") return True context.Result("no") env.Replace(**backup) return False