def mkspec_gxx_configure(conf, major, minor, prefix=None, minimum=False): """ :param major: The major version number of the compiler, e.g. 4 :param minor: The minor version number of the compiler, e.g. 6 :param prefix: Prefix to the compiler name, e.g. 'arm-linux-androideabi' :param minimum: Only check for a minimum compiler version, if true """ # Where to look for the compiler paths = conf.mkspec_get_toolchain_paths() # Find g++ first gxx_names = conf.mkspec_get_gnu_binary_name('g++', major, minor, prefix) if minimum: gxx_names = 'g++' cxx = conf.find_program(gxx_names, path_list=paths) cxx = conf.cmd_to_list(cxx) conf.env['CXX'] = cxx conf.env['CXX_NAME'] = os.path.basename(conf.env.get_flat('CXX')) if minimum: conf.mkspec_check_minimum_cc_version(cxx, major, minor) else: conf.mkspec_check_cc_version(cxx, major, minor) # Also find gcc gcc_names = conf.mkspec_get_gnu_binary_name('gcc', major, minor, prefix) if minimum: gcc_names = 'gcc' cc = conf.find_program(gcc_names, path_list=paths) cc = conf.cmd_to_list(cc) conf.env['CC'] = cc conf.env['CC_NAME'] = os.path.basename(conf.env.get_flat('CC')) if minimum: conf.mkspec_check_minimum_cc_version(cc, major, minor) else: conf.mkspec_check_cc_version(cc, major, minor) # Find the archiver ar = conf.mkspec_get_ar_binary_name(prefix) conf.find_program(ar, path_list=paths, var='AR') conf.env.ARFLAGS = 'rcs' # Set up C++ tools and flags conf.gxx_common_flags() conf.gxx_modifier_platform() conf.cxx_load_tools() conf.cxx_add_flags() # Also set up C tools and flags conf.gcc_common_flags() conf.gcc_modifier_platform() conf.cc_load_tools() conf.cc_add_flags() # Add linker flags conf.link_add_flags() # Add our own cxx flags conf.mkspec_set_gxx_cxxflags() # Add our own cc flags conf.mkspec_set_gcc_ccflags()
def mkspec_clang_configure(conf, major, minor, prefix=None, minimum=False, force_debug=False): """ :param major: The major version number of the compiler, e.g. 3 :param minor: The minor version number of the compiler, e.g. 4 :param prefix: Prefix to compiler name, e.g. 'arm-linux-androideabi' :param minimum: Only check for a minimum compiler version, if true :param force_debug: Always compile with debugging flags, if true """ # Where to look paths = conf.mkspec_get_toolchain_paths() # Find the clang++ compiler clangxx_names = conf.mkspec_get_clangxx_binary_name(major, minor) if minimum: clangxx_names = 'clang++' cxx = conf.find_program(clangxx_names, path_list=paths) cxx = conf.cmd_to_list(cxx) conf.env['CXX'] = cxx conf.env['CXX_NAME'] = os.path.basename(conf.env.get_flat('CXX')) if minimum: conf.mkspec_check_minimum_cc_version(cxx, major, minor) else: conf.mkspec_check_cc_version(cxx, major, minor) # Find clang as the C compiler clang_names = conf.mkspec_get_clang_binary_name(major, minor) if minimum: clang_names = 'clang' cc = conf.find_program(clang_names, path_list=paths) cc = conf.cmd_to_list(cc) conf.env['CC'] = cc conf.env['CC_NAME'] = os.path.basename(conf.env.get_flat('CC')) if minimum: conf.mkspec_check_minimum_cc_version(cc, major, minor) else: conf.mkspec_check_cc_version(cc, major, minor) # Find the archiver ar = conf.mkspec_get_ar_binary_name(prefix) conf.find_program(ar, path_list=paths, var='AR') conf.env.ARFLAGS = 'rcs' # Set up C++ tools and flags conf.gxx_common_flags() conf.gxx_modifier_platform() conf.cxx_load_tools() conf.cxx_add_flags() # Also set up C tools and flags conf.gcc_common_flags() conf.gcc_modifier_platform() conf.cc_load_tools() conf.cc_add_flags() # Add linker flags conf.link_add_flags() # Add our own cxx flags conf.mkspec_set_clang_cxxflags(force_debug) # Add our own cc flags conf.mkspec_set_clang_ccflags(force_debug)
def mkspec_clang_configure(conf, major, minor, prefix=None, minimum=False, force_debug=False): """ :param major: The major version number of the compiler, e.g. 3 :param minor: The minor version number of the compiler, e.g. 4 :param prefix: Prefix to compiler name, e.g. 'arm-linux-androideabi' :param minimum: Only check for a minimum compiler version, if true :param force_debug: Always compile with debugging flags, if true """ # Where to look paths = conf.mkspec_get_toolchain_paths() # If the user-defined CXX variable is set, then use that compiler if "CXX" in os.environ: cxx = waflib.Utils.to_list(os.environ["CXX"]) conf.to_log("Using user defined environment variable CXX=%r" % cxx) else: # Find the clang++ compiler clangxx_names = conf.mkspec_get_compiler_binary_name( "clang++", major, minor, prefix) if minimum: clangxx_names = "clang++" cxx = conf.find_program(clangxx_names, path_list=paths) cxx = conf.cmd_to_list(cxx) conf.env["CXX"] = cxx conf.env["CXX_NAME"] = os.path.basename(conf.env.get_flat("CXX")) conf.mkspec_check_clang_version(cxx, major, minor, minimum) # If the user-defined CC variable is set, then use that compiler if "CC" in os.environ: cc = waflib.Utils.to_list(os.environ["CC"]) conf.to_log("Using user defined environment variable CC=%r" % cc) else: # Find clang as the C compiler clang_names = conf.mkspec_get_compiler_binary_name( "clang", major, minor, prefix) if minimum: clang_names = "clang" cc = conf.find_program(clang_names, path_list=paths) cc = conf.cmd_to_list(cc) conf.env["CC"] = cc conf.env["CC_NAME"] = os.path.basename(conf.env.get_flat("CC")) conf.mkspec_check_clang_version(cc, major, minor, minimum) # Find the archiver ar = conf.mkspec_get_ar_binary_name(prefix) conf.find_program(ar, path_list=paths, var="AR") conf.env.ARFLAGS = "rcs" # Set up C++ tools and flags conf.gxx_common_flags() conf.gxx_modifier_platform() conf.cxx_load_tools() conf.cxx_add_flags() # Also set up C tools and flags conf.gcc_common_flags() conf.gcc_modifier_platform() conf.cc_load_tools() conf.cc_add_flags() # Add linker flags conf.link_add_flags() # Add our own cxx flags conf.mkspec_set_clang_cxxflags(force_debug) # Add our own cc flags conf.mkspec_set_clang_ccflags(force_debug)