Changes in / [2b79a70:cdbab55]


Ignore:
Files:
564 added
552 deleted
41 edited

Legend:

Unmodified
Added
Removed
  • .gitignore

    r2b79a70 rcdbab55  
    1111stamp-h1
    1212/Makefile
    13 src/**/Makefile
    14 tools/**/Makefile
     13**/Makefile
    1514/version
    1615
     
    2928
    3029# src executables, for lib and bin
    31 src/driver/as
    32 src/driver/cfa
    33 src/driver/cfa-cpp
    34 src/driver/cc1
     30driver/as
     31driver/cfa
     32driver/cfa-cpp
     33driver/cc1
    3534
    36 src/prelude/bootloader.c
    37 src/prelude/builtins.cf
    38 src/prelude/extras.cf
    39 src/prelude/gcc-builtins.cf
    40 src/prelude/gcc-builtins.c
    41 src/prelude/prelude.cf
    42 src/libcfa/libcfa-prelude.c
     35libcfa/prelude/bootloader.c
     36libcfa/prelude/builtins.cf
     37libcfa/prelude/extras.cf
     38libcfa/prelude/gcc-builtins.cf
     39libcfa/prelude/gcc-builtins.c
     40libcfa/prelude/prelude.cf
     41libcfa/x64-debug/
     42libcfa/x64-nodebug/
     43libcfa/x64-nolib/
     44libcfa/x86-debug/
     45libcfa/x86-nodebug/
     46libcfa/x86-nolib/
     47libcfa/arm-debug/
     48libcfa/arm-nodebug/
     49libcfa/arm-nolib/
     50
    4351
    4452# generated by bison and lex from parser.yy and lex.ll
  • Jenkins/FullBuild

    r2b79a70 rcdbab55  
    6161                parameters: [                                           \
    6262                        [$class: 'StringParameterValue',                \
    63                           name: 'pCompiler',                            \
     63                          name: 'Compiler',                             \
    6464                          value: cc],                                   \
    6565                        [$class: 'StringParameterValue',                \
    66                           name: 'pArchitecture',                        \
     66                          name: 'Architecture',                         \
    6767                          value: arch],                                 \
    6868                        [$class: 'BooleanParameterValue',               \
    69                           name: 'pRunAllTests',                         \
     69                          name: 'RunAllTests',                          \
    7070                          value: true],                                         \
    7171                        [$class: 'BooleanParameterValue',               \
    72                           name: 'pRunBenchmark',                        \
     72                          name: 'RunBenchmark',                         \
    7373                          value: true],                                         \
    7474                        [$class: 'BooleanParameterValue',               \
    75                           name: 'pBuildDocumentation',          \
     75                          name: 'BuildDocumentation',           \
    7676                          value: true],                                         \
    7777                        [$class: 'BooleanParameterValue',               \
    78                           name: 'pPublish',                             \
    79                           value: publish],                                      \
     78                          name: 'Publish',                              \
     79                          value: publish],                              \
    8080                        [$class: 'BooleanParameterValue',               \
    81                           name: 'pSilent',                              \
     81                          name: 'Silent',                               \
    8282                          value: true],                                         \
    8383                ],                                                              \
  • Jenkinsfile

    r2b79a70 rcdbab55  
    66node ('master'){
    77
    8         boolean bIsSandbox = env.BRANCH_NAME == "jenkins-sandbox"
     8        // Globals
     9        BuildDir  = pwd tmp: true
     10        SrcDir    = pwd tmp: false
     11        Settings  = null
     12        StageName = ''
     13
     14        // Local variables
    915        def err = null
    1016        def log_needed = false
    11 
    12         stage_name              = ''
    13 
    14         compiler                = null
    15         arch_name               = ''
    16         architecture    = ''
    17 
    18         do_alltests             = false
    19         do_benchmark    = false
    20         do_doc          = false
    21         do_publish              = false
    22         do_sendemail    = true
    23 
    24         builddir = pwd tmp: true
    25         srcdir   = pwd tmp: false
    2617
    2718        currentBuild.result = "SUCCESS"
     
    3324                        notify_server(0)
    3425
    35                         prepare_build()
     26                        Settings = prepare_build()
    3627
    3728                        clean()
     
    6152                err = caughtError
    6253
     54                echo err.toString()
     55
    6356                //An error has occured, the build log is relevent
    6457                log_needed = true
    6558
    6659                //Store the result of the build log
    67                 currentBuild.result = "${stage_name} FAILURE".trim()
     60                currentBuild.result = "${StageName} FAILURE".trim()
    6861        }
    6962
    7063        finally {
    7164                //Send email with final results if this is not a full build
    72                 if( do_sendemail ) {
    73                         echo 'Notifying users of result'
    74                         email(currentBuild.result, log_needed, bIsSandbox)
     65                if( Settings && !Settings.Silent ) {
     66                        email(log_needed, Settings.IsSandbox)
    7567                }
    7668
     
    8577
    8678//===========================================================================================================
    87 // Helper classes/variables/routines
    88 //===========================================================================================================
    89 //Helper routine to collect information about the git history
    90 def collect_git_info() {
    91 
    92         checkout scm
    93 
    94         //create the temporary output directory in case it doesn't already exist
    95         def out_dir = pwd tmp: true
    96         sh "mkdir -p ${out_dir}"
    97 
    98         //parse git logs to find what changed
    99         gitRefName = env.BRANCH_NAME
    100         sh "git reflog > ${out_dir}/GIT_COMMIT"
    101         git_reflog = readFile("${out_dir}/GIT_COMMIT")
    102         gitRefOldValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][1]
    103         gitRefNewValue = (git_reflog =~ /moving from (.+) to (.+)/)[0][2]
    104 }
    105 
    106 def prepare_build() {
    107         properties ([                                                                                                   \
    108                 [$class: 'ParametersDefinitionProperty',                                                                \
    109                         parameterDefinitions: [                                                                         \
    110                                 [$class: 'ChoiceParameterDefinition',                                           \
    111                                         description: 'Which compiler to use',                                   \
    112                                         name: 'pCompiler',                                                              \
    113                                         choices: 'gcc-6\ngcc-5\ngcc-4.9\nclang',                                        \
    114                                         defaultValue: 'gcc-6',                                                          \
    115                                 ],                                                                                              \
    116                                 [$class: 'ChoiceParameterDefinition',                                           \
    117                                         description: 'The target architecture',                                 \
    118                                         name: 'pArchitecture',                                                          \
    119                                         choices: 'x64\nx86',                                                            \
    120                                         defaultValue: 'x64',                                                            \
    121                                 ],                                                                                              \
    122                                 [$class: 'BooleanParameterDefinition',                                                  \
    123                                         description: 'If false, only the quick test suite is ran',              \
    124                                         name: 'pRunAllTests',                                                           \
    125                                         defaultValue: false,                                                            \
    126                                 ],                                                                                              \
    127                                 [$class: 'BooleanParameterDefinition',                                                  \
    128                                         description: 'If true, jenkins also runs benchmarks',           \
    129                                         name: 'pRunBenchmark',                                                          \
    130                                         defaultValue: true,                                                             \
    131                                 ],                                                                                              \
    132                                 [$class: 'BooleanParameterDefinition',                                                  \
    133                                         description: 'If true, jenkins also builds documentation',              \
    134                                         name: 'pBuildDocumentation',                                                    \
    135                                         defaultValue: true,                                                             \
    136                                 ],                                                                                              \
    137                                 [$class: 'BooleanParameterDefinition',                                                  \
    138                                         description: 'If true, jenkins also publishes results',                 \
    139                                         name: 'pPublish',                                                               \
    140                                         defaultValue: false,                                                            \
    141                                 ],                                                                                              \
    142                                 [$class: 'BooleanParameterDefinition',                                                  \
    143                                         description: 'If true, jenkins will not send emails',           \
    144                                         name: 'pSilent',                                                                        \
    145                                         defaultValue: false,                                                            \
    146                                 ],                                                                                              \
    147                         ],
    148                 ]])
    149 
    150         compiler                = compiler_from_params( pCompiler )
    151         arch_name               = pArchitecture
    152         architecture    = architecture_from_params( arch_name )
    153 
    154         do_alltests             = (pRunAllTests == 'true')
    155         do_benchmark    = (pRunBenchmark == 'true')
    156         do_doc          = (pBuildDocumentation == 'true')
    157         do_publish              = (pPublish == 'true')
    158         do_sendemail    = ! (pSilent == 'true')
    159 
    160         collect_git_info()
    161 
    162         def full = do_alltests ? " (Full)" : ""
    163         currentBuild.description = "${compiler.cc_name}:${arch_name}${full}"
    164 
    165         echo """Compiler              : ${compiler.cc_name} (${compiler.cpp_cc}/${compiler.cfa_cc})
    166 Architecture            : ${arch_name}
    167 Arc Flags               : ${architecture}
    168 Run All Tests           : ${ pRunAllTests.toString() }
    169 Run Benchmark           : ${ pRunBenchmark.toString() }
    170 Build Documentation     : ${ pBuildDocumentation.toString() }
    171 Publish                 : ${ pPublish.toString() }
    172 Silent                  : ${ pSilent.toString() }
    173 """
    174 }
    175 
    176 def build_stage(String name, Closure block ) {
    177         stage_name = name
    178         stage(name, block)
    179 }
    180 
    181 def notify_server(int wait) {
    182         sh """curl --silent --show-error --data "wait=${wait}" -X POST https://cforall.uwaterloo.ca:8082/jenkins/notify > /dev/null || true"""
    183         return
    184 }
    185 
    186 def make_doc() {
    187         def err = null
    188         try {
    189                 sh 'make clean > /dev/null'
    190                 sh 'make > /dev/null 2>&1'
    191         }
    192         catch (Exception caughtError) {
    193                 err = caughtError //rethrow error later
    194                 sh 'cat *.log'
    195         }
    196         finally {
    197                 if (err) throw err // Must re-throw exception to propagate error
    198         }
    199 }
    200 
    201 //Description of a compiler (Must be serializable since pipelines are persistent)
    202 class CC_Desc implements Serializable {
    203         public String cc_name
    204         public String cpp_cc
    205         public String cfa_cc
    206 
    207         CC_Desc(String cc_name, String cpp_cc, String cfa_cc) {
    208                 this.cc_name = cc_name
    209                 this.cpp_cc = cpp_cc
    210                 this.cfa_cc = cfa_cc
    211         }
    212 }
    213 
    214 def compiler_from_params(cc) {
    215         switch( cc ) {
    216                 case 'gcc-6':
    217                         return new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
    218                 break
    219                 case 'gcc-5':
    220                         return new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
    221                 break
    222                 case 'gcc-4.9':
    223                         return new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
    224                 break
    225                 case 'clang':
    226                         return new CC_Desc('clang', 'clang++', 'gcc-6')
    227                 break
    228                 default :
    229                         error "Unhandled compiler : ${cc}"
    230         }
    231 }
    232 
    233 def architecture_from_params( arch ) {
    234         switch( arch ) {
    235                 case 'x64':
    236                         return '--host=x86_64'
    237                 break
    238                 case 'x86':
    239                         return '--host=i386'
    240                 break
    241                 default :
    242                         error "Unhandled architecture : ${arch}"
    243         }
    244 }
    245 
    246 //===========================================================================================================
    24779// Main compilation routines
    24880//===========================================================================================================
     
    25082        build_stage('Cleanup') {
    25183                // clean the build by wipping the build directory
    252                 dir(builddir) {
     84                dir(BuildDir) {
    25385                        deleteDir()
    25486                }
    255 
    256                 //Clean all temporary files to make sure no artifacts of the previous build remain
    257                 sh 'git clean -fdqx'
    258 
    259                 //Reset the git repo so no local changes persist
    260                 sh 'git reset --hard'
    26187        }
    26288}
     
    26692        build_stage('Checkout') {
    26793                //checkout the source code and clean the repo
    268                 checkout scm
     94                final scmVars = checkout scm
     95                Settings.GitNewRef = scmVars.GIT_COMMIT
     96                Settings.GitOldRef = scmVars.GIT_PREVIOUS_COMMIT
     97
     98                echo GitLogMessage()
    26999        }
    270100}
     
    273103        build_stage('Build') {
    274104                // Build outside of the src tree to ease cleaning
    275                 dir (builddir) {
     105                dir (BuildDir) {
    276106                        //Configure the conpilation (Output is not relevant)
    277107                        //Use the current directory as the installation target so nothing escapes the sandbox
    278108                        //Also specify the compiler by hand
    279                         sh "${srcdir}/configure CXX=${compiler.cpp_cc} ${architecture} --with-backend-compiler=${compiler.cfa_cc} --enable-silent-rules --quiet"
     109                        targets=""
     110                        if( Settings.RunAllTests ) {
     111                                targets="--with-target-hosts='host:debug,host:nodebug'"
     112                        } else {
     113                                targets="--with-target-hosts='host:debug'"
     114                        }
     115
     116                        sh "${SrcDir}/configure CXX=${Settings.Compiler.cpp_cc} ${Settings.Architecture.flags} ${targets} --with-backend-compiler=${Settings.Compiler.cfa_cc} --quiet"
    280117
    281118                        //Compile the project
     
    288125        build_stage('Test') {
    289126
    290                 dir (builddir) {
     127                dir (BuildDir) {
    291128                        //Run the tests from the tests directory
    292                         if ( do_alltests ) {
    293                                 sh 'make --no-print-directory -C src/tests all-tests debug=yes'
    294                                 sh 'make --no-print-directory -C src/tests all-tests debug=no '
     129                        if ( Settings.RunAllTests ) {
     130                                sh 'make --no-print-directory -C tests all-tests debug=yes'
     131                                sh 'make --no-print-directory -C tests all-tests debug=no '
    295132                        }
    296133                        else {
    297                                 sh 'make --no-print-directory -C src/tests'
     134                                sh 'make --no-print-directory -C tests'
    298135                        }
    299136                }
     
    304141        build_stage('Benchmark') {
    305142
    306                 if( !do_benchmark ) return
    307 
    308                 dir (builddir) {
     143                if( !Settings.RunBenchmark ) return
     144
     145                dir (BuildDir) {
    309146                        //Append bench results
    310                         sh "make --no-print-directory -C src/benchmark jenkins githash=${gitRefNewValue} arch=${arch_name} | tee ${srcdir}/bench.json"
     147                        sh "make --no-print-directory -C benchmark jenkins githash=${Settings.GitNewRef} arch=${Settings.Architecture} | tee ${SrcDir}/bench.json"
    311148                }
    312149        }
     
    316153        build_stage('Documentation') {
    317154
    318                 if( !do_doc ) return
     155                if( !Settings.BuildDocumentation ) return
    319156
    320157                dir ('doc/user') {
     
    331168        build_stage('Publish') {
    332169
    333                 if( !do_publish ) return
     170                if( !Settings.Publish ) return
    334171
    335172                //Then publish the results
     
    341178//Routine responsible of sending the email notification once the build is completed
    342179//===========================================================================================================
    343 //Standard build email notification
    344 def email(String status, boolean log, boolean bIsSandbox) {
    345         //Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
    346         //Configurations for email format
    347         def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
    348 
    349         def gitLog = 'Error retrieving git logs'
    350         def gitDiff = 'Error retrieving git diff'
    351 
    352         try {
    353 
    354                 sh "git rev-list --format=short ${gitRefOldValue}...${gitRefNewValue} > GIT_LOG"
    355                 gitLog = readFile('GIT_LOG')
    356 
    357                 sh "git diff --stat ${gitRefNewValue} ${gitRefOldValue} > GIT_DIFF"
    358                 gitDiff = readFile('GIT_DIFF')
    359         }
    360         catch (Exception error) {}
    361 
    362         def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${status}] - branch ${env.BRANCH_NAME}"
    363         def email_body = """This is an automated email from the Jenkins build machine. It was
    364 generated because of a git hooks/post-receive script following
    365 a ref change was pushed to the repository containing
    366 the project "UNNAMED PROJECT".
    367 
     180def GitLogMessage() {
     181        if (!Settings || !Settings.GitOldRef || !Settings.GitNewRef) return "\nERROR retrieveing git information!\n"
     182
     183        sh "${SrcDir}/tools/PrettyGitLogs.sh ${BuildDir} ${Settings.GitOldRef} ${Settings.GitNewRef}"
     184
     185        def gitUpdate = readFile("${BuildDir}/GIT_UPDATE")
     186        def gitLog    = readFile("${BuildDir}/GIT_LOG")
     187        def gitDiff   = readFile("${BuildDir}/GIT_DIFF")
     188
     189        return """
    368190The branch ${env.BRANCH_NAME} has been updated.
    369    via  ${gitRefOldValue} (commit)
    370   from  ${gitRefNewValue} (commit)
     191${gitUpdate}
    371192
    372193Check console output at ${env.BUILD_URL} to view the results.
     
    374195- Status --------------------------------------------------------------
    375196
    376 BUILD# ${env.BUILD_NUMBER} - ${status}
     197BUILD# ${env.BUILD_NUMBER} - ${currentBuild.result}
    377198
    378199- Log -----------------------------------------------------------------
     
    382203${gitDiff}
    383204"""
     205}
     206
     207//Standard build email notification
     208def email(boolean log, boolean bIsSandbox) {
     209        //Since tokenizer doesn't work, figure stuff out from the environnement variables and command line
     210        //Configurations for email format
     211        echo 'Notifying users of result'
     212
     213        def project_name = (env.JOB_NAME =~ /(.+)\/.+/)[0][1].toLowerCase()
     214        def email_subject = "[${project_name} git][BUILD# ${env.BUILD_NUMBER} - ${currentBuild.result}] - branch ${env.BRANCH_NAME}"
     215        def email_body = """This is an automated email from the Jenkins build machine. It was
     216generated because of a git hooks/post-receive script following
     217a ref change which was pushed to the Cforall repository.
     218""" + GitLogMessage()
    384219
    385220        def email_to = "cforall@lists.uwaterloo.ca"
    386221
    387         if( !bIsSandbox ) {
     222        if( Settings && !Settings.IsSandbox ) {
    388223                //send email notification
    389224                emailext body: email_body, subject: email_subject, to: email_to, attachLog: log
     
    394229        }
    395230}
     231
     232//===========================================================================================================
     233// Helper classes/variables/routines
     234//===========================================================================================================
     235//Description of a compiler (Must be serializable since pipelines are persistent)
     236class CC_Desc implements Serializable {
     237        public String cc_name
     238        public String cpp_cc
     239        public String cfa_cc
     240
     241        CC_Desc(String cc_name, String cpp_cc, String cfa_cc) {
     242                this.cc_name = cc_name
     243                this.cpp_cc = cpp_cc
     244                this.cfa_cc = cfa_cc
     245        }
     246}
     247
     248//Description of an architecture (Must be serializable since pipelines are persistent)
     249class Arch_Desc implements Serializable {
     250        public String name
     251        public String flags
     252
     253        Arch_Desc(String name, String flags) {
     254                this.name  = name
     255                this.flags = flags
     256        }
     257}
     258
     259class BuildSettings implements Serializable {
     260        public final CC_Desc Compiler
     261        public final Arch_Desc Architecture
     262        public final Boolean RunAllTests
     263        public final Boolean RunBenchmark
     264        public final Boolean BuildDocumentation
     265        public final Boolean Publish
     266        public final Boolean Silent
     267        public final Boolean IsSandbox
     268        public final String DescLong
     269        public final String DescShort
     270
     271        public String GitNewRef
     272        public String GitOldRef
     273
     274        BuildSettings(java.util.Collections$UnmodifiableMap param, String branch) {
     275                switch( param.Compiler ) {
     276                        case 'gcc-6':
     277                                this.Compiler = new CC_Desc('gcc-6', 'g++-6', 'gcc-6')
     278                        break
     279                        case 'gcc-5':
     280                                this.Compiler = new CC_Desc('gcc-5', 'g++-5', 'gcc-5')
     281                        break
     282                        case 'gcc-4.9':
     283                                this.Compiler = new CC_Desc('gcc-4.9', 'g++-4.9', 'gcc-4.9')
     284                        break
     285                        case 'clang':
     286                                this.Compiler = new CC_Desc('clang', 'clang++', 'gcc-6')
     287                        break
     288                        default :
     289                                error "Unhandled compiler : ${cc}"
     290                }
     291
     292                switch( param.Architecture ) {
     293                        case 'x64':
     294                                this.Architecture = new Arch_Desc('x64', '--host=x86_64')
     295                        break
     296                        case 'x86':
     297                                this.Architecture = new Arch_Desc('x86', '--host=i386')
     298                        break
     299                        default :
     300                                error "Unhandled architecture : ${arch}"
     301                }
     302
     303                this.RunAllTests        = param.RunAllTests
     304                this.RunBenchmark       = param.RunBenchmark
     305                this.BuildDocumentation = param.BuildDocumentation
     306                this.Publish            = param.Publish
     307                this.Silent             = param.Silent
     308                this.IsSandbox          = (branch == "jenkins-sandbox")
     309
     310                def full = param.RunAllTests ? " (Full)" : ""
     311                this.DescShort = "${ this.Compiler.cc_name }:${ this.Architecture.name }${full}"
     312
     313                this.DescLong = """Compiler              : ${ this.Compiler.cc_name } (${ this.Compiler.cpp_cc }/${ this.Compiler.cfa_cc })
     314Architecture            : ${ this.Architecture.name }
     315Arc Flags               : ${ this.Architecture.flags }
     316Run All Tests           : ${ this.RunAllTests.toString() }
     317Run Benchmark           : ${ this.RunBenchmark.toString() }
     318Build Documentation     : ${ this.BuildDocumentation.toString() }
     319Publish                 : ${ this.Publish.toString() }
     320Silent                  : ${ this.Silent.toString() }
     321"""
     322
     323                this.GitNewRef = ''
     324                this.GitOldRef = ''
     325        }
     326}
     327
     328def prepare_build() {
     329        // prepare the properties
     330        properties ([                                                                                                   \
     331                [$class: 'ParametersDefinitionProperty',                                                                \
     332                        parameterDefinitions: [                                                                         \
     333                                [$class: 'ChoiceParameterDefinition',                                           \
     334                                        description: 'Which compiler to use',                                   \
     335                                        name: 'Compiler',                                                                       \
     336                                        choices: 'gcc-6\ngcc-5\ngcc-4.9\nclang',                                        \
     337                                        defaultValue: 'gcc-6',                                                          \
     338                                ],                                                                                              \
     339                                [$class: 'ChoiceParameterDefinition',                                           \
     340                                        description: 'The target architecture',                                 \
     341                                        name: 'Architecture',                                                           \
     342                                        choices: 'x64\nx86',                                                            \
     343                                        defaultValue: 'x64',                                                            \
     344                                ],                                                                                              \
     345                                [$class: 'BooleanParameterDefinition',                                                  \
     346                                        description: 'If false, only the quick test suite is ran',              \
     347                                        name: 'RunAllTests',                                                            \
     348                                        defaultValue: false,                                                            \
     349                                ],                                                                                              \
     350                                [$class: 'BooleanParameterDefinition',                                                  \
     351                                        description: 'If true, jenkins also runs benchmarks',           \
     352                                        name: 'RunBenchmark',                                                           \
     353                                        defaultValue: false,                                                            \
     354                                ],                                                                                              \
     355                                [$class: 'BooleanParameterDefinition',                                                  \
     356                                        description: 'If true, jenkins also builds documentation',              \
     357                                        name: 'BuildDocumentation',                                                     \
     358                                        defaultValue: true,                                                             \
     359                                ],                                                                                              \
     360                                [$class: 'BooleanParameterDefinition',                                                  \
     361                                        description: 'If true, jenkins also publishes results',                 \
     362                                        name: 'Publish',                                                                        \
     363                                        defaultValue: false,                                                            \
     364                                ],                                                                                              \
     365                                [$class: 'BooleanParameterDefinition',                                                  \
     366                                        description: 'If true, jenkins will not send emails',           \
     367                                        name: 'Silent',                                                                         \
     368                                        defaultValue: false,                                                            \
     369                                ],                                                                                              \
     370                        ],
     371                ]])
     372
     373        final settings = new BuildSettings(params, env.BRANCH_NAME)
     374
     375        currentBuild.description = settings.DescShort
     376        echo                       settings.DescLong
     377
     378        return settings
     379}
     380
     381def build_stage(String name, Closure block ) {
     382        StageName = name
     383        echo " -------- ${StageName} -------- "
     384        stage(name, block)
     385}
     386
     387def notify_server(int wait) {
     388        sh """curl --silent --show-error --data "wait=${wait}" -X POST https://cforall.uwaterloo.ca:8082/jenkins/notify > /dev/null || true"""
     389        return
     390}
     391
     392def make_doc() {
     393        def err = null
     394        try {
     395                sh 'make clean > /dev/null'
     396                sh 'make > /dev/null 2>&1'
     397        }
     398        catch (Exception caughtError) {
     399                err = caughtError //rethrow error later
     400                sh 'cat *.log'
     401        }
     402        finally {
     403                if (err) throw err // Must re-throw exception to propagate error
     404        }
     405}
  • Makefile.am

    r2b79a70 rcdbab55  
    66## file "LICENCE" distributed with Cforall.
    77##
    8 ## Makefile.am -- 
     8## Makefile.am --
    99##
    1010## Author           : Peter A. Buhr
     
    1515###############################################################################
    1616
    17 AUTOMAKE_OPTIONS = foreign              # do not require all the GNU file names
    18 SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
    19 EXTRA_DIST = Docs                       # non-source files
    20 BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
     17AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     18BACKEND_CC = @BACKEND_CC@     # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
    2119
    22 MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
     20MAINTAINERCLEANFILES = lib/* bin/* tests/.deps/* tests/.out/*
     21 # order important
     22
     23SUBDIRS = driver src . @LIBCFA_TARGET_DIRS@
     24
     25@LIBCFA_TARGET_MAKEFILES@ : Makefile $(srcdir)/libcfa/configure
     26        @$(eval config_file = $(dir $@)config.data)
     27        @ls $(config_file) || (echo "Missing config.data, re-run configure script again" && false)
     28        @$(eval config_data = $(shell cat $(config_file)))
     29        @echo "Configuring libcfa with '$(config_data)''"
     30        @cd $(dir $@) && $(abs_top_srcdir)/libcfa/configure $(config_data)
     31
     32noinst_DATA = @LIBCFA_TARGET_MAKEFILES@
    2333
    2434man1_MANS = doc/man/cfa.1
     35
     36debug=yes
     37check:
     38        $(MAKE) -C tests all-tests installed=no debug=${debug}
     39
     40installcheck:
     41        $(MAKE) -C tests all-tests installed=yes debug=${debug}
     42
     43status: @LIBCFA_TARGET_MAKEFILES@
     44        @echo -ne "translator\n\t"
     45        @./config.status --config | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
     46        @find libcfa -name config.status -printf "\n%h\n\t" -exec {} --config \; | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
  • Makefile.in

    r2b79a70 rcdbab55  
    1717######################## -*- Mode: Makefile-Automake -*- ######################
    1818###############################################################################
     19
    1920VPATH = @srcdir@
    2021am__is_gnu_make = { \
     
    9394subdir = .
    9495ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
    95 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
     96am__aclocal_m4_deps = $(top_srcdir)/automake/cfa.m4 \
     97        $(top_srcdir)/configure.ac
    9698am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
    9799        $(ACLOCAL_M4)
     
    162164NROFF = nroff
    163165MANS = $(man1_MANS)
     166DATA = $(noinst_DATA)
    164167RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
    165168  distclean-recursive maintainer-clean-recursive
     
    249252AUTOMAKE = @AUTOMAKE@
    250253AWK = @AWK@
    251 BACKEND_CC = @BACKEND_CC@               # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
     254BACKEND_CC = @BACKEND_CC@     # C compiler used to compile Cforall programs, versus C++ compiler used to build cfa command
    252255BUILD_IN_TREE_FLAGS = @BUILD_IN_TREE_FLAGS@
    253 BUILD_IN_TREE_FLAGS_NOLIB = @BUILD_IN_TREE_FLAGS_NOLIB@
    254256CC = @CC@
    255257CCAS = @CCAS@
     
    282284EXEEXT = @EXEEXT@
    283285GREP = @GREP@
     286HOST_FLAGS = @HOST_FLAGS@
    284287INSTALL = @INSTALL@
    285288INSTALL_DATA = @INSTALL_DATA@
     
    291294LEXLIB = @LEXLIB@
    292295LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
     296LIBCFA_TARGET_DIRS = @LIBCFA_TARGET_DIRS@
     297LIBCFA_TARGET_MAKEFILES = @LIBCFA_TARGET_MAKEFILES@
    293298LIBOBJS = @LIBOBJS@
    294299LIBS = @LIBS@
    295300LTLIBOBJS = @LTLIBOBJS@
    296 MACHINE_TYPE = @MACHINE_TYPE@
    297301MAKEINFO = @MAKEINFO@
    298302MKDIR_P = @MKDIR_P@
     
    310314SHELL = @SHELL@
    311315STRIP = @STRIP@
     316TARGET_HOSTS = @TARGET_HOSTS@
    312317VERSION = @VERSION@
    313318YACC = @YACC@
     
    365370top_builddir = @top_builddir@
    366371top_srcdir = @top_srcdir@
    367 AUTOMAKE_OPTIONS = foreign              # do not require all the GNU file names
    368 SUBDIRS = src/driver src src/prelude src/libcfa # order important, src before prelude because cfa-cpp used to build prelude
    369 EXTRA_DIST = Docs                       # non-source files
    370 MAINTAINERCLEANFILES = lib/* bin/* src/examples/.deps/* src/tests/.deps/* src/tests/.out/*
     372AUTOMAKE_OPTIONS = foreign    # do not require all the GNU file names
     373MAINTAINERCLEANFILES = lib/* bin/* tests/.deps/* tests/.out/*
     374SUBDIRS = driver src . @LIBCFA_TARGET_DIRS@
     375noinst_DATA = @LIBCFA_TARGET_MAKEFILES@
    371376man1_MANS = doc/man/cfa.1
     377debug = yes
    372378all: config.h
    373379        $(MAKE) $(AM_MAKEFLAGS) all-recursive
     
    760766check-am: all-am
    761767check: check-recursive
    762 all-am: Makefile $(MANS) config.h
     768all-am: Makefile $(MANS) $(DATA) config.h
    763769installdirs: installdirs-recursive
    764770installdirs-am:
     
    773779install-am: all-am
    774780        @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
    775 
    776 installcheck: installcheck-recursive
    777781install-strip:
    778782        if test -z '$(STRIP)'; then \
     
    888892.PRECIOUS: Makefile
    889893
     894 # order important
     895
     896@LIBCFA_TARGET_MAKEFILES@ : Makefile $(srcdir)/libcfa/configure
     897        @$(eval config_file = $(dir $@)config.data)
     898        @ls $(config_file) || (echo "Missing config.data, re-run configure script again" && false)
     899        @$(eval config_data = $(shell cat $(config_file)))
     900        @echo "Configuring libcfa with '$(config_data)''"
     901        @cd $(dir $@) && $(abs_top_srcdir)/libcfa/configure $(config_data)
     902check:
     903        $(MAKE) -C tests all-tests installed=no debug=${debug}
     904
     905installcheck:
     906        $(MAKE) -C tests all-tests installed=yes debug=${debug}
     907
     908status: @LIBCFA_TARGET_MAKEFILES@
     909        @echo -ne "translator\n\t"
     910        @./config.status --config | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
     911        @find libcfa -name config.status -printf "\n%h\n\t" -exec {} --config \; | sed "s/ /\n\t/g; s/\t'/\t/g; s/'\n/\n/g; s/^'//g; s/'$$//g"
    890912
    891913# Tell versions [3.59,3.63) of GNU make to not export all variables.
  • aclocal.m4

    r2b79a70 rcdbab55  
    127127# Expand $ac_aux_dir to an absolute path.
    128128am_aux_dir=`cd "$ac_aux_dir" && pwd`
    129 ])
    130 
    131 # AM_COND_IF                                            -*- Autoconf -*-
    132 
    133 # Copyright (C) 2008-2014 Free Software Foundation, Inc.
    134 #
    135 # This file is free software; the Free Software Foundation
    136 # gives unlimited permission to copy and/or distribute it,
    137 # with or without modifications, as long as this notice is preserved.
    138 
    139 # _AM_COND_IF
    140 # _AM_COND_ELSE
    141 # _AM_COND_ENDIF
    142 # --------------
    143 # These macros are only used for tracing.
    144 m4_define([_AM_COND_IF])
    145 m4_define([_AM_COND_ELSE])
    146 m4_define([_AM_COND_ENDIF])
    147 
    148 # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE])
    149 # ---------------------------------------
    150 # If the shell condition COND is true, execute IF-TRUE, otherwise execute
    151 # IF-FALSE.  Allow automake to learn about conditional instantiating macros
    152 # (the AC_CONFIG_FOOS).
    153 AC_DEFUN([AM_COND_IF],
    154 [m4_ifndef([_AM_COND_VALUE_$1],
    155            [m4_fatal([$0: no such condition "$1"])])dnl
    156 _AM_COND_IF([$1])dnl
    157 if test -z "$$1_TRUE"; then :
    158   m4_n([$2])[]dnl
    159 m4_ifval([$3],
    160 [_AM_COND_ELSE([$1])dnl
    161 else
    162   $3
    163 ])dnl
    164 _AM_COND_ENDIF([$1])dnl
    165 fi[]dnl
    166129])
    167130
  • automake/compile

    • Property mode changed from 100755 to 120000
    r2b79a70 rcdbab55  
    1 #! /bin/sh
    2 # Wrapper for compilers which do not understand '-c -o'.
    3 
    4 scriptversion=2012-10-14.11; # UTC
    5 
    6 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
    7 # Written by Tom Tromey <tromey@cygnus.com>.
    8 #
    9 # This program is free software; you can redistribute it and/or modify
    10 # it under the terms of the GNU General Public License as published by
    11 # the Free Software Foundation; either version 2, or (at your option)
    12 # any later version.
    13 #
    14 # This program is distributed in the hope that it will be useful,
    15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
    16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    17 # GNU General Public License for more details.
    18 #
    19 # You should have received a copy of the GNU General Public License
    20 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    21 
    22 # As a special exception to the GNU General Public License, if you
    23 # distribute this file as part of a program that contains a
    24 # configuration script generated by Autoconf, you may include it under
    25 # the same distribution terms that you use for the rest of that program.
    26 
    27 # This file is maintained in Automake, please report
    28 # bugs to <bug-automake@gnu.org> or send patches to
    29 # <automake-patches@gnu.org>.
    30 
    31 nl='
    32 '
    33 
    34 # We need space, tab and new line, in precisely that order.  Quoting is
    35 # there to prevent tools from complaining about whitespace usage.
    36 IFS=" ""        $nl"
    37 
    38 file_conv=
    39 
    40 # func_file_conv build_file lazy
    41 # Convert a $build file to $host form and store it in $file
    42 # Currently only supports Windows hosts. If the determined conversion
    43 # type is listed in (the comma separated) LAZY, no conversion will
    44 # take place.
    45 func_file_conv ()
    46 {
    47   file=$1
    48   case $file in
    49     / | /[!/]*) # absolute file, and not a UNC file
    50       if test -z "$file_conv"; then
    51         # lazily determine how to convert abs files
    52         case `uname -s` in
    53           MINGW*)
    54             file_conv=mingw
    55             ;;
    56           CYGWIN*)
    57             file_conv=cygwin
    58             ;;
    59           *)
    60             file_conv=wine
    61             ;;
    62         esac
    63       fi
    64       case $file_conv/,$2, in
    65         *,$file_conv,*)
    66           ;;
    67         mingw/*)
    68           file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
    69           ;;
    70         cygwin/*)
    71           file=`cygpath -m "$file" || echo "$file"`
    72           ;;
    73         wine/*)
    74           file=`winepath -w "$file" || echo "$file"`
    75           ;;
    76       esac
    77       ;;
    78   esac
    79 }
    80 
    81 # func_cl_dashL linkdir
    82 # Make cl look for libraries in LINKDIR
    83 func_cl_dashL ()
    84 {
    85   func_file_conv "$1"
    86   if test -z "$lib_path"; then
    87     lib_path=$file
    88   else
    89     lib_path="$lib_path;$file"
    90   fi
    91   linker_opts="$linker_opts -LIBPATH:$file"
    92 }
    93 
    94 # func_cl_dashl library
    95 # Do a library search-path lookup for cl
    96 func_cl_dashl ()
    97 {
    98   lib=$1
    99   found=no
    100   save_IFS=$IFS
    101   IFS=';'
    102   for dir in $lib_path $LIB
    103   do
    104     IFS=$save_IFS
    105     if $shared && test -f "$dir/$lib.dll.lib"; then
    106       found=yes
    107       lib=$dir/$lib.dll.lib
    108       break
    109     fi
    110     if test -f "$dir/$lib.lib"; then
    111       found=yes
    112       lib=$dir/$lib.lib
    113       break
    114     fi
    115     if test -f "$dir/lib$lib.a"; then
    116       found=yes
    117       lib=$dir/lib$lib.a
    118       break
    119     fi
    120   done
    121   IFS=$save_IFS
    122 
    123   if test "$found" != yes; then
    124     lib=$lib.lib
    125   fi
    126 }
    127 
    128 # func_cl_wrapper cl arg...
    129 # Adjust compile command to suit cl
    130 func_cl_wrapper ()
    131 {
    132   # Assume a capable shell
    133   lib_path=
    134   shared=:
    135   linker_opts=
    136   for arg
    137   do
    138     if test -n "$eat"; then
    139       eat=
    140     else
    141       case $1 in
    142         -o)
    143           # configure might choose to run compile as 'compile cc -o foo foo.c'.
    144           eat=1
    145           case $2 in
    146             *.o | *.[oO][bB][jJ])
    147               func_file_conv "$2"
    148               set x "$@" -Fo"$file"
    149               shift
    150               ;;
    151             *)
    152               func_file_conv "$2"
    153               set x "$@" -Fe"$file"
    154               shift
    155               ;;
    156           esac
    157           ;;
    158         -I)
    159           eat=1
    160           func_file_conv "$2" mingw
    161           set x "$@" -I"$file"
    162           shift
    163           ;;
    164         -I*)
    165           func_file_conv "${1#-I}" mingw
    166           set x "$@" -I"$file"
    167           shift
    168           ;;
    169         -l)
    170           eat=1
    171           func_cl_dashl "$2"
    172           set x "$@" "$lib"
    173           shift
    174           ;;
    175         -l*)
    176           func_cl_dashl "${1#-l}"
    177           set x "$@" "$lib"
    178           shift
    179           ;;
    180         -L)
    181           eat=1
    182           func_cl_dashL "$2"
    183           ;;
    184         -L*)
    185           func_cl_dashL "${1#-L}"
    186           ;;
    187         -static)
    188           shared=false
    189           ;;
    190         -Wl,*)
    191           arg=${1#-Wl,}
    192           save_ifs="$IFS"; IFS=','
    193           for flag in $arg; do
    194             IFS="$save_ifs"
    195             linker_opts="$linker_opts $flag"
    196           done
    197           IFS="$save_ifs"
    198           ;;
    199         -Xlinker)
    200           eat=1
    201           linker_opts="$linker_opts $2"
    202           ;;
    203         -*)
    204           set x "$@" "$1"
    205           shift
    206           ;;
    207         *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
    208           func_file_conv "$1"
    209           set x "$@" -Tp"$file"
    210           shift
    211           ;;
    212         *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
    213           func_file_conv "$1" mingw
    214           set x "$@" "$file"
    215           shift
    216           ;;
    217         *)
    218           set x "$@" "$1"
    219           shift
    220           ;;
    221       esac
    222     fi
    223     shift
    224   done
    225   if test -n "$linker_opts"; then
    226     linker_opts="-link$linker_opts"
    227   fi
    228   exec "$@" $linker_opts
    229   exit 1
    230 }
    231 
    232 eat=
    233 
    234 case $1 in
    235   '')
    236      echo "$0: No command.  Try '$0 --help' for more information." 1>&2
    237      exit 1;
    238      ;;
    239   -h | --h*)
    240     cat <<\EOF
    241 Usage: compile [--help] [--version] PROGRAM [ARGS]
    242 
    243 Wrapper for compilers which do not understand '-c -o'.
    244 Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
    245 arguments, and rename the output as expected.
    246 
    247 If you are trying to build a whole package this is not the
    248 right script to run: please start by reading the file 'INSTALL'.
    249 
    250 Report bugs to <bug-automake@gnu.org>.
    251 EOF
    252     exit $?
    253     ;;
    254   -v | --v*)
    255     echo "compile $scriptversion"
    256     exit $?
    257     ;;
    258   cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
    259     func_cl_wrapper "$@"      # Doesn't return...
    260     ;;
    261 esac
    262 
    263 ofile=
    264 cfile=
    265 
    266 for arg
    267 do
    268   if test -n "$eat"; then
    269     eat=
    270   else
    271     case $1 in
    272       -o)
    273         # configure might choose to run compile as 'compile cc -o foo foo.c'.
    274         # So we strip '-o arg' only if arg is an object.
    275         eat=1
    276         case $2 in
    277           *.o | *.obj)
    278             ofile=$2
    279             ;;
    280           *)
    281             set x "$@" -o "$2"
    282             shift
    283             ;;
    284         esac
    285         ;;
    286       *.c)
    287         cfile=$1
    288         set x "$@" "$1"
    289         shift
    290         ;;
    291       *)
    292         set x "$@" "$1"
    293         shift
    294         ;;
    295     esac
    296   fi
    297   shift
    298 done
    299 
    300 if test -z "$ofile" || test -z "$cfile"; then
    301   # If no '-o' option was seen then we might have been invoked from a
    302   # pattern rule where we don't need one.  That is ok -- this is a
    303   # normal compilation that the losing compiler can handle.  If no
    304   # '.c' file was seen then we are probably linking.  That is also
    305   # ok.
    306   exec "$@"
    307 fi
    308 
    309 # Name of file we expect compiler to create.
    310 cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
    311 
    312 # Create the lock directory.
    313 # Note: use '[/\\:.-]' here to ensure that we don't use the same name
    314 # that we are using for the .o file.  Also, base the name on the expected
    315 # object file name, since that is what matters with a parallel build.
    316 lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
    317 while true; do
    318   if mkdir "$lockdir" >/dev/null 2>&1; then
    319     break
    320   fi
    321   sleep 1
    322 done
    323 # FIXME: race condition here if user kills between mkdir and trap.
    324 trap "rmdir '$lockdir'; exit 1" 1 2 15
    325 
    326 # Run the compile.
    327 "$@"
    328 ret=$?
    329 
    330 if test -f "$cofile"; then
    331   test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
    332 elif test -f "${cofile}bj"; then
    333   test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
    334 fi
    335 
    336 rmdir "$lockdir"
    337 exit $ret
    338 
    339 # Local Variables:
    340 # mode: shell-script
    341 # sh-indentation: 2
    342 # eval: (add-hook 'write-file-hooks 'time-stamp)
    343 # time-stamp-start: "scriptversion="
    344 # time-stamp-format: "%:y-%02m-%02d.%02H"
    345 # time-stamp-time-zone: "UTC"
    346 # time-stamp-end: "; # UTC"
    347 # End:
     1/usr/share/automake-1.15/compile
  • automake/config.guess

    • Property mode changed from 100755 to 120000
    r2b79a70 rcdbab55  
    1 #! /bin/sh
    2 # Attempt to guess a canonical system name.
    3 #   Copyright 1992-2015 Free Software Foundation, Inc.
    4 
    5 timestamp='2015-08-20'
    6 
    7 # This file is free software; you can redistribute it and/or modify it
    8 # under the terms of the GNU General Public License as published by
    9 # the Free Software Foundation; either version 3 of the License, or
    10 # (at your option) any later version.
    11 #
    12 # This program is distributed in the hope that it will be useful, but
    13 # WITHOUT ANY WARRANTY; without even the implied warranty of
    14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    15 # General Public License for more details.
    16 #
    17 # You should have received a copy of the GNU General Public License
    18 # along with this program; if not, see <http://www.gnu.org/licenses/>.
    19 #
    20 # As a special exception to the GNU General Public License, if you
    21 # distribute this file as part of a program that contains a
    22 # configuration script generated by Autoconf, you may include it under
    23 # the same distribution terms that you use for the rest of that
    24 # program.  This Exception is an additional permission under section 7
    25 # of the GNU General Public License, version 3 ("GPLv3").
    26 #
    27 # Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
    28 #
    29 # You can get the latest version of this script from:
    30 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
    31 #
    32 # Please send patches to <config-patches@gnu.org>.
    33 
    34 
    35 me=`echo "$0" | sed -e 's,.*/,,'`
    36 
    37 usage="\
    38 Usage: $0 [OPTION]
    39 
    40 Output the configuration name of the system \`$me' is run on.
    41 
    42 Operation modes:
    43   -h, --help         print this help, then exit
    44   -t, --time-stamp   print date of last modification, then exit
    45   -v, --version      print version number, then exit
    46 
    47 Report bugs and patches to <config-patches@gnu.org>."
    48 
    49 version="\
    50 GNU config.guess ($timestamp)
    51 
    52 Originally written by Per Bothner.
    53 Copyright 1992-2015 Free Software Foundation, Inc.
    54 
    55 This is free software; see the source for copying conditions.  There is NO
    56 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
    57 
    58 help="
    59 Try \`$me --help' for more information."
    60 
    61 # Parse command line
    62 while test $# -gt 0 ; do
    63   case $1 in
    64     --time-stamp | --time* | -t )
    65        echo "$timestamp" ; exit ;;
    66     --version | -v )
    67        echo "$version" ; exit ;;
    68     --help | --h* | -h )
    69        echo "$usage"; exit ;;
    70     -- )     # Stop option processing
    71        shift; break ;;
    72     - ) # Use stdin as input.
    73        break ;;
    74     -* )
    75        echo "$me: invalid option $1$help" >&2
    76        exit 1 ;;
    77     * )
    78        break ;;
    79   esac
    80 done
    81 
    82 if test $# != 0; then
    83   echo "$me: too many arguments$help" >&2
    84   exit 1
    85 fi
    86 
    87 trap 'exit 1' 1 2 15
    88 
    89 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a
    90 # compiler to aid in system detection is discouraged as it requires
    91 # temporary files to be created and, as you can see below, it is a
    92 # headache to deal with in a portable fashion.
    93 
    94 # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
    95 # use `HOST_CC' if defined, but it is deprecated.
    96 
    97 # Portable tmp directory creation inspired by the Autoconf team.
    98 
    99 set_cc_for_build='
    100 trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ;
    101 trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
    102 : ${TMPDIR=/tmp} ;
    103  { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
    104  { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
    105  { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
    106  { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
    107 dummy=$tmp/dummy ;
    108 tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
    109 case $CC_FOR_BUILD,$HOST_CC,$CC in
    110  ,,)    echo "int x;" > $dummy.c ;
    111         for c in cc gcc c89 c99 ; do
    112           if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then
    113              CC_FOR_BUILD="$c"; break ;
    114           fi ;
    115         done ;
    116         if test x"$CC_FOR_BUILD" = x ; then
    117           CC_FOR_BUILD=no_compiler_found ;
    118         fi
    119         ;;
    120  ,,*)   CC_FOR_BUILD=$CC ;;
    121  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
    122 esac ; set_cc_for_build= ;'
    123 
    124 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
    125 # (ghazi@noc.rutgers.edu 1994-08-24)
    126 if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
    127         PATH=$PATH:/.attbin ; export PATH
    128 fi
    129 
    130 UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
    131 UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
    132 UNAME_SYSTEM=`(uname -s) 2>/dev/null`  || UNAME_SYSTEM=unknown
    133 UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
    134 
    135 case "${UNAME_SYSTEM}" in
    136 Linux|GNU|GNU/*)
    137         # If the system lacks a compiler, then just pick glibc.
    138         # We could probably try harder.
    139         LIBC=gnu
    140 
    141         eval $set_cc_for_build
    142         cat <<-EOF > $dummy.c
    143         #include <features.h>
    144         #if defined(__UCLIBC__)
    145         LIBC=uclibc
    146         #elif defined(__dietlibc__)
    147         LIBC=dietlibc
    148         #else
    149         LIBC=gnu
    150         #endif
    151         EOF
    152         eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
    153         ;;
    154 esac
    155 
    156 # Note: order is significant - the case branches are not exclusive.
    157 
    158 case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
    159     *:NetBSD:*:*)
    160         # NetBSD (nbsd) targets should (where applicable) match one or
    161         # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
    162         # *-*-netbsdecoff* and *-*-netbsd*.  For targets that recently
    163         # switched to ELF, *-*-netbsd* would select the old
    164         # object file format.  This provides both forward
    165         # compatibility and a consistent mechanism for selecting the
    166         # object file format.
    167         #
    168         # Note: NetBSD doesn't particularly care about the vendor
    169         # portion of the name.  We always set it to "unknown".
    170         sysctl="sysctl -n hw.machine_arch"
    171         UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
    172             /sbin/$sysctl 2>/dev/null || \
    173             /usr/sbin/$sysctl 2>/dev/null || \
    174             echo unknown)`
    175         case "${UNAME_MACHINE_ARCH}" in
    176             armeb) machine=armeb-unknown ;;
    177             arm*) machine=arm-unknown ;;
    178             sh3el) machine=shl-unknown ;;
    179             sh3eb) machine=sh-unknown ;;
    180             sh5el) machine=sh5le-unknown ;;
    181             earmv*)
    182                 arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
    183                 endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
    184                 machine=${arch}${endian}-unknown
    185                 ;;
    186             *) machine=${UNAME_MACHINE_ARCH}-unknown ;;
    187         esac
    188         # The Operating System including object format, if it has switched
    189         # to ELF recently, or will in the future.
    190         case "${UNAME_MACHINE_ARCH}" in
    191             arm*|earm*|i386|m68k|ns32k|sh3*|sparc|vax)
    192                 eval $set_cc_for_build
    193                 if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
    194                         | grep -q __ELF__
    195                 then
    196                     # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
    197                     # Return netbsd for either.  FIX?
    198                     os=netbsd
    199                 else
    200                     os=netbsdelf
    201                 fi
    202                 ;;
    203             *)
    204                 os=netbsd
    205                 ;;
    206         esac
    207         # Determine ABI tags.
    208         case "${UNAME_MACHINE_ARCH}" in
    209             earm*)
    210                 expr='s/^earmv[0-9]/-eabi/;s/eb$//'
    211                 abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"`
    212                 ;;
    213         esac
    214         # The OS release
    215         # Debian GNU/NetBSD machines have a different userland, and
    216         # thus, need a distinct triplet. However, they do not need
    217         # kernel version information, so it can be replaced with a
    218         # suitable tag, in the style of linux-gnu.
    219         case "${UNAME_VERSION}" in
    220             Debian*)
    221                 release='-gnu'
    222                 ;;
    223             *)
    224                 release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2`
    225                 ;;
    226         esac
    227         # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
    228         # contains redundant information, the shorter form:
    229         # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
    230         echo "${machine}-${os}${release}${abi}"
    231         exit ;;
    232     *:Bitrig:*:*)
    233         UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
    234         echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
    235         exit ;;
    236     *:OpenBSD:*:*)
    237         UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
    238         echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
    239         exit ;;
    240     *:ekkoBSD:*:*)
    241         echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
    242         exit ;;
    243     *:SolidBSD:*:*)
    244         echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE}
    245         exit ;;
    246     macppc:MirBSD:*:*)
    247         echo powerpc-unknown-mirbsd${UNAME_RELEASE}
    248         exit ;;
    249     *:MirBSD:*:*)
    250         echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE}
    251         exit ;;
    252     *:Sortix:*:*)
    253         echo ${UNAME_MACHINE}-unknown-sortix
    254         exit ;;
    255     alpha:OSF1:*:*)
    256         case $UNAME_RELEASE in
    257         *4.0)
    258                 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
    259                 ;;
    260         *5.*)
    261                 UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
    262                 ;;
    263         esac
    264         # According to Compaq, /usr/sbin/psrinfo has been available on
    265         # OSF/1 and Tru64 systems produced since 1995.  I hope that
    266         # covers most systems running today.  This code pipes the CPU
    267         # types through head -n 1, so we only detect the type of CPU 0.
    268         ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^  The alpha \(.*\) processor.*$/\1/p' | head -n 1`
    269         case "$ALPHA_CPU_TYPE" in
    270             "EV4 (21064)")
    271                 UNAME_MACHINE="alpha" ;;
    272             "EV4.5 (21064)")
    273                 UNAME_MACHINE="alpha" ;;
    274             "LCA4 (21066/21068)")
    275                 UNAME_MACHINE="alpha" ;;
    276             "EV5 (21164)")
    277                 UNAME_MACHINE="alphaev5" ;;
    278             "EV5.6 (21164A)")
    279                 UNAME_MACHINE="alphaev56" ;;
    280             "EV5.6 (21164PC)")
    281                 UNAME_MACHINE="alphapca56" ;;
    282             "EV5.7 (21164PC)")
    283                 UNAME_MACHINE="alphapca57" ;;
    284             "EV6 (21264)")
    285                 UNAME_MACHINE="alphaev6" ;;
    286             "EV6.7 (21264A)")
    287                 UNAME_MACHINE="alphaev67" ;;
    288             "EV6.8CB (21264C)")
    289                 UNAME_MACHINE="alphaev68" ;;
    290             "EV6.8AL (21264B)")
    291                 UNAME_MACHINE="alphaev68" ;;
    292             "EV6.8CX (21264D)")
    293                 UNAME_MACHINE="alphaev68" ;;
    294             "EV6.9A (21264/EV69A)")
    295                 UNAME_MACHINE="alphaev69" ;;
    296             "EV7 (21364)")
    297                 UNAME_MACHINE="alphaev7" ;;
    298             "EV7.9 (21364A)")
    299                 UNAME_MACHINE="alphaev79" ;;
    300         esac
    301         # A Pn.n version is a patched version.
    302         # A Vn.n version is a released version.
    303         # A Tn.n version is a released field test version.
    304         # A Xn.n version is an unreleased experimental baselevel.
    305         # 1.2 uses "1.2" for uname -r.
    306         echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
    307         # Reset EXIT trap before exiting to avoid spurious non-zero exit code.
    308         exitcode=$?
    309         trap '' 0
    310         exit $exitcode ;;
    311     Alpha\ *:Windows_NT*:*)
    312         # How do we know it's Interix rather than the generic POSIX subsystem?
    313         # Should we change UNAME_MACHINE based on the output of uname instead
    314         # of the specific Alpha model?
    315         echo alpha-pc-interix
    316         exit ;;
    317     21064:Windows_NT:50:3)
    318         echo alpha-dec-winnt3.5
    319         exit ;;
    320     Amiga*:UNIX_System_V:4.0:*)
    321         echo m68k-unknown-sysv4
    322         exit ;;
    323     *:[Aa]miga[Oo][Ss]:*:*)
    324         echo ${UNAME_MACHINE}-unknown-amigaos
    325         exit ;;
    326     *:[Mm]orph[Oo][Ss]:*:*)
    327         echo ${UNAME_MACHINE}-unknown-morphos
    328         exit ;;
    329     *:OS/390:*:*)
    330         echo i370-ibm-openedition
    331         exit ;;
    332     *:z/VM:*:*)
    333         echo s390-ibm-zvmoe
    334         exit ;;
    335     *:OS400:*:*)
    336         echo powerpc-ibm-os400
    337         exit ;;
    338     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
    339         echo arm-acorn-riscix${UNAME_RELEASE}
    340         exit ;;
    341     arm*:riscos:*:*|arm*:RISCOS:*:*)
    342         echo arm-unknown-riscos
    343         exit ;;
    344     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
    345         echo hppa1.1-hitachi-hiuxmpp
    346         exit ;;
    347     Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
    348         # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
    349         if test "`(/bin/universe) 2>/dev/null`" = att ; then
    350                 echo pyramid-pyramid-sysv3
    351         else
    352                 echo pyramid-pyramid-bsd
    353         fi
    354         exit ;;
    355     NILE*:*:*:dcosx)
    356         echo pyramid-pyramid-svr4
    357         exit ;;
    358     DRS?6000:unix:4.0:6*)
    359         echo sparc-icl-nx6
    360         exit ;;
    361     DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
    362         case `/usr/bin/uname -p` in
    363             sparc) echo sparc-icl-nx7; exit ;;
    364         esac ;;
    365     s390x:SunOS:*:*)
    366         echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
    367         exit ;;
    368     sun4H:SunOS:5.*:*)
    369         echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
    370         exit ;;
    371     sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
    372         echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
    373         exit ;;
    374     i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
    375         echo i386-pc-auroraux${UNAME_RELEASE}
    376         exit ;;
    377     i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
    378         eval $set_cc_for_build
    379         SUN_ARCH="i386"
    380         # If there is a compiler, see if it is configured for 64-bit objects.
    381         # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
    382         # This test works for both compilers.
    383         if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
    384             if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
    385                 (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
    386                 grep IS_64BIT_ARCH >/dev/null
    387             then
    388                 SUN_ARCH="x86_64"
    389             fi
    390         fi
    391         echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
    392         exit ;;
    393     sun4*:SunOS:6*:*)
    394         # According to config.sub, this is the proper way to canonicalize
    395         # SunOS6.  Hard to guess exactly what SunOS6 will be like, but
    396         # it's likely to be more like Solaris than SunOS4.
    397         echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
    398         exit ;;
    399     sun4*:SunOS:*:*)
    400         case "`/usr/bin/arch -k`" in
    401             Series*|S4*)
    402                 UNAME_RELEASE=`uname -v`
    403                 ;;
    404         esac
    405         # Japanese Language versions have a version number like `4.1.3-JL'.
    406         echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
    407         exit ;;
    408     sun3*:SunOS:*:*)
    409         echo m68k-sun-sunos${UNAME_RELEASE}
    410         exit ;;
    411     sun*:*:4.2BSD:*)
    412         UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
    413         test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
    414         case "`/bin/arch`" in
    415             sun3)
    416                 echo m68k-sun-sunos${UNAME_RELEASE}
    417                 ;;
    418             sun4)
    419                 echo sparc-sun-sunos${UNAME_RELEASE}
    420                 ;;
    421         esac
    422         exit ;;
    423     aushp:SunOS:*:*)
    424         echo sparc-auspex-sunos${UNAME_RELEASE}
    425         exit ;;
    426     # The situation for MiNT is a little confusing.  The machine name
    427     # can be virtually everything (everything which is not
    428     # "atarist" or "atariste" at least should have a processor
    429     # > m68000).  The system name ranges from "MiNT" over "FreeMiNT"
    430     # to the lowercase version "mint" (or "freemint").  Finally
    431     # the system name "TOS" denotes a system which is actually not
    432     # MiNT.  But MiNT is downward compatible to TOS, so this should
    433     # be no problem.
    434     atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
    435         echo m68k-atari-mint${UNAME_RELEASE}
    436         exit ;;
    437     atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
    438         echo m68k-atari-mint${UNAME_RELEASE}
    439         exit ;;
    440     *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
    441         echo m68k-atari-mint${UNAME_RELEASE}
    442         exit ;;
    443     milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
    444         echo m68k-milan-mint${UNAME_RELEASE}
    445         exit ;;
    446     hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
    447         echo m68k-hades-mint${UNAME_RELEASE}
    448         exit ;;
    449     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
    450         echo m68k-unknown-mint${UNAME_RELEASE}
    451         exit ;;
    452     m68k:machten:*:*)
    453         echo m68k-apple-machten${UNAME_RELEASE}
    454         exit ;;
    455     powerpc:machten:*:*)
    456         echo powerpc-apple-machten${UNAME_RELEASE}
    457         exit ;;
    458     RISC*:Mach:*:*)
    459         echo mips-dec-mach_bsd4.3
    460         exit ;;
    461     RISC*:ULTRIX:*:*)
    462         echo mips-dec-ultrix${UNAME_RELEASE}
    463         exit ;;
    464     VAX*:ULTRIX*:*:*)
    465         echo vax-dec-ultrix${UNAME_RELEASE}
    466         exit ;;
    467     2020:CLIX:*:* | 2430:CLIX:*:*)
    468         echo clipper-intergraph-clix${UNAME_RELEASE}
    469         exit ;;
    470     mips:*:*:UMIPS | mips:*:*:RISCos)
    471         eval $set_cc_for_build
    472         sed 's/^        //' << EOF >$dummy.c
    473 #ifdef __cplusplus
    474 #include <stdio.h>  /* for printf() prototype */
    475         int main (int argc, char *argv[]) {
    476 #else
    477         int main (argc, argv) int argc; char *argv[]; {
    478 #endif
    479         #if defined (host_mips) && defined (MIPSEB)
    480         #if defined (SYSTYPE_SYSV)
    481           printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
    482         #endif
    483         #if defined (SYSTYPE_SVR4)
    484           printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
    485         #endif
    486         #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
    487           printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
    488         #endif
    489         #endif
    490           exit (-1);
    491         }
    492 EOF
    493         $CC_FOR_BUILD -o $dummy $dummy.c &&
    494           dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` &&
    495           SYSTEM_NAME=`$dummy $dummyarg` &&
    496             { echo "$SYSTEM_NAME"; exit; }
    497         echo mips-mips-riscos${UNAME_RELEASE}
    498         exit ;;
    499     Motorola:PowerMAX_OS:*:*)
    500         echo powerpc-motorola-powermax
    501         exit ;;
    502     Motorola:*:4.3:PL8-*)
    503         echo powerpc-harris-powermax
    504         exit ;;
    505     Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*)
    506         echo powerpc-harris-powermax
    507         exit ;;
    508     Night_Hawk:Power_UNIX:*:*)
    509         echo powerpc-harris-powerunix
    510         exit ;;
    511     m88k:CX/UX:7*:*)
    512         echo m88k-harris-cxux7
    513         exit ;;
    514     m88k:*:4*:R4*)
    515         echo m88k-motorola-sysv4
    516         exit ;;
    517     m88k:*:3*:R3*)
    518         echo m88k-motorola-sysv3
    519         exit ;;
    520     AViiON:dgux:*:*)
    521         # DG/UX returns AViiON for all architectures
    522         UNAME_PROCESSOR=`/usr/bin/uname -p`
    523         if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
    524         then
    525             if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
    526                [ ${TARGET_BINARY_INTERFACE}x = x ]
    527             then
    528                 echo m88k-dg-dgux${UNAME_RELEASE}
    529             else
    530                 echo m88k-dg-dguxbcs${UNAME_RELEASE}
    531             fi
    532         else
    533             echo i586-dg-dgux${UNAME_RELEASE}
    534         fi
    535         exit ;;
    536     M88*:DolphinOS:*:*) # DolphinOS (SVR3)
    537         echo m88k-dolphin-sysv3
    538         exit ;;
    539     M88*:*:R3*:*)
    540         # Delta 88k system running SVR3
    541         echo m88k-motorola-sysv3
    542         exit ;;
    543     XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
    544         echo m88k-tektronix-sysv3
    545         exit ;;
    546     Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
    547         echo m68k-tektronix-bsd
    548         exit ;;
    549     *:IRIX*:*:*)
    550         echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
    551         exit ;;
    552     ????????:AIX?:[12].1:2)   # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
    553         echo romp-ibm-aix     # uname -m gives an 8 hex-code CPU id
    554         exit ;;               # Note that: echo "'`uname -s`'" gives 'AIX '
    555     i*86:AIX:*:*)
    556         echo i386-ibm-aix
    557         exit ;;
    558     ia64:AIX:*:*)
    559         if [ -x /usr/bin/oslevel ] ; then
    560                 IBM_REV=`/usr/bin/oslevel`
    561         else
    562                 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
    563         fi
    564         echo ${UNAME_MACHINE}-ibm-aix${IBM_REV}
    565         exit ;;
    566     *:AIX:2:3)
    567         if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
    568                 eval $set_cc_for_build
    569                 sed 's/^                //' << EOF >$dummy.c
    570                 #include <sys/systemcfg.h>
    571 
    572                 main()
    573                         {
    574                         if (!__power_pc())
    575                                 exit(1);
    576                         puts("powerpc-ibm-aix3.2.5");
    577                         exit(0);
    578                         }
    579 EOF
    580                 if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy`
    581                 then
    582                         echo "$SYSTEM_NAME"
    583                 else
    584                         echo rs6000-ibm-aix3.2.5
    585                 fi
    586         elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
    587                 echo rs6000-ibm-aix3.2.4
    588         else
    589                 echo rs6000-ibm-aix3.2
    590         fi
    591         exit ;;
    592     *:AIX:*:[4567])
    593         IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
    594         if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
    595                 IBM_ARCH=rs6000
    596         else
    597                 IBM_ARCH=powerpc
    598         fi
    599         if [ -x /usr/bin/lslpp ] ; then
    600                 IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
    601                            awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
    602         else
    603                 IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
    604         fi
    605         echo ${IBM_ARCH}-ibm-aix${IBM_REV}
    606         exit ;;
    607     *:AIX:*:*)
    608         echo rs6000-ibm-aix
    609         exit ;;
    610     ibmrt:4.4BSD:*|romp-ibm:BSD:*)
    611         echo romp-ibm-bsd4.4
    612         exit ;;
    613     ibmrt:*BSD:*|romp-ibm:BSD:*)            # covers RT/PC BSD and
    614         echo romp-ibm-bsd${UNAME_RELEASE}   # 4.3 with uname added to
    615         exit ;;                             # report: romp-ibm BSD 4.3
    616     *:BOSX:*:*)
    617         echo rs6000-bull-bosx
    618         exit ;;
    619     DPX/2?00:B.O.S.:*:*)
    620         echo m68k-bull-sysv3
    621         exit ;;
    622     9000/[34]??:4.3bsd:1.*:*)
    623         echo m68k-hp-bsd
    624         exit ;;
    625     hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
    626         echo m68k-hp-bsd4.4
    627         exit ;;
    628     9000/[34678]??:HP-UX:*:*)
    629         HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
    630         case "${UNAME_MACHINE}" in
    631             9000/31? )            HP_ARCH=m68000 ;;
    632             9000/[34]?? )         HP_ARCH=m68k ;;
    633             9000/[678][0-9][0-9])
    634                 if [ -x /usr/bin/getconf ]; then
    635                     sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
    636                     sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
    637                     case "${sc_cpu_version}" in
    638                       523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
    639                       528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
    640                       532)                      # CPU_PA_RISC2_0
    641                         case "${sc_kernel_bits}" in
    642                           32) HP_ARCH="hppa2.0n" ;;
    643                           64) HP_ARCH="hppa2.0w" ;;
    644                           '') HP_ARCH="hppa2.0" ;;   # HP-UX 10.20
    645                         esac ;;
    646                     esac
    647                 fi
    648                 if [ "${HP_ARCH}" = "" ]; then
    649                     eval $set_cc_for_build
    650                     sed 's/^            //' << EOF >$dummy.c
    651 
    652                 #define _HPUX_SOURCE
    653                 #include <stdlib.h>
    654                 #include <unistd.h>
    655 
    656                 int main ()
    657                 {
    658                 #if defined(_SC_KERNEL_BITS)
    659                     long bits = sysconf(_SC_KERNEL_BITS);
    660                 #endif
    661                     long cpu  = sysconf (_SC_CPU_VERSION);
    662 
    663                     switch (cpu)
    664                         {
    665                         case CPU_PA_RISC1_0: puts ("hppa1.0"); break;
    666                         case CPU_PA_RISC1_1: puts ("hppa1.1"); break;
    667                         case CPU_PA_RISC2_0:
    668                 #if defined(_SC_KERNEL_BITS)
    669                             switch (bits)
    670                                 {
    671                                 case 64: puts ("hppa2.0w"); break;
    672                                 case 32: puts ("hppa2.0n"); break;
    673                                 default: puts ("hppa2.0"); break;
    674                                 } break;
    675                 #else  /* !defined(_SC_KERNEL_BITS) */
    676                             puts ("hppa2.0"); break;
    677                 #endif
    678                         default: puts ("hppa1.0"); break;
    679                         }
    680                     exit (0);
    681                 }
    682 EOF
    683                     (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy`
    684                     test -z "$HP_ARCH" && HP_ARCH=hppa
    685                 fi ;;
    686         esac
    687         if [ ${HP_ARCH} = "hppa2.0w" ]
    688         then
    689             eval $set_cc_for_build
    690 
    691             # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
    692             # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
    693             # generating 64-bit code.  GNU and HP use different nomenclature:
    694             #
    695             # $ CC_FOR_BUILD=cc ./config.guess
    696             # => hppa2.0w-hp-hpux11.23
    697             # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess
    698             # => hppa64-hp-hpux11.23
    699 
    700             if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
    701                 grep -q __LP64__
    702             then
    703                 HP_ARCH="hppa2.0w"
    704             else
    705                 HP_ARCH="hppa64"
    706             fi
    707         fi
    708         echo ${HP_ARCH}-hp-hpux${HPUX_REV}
    709         exit ;;
    710     ia64:HP-UX:*:*)
    711         HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
    712         echo ia64-hp-hpux${HPUX_REV}
    713         exit ;;
    714     3050*:HI-UX:*:*)
    715         eval $set_cc_for_build
    716         sed 's/^        //' << EOF >$dummy.c
    717         #include <unistd.h>
    718         int
    719         main ()
    720         {
    721           long cpu = sysconf (_SC_CPU_VERSION);
    722           /* The order matters, because CPU_IS_HP_MC68K erroneously returns
    723              true for CPU_PA_RISC1_0.  CPU_IS_PA_RISC returns correct
    724              results, however.  */
    725           if (CPU_IS_PA_RISC (cpu))
    726             {
    727               switch (cpu)
    728                 {
    729                   case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
    730                   case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
    731                   case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
    732                   default: puts ("hppa-hitachi-hiuxwe2"); break;
    733                 }
    734             }
    735           else if (CPU_IS_HP_MC68K (cpu))
    736             puts ("m68k-hitachi-hiuxwe2");
    737           else puts ("unknown-hitachi-hiuxwe2");
    738           exit (0);
    739         }
    740 EOF
    741         $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` &&
    742                 { echo "$SYSTEM_NAME"; exit; }
    743         echo unknown-hitachi-hiuxwe2
    744         exit ;;
    745     9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
    746         echo hppa1.1-hp-bsd
    747         exit ;;
    748     9000/8??:4.3bsd:*:*)
    749         echo hppa1.0-hp-bsd
    750         exit ;;
    751     *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
    752         echo hppa1.0-hp-mpeix
    753         exit ;;
    754     hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
    755         echo hppa1.1-hp-osf
    756         exit ;;
    757     hp8??:OSF1:*:*)
    758         echo hppa1.0-hp-osf
    759         exit ;;
    760     i*86:OSF1:*:*)
    761         if [ -x /usr/sbin/sysversion ] ; then
    762             echo ${UNAME_MACHINE}-unknown-osf1mk
    763         else
    764             echo ${UNAME_MACHINE}-unknown-osf1
    765         fi
    766         exit ;;
    767     parisc*:Lites*:*:*)
    768         echo hppa1.1-hp-lites
    769         exit ;;
    770     C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
    771         echo c1-convex-bsd
    772         exit ;;
    773     C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
    774         if getsysinfo -f scalar_acc
    775         then echo c32-convex-bsd
    776         else echo c2-convex-bsd
    777         fi
    778         exit ;;
    779     C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
    780         echo c34-convex-bsd
    781         exit ;;
    782     C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
    783         echo c38-convex-bsd
    784         exit ;;
    785     C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
    786         echo c4-convex-bsd
    787         exit ;;
    788     CRAY*Y-MP:*:*:*)
    789         echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
    790         exit ;;
    791     CRAY*[A-Z]90:*:*:*)
    792         echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
    793         | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
    794               -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \
    795               -e 's/\.[^.]*$/.X/'
    796         exit ;;
    797     CRAY*TS:*:*:*)
    798         echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
    799         exit ;;
    800     CRAY*T3E:*:*:*)
    801         echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
    802         exit ;;
    803     CRAY*SV1:*:*:*)
    804         echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
    805         exit ;;
    806     *:UNICOS/mp:*:*)
    807         echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
    808         exit ;;
    809     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
    810         FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
    811         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
    812         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
    813         echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
    814         exit ;;
    815     5000:UNIX_System_V:4.*:*)
    816         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
    817         FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'`
    818         echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
    819         exit ;;
    820     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
    821         echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
    822         exit ;;
    823     sparc*:BSD/OS:*:*)
    824         echo sparc-unknown-bsdi${UNAME_RELEASE}
    825         exit ;;
    826     *:BSD/OS:*:*)
    827         echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
    828         exit ;;
    829     *:FreeBSD:*:*)
    830         UNAME_PROCESSOR=`/usr/bin/uname -p`
    831         case ${UNAME_PROCESSOR} in
    832             amd64)
    833                 echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
    834             *)
    835                 echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
    836         esac
    837         exit ;;
    838     i*:CYGWIN*:*)
    839         echo ${UNAME_MACHINE}-pc-cygwin
    840         exit ;;
    841     *:MINGW64*:*)
    842         echo ${UNAME_MACHINE}-pc-mingw64
    843         exit ;;
    844     *:MINGW*:*)
    845         echo ${UNAME_MACHINE}-pc-mingw32
    846         exit ;;
    847     *:MSYS*:*)
    848         echo ${UNAME_MACHINE}-pc-msys
    849         exit ;;
    850     i*:windows32*:*)
    851         # uname -m includes "-pc" on this system.
    852         echo ${UNAME_MACHINE}-mingw32
    853         exit ;;
    854     i*:PW*:*)
    855         echo ${UNAME_MACHINE}-pc-pw32
    856         exit ;;
    857     *:Interix*:*)
    858         case ${UNAME_MACHINE} in
    859             x86)
    860                 echo i586-pc-interix${UNAME_RELEASE}
    861                 exit ;;
    862             authenticamd | genuineintel | EM64T)
    863                 echo x86_64-unknown-interix${UNAME_RELEASE}
    864                 exit ;;
    865             IA64)
    866                 echo ia64-unknown-interix${UNAME_RELEASE}
    867                 exit ;;
    868         esac ;;
    869     [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
    870         echo i${UNAME_MACHINE}-pc-mks
    871         exit ;;
    872     8664:Windows_NT:*)
    873         echo x86_64-pc-mks
    874         exit ;;
    875     i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
    876         # How do we know it's Interix rather than the generic POSIX subsystem?
    877         # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
    878         # UNAME_MACHINE based on the output of uname instead of i386?
    879         echo i586-pc-interix
    880         exit ;;
    881     i*:UWIN*:*)
    882         echo ${UNAME_MACHINE}-pc-uwin
    883         exit ;;
    884     amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
    885         echo x86_64-unknown-cygwin
    886         exit ;;
    887     p*:CYGWIN*:*)
    888         echo powerpcle-unknown-cygwin
    889         exit ;;
    890     prep*:SunOS:5.*:*)
    891         echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
    892         exit ;;
    893     *:GNU:*:*)
    894         # the GNU system
    895         echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
    896         exit ;;
    897     *:GNU/*:*:*)
    898         # other systems with GNU libc and userland
    899         echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC}
    900         exit ;;
    901     i*86:Minix:*:*)
    902         echo ${UNAME_MACHINE}-pc-minix
    903         exit ;;
    904     aarch64:Linux:*:*)
    905         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    906         exit ;;
    907     aarch64_be:Linux:*:*)
    908         UNAME_MACHINE=aarch64_be
    909         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    910         exit ;;
    911     alpha:Linux:*:*)
    912         case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
    913           EV5)   UNAME_MACHINE=alphaev5 ;;
    914           EV56)  UNAME_MACHINE=alphaev56 ;;
    915           PCA56) UNAME_MACHINE=alphapca56 ;;
    916           PCA57) UNAME_MACHINE=alphapca56 ;;
    917           EV6)   UNAME_MACHINE=alphaev6 ;;
    918           EV67)  UNAME_MACHINE=alphaev67 ;;
    919           EV68*) UNAME_MACHINE=alphaev68 ;;
    920         esac
    921         objdump --private-headers /bin/sh | grep -q ld.so.1
    922         if test "$?" = 0 ; then LIBC="gnulibc1" ; fi
    923         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    924         exit ;;
    925     arc:Linux:*:* | arceb:Linux:*:*)
    926         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    927         exit ;;
    928     arm*:Linux:*:*)
    929         eval $set_cc_for_build
    930         if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
    931             | grep -q __ARM_EABI__
    932         then
    933             echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    934         else
    935             if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
    936                 | grep -q __ARM_PCS_VFP
    937             then
    938                 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
    939             else
    940                 echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
    941             fi
    942         fi
    943         exit ;;
    944     avr32*:Linux:*:*)
    945         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    946         exit ;;
    947     cris:Linux:*:*)
    948         echo ${UNAME_MACHINE}-axis-linux-${LIBC}
    949         exit ;;
    950     crisv32:Linux:*:*)
    951         echo ${UNAME_MACHINE}-axis-linux-${LIBC}
    952         exit ;;
    953     e2k:Linux:*:*)
    954         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    955         exit ;;
    956     frv:Linux:*:*)
    957         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    958         exit ;;
    959     hexagon:Linux:*:*)
    960         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    961         exit ;;
    962     i*86:Linux:*:*)
    963         echo ${UNAME_MACHINE}-pc-linux-${LIBC}
    964         exit ;;
    965     ia64:Linux:*:*)
    966         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    967         exit ;;
    968     m32r*:Linux:*:*)
    969         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    970         exit ;;
    971     m68*:Linux:*:*)
    972         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    973         exit ;;
    974     mips:Linux:*:* | mips64:Linux:*:*)
    975         eval $set_cc_for_build
    976         sed 's/^        //' << EOF >$dummy.c
    977         #undef CPU
    978         #undef ${UNAME_MACHINE}
    979         #undef ${UNAME_MACHINE}el
    980         #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
    981         CPU=${UNAME_MACHINE}el
    982         #else
    983         #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
    984         CPU=${UNAME_MACHINE}
    985         #else
    986         CPU=
    987         #endif
    988         #endif
    989 EOF
    990         eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
    991         test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
    992         ;;
    993     openrisc*:Linux:*:*)
    994         echo or1k-unknown-linux-${LIBC}
    995         exit ;;
    996     or32:Linux:*:* | or1k*:Linux:*:*)
    997         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    998         exit ;;
    999     padre:Linux:*:*)
    1000         echo sparc-unknown-linux-${LIBC}
    1001         exit ;;
    1002     parisc64:Linux:*:* | hppa64:Linux:*:*)
    1003         echo hppa64-unknown-linux-${LIBC}
    1004         exit ;;
    1005     parisc:Linux:*:* | hppa:Linux:*:*)
    1006         # Look for CPU level
    1007         case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
    1008           PA7*) echo hppa1.1-unknown-linux-${LIBC} ;;
    1009           PA8*) echo hppa2.0-unknown-linux-${LIBC} ;;
    1010           *)    echo hppa-unknown-linux-${LIBC} ;;
    1011         esac
    1012         exit ;;
    1013     ppc64:Linux:*:*)
    1014         echo powerpc64-unknown-linux-${LIBC}
    1015         exit ;;
    1016     ppc:Linux:*:*)
    1017         echo powerpc-unknown-linux-${LIBC}
    1018         exit ;;
    1019     ppc64le:Linux:*:*)
    1020         echo powerpc64le-unknown-linux-${LIBC}
    1021         exit ;;
    1022     ppcle:Linux:*:*)
    1023         echo powerpcle-unknown-linux-${LIBC}
    1024         exit ;;
    1025     s390:Linux:*:* | s390x:Linux:*:*)
    1026         echo ${UNAME_MACHINE}-ibm-linux-${LIBC}
    1027         exit ;;
    1028     sh64*:Linux:*:*)
    1029         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    1030         exit ;;
    1031     sh*:Linux:*:*)
    1032         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    1033         exit ;;
    1034     sparc:Linux:*:* | sparc64:Linux:*:*)
    1035         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    1036         exit ;;
    1037     tile*:Linux:*:*)
    1038         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    1039         exit ;;
    1040     vax:Linux:*:*)
    1041         echo ${UNAME_MACHINE}-dec-linux-${LIBC}
    1042         exit ;;
    1043     x86_64:Linux:*:*)
    1044         echo ${UNAME_MACHINE}-pc-linux-${LIBC}
    1045         exit ;;
    1046     xtensa*:Linux:*:*)
    1047         echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
    1048         exit ;;
    1049     i*86:DYNIX/ptx:4*:*)
    1050         # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
    1051         # earlier versions are messed up and put the nodename in both
    1052         # sysname and nodename.
    1053         echo i386-sequent-sysv4
    1054         exit ;;
    1055     i*86:UNIX_SV:4.2MP:2.*)
    1056         # Unixware is an offshoot of SVR4, but it has its own version
    1057         # number series starting with 2...
    1058         # I am not positive that other SVR4 systems won't match this,
    1059         # I just have to hope.  -- rms.
    1060         # Use sysv4.2uw... so that sysv4* matches it.
    1061         echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
    1062         exit ;;
    1063     i*86:OS/2:*:*)
    1064         # If we were able to find `uname', then EMX Unix compatibility
    1065         # is probably installed.
    1066         echo ${UNAME_MACHINE}-pc-os2-emx
    1067         exit ;;
    1068     i*86:XTS-300:*:STOP)
    1069         echo ${UNAME_MACHINE}-unknown-stop
    1070         exit ;;
    1071     i*86:atheos:*:*)
    1072         echo ${UNAME_MACHINE}-unknown-atheos
    1073         exit ;;
    1074     i*86:syllable:*:*)
    1075         echo ${UNAME_MACHINE}-pc-syllable
    1076         exit ;;
    1077     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*)
    1078         echo i386-unknown-lynxos${UNAME_RELEASE}
    1079         exit ;;
    1080     i*86:*DOS:*:*)
    1081         echo ${UNAME_MACHINE}-pc-msdosdjgpp
    1082         exit ;;
    1083     i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
    1084         UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
    1085         if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
    1086                 echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
    1087         else
    1088                 echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
    1089         fi
    1090         exit ;;
    1091     i*86:*:5:[678]*)
    1092         # UnixWare 7.x, OpenUNIX and OpenServer 6.
    1093         case `/bin/uname -X | grep "^Machine"` in
    1094             *486*)           UNAME_MACHINE=i486 ;;
    1095             *Pentium)        UNAME_MACHINE=i586 ;;
    1096             *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
    1097         esac
    1098         echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
    1099         exit ;;
    1100     i*86:*:3.2:*)
    1101         if test -f /usr/options/cb.name; then
    1102                 UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
    1103                 echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
    1104         elif /bin/uname -X 2>/dev/null >/dev/null ; then
    1105                 UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
    1106                 (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
    1107                 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
    1108                         && UNAME_MACHINE=i586
    1109                 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \
    1110                         && UNAME_MACHINE=i686
    1111                 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \
    1112                         && UNAME_MACHINE=i686
    1113                 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
    1114         else
    1115                 echo ${UNAME_MACHINE}-pc-sysv32
    1116         fi
    1117         exit ;;
    1118     pc:*:*:*)
    1119         # Left here for compatibility:
    1120         # uname -m prints for DJGPP always 'pc', but it prints nothing about
    1121         # the processor, so we play safe by assuming i586.
    1122         # Note: whatever this is, it MUST be the same as what config.sub
    1123         # prints for the "djgpp" host, or else GDB configury will decide that
    1124         # this is a cross-build.
    1125         echo i586-pc-msdosdjgpp
    1126         exit ;;
    1127     Intel:Mach:3*:*)
    1128         echo i386-pc-mach3
    1129         exit ;;
    1130     paragon:*:*:*)
    1131         echo i860-intel-osf1
    1132         exit ;;
    1133     i860:*:4.*:*) # i860-SVR4
    1134         if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
    1135           echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
    1136         else # Add other i860-SVR4 vendors below as they are discovered.
    1137           echo i860-unknown-sysv${UNAME_RELEASE}  # Unknown i860-SVR4
    1138         fi
    1139         exit ;;
    1140     mini*:CTIX:SYS*5:*)
    1141         # "miniframe"
    1142         echo m68010-convergent-sysv
    1143         exit ;;
    1144     mc68k:UNIX:SYSTEM5:3.51m)
    1145         echo m68k-convergent-sysv
    1146         exit ;;
    1147     M680?0:D-NIX:5.3:*)
    1148         echo m68k-diab-dnix
    1149         exit ;;
    1150     M68*:*:R3V[5678]*:*)
    1151         test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
    1152     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
    1153         OS_REL=''
    1154         test -r /etc/.relid \
    1155         && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
    1156         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
    1157           && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
    1158         /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
    1159           && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
    1160     3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
    1161         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
    1162           && { echo i486-ncr-sysv4; exit; } ;;
    1163     NCR*:*:4.2:* | MPRAS*:*:4.2:*)
    1164         OS_REL='.3'
    1165         test -r /etc/.relid \
    1166             && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
    1167         /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
    1168             && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
    1169         /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
    1170             && { echo i586-ncr-sysv4.3${OS_REL}; exit; }
    1171         /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
    1172             && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
    1173     m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
    1174         echo m68k-unknown-lynxos${UNAME_RELEASE}
    1175         exit ;;
    1176     mc68030:UNIX_System_V:4.*:*)
    1177         echo m68k-atari-sysv4
    1178         exit ;;
    1179     TSUNAMI:LynxOS:2.*:*)
    1180         echo sparc-unknown-lynxos${UNAME_RELEASE}
    1181         exit ;;
    1182     rs6000:LynxOS:2.*:*)
    1183         echo rs6000-unknown-lynxos${UNAME_RELEASE}
    1184         exit ;;
    1185     PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*)
    1186         echo powerpc-unknown-lynxos${UNAME_RELEASE}
    1187         exit ;;
    1188     SM[BE]S:UNIX_SV:*:*)
    1189         echo mips-dde-sysv${UNAME_RELEASE}
    1190         exit ;;
    1191     RM*:ReliantUNIX-*:*:*)
    1192         echo mips-sni-sysv4
    1193         exit ;;
    1194     RM*:SINIX-*:*:*)
    1195         echo mips-sni-sysv4
    1196         exit ;;
    1197     *:SINIX-*:*:*)
    1198         if uname -p 2>/dev/null >/dev/null ; then
    1199                 UNAME_MACHINE=`(uname -p) 2>/dev/null`
    1200                 echo ${UNAME_MACHINE}-sni-sysv4
    1201         else
    1202                 echo ns32k-sni-sysv
    1203         fi
    1204         exit ;;
    1205     PENTIUM:*:4.0*:*)   # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
    1206                         # says <Richard.M.Bartel@ccMail.Census.GOV>
    1207         echo i586-unisys-sysv4
    1208         exit ;;
    1209     *:UNIX_System_V:4*:FTX*)
    1210         # From Gerald Hewes <hewes@openmarket.com>.
    1211         # How about differentiating between stratus architectures? -djm
    1212         echo hppa1.1-stratus-sysv4
    1213         exit ;;
    1214     *:*:*:FTX*)
    1215         # From seanf@swdc.stratus.com.
    1216         echo i860-stratus-sysv4
    1217         exit ;;
    1218     i*86:VOS:*:*)
    1219         # From Paul.Green@stratus.com.
    1220         echo ${UNAME_MACHINE}-stratus-vos
    1221         exit ;;
    1222     *:VOS:*:*)
    1223         # From Paul.Green@stratus.com.
    1224         echo hppa1.1-stratus-vos
    1225         exit ;;
    1226     mc68*:A/UX:*:*)
    1227         echo m68k-apple-aux${UNAME_RELEASE}
    1228         exit ;;
    1229     news*:NEWS-OS:6*:*)
    1230         echo mips-sony-newsos6
    1231         exit ;;
    1232     R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
    1233         if [ -d /usr/nec ]; then
    1234                 echo mips-nec-sysv${UNAME_RELEASE}
    1235         else
    1236                 echo mips-unknown-sysv${UNAME_RELEASE}
    1237         fi
    1238         exit ;;
    1239     BeBox:BeOS:*:*)     # BeOS running on hardware made by Be, PPC only.
    1240         echo powerpc-be-beos
    1241         exit ;;
    1242     BeMac:BeOS:*:*)     # BeOS running on Mac or Mac clone, PPC only.
    1243         echo powerpc-apple-beos
    1244         exit ;;
    1245     BePC:BeOS:*:*)      # BeOS running on Intel PC compatible.
    1246         echo i586-pc-beos
    1247         exit ;;
    1248     BePC:Haiku:*:*)     # Haiku running on Intel PC compatible.
    1249         echo i586-pc-haiku
    1250         exit ;;
    1251     x86_64:Haiku:*:*)
    1252         echo x86_64-unknown-haiku
    1253         exit ;;
    1254     SX-4:SUPER-UX:*:*)
    1255         echo sx4-nec-superux${UNAME_RELEASE}
    1256         exit ;;
    1257     SX-5:SUPER-UX:*:*)
    1258         echo sx5-nec-superux${UNAME_RELEASE}
    1259         exit ;;
    1260     SX-6:SUPER-UX:*:*)
    1261         echo sx6-nec-superux${UNAME_RELEASE}
    1262         exit ;;
    1263     SX-7:SUPER-UX:*:*)
    1264         echo sx7-nec-superux${UNAME_RELEASE}
    1265         exit ;;
    1266     SX-8:SUPER-UX:*:*)
    1267         echo sx8-nec-superux${UNAME_RELEASE}
    1268         exit ;;
    1269     SX-8R:SUPER-UX:*:*)
    1270         echo sx8r-nec-superux${UNAME_RELEASE}
    1271         exit ;;
    1272     Power*:Rhapsody:*:*)
    1273         echo powerpc-apple-rhapsody${UNAME_RELEASE}
    1274         exit ;;
    1275     *:Rhapsody:*:*)
    1276         echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
    1277         exit ;;
    1278     *:Darwin:*:*)
    1279         UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
    1280         eval $set_cc_for_build
    1281         if test "$UNAME_PROCESSOR" = unknown ; then
    1282             UNAME_PROCESSOR=powerpc
    1283         fi
    1284         if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
    1285             if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
    1286                 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
    1287                     (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
    1288                     grep IS_64BIT_ARCH >/dev/null
    1289                 then
    1290                     case $UNAME_PROCESSOR in
    1291                         i386) UNAME_PROCESSOR=x86_64 ;;
    1292                         powerpc) UNAME_PROCESSOR=powerpc64 ;;
    1293                     esac
    1294                 fi
    1295             fi
    1296         elif test "$UNAME_PROCESSOR" = i386 ; then
    1297             # Avoid executing cc on OS X 10.9, as it ships with a stub
    1298             # that puts up a graphical alert prompting to install
    1299             # developer tools.  Any system running Mac OS X 10.7 or
    1300             # later (Darwin 11 and later) is required to have a 64-bit
    1301             # processor. This is not true of the ARM version of Darwin
    1302             # that Apple uses in portable devices.
    1303             UNAME_PROCESSOR=x86_64
    1304         fi
    1305         echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
    1306         exit ;;
    1307     *:procnto*:*:* | *:QNX:[0123456789]*:*)
    1308         UNAME_PROCESSOR=`uname -p`
    1309         if test "$UNAME_PROCESSOR" = "x86"; then
    1310                 UNAME_PROCESSOR=i386
    1311                 UNAME_MACHINE=pc
    1312         fi
    1313         echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
    1314         exit ;;
    1315     *:QNX:*:4*)
    1316         echo i386-pc-qnx
    1317         exit ;;
    1318     NEO-?:NONSTOP_KERNEL:*:*)
    1319         echo neo-tandem-nsk${UNAME_RELEASE}
    1320         exit ;;
    1321     NSE-*:NONSTOP_KERNEL:*:*)
    1322         echo nse-tandem-nsk${UNAME_RELEASE}
    1323         exit ;;
    1324     NSR-?:NONSTOP_KERNEL:*:*)
    1325         echo nsr-tandem-nsk${UNAME_RELEASE}
    1326         exit ;;
    1327     *:NonStop-UX:*:*)
    1328         echo mips-compaq-nonstopux
    1329         exit ;;
    1330     BS2000:POSIX*:*:*)
    1331         echo bs2000-siemens-sysv
    1332         exit ;;
    1333     DS/*:UNIX_System_V:*:*)
    1334         echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
    1335         exit ;;
    1336     *:Plan9:*:*)
    1337         # "uname -m" is not consistent, so use $cputype instead. 386
    1338         # is converted to i386 for consistency with other x86
    1339         # operating systems.
    1340         if test "$cputype" = "386"; then
    1341             UNAME_MACHINE=i386
    1342         else
    1343             UNAME_MACHINE="$cputype"
    1344         fi
    1345         echo ${UNAME_MACHINE}-unknown-plan9
    1346         exit ;;
    1347     *:TOPS-10:*:*)
    1348         echo pdp10-unknown-tops10
    1349         exit ;;
    1350     *:TENEX:*:*)
    1351         echo pdp10-unknown-tenex
    1352         exit ;;
    1353     KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
    1354         echo pdp10-dec-tops20
    1355         exit ;;
    1356     XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
    1357         echo pdp10-xkl-tops20
    1358         exit ;;
    1359     *:TOPS-20:*:*)
    1360         echo pdp10-unknown-tops20
    1361         exit ;;
    1362     *:ITS:*:*)
    1363         echo pdp10-unknown-its
    1364         exit ;;
    1365     SEI:*:*:SEIUX)
    1366         echo mips-sei-seiux${UNAME_RELEASE}
    1367         exit ;;
    1368     *:DragonFly:*:*)
    1369         echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
    1370         exit ;;
    1371     *:*VMS:*:*)
    1372         UNAME_MACHINE=`(uname -p) 2>/dev/null`
    1373         case "${UNAME_MACHINE}" in
    1374             A*) echo alpha-dec-vms ; exit ;;
    1375             I*) echo ia64-dec-vms ; exit ;;
    1376             V*) echo vax-dec-vms ; exit ;;
    1377         esac ;;
    1378     *:XENIX:*:SysV)
    1379         echo i386-pc-xenix
    1380         exit ;;
    1381     i*86:skyos:*:*)
    1382         echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
    1383         exit ;;
    1384     i*86:rdos:*:*)
    1385         echo ${UNAME_MACHINE}-pc-rdos
    1386         exit ;;
    1387     i*86:AROS:*:*)
    1388         echo ${UNAME_MACHINE}-pc-aros
    1389         exit ;;
    1390     x86_64:VMkernel:*:*)
    1391         echo ${UNAME_MACHINE}-unknown-esx
    1392         exit ;;
    1393 esac
    1394 
    1395 cat >&2 <<EOF
    1396 $0: unable to guess system type
    1397 
    1398 This script, last modified $timestamp, has failed to recognize
    1399 the operating system you are using. It is advised that you
    1400 download the most up to date version of the config scripts from
    1401 
    1402   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
    1403 and
    1404   http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
    1405 
    1406 If the version you run ($0) is already up to date, please
    1407 send the following data and any information you think might be
    1408 pertinent to <config-patches@gnu.org> in order to provide the needed
    1409 information to handle your system.
    1410 
    1411 config.guess timestamp = $timestamp
    1412 
    1413 uname -m = `(uname -m) 2>/dev/null || echo unknown`
    1414 uname -r = `(uname -r) 2>/dev/null || echo unknown`
    1415 uname -s = `(uname -s) 2>/dev/null || echo unknown`
    1416 uname -v = `(uname -v) 2>/dev/null || echo unknown`
    1417 
    1418 /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
    1419 /bin/uname -X     = `(/bin/uname -X) 2>/dev/null`
    1420 
    1421 hostinfo               = `(hostinfo) 2>/dev/null`
    1422 /bin/universe          = `(/bin/universe) 2>/dev/null`
    1423 /usr/bin/arch -k       = `(/usr/bin/arch -k) 2>/dev/null`
    1424 /bin/arch              = `(/bin/arch) 2>/dev/null`
    1425 /usr/bin/oslevel       = `(/usr/bin/oslevel) 2>/dev/null`
    1426 /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
    1427 
    1428 UNAME_MACHINE = ${UNAME_MACHINE}
    1429 UNAME_RELEASE = ${UNAME_RELEASE}
    1430 UNAME_SYSTEM  = ${UNAME_SYSTEM}
    1431 UNAME_VERSION = ${UNAME_VERSION}
    1432 EOF
    1433 
    1434 exit 1
    1435 
    1436 # Local variables:
    1437 # eval: (add-hook 'write-file-hooks 'time-stamp)
    1438 # time-stamp-start: "timestamp='"
    1439 # time-stamp-format: "%:y-%02m-%02d"
    1440 # time-stamp-end: "'"
    1441 # End:
     1/usr/share/automake-1.15/config.guess
  • automake/config.sub

    • Property mode changed from 100755 to 120000
    r2b79a70 rcdbab55  
    1 #! /bin/sh
    2 # Configuration validation subroutine script.
    3 #   Copyright 1992-2015 Free Software Foundation, Inc.
    4 
    5 timestamp='2015-08-20'
    6 
    7 # This file is free software; you can redistribute it and/or modify it
    8 # under the terms of the GNU General Public License as published by
    9 # the Free Software Foundation; either version 3 of the License, or
    10 # (at your option) any later version.
    11 #
    12 # This program is distributed in the hope that it will be useful, but
    13 # WITHOUT ANY WARRANTY; without even the implied warranty of
    14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    15 # General Public License for more details.
    16 #
    17 # You should have received a copy of the GNU General Public License
    18 # along with this program; if not, see <http://www.gnu.org/licenses/>.
    19 #
    20 # As a special exception to the GNU General Public License, if you
    21 # distribute this file as part of a program that contains a
    22 # configuration script generated by Autoconf, you may include it under
    23 # the same distribution terms that you use for the rest of that
    24 # program.  This Exception is an additional permission under section 7
    25 # of the GNU General Public License, version 3 ("GPLv3").
    26 
    27 
    28 # Please send patches to <config-patches@gnu.org>.
    29 #
    30 # Configuration subroutine to validate and canonicalize a configuration type.
    31 # Supply the specified configuration type as an argument.
    32 # If it is invalid, we print an error message on stderr and exit with code 1.
    33 # Otherwise, we print the canonical config type on stdout and succeed.
    34 
    35 # You can get the latest version of this script from:
    36 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
    37 
    38 # This file is supposed to be the same for all GNU packages
    39 # and recognize all the CPU types, system types and aliases
    40 # that are meaningful with *any* GNU software.
    41 # Each package is responsible for reporting which valid configurations
    42 # it does not support.  The user should be able to distinguish
    43 # a failure to support a valid configuration from a meaningless
    44 # configuration.
    45 
    46 # The goal of this file is to map all the various variations of a given
    47 # machine specification into a single specification in the form:
    48 #       CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
    49 # or in some cases, the newer four-part form:
    50 #       CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
    51 # It is wrong to echo any other type of specification.
    52 
    53 me=`echo "$0" | sed -e 's,.*/,,'`
    54 
    55 usage="\
    56 Usage: $0 [OPTION] CPU-MFR-OPSYS
    57        $0 [OPTION] ALIAS
    58 
    59 Canonicalize a configuration name.
    60 
    61 Operation modes:
    62   -h, --help         print this help, then exit
    63   -t, --time-stamp   print date of last modification, then exit
    64   -v, --version      print version number, then exit
    65 
    66 Report bugs and patches to <config-patches@gnu.org>."
    67 
    68 version="\
    69 GNU config.sub ($timestamp)
    70 
    71 Copyright 1992-2015 Free Software Foundation, Inc.
    72 
    73 This is free software; see the source for copying conditions.  There is NO
    74 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
    75 
    76 help="
    77 Try \`$me --help' for more information."
    78 
    79 # Parse command line
    80 while test $# -gt 0 ; do
    81   case $1 in
    82     --time-stamp | --time* | -t )
    83        echo "$timestamp" ; exit ;;
    84     --version | -v )
    85        echo "$version" ; exit ;;
    86     --help | --h* | -h )
    87        echo "$usage"; exit ;;
    88     -- )     # Stop option processing
    89        shift; break ;;
    90     - ) # Use stdin as input.
    91        break ;;
    92     -* )
    93        echo "$me: invalid option $1$help"
    94        exit 1 ;;
    95 
    96     *local*)
    97        # First pass through any local machine types.
    98        echo $1
    99        exit ;;
    100 
    101     * )
    102        break ;;
    103   esac
    104 done
    105 
    106 case $# in
    107  0) echo "$me: missing argument$help" >&2
    108     exit 1;;
    109  1) ;;
    110  *) echo "$me: too many arguments$help" >&2
    111     exit 1;;
    112 esac
    113 
    114 # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
    115 # Here we must recognize all the valid KERNEL-OS combinations.
    116 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
    117 case $maybe_os in
    118   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
    119   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
    120   knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
    121   kopensolaris*-gnu* | \
    122   storm-chaos* | os2-emx* | rtmk-nova*)
    123     os=-$maybe_os
    124     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
    125     ;;
    126   android-linux)
    127     os=-linux-android
    128     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
    129     ;;
    130   *)
    131     basic_machine=`echo $1 | sed 's/-[^-]*$//'`
    132     if [ $basic_machine != $1 ]
    133     then os=`echo $1 | sed 's/.*-/-/'`
    134     else os=; fi
    135     ;;
    136 esac
    137 
    138 ### Let's recognize common machines as not being operating systems so
    139 ### that things like config.sub decstation-3100 work.  We also
    140 ### recognize some manufacturers as not being operating systems, so we
    141 ### can provide default operating systems below.
    142 case $os in
    143         -sun*os*)
    144                 # Prevent following clause from handling this invalid input.
    145                 ;;
    146         -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
    147         -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
    148         -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
    149         -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
    150         -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
    151         -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
    152         -apple | -axis | -knuth | -cray | -microblaze*)
    153                 os=
    154                 basic_machine=$1
    155                 ;;
    156         -bluegene*)
    157                 os=-cnk
    158                 ;;
    159         -sim | -cisco | -oki | -wec | -winbond)
    160                 os=
    161                 basic_machine=$1
    162                 ;;
    163         -scout)
    164                 ;;
    165         -wrs)
    166                 os=-vxworks
    167                 basic_machine=$1
    168                 ;;
    169         -chorusos*)
    170                 os=-chorusos
    171                 basic_machine=$1
    172                 ;;
    173         -chorusrdb)
    174                 os=-chorusrdb
    175                 basic_machine=$1
    176                 ;;
    177         -hiux*)
    178                 os=-hiuxwe2
    179                 ;;
    180         -sco6)
    181                 os=-sco5v6
    182                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    183                 ;;
    184         -sco5)
    185                 os=-sco3.2v5
    186                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    187                 ;;
    188         -sco4)
    189                 os=-sco3.2v4
    190                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    191                 ;;
    192         -sco3.2.[4-9]*)
    193                 os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
    194                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    195                 ;;
    196         -sco3.2v[4-9]*)
    197                 # Don't forget version if it is 3.2v4 or newer.
    198                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    199                 ;;
    200         -sco5v6*)
    201                 # Don't forget version if it is 3.2v4 or newer.
    202                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    203                 ;;
    204         -sco*)
    205                 os=-sco3.2v2
    206                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    207                 ;;
    208         -udk*)
    209                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    210                 ;;
    211         -isc)
    212                 os=-isc2.2
    213                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    214                 ;;
    215         -clix*)
    216                 basic_machine=clipper-intergraph
    217                 ;;
    218         -isc*)
    219                 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
    220                 ;;
    221         -lynx*178)
    222                 os=-lynxos178
    223                 ;;
    224         -lynx*5)
    225                 os=-lynxos5
    226                 ;;
    227         -lynx*)
    228                 os=-lynxos
    229                 ;;
    230         -ptx*)
    231                 basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
    232                 ;;
    233         -windowsnt*)
    234                 os=`echo $os | sed -e 's/windowsnt/winnt/'`
    235                 ;;
    236         -psos*)
    237                 os=-psos
    238                 ;;
    239         -mint | -mint[0-9]*)
    240                 basic_machine=m68k-atari
    241                 os=-mint
    242                 ;;
    243 esac
    244 
    245 # Decode aliases for certain CPU-COMPANY combinations.
    246 case $basic_machine in
    247         # Recognize the basic CPU types without company name.
    248         # Some are omitted here because they have special meanings below.
    249         1750a | 580 \
    250         | a29k \
    251         | aarch64 | aarch64_be \
    252         | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
    253         | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
    254         | am33_2.0 \
    255         | arc | arceb \
    256         | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
    257         | avr | avr32 \
    258         | ba \
    259         | be32 | be64 \
    260         | bfin \
    261         | c4x | c8051 | clipper \
    262         | d10v | d30v | dlx | dsp16xx \
    263         | e2k | epiphany \
    264         | fido | fr30 | frv | ft32 \
    265         | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
    266         | hexagon \
    267         | i370 | i860 | i960 | ia64 \
    268         | ip2k | iq2000 \
    269         | k1om \
    270         | le32 | le64 \
    271         | lm32 \
    272         | m32c | m32r | m32rle | m68000 | m68k | m88k \
    273         | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
    274         | mips | mipsbe | mipseb | mipsel | mipsle \
    275         | mips16 \
    276         | mips64 | mips64el \
    277         | mips64octeon | mips64octeonel \
    278         | mips64orion | mips64orionel \
    279         | mips64r5900 | mips64r5900el \
    280         | mips64vr | mips64vrel \
    281         | mips64vr4100 | mips64vr4100el \
    282         | mips64vr4300 | mips64vr4300el \
    283         | mips64vr5000 | mips64vr5000el \
    284         | mips64vr5900 | mips64vr5900el \
    285         | mipsisa32 | mipsisa32el \
    286         | mipsisa32r2 | mipsisa32r2el \
    287         | mipsisa32r6 | mipsisa32r6el \
    288         | mipsisa64 | mipsisa64el \
    289         | mipsisa64r2 | mipsisa64r2el \
    290         | mipsisa64r6 | mipsisa64r6el \
    291         | mipsisa64sb1 | mipsisa64sb1el \
    292         | mipsisa64sr71k | mipsisa64sr71kel \
    293         | mipsr5900 | mipsr5900el \
    294         | mipstx39 | mipstx39el \
    295         | mn10200 | mn10300 \
    296         | moxie \
    297         | mt \
    298         | msp430 \
    299         | nds32 | nds32le | nds32be \
    300         | nios | nios2 | nios2eb | nios2el \
    301         | ns16k | ns32k \
    302         | open8 | or1k | or1knd | or32 \
    303         | pdp10 | pdp11 | pj | pjl \
    304         | powerpc | powerpc64 | powerpc64le | powerpcle \
    305         | pyramid \
    306         | riscv32 | riscv64 \
    307         | rl78 | rx \
    308         | score \
    309         | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
    310         | sh64 | sh64le \
    311         | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
    312         | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
    313         | spu \
    314         | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
    315         | ubicom32 \
    316         | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
    317         | visium \
    318         | we32k \
    319         | x86 | xc16x | xstormy16 | xtensa \
    320         | z8k | z80)
    321                 basic_machine=$basic_machine-unknown
    322                 ;;
    323         c54x)
    324                 basic_machine=tic54x-unknown
    325                 ;;
    326         c55x)
    327                 basic_machine=tic55x-unknown
    328                 ;;
    329         c6x)
    330                 basic_machine=tic6x-unknown
    331                 ;;
    332         leon|leon[3-9])
    333                 basic_machine=sparc-$basic_machine
    334                 ;;
    335         m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
    336                 basic_machine=$basic_machine-unknown
    337                 os=-none
    338                 ;;
    339         m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
    340                 ;;
    341         ms1)
    342                 basic_machine=mt-unknown
    343                 ;;
    344 
    345         strongarm | thumb | xscale)
    346                 basic_machine=arm-unknown
    347                 ;;
    348         xgate)
    349                 basic_machine=$basic_machine-unknown
    350                 os=-none
    351                 ;;
    352         xscaleeb)
    353                 basic_machine=armeb-unknown
    354                 ;;
    355 
    356         xscaleel)
    357                 basic_machine=armel-unknown
    358                 ;;
    359 
    360         # We use `pc' rather than `unknown'
    361         # because (1) that's what they normally are, and
    362         # (2) the word "unknown" tends to confuse beginning users.
    363         i*86 | x86_64)
    364           basic_machine=$basic_machine-pc
    365           ;;
    366         # Object if more than one company name word.
    367         *-*-*)
    368                 echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
    369                 exit 1
    370                 ;;
    371         # Recognize the basic CPU types with company name.
    372         580-* \
    373         | a29k-* \
    374         | aarch64-* | aarch64_be-* \
    375         | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
    376         | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
    377         | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
    378         | arm-*  | armbe-* | armle-* | armeb-* | armv*-* \
    379         | avr-* | avr32-* \
    380         | ba-* \
    381         | be32-* | be64-* \
    382         | bfin-* | bs2000-* \
    383         | c[123]* | c30-* | [cjt]90-* | c4x-* \
    384         | c8051-* | clipper-* | craynv-* | cydra-* \
    385         | d10v-* | d30v-* | dlx-* \
    386         | e2k-* | elxsi-* \
    387         | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
    388         | h8300-* | h8500-* \
    389         | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
    390         | hexagon-* \
    391         | i*86-* | i860-* | i960-* | ia64-* \
    392         | ip2k-* | iq2000-* \
    393         | k1om-* \
    394         | le32-* | le64-* \
    395         | lm32-* \
    396         | m32c-* | m32r-* | m32rle-* \
    397         | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
    398         | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
    399         | microblaze-* | microblazeel-* \
    400         | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
    401         | mips16-* \
    402         | mips64-* | mips64el-* \
    403         | mips64octeon-* | mips64octeonel-* \
    404         | mips64orion-* | mips64orionel-* \
    405         | mips64r5900-* | mips64r5900el-* \
    406         | mips64vr-* | mips64vrel-* \
    407         | mips64vr4100-* | mips64vr4100el-* \
    408         | mips64vr4300-* | mips64vr4300el-* \
    409         | mips64vr5000-* | mips64vr5000el-* \
    410         | mips64vr5900-* | mips64vr5900el-* \
    411         | mipsisa32-* | mipsisa32el-* \
    412         | mipsisa32r2-* | mipsisa32r2el-* \
    413         | mipsisa32r6-* | mipsisa32r6el-* \
    414         | mipsisa64-* | mipsisa64el-* \
    415         | mipsisa64r2-* | mipsisa64r2el-* \
    416         | mipsisa64r6-* | mipsisa64r6el-* \
    417         | mipsisa64sb1-* | mipsisa64sb1el-* \
    418         | mipsisa64sr71k-* | mipsisa64sr71kel-* \
    419         | mipsr5900-* | mipsr5900el-* \
    420         | mipstx39-* | mipstx39el-* \
    421         | mmix-* \
    422         | mt-* \
    423         | msp430-* \
    424         | nds32-* | nds32le-* | nds32be-* \
    425         | nios-* | nios2-* | nios2eb-* | nios2el-* \
    426         | none-* | np1-* | ns16k-* | ns32k-* \
    427         | open8-* \
    428         | or1k*-* \
    429         | orion-* \
    430         | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
    431         | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
    432         | pyramid-* \
    433         | riscv32-* | riscv64-* \
    434         | rl78-* | romp-* | rs6000-* | rx-* \
    435         | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
    436         | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
    437         | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
    438         | sparclite-* \
    439         | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
    440         | tahoe-* \
    441         | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
    442         | tile*-* \
    443         | tron-* \
    444         | ubicom32-* \
    445         | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
    446         | vax-* \
    447         | visium-* \
    448         | we32k-* \
    449         | x86-* | x86_64-* | xc16x-* | xps100-* \
    450         | xstormy16-* | xtensa*-* \
    451         | ymp-* \
    452         | z8k-* | z80-*)
    453                 ;;
    454         # Recognize the basic CPU types without company name, with glob match.
    455         xtensa*)
    456                 basic_machine=$basic_machine-unknown
    457                 ;;
    458         # Recognize the various machine names and aliases which stand
    459         # for a CPU type and a company and sometimes even an OS.
    460         386bsd)
    461                 basic_machine=i386-unknown
    462                 os=-bsd
    463                 ;;
    464         3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
    465                 basic_machine=m68000-att
    466                 ;;
    467         3b*)
    468                 basic_machine=we32k-att
    469                 ;;
    470         a29khif)
    471                 basic_machine=a29k-amd
    472                 os=-udi
    473                 ;;
    474         abacus)
    475                 basic_machine=abacus-unknown
    476                 ;;
    477         adobe68k)
    478                 basic_machine=m68010-adobe
    479                 os=-scout
    480                 ;;
    481         alliant | fx80)
    482                 basic_machine=fx80-alliant
    483                 ;;
    484         altos | altos3068)
    485                 basic_machine=m68k-altos
    486                 ;;
    487         am29k)
    488                 basic_machine=a29k-none
    489                 os=-bsd
    490                 ;;
    491         amd64)
    492                 basic_machine=x86_64-pc
    493                 ;;
    494         amd64-*)
    495                 basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
    496                 ;;
    497         amdahl)
    498                 basic_machine=580-amdahl
    499                 os=-sysv
    500                 ;;
    501         amiga | amiga-*)
    502                 basic_machine=m68k-unknown
    503                 ;;
    504         amigaos | amigados)
    505                 basic_machine=m68k-unknown
    506                 os=-amigaos
    507                 ;;
    508         amigaunix | amix)
    509                 basic_machine=m68k-unknown
    510                 os=-sysv4
    511                 ;;
    512         apollo68)
    513                 basic_machine=m68k-apollo
    514                 os=-sysv
    515                 ;;
    516         apollo68bsd)
    517                 basic_machine=m68k-apollo
    518                 os=-bsd
    519                 ;;
    520         aros)
    521                 basic_machine=i386-pc
    522                 os=-aros
    523                 ;;
    524         asmjs)
    525                 basic_machine=asmjs-unknown
    526                 ;;
    527         aux)
    528                 basic_machine=m68k-apple
    529                 os=-aux
    530                 ;;
    531         balance)
    532                 basic_machine=ns32k-sequent
    533                 os=-dynix
    534                 ;;
    535         blackfin)
    536                 basic_machine=bfin-unknown
    537                 os=-linux
    538                 ;;
    539         blackfin-*)
    540                 basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
    541                 os=-linux
    542                 ;;
    543         bluegene*)
    544                 basic_machine=powerpc-ibm
    545                 os=-cnk
    546                 ;;
    547         c54x-*)
    548                 basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
    549                 ;;
    550         c55x-*)
    551                 basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
    552                 ;;
    553         c6x-*)
    554                 basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
    555                 ;;
    556         c90)
    557                 basic_machine=c90-cray
    558                 os=-unicos
    559                 ;;
    560         cegcc)
    561                 basic_machine=arm-unknown
    562                 os=-cegcc
    563                 ;;
    564         convex-c1)
    565                 basic_machine=c1-convex
    566                 os=-bsd
    567                 ;;
    568         convex-c2)
    569                 basic_machine=c2-convex
    570                 os=-bsd
    571                 ;;
    572         convex-c32)
    573                 basic_machine=c32-convex
    574                 os=-bsd
    575                 ;;
    576         convex-c34)
    577                 basic_machine=c34-convex
    578                 os=-bsd
    579                 ;;
    580         convex-c38)
    581                 basic_machine=c38-convex
    582                 os=-bsd
    583                 ;;
    584         cray | j90)
    585                 basic_machine=j90-cray
    586                 os=-unicos
    587                 ;;
    588         craynv)
    589                 basic_machine=craynv-cray
    590                 os=-unicosmp
    591                 ;;
    592         cr16 | cr16-*)
    593                 basic_machine=cr16-unknown
    594                 os=-elf
    595                 ;;
    596         crds | unos)
    597                 basic_machine=m68k-crds
    598                 ;;
    599         crisv32 | crisv32-* | etraxfs*)
    600                 basic_machine=crisv32-axis
    601                 ;;
    602         cris | cris-* | etrax*)
    603                 basic_machine=cris-axis
    604                 ;;
    605         crx)
    606                 basic_machine=crx-unknown
    607                 os=-elf
    608                 ;;
    609         da30 | da30-*)
    610                 basic_machine=m68k-da30
    611                 ;;
    612         decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
    613                 basic_machine=mips-dec
    614                 ;;
    615         decsystem10* | dec10*)
    616                 basic_machine=pdp10-dec
    617                 os=-tops10
    618                 ;;
    619         decsystem20* | dec20*)
    620                 basic_machine=pdp10-dec
    621                 os=-tops20
    622                 ;;
    623         delta | 3300 | motorola-3300 | motorola-delta \
    624               | 3300-motorola | delta-motorola)
    625                 basic_machine=m68k-motorola
    626                 ;;
    627         delta88)
    628                 basic_machine=m88k-motorola
    629                 os=-sysv3
    630                 ;;
    631         dicos)
    632                 basic_machine=i686-pc
    633                 os=-dicos
    634                 ;;
    635         djgpp)
    636                 basic_machine=i586-pc
    637                 os=-msdosdjgpp
    638                 ;;
    639         dpx20 | dpx20-*)
    640                 basic_machine=rs6000-bull
    641                 os=-bosx
    642                 ;;
    643         dpx2* | dpx2*-bull)
    644                 basic_machine=m68k-bull
    645                 os=-sysv3
    646                 ;;
    647         ebmon29k)
    648                 basic_machine=a29k-amd
    649                 os=-ebmon
    650                 ;;
    651         elxsi)
    652                 basic_machine=elxsi-elxsi
    653                 os=-bsd
    654                 ;;
    655         encore | umax | mmax)
    656                 basic_machine=ns32k-encore
    657                 ;;
    658         es1800 | OSE68k | ose68k | ose | OSE)
    659                 basic_machine=m68k-ericsson
    660                 os=-ose
    661                 ;;
    662         fx2800)
    663                 basic_machine=i860-alliant
    664                 ;;
    665         genix)
    666                 basic_machine=ns32k-ns
    667                 ;;
    668         gmicro)
    669                 basic_machine=tron-gmicro
    670                 os=-sysv
    671                 ;;
    672         go32)
    673                 basic_machine=i386-pc
    674                 os=-go32
    675                 ;;
    676         h3050r* | hiux*)
    677                 basic_machine=hppa1.1-hitachi
    678                 os=-hiuxwe2
    679                 ;;
    680         h8300hms)
    681                 basic_machine=h8300-hitachi
    682                 os=-hms
    683                 ;;
    684         h8300xray)
    685                 basic_machine=h8300-hitachi
    686                 os=-xray
    687                 ;;
    688         h8500hms)
    689                 basic_machine=h8500-hitachi
    690                 os=-hms
    691                 ;;
    692         harris)
    693                 basic_machine=m88k-harris
    694                 os=-sysv3
    695                 ;;
    696         hp300-*)
    697                 basic_machine=m68k-hp
    698                 ;;
    699         hp300bsd)
    700                 basic_machine=m68k-hp
    701                 os=-bsd
    702                 ;;
    703         hp300hpux)
    704                 basic_machine=m68k-hp
    705                 os=-hpux
    706                 ;;
    707         hp3k9[0-9][0-9] | hp9[0-9][0-9])
    708                 basic_machine=hppa1.0-hp
    709                 ;;
    710         hp9k2[0-9][0-9] | hp9k31[0-9])
    711                 basic_machine=m68000-hp
    712                 ;;
    713         hp9k3[2-9][0-9])
    714                 basic_machine=m68k-hp
    715                 ;;
    716         hp9k6[0-9][0-9] | hp6[0-9][0-9])
    717                 basic_machine=hppa1.0-hp
    718                 ;;
    719         hp9k7[0-79][0-9] | hp7[0-79][0-9])
    720                 basic_machine=hppa1.1-hp
    721                 ;;
    722         hp9k78[0-9] | hp78[0-9])
    723                 # FIXME: really hppa2.0-hp
    724                 basic_machine=hppa1.1-hp
    725                 ;;
    726         hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
    727                 # FIXME: really hppa2.0-hp
    728                 basic_machine=hppa1.1-hp
    729                 ;;
    730         hp9k8[0-9][13679] | hp8[0-9][13679])
    731                 basic_machine=hppa1.1-hp
    732                 ;;
    733         hp9k8[0-9][0-9] | hp8[0-9][0-9])
    734                 basic_machine=hppa1.0-hp
    735                 ;;
    736         hppa-next)
    737                 os=-nextstep3
    738                 ;;
    739         hppaosf)
    740                 basic_machine=hppa1.1-hp
    741                 os=-osf
    742                 ;;
    743         hppro)
    744                 basic_machine=hppa1.1-hp
    745                 os=-proelf
    746                 ;;
    747         i370-ibm* | ibm*)
    748                 basic_machine=i370-ibm
    749                 ;;
    750         i*86v32)
    751                 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
    752                 os=-sysv32
    753                 ;;
    754         i*86v4*)
    755                 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
    756                 os=-sysv4
    757                 ;;
    758         i*86v)
    759                 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
    760                 os=-sysv
    761                 ;;
    762         i*86sol2)
    763                 basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
    764                 os=-solaris2
    765                 ;;
    766         i386mach)
    767                 basic_machine=i386-mach
    768                 os=-mach
    769                 ;;
    770         i386-vsta | vsta)
    771                 basic_machine=i386-unknown
    772                 os=-vsta
    773                 ;;
    774         iris | iris4d)
    775                 basic_machine=mips-sgi
    776                 case $os in
    777                     -irix*)
    778                         ;;
    779                     *)
    780                         os=-irix4
    781                         ;;
    782                 esac
    783                 ;;
    784         isi68 | isi)
    785                 basic_machine=m68k-isi
    786                 os=-sysv
    787                 ;;
    788         leon-*|leon[3-9]-*)
    789                 basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
    790                 ;;
    791         m68knommu)
    792                 basic_machine=m68k-unknown
    793                 os=-linux
    794                 ;;
    795         m68knommu-*)
    796                 basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
    797                 os=-linux
    798                 ;;
    799         m88k-omron*)
    800                 basic_machine=m88k-omron
    801                 ;;
    802         magnum | m3230)
    803                 basic_machine=mips-mips
    804                 os=-sysv
    805                 ;;
    806         merlin)
    807                 basic_machine=ns32k-utek
    808                 os=-sysv
    809                 ;;
    810         microblaze*)
    811                 basic_machine=microblaze-xilinx
    812                 ;;
    813         mingw64)
    814                 basic_machine=x86_64-pc
    815                 os=-mingw64
    816                 ;;
    817         mingw32)
    818                 basic_machine=i686-pc
    819                 os=-mingw32
    820                 ;;
    821         mingw32ce)
    822                 basic_machine=arm-unknown
    823                 os=-mingw32ce
    824                 ;;
    825         miniframe)
    826                 basic_machine=m68000-convergent
    827                 ;;
    828         *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
    829                 basic_machine=m68k-atari
    830                 os=-mint
    831                 ;;
    832         mips3*-*)
    833                 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
    834                 ;;
    835         mips3*)
    836                 basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
    837                 ;;
    838         monitor)
    839                 basic_machine=m68k-rom68k
    840                 os=-coff
    841                 ;;
    842         morphos)
    843                 basic_machine=powerpc-unknown
    844                 os=-morphos
    845                 ;;
    846         moxiebox)
    847                 basic_machine=moxie-unknown
    848                 os=-moxiebox
    849                 ;;
    850         msdos)
    851                 basic_machine=i386-pc
    852                 os=-msdos
    853                 ;;
    854         ms1-*)
    855                 basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
    856                 ;;
    857         msys)
    858                 basic_machine=i686-pc
    859                 os=-msys
    860                 ;;
    861         mvs)
    862                 basic_machine=i370-ibm
    863                 os=-mvs
    864                 ;;
    865         nacl)
    866                 basic_machine=le32-unknown
    867                 os=-nacl
    868                 ;;
    869         ncr3000)
    870                 basic_machine=i486-ncr
    871                 os=-sysv4
    872                 ;;
    873         netbsd386)
    874                 basic_machine=i386-unknown
    875                 os=-netbsd
    876                 ;;
    877         netwinder)
    878                 basic_machine=armv4l-rebel
    879                 os=-linux
    880                 ;;
    881         news | news700 | news800 | news900)
    882                 basic_machine=m68k-sony
    883                 os=-newsos
    884                 ;;
    885         news1000)
    886                 basic_machine=m68030-sony
    887                 os=-newsos
    888                 ;;
    889         news-3600 | risc-news)
    890                 basic_machine=mips-sony
    891                 os=-newsos
    892                 ;;
    893         necv70)
    894                 basic_machine=v70-nec
    895                 os=-sysv
    896                 ;;
    897         next | m*-next )
    898                 basic_machine=m68k-next
    899                 case $os in
    900                     -nextstep* )
    901                         ;;
    902                     -ns2*)
    903                       os=-nextstep2
    904                         ;;
    905                     *)
    906                       os=-nextstep3
    907                         ;;
    908                 esac
    909                 ;;
    910         nh3000)
    911                 basic_machine=m68k-harris
    912                 os=-cxux
    913                 ;;
    914         nh[45]000)
    915                 basic_machine=m88k-harris
    916                 os=-cxux
    917                 ;;
    918         nindy960)
    919                 basic_machine=i960-intel
    920                 os=-nindy
    921                 ;;
    922         mon960)
    923                 basic_machine=i960-intel
    924                 os=-mon960
    925                 ;;
    926         nonstopux)
    927                 basic_machine=mips-compaq
    928                 os=-nonstopux
    929                 ;;
    930         np1)
    931                 basic_machine=np1-gould
    932                 ;;
    933         neo-tandem)
    934                 basic_machine=neo-tandem
    935                 ;;
    936         nse-tandem)
    937                 basic_machine=nse-tandem
    938                 ;;
    939         nsr-tandem)
    940                 basic_machine=nsr-tandem
    941                 ;;
    942         op50n-* | op60c-*)
    943                 basic_machine=hppa1.1-oki
    944                 os=-proelf
    945                 ;;
    946         openrisc | openrisc-*)
    947                 basic_machine=or32-unknown
    948                 ;;
    949         os400)
    950                 basic_machine=powerpc-ibm
    951                 os=-os400
    952                 ;;
    953         OSE68000 | ose68000)
    954                 basic_machine=m68000-ericsson
    955                 os=-ose
    956                 ;;
    957         os68k)
    958                 basic_machine=m68k-none
    959                 os=-os68k
    960                 ;;
    961         pa-hitachi)
    962                 basic_machine=hppa1.1-hitachi
    963                 os=-hiuxwe2
    964                 ;;
    965         paragon)
    966                 basic_machine=i860-intel
    967                 os=-osf
    968                 ;;
    969         parisc)
    970                 basic_machine=hppa-unknown
    971                 os=-linux
    972                 ;;
    973         parisc-*)
    974                 basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
    975                 os=-linux
    976                 ;;
    977         pbd)
    978                 basic_machine=sparc-tti
    979                 ;;
    980         pbb)
    981                 basic_machine=m68k-tti
    982                 ;;
    983         pc532 | pc532-*)
    984                 basic_machine=ns32k-pc532
    985                 ;;
    986         pc98)
    987                 basic_machine=i386-pc
    988                 ;;
    989         pc98-*)
    990                 basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
    991                 ;;
    992         pentium | p5 | k5 | k6 | nexgen | viac3)
    993                 basic_machine=i586-pc
    994                 ;;
    995         pentiumpro | p6 | 6x86 | athlon | athlon_*)
    996                 basic_machine=i686-pc
    997                 ;;
    998         pentiumii | pentium2 | pentiumiii | pentium3)
    999                 basic_machine=i686-pc
    1000                 ;;
    1001         pentium4)
    1002                 basic_machine=i786-pc
    1003                 ;;
    1004         pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
    1005                 basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
    1006                 ;;
    1007         pentiumpro-* | p6-* | 6x86-* | athlon-*)
    1008                 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
    1009                 ;;
    1010         pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
    1011                 basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
    1012                 ;;
    1013         pentium4-*)
    1014                 basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
    1015                 ;;
    1016         pn)
    1017                 basic_machine=pn-gould
    1018                 ;;
    1019         power)  basic_machine=power-ibm
    1020                 ;;
    1021         ppc | ppcbe)    basic_machine=powerpc-unknown
    1022                 ;;
    1023         ppc-* | ppcbe-*)
    1024                 basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
    1025                 ;;
    1026         ppcle | powerpclittle | ppc-le | powerpc-little)
    1027                 basic_machine=powerpcle-unknown
    1028                 ;;
    1029         ppcle-* | powerpclittle-*)
    1030                 basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
    1031                 ;;
    1032         ppc64)  basic_machine=powerpc64-unknown
    1033                 ;;
    1034         ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
    1035                 ;;
    1036         ppc64le | powerpc64little | ppc64-le | powerpc64-little)
    1037                 basic_machine=powerpc64le-unknown