Changes in tools/autotool.py [bfdb7c63:c7a67c4] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tools/autotool.py

    rbfdb7c63 rc7a67c4  
    5454PACKAGE_GCC = "preferably version 4.7.0 or newer"
    5555PACKAGE_CROSS = "use tools/toolchain.sh to build the cross-compiler toolchain"
    56 PACKAGE_CLANG = "reasonably recent version of clang needs to be installed"
    5756
    5857COMPILER_FAIL = "The compiler is probably not capable to compile HelenOS."
     
    209208
    210209def get_target(config):
    211         platform = None
     210        target = None
    212211        gnu_target = None
     212        clang_target = None
    213213        helenos_target = None
    214         target = None
    215214        cc_args = []
    216215       
    217216        if (config['PLATFORM'] == "abs32le"):
    218217                check_config(config, "CROSS_TARGET")
    219                 platform = config['CROSS_TARGET']
     218                target = config['CROSS_TARGET']
    220219               
    221220                if (config['CROSS_TARGET'] == "arm32"):
    222221                        gnu_target = "arm-linux-gnueabi"
     222                        clang_target = "arm-unknown-none"
    223223                        helenos_target = "arm-helenos-gnueabi"
    224224               
    225225                if (config['CROSS_TARGET'] == "ia32"):
    226226                        gnu_target = "i686-pc-linux-gnu"
     227                        clang_target = "i686-unknown-none"
    227228                        helenos_target = "i686-pc-helenos"
    228229               
     
    230231                        cc_args.append("-mabi=32")
    231232                        gnu_target = "mipsel-linux-gnu"
     233                        clang_target = "mipsel-unknown-none"
    232234                        helenos_target = "mipsel-helenos"
    233235       
    234236        if (config['PLATFORM'] == "amd64"):
    235                 platform = config['PLATFORM']
    236                 gnu_target = "amd64-unknown-elf"
     237                target = config['PLATFORM']
     238                gnu_target = "amd64-linux-gnu"
     239                clang_target = "x86_64-unknown-none"
    237240                helenos_target = "amd64-helenos"
    238241       
    239242        if (config['PLATFORM'] == "arm32"):
    240                 platform = config['PLATFORM']
     243                target = config['PLATFORM']
    241244                gnu_target = "arm-linux-gnueabi"
     245                clang_target = "arm-unknown-none-eabi"
    242246                helenos_target = "arm-helenos-gnueabi"
    243247       
    244248        if (config['PLATFORM'] == "ia32"):
    245                 platform = config['PLATFORM']
     249                target = config['PLATFORM']
    246250                gnu_target = "i686-pc-linux-gnu"
     251                clang_target = "i686-unknown-none"
    247252                helenos_target = "i686-pc-helenos"
    248253       
    249254        if (config['PLATFORM'] == "ia64"):
    250                 platform = config['PLATFORM']
     255                target = config['PLATFORM']
    251256                gnu_target = "ia64-pc-linux-gnu"
    252257                helenos_target = "ia64-pc-helenos"
     
    257262               
    258263                if ((config['MACHINE'] == "msim") or (config['MACHINE'] == "lmalta")):
    259                         platform = config['PLATFORM']
     264                        target = config['PLATFORM']
    260265                        gnu_target = "mipsel-linux-gnu"
     266                        clang_target = "mipsel-unknown-none"
    261267                        helenos_target = "mipsel-helenos"
    262268               
    263269                if ((config['MACHINE'] == "bmalta")):
    264                         platform = "mips32eb"
     270                        target = "mips32eb"
    265271                        gnu_target = "mips-linux-gnu"
     272                        clang_target = "mips-unknown-none"
    266273                        helenos_target = "mips-helenos"
    267274       
     
    271278               
    272279                if (config['MACHINE'] == "msim"):
    273                         platform = config['PLATFORM']
     280                        target = config['PLATFORM']
    274281                        gnu_target = "mips64el-linux-gnu"
     282                        clang_target = "mips64el-unknown-none"
    275283                        helenos_target = "mips64el-helenos"
    276284       
    277285        if (config['PLATFORM'] == "ppc32"):
    278                 platform = config['PLATFORM']
     286                target = config['PLATFORM']
    279287                gnu_target = "ppc-linux-gnu"
     288                clang_target = "ppc-unknown-none"
    280289                helenos_target = "ppc-helenos"
    281290       
    282291        if (config['PLATFORM'] == "riscv64"):
    283                 platform = config['PLATFORM']
     292                target = config['PLATFORM']
    284293                gnu_target = "riscv64-unknown-linux-gnu"
     294                clang_target = "riscv-unknown-none"
    285295                helenos_target = "riscv64-helenos"
    286296       
    287297        if (config['PLATFORM'] == "sparc64"):
    288                 platform = config['PLATFORM']
     298                target = config['PLATFORM']
    289299                gnu_target = "sparc64-linux-gnu"
     300                clang_target = "sparc-unknown-none"
    290301                helenos_target = "sparc64-helenos"
    291302       
    292         if (config['COMPILER'] == "gcc_helenos"):
    293                 target = helenos_target
    294         else:
    295                 target = gnu_target
    296        
    297         return (platform, cc_args, target)
     303        return (target, cc_args, gnu_target, clang_target, helenos_target)
    298304
    299305def check_app(args, name, details):
     
    345351        return found
    346352
    347 def check_clang(path, prefix, common, details):
    348         "Check for clang"
    349        
    350         common['CLANG'] = "%sclang" % prefix
    351        
    352         if (not path is None):
    353                 common['CLANG'] = "%s/%s" % (path, common['CLANG'])
    354        
    355         check_app([common['CLANG'], "--version"], "clang", details)
    356 
    357353def check_gcc(path, prefix, common, details):
    358354        "Check for GCC"
     
    431427        outf.close()
    432428       
    433         args = common['CC_AUTOGEN'].split(' ')
     429        args = [common['CC']]
     430        args.extend(common['CC_ARGS'])
    434431        args.extend(["-S", "-o", PROBE_OUTPUT, PROBE_SOURCE])
    435432       
     
    550547        outf.close()
    551548       
    552         args = common['CC_AUTOGEN'].split(' ')
     549        args = [common['CC']]
     550        args.extend(common['CC_ARGS'])
    553551        args.extend(["-S", "-o", PROBE_INT128_OUTPUT, PROBE_INT128_SOURCE])
    554552       
     
    851849                check_app(["make", "--version"], "Make utility", "preferably GNU Make")
    852850                check_app(["makedepend", "-f", "-"], "Makedepend utility", "usually part of imake or xutils")
    853                 check_app(["unzip"], "unzip utility", "usually part of zip/unzip utilities")
    854                
    855                 platform, cc_args, target = get_target(config)
    856                
    857                 if (platform is None) or (target is None):
    858                         print_error(["Unsupported compiler target.",
    859                                      "Please contact the developers of HelenOS."])
    860                
    861                 path = "%s/%s/bin" % (cross_prefix, target)
    862                
    863                 # Compatibility with earlier toolchain paths.
    864                 if not os.path.exists(path):
    865                         if (config['COMPILER'] == "gcc_helenos"):
    866                                 check_path = "%s/%s/%s" % (cross_helenos_prefix, platform, target)
    867                                 if not os.path.exists(check_path):
    868                                         print_error(["Toolchain for target is not installed, or CROSS_PREFIX is not set correctly."])
    869                                 path = "%s/%s/bin" % (cross_helenos_prefix, platform)
    870                         else:
    871                                 check_path = "%s/%s/%s" % (cross_prefix, platform, target)
    872                                 if not os.path.exists(check_path):
    873                                         print_error(["Toolchain for target is not installed, or CROSS_PREFIX is not set correctly."])
    874                                 path = "%s/%s/bin" % (cross_prefix, platform)
    875                
    876                 prefix = "%s-" % target
    877851               
    878852                # Compiler
    879                 if (config['COMPILER'] == "gcc_cross" or config['COMPILER'] == "gcc_helenos"):
     853                common['CC_ARGS'] = []
     854                if (config['COMPILER'] == "gcc_cross"):
     855                        target, cc_args, gnu_target, clang_target, helenos_target = get_target(config)
     856                       
     857                        if (target is None) or (gnu_target is None):
     858                                print_error(["Unsupported compiler target for GNU GCC.",
     859                                             "Please contact the developers of HelenOS."])
     860                       
     861                        path = "%s/%s/bin" % (cross_prefix, target)
     862                        prefix = "%s-" % gnu_target
     863                       
    880864                        check_gcc(path, prefix, common, PACKAGE_CROSS)
    881865                        check_binutils(path, prefix, common, PACKAGE_CROSS)
    882866                       
    883867                        check_common(common, "GCC")
    884                         common['CC'] = " ".join([common['GCC']] + cc_args)
    885                         common['CC_AUTOGEN'] = common['CC']
     868                        common['CC'] = common['GCC']
     869                        common['CC_ARGS'].extend(cc_args)
     870               
     871                if (config['COMPILER'] == "gcc_helenos"):
     872                        target, cc_args, gnu_target, clang_target, helenos_target = get_target(config)
     873                       
     874                        if (target is None) or (helenos_target is None):
     875                                print_error(["Unsupported compiler target for GNU GCC.",
     876                                             "Please contact the developers of HelenOS."])
     877                       
     878                        path = "%s/%s/bin" % (cross_helenos_prefix, target)
     879                        prefix = "%s-" % helenos_target
     880                       
     881                        check_gcc(path, prefix, common, PACKAGE_CROSS)
     882                        check_binutils(path, prefix, common, PACKAGE_CROSS)
     883                       
     884                        check_common(common, "GCC")
     885                        common['CC'] = common['GCC']
     886                        common['CC_ARGS'].extend(cc_args)
    886887               
    887888                if (config['COMPILER'] == "gcc_native"):
     
    891892                        check_common(common, "GCC")
    892893                        common['CC'] = common['GCC']
    893                         common['CC_AUTOGEN'] = common['CC']
     894               
     895                if (config['COMPILER'] == "icc"):
     896                        check_app([common['CC'], "-V"], "Intel C++ Compiler", "support is experimental")
     897                        check_gcc(None, "", common, PACKAGE_GCC)
     898                        check_binutils(None, binutils_prefix, common, PACKAGE_BINUTILS)
     899                       
     900                        common['CC'] = "icc"
    894901               
    895902                if (config['COMPILER'] == "clang"):
    896                         check_binutils(path, prefix, common, PACKAGE_CROSS)
    897                         check_clang(path, prefix, common, PACKAGE_CLANG)
    898                        
    899                         check_common(common, "CLANG")
    900                         common['CC'] = " ".join([common['CLANG']] + cc_args)
    901                         common['CC_AUTOGEN'] = common['CC'] + " -no-integrated-as"
    902                        
    903                         if (config['INTEGRATED_AS'] == "yes"):
    904                                 common['CC'] += " -integrated-as"
    905                        
    906                         if (config['INTEGRATED_AS'] == "no"):
    907                                 common['CC'] += " -no-integrated-as"
     903                        target, cc_args, gnu_target, clang_target, helenos_target = get_target(config)
     904                       
     905                        if (target is None) or (gnu_target is None) or (clang_target is None):
     906                                print_error(["Unsupported compiler target for clang.",
     907                                             "Please contact the developers of HelenOS."])
     908                       
     909                        path = "%s/%s/bin" % (cross_prefix, target)
     910                        prefix = "%s-" % gnu_target
     911                       
     912                        check_app(["clang", "--version"], "clang compiler", "preferably version 1.0 or newer")
     913                        check_gcc(path, prefix, common, PACKAGE_GCC)
     914                        check_binutils(path, prefix, common, PACKAGE_BINUTILS)
     915                       
     916                        check_common(common, "GCC")
     917                        common['CC'] = "clang"
     918                        common['CC_ARGS'].extend(cc_args)
     919                        common['CC_ARGS'].append("-target")
     920                        common['CC_ARGS'].append(clang_target)
     921                        common['CLANG_TARGET'] = clang_target
    908922               
    909923                check_python()
Note: See TracChangeset for help on using the changeset viewer.