wang yaguang / Mbed OS Nucleo_rtos_basic
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers build_travis.py Source File

build_travis.py

00001 #!/usr/bin/env python2
00002 
00003 """
00004 Travis-CI build script
00005 
00006 mbed SDK
00007 Copyright (c) 2011-2013 ARM Limited
00008 
00009 Licensed under the Apache License, Version 2.0 (the "License");
00010 you may not use this file except in compliance with the License.
00011 You may obtain a copy of the License at
00012 
00013     http://www.apache.org/licenses/LICENSE-2.0
00014 
00015 Unless required by applicable law or agreed to in writing, software
00016 distributed under the License is distributed on an "AS IS" BASIS,
00017 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00018 See the License for the specific language governing permissions and
00019 limitations under the License.
00020 """
00021 from __future__ import print_function, division, absolute_import
00022 
00023 import os
00024 import sys
00025 
00026 from argparse import ArgumentParser
00027 
00028 ################################################################################
00029 # Configure builds here
00030 # "libs" can contain "dsp", "usb"
00031 
00032 build_list = [
00033     {
00034     "STM":
00035         (
00036         { "target": "B96B_F446VE",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00037         { "target": "NUCLEO_L053R8",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00038         { "target": "NUCLEO_L152RE",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00039         { "target": "NUCLEO_F030R8",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00040         { "target": "NUCLEO_F031K6",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00041         { "target": "NUCLEO_F042K6",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00042         { "target": "NUCLEO_F070RB",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00043         { "target": "NUCLEO_F072RB",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00044         { "target": "NUCLEO_F091RC",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00045         { "target": "NUCLEO_F103RB",     "toolchains": "GCC_ARM" },
00046         { "target": "NUCLEO_F207ZG",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00047         { "target": "NUCLEO_F302R8",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00048         { "target": "NUCLEO_F303K8",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00049         { "target": "NUCLEO_F303RE",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00050         { "target": "NUCLEO_F303ZE",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00051         { "target": "NUCLEO_F334R8",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00052         { "target": "NUCLEO_F401RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00053         { "target": "STEVAL_3DP001V1",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00054         { "target": "NUCLEO_F410RB",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00055         { "target": "NUCLEO_F411RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00056         { "target": "NUCLEO_F412ZG",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00057         { "target": "NUCLEO_F413ZH",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00058         { "target": "NUCLEO_L432KC",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00059         { "target": "MTB_ADV_WISE_1510", "toolchains": "GCC_ARM", "libs": ["dsp"] },
00060         { "target": "NUCLEO_L476RG",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00061         { "target": "NUCLEO_L011K4",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00062         { "target": "NUCLEO_L031K6",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00063         { "target": "NUCLEO_L073RZ",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00064         { "target": "NUCLEO_F429ZI",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00065         { "target": "NUCLEO_F446RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00066         { "target": "NUCLEO_F446ZE",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00067         { "target": "NUCLEO_F746ZG",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00068         { "target": "NUCLEO_F767ZI",     "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00069         { "target": "NUCLEO_L496ZG",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00070 
00071         { "target": "MOTE_L152RC",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00072 
00073         { "target": "ELMO_F411RE",       "toolchains": "GCC_ARM", "libs": ["dsp"] },
00074 
00075         { "target": "MTS_MDOT_F405RG",   "toolchains": "GCC_ARM", "libs": ["dsp"] },
00076         { "target": "MTS_MDOT_F411RE",   "toolchains": "GCC_ARM", "libs": ["dsp"] },
00077         { "target": "MTS_DRAGONFLY_F411RE", "toolchains": "GCC_ARM", "libs": ["dsp"] },
00078         { "target": "ARCH_MAX",          "toolchains": "GCC_ARM", "libs": ["dsp"] },
00079 
00080         { "target": "DISCO_F051R8",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00081         { "target": "DISCO_F303VC",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00082         { "target": "DISCO_F334C8",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00083         { "target": "DISCO_F401VC",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00084 
00085         { "target": "DISCO_F407VG",      "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00086         { "target": "DISCO_F413ZH",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00087         { "target": "DISCO_F429ZI",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00088         { "target": "DISCO_F469NI",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00089         { "target": "DISCO_F746NG",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00090         { "target": "DISCO_F769NI",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00091         { "target": "DISCO_L475VG_IOT01A", "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00092         { "target": "DISCO_L476VG",        "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00093         { "target": "DISCO_L072CZ_LRWAN1", "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00094 
00095         # module manufacturer : muRata
00096         { "target": "MTB_MURATA_ABZ",    "toolchains": "GCC_ARM", "libs": [] },
00097         ),
00098     },
00099 
00100     {
00101         "NXP":
00102         (
00103             { "target": "LPC1768",           "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00104             { "target": "LPC11U24",          "toolchains": "GCC_ARM", "libs": ["dsp"] },
00105             { "target": "OC_MBUINO",         "toolchains": "GCC_ARM", "libs": []  },
00106 
00107             { "target": "LPC11U24_301",      "toolchains": "GCC_ARM", "libs": [] },
00108             { "target": "LPC1114",           "toolchains": "GCC_ARM", "libs": ["dsp"] },
00109             { "target": "LPC11U35_401",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00110             { "target": "UBLOX_C027",        "toolchains": "GCC_ARM", "libs": ["dsp"] },
00111             { "target": "LPC11U35_501",      "toolchains": "GCC_ARM", "libs": ["dsp"] },
00112             { "target": "LPC11U68",          "toolchains": "GCC_ARM", "libs": ["dsp"] },
00113             { "target": "LPC11U37H_401",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00114             { "target": "LPC1549",           "toolchains": "GCC_ARM", "libs": ["dsp"] },
00115             { "target": "KL05Z",             "toolchains": "GCC_ARM", "libs": ["dsp"] },
00116             { "target": "KL25Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00117             { "target": "KL27Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00118             { "target": "KL43Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00119             { "target": "KL46Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00120             { "target": "K20D50M",           "toolchains": "GCC_ARM", "libs": ["dsp"] },
00121             { "target": "TEENSY3_1",         "toolchains": "GCC_ARM", "libs": ["dsp"] },
00122             { "target": "K64F",              "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00123             { "target": "K22F",              "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00124             { "target": "LPC4088",           "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00125             { "target": "ARCH_PRO",          "toolchains": "GCC_ARM", "libs": ["dsp"] },
00126         )
00127     },
00128 
00129     {
00130         "NORDIC":
00131         (
00132             { "target": "NRF51822",          "toolchains": "GCC_ARM", "libs": ["dsp"] },
00133             { "target": "DELTA_DFCM_NNN40",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00134             { "target": "NRF51_DK",          "toolchains": "GCC_ARM", "libs": ["dsp"] },
00135             { "target": "NRF51_MICROBIT",    "toolchains": "GCC_ARM", "libs": ["dsp"] },
00136         )
00137     },
00138 
00139     {
00140         "SILICON_LABS":
00141         (
00142             { "target": "EFM32ZG_STK3200",   "toolchains": "GCC_ARM", "libs": ["dsp"] },
00143             { "target": "EFM32HG_STK3400",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00144             { "target": "EFM32LG_STK3600",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00145             { "target": "EFM32GG_STK3700",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00146             { "target": "EFM32WG_STK3800",   "toolchains": "GCC_ARM", "libs": ["dsp", "usb"] },
00147             { "target": "EFM32PG_STK3401",   "toolchains": "GCC_ARM", "libs": ["dsp"] },
00148         )
00149     },
00150 
00151     {
00152         "MAXIM":
00153         (
00154             { "target": "MAXWSNENV",    "toolchains": "GCC_ARM", "libs": ["dsp"] },
00155             { "target": "MAX32600MBED", "toolchains": "GCC_ARM", "libs": ["dsp"] },
00156             { "target": "MAX32620HSP",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00157         )
00158     },
00159 
00160     {
00161         "ATMEL":
00162         (
00163             { "target": "SAMR21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00164             { "target": "SAMD21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00165             { "target": "SAMD21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00166             { "target": "SAML21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00167         )
00168     },
00169 
00170 
00171     {
00172         "NUVOTON":
00173         (
00174             { "target": "NUMAKER_PFM_NUC472",   "toolchains": "GCC_ARM",    "libs": ["dsp", "usb"] },
00175             { "target": "NUMAKER_PFM_M453",     "toolchains": "GCC_ARM",    "libs": ["dsp", "usb"] },
00176             { "target": "NUMAKER_PFM_M487",     "toolchains": "GCC_ARM",    "libs": ["dsp", "usb"] },
00177         )
00178     },
00179 
00180 
00181     {
00182         "RENESAS":
00183         (
00184             { "target": "RZ_A1H",    "toolchains": "GCC_ARM" },
00185             { "target": "GR_LYCHEE", "toolchains": "GCC_ARM" },
00186         )
00187     }
00188 ]
00189 
00190 ################################################################################
00191 # Configure example test building (linking against external mbed SDK libraries)
00192 
00193 linking_list = [
00194     {
00195     "NXP": (
00196             {"target": "LPC1768",
00197              "toolchains": "GCC_ARM",
00198              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_15", "MBED_16", "MBED_17"],
00199                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00200                        }
00201              },
00202             {"target": "K64F",
00203              "toolchains": "GCC_ARM",
00204              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00205                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00206                        }
00207              },
00208             {"target": "K22F",
00209              "toolchains": "GCC_ARM",
00210              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00211                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00212                        }
00213              },
00214             {"target": "KL43Z",
00215              "toolchains": "GCC_ARM",
00216              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00217                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00218                        }
00219              },
00220          )
00221     },
00222 
00223     {
00224         "STM": (
00225             {"target": "NUCLEO_F446RE",
00226              "toolchains": "GCC_ARM",
00227              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00228                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00229                        }
00230              },
00231             {"target": "NUCLEO_F446ZE",
00232              "toolchains": "GCC_ARM",
00233              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00234                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00235                        }
00236              },
00237             {"target": "NUCLEO_F401RE",
00238              "toolchains": "GCC_ARM",
00239              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00240                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00241                      }
00242             },
00243             {"target": "NUCLEO_F411RE",
00244              "toolchains": "GCC_ARM",
00245              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00246                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00247                        }
00248              },
00249             {"target": "NUCLEO_F412ZG",
00250              "toolchains": "GCC_ARM",
00251              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00252                      }
00253             },
00254             {"target": "NUCLEO_F413ZH",
00255              "toolchains": "GCC_ARM",
00256              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00257                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00258                      }
00259             },
00260             {"target": "NUCLEO_F429ZI",
00261              "toolchains": "GCC_ARM",
00262              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00263                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00264                        }
00265              },
00266             {"target": "NUCLEO_F207ZG",
00267              "toolchains": "GCC_ARM",
00268              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00269                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00270                        }
00271              },
00272             {"target": "NUCLEO_F746ZG",
00273              "toolchains": "GCC_ARM",
00274              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00275                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00276                        }
00277              },
00278             {"target": "NUCLEO_F767ZI",
00279              "toolchains": "GCC_ARM",
00280              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00281                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00282                        }
00283              },
00284             {"target": "NUCLEO_L476RG",
00285              "toolchains": "GCC_ARM",
00286              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00287                      }
00288             },
00289             {"target": "DISCO_F429ZI",
00290              "toolchains": "GCC_ARM",
00291              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00292                      }
00293             },
00294             {"target": "DISCO_F407VG",
00295              "toolchains": "GCC_ARM",
00296              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00297                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00298                        }
00299              },
00300              {"target": "DISCO_F413ZH",
00301              "toolchains": "GCC_ARM",
00302              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00303                        }
00304              },
00305             {"target": "NUCLEO_F303ZE",
00306              "toolchains": "GCC_ARM",
00307              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00308                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00309                      }
00310             },
00311             {"target": "DISCO_L475VG_IOT01A",
00312              "toolchains": "GCC_ARM",
00313              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00314                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00315                        }
00316              },
00317             {"target": "DISCO_L476VG",
00318              "toolchains": "GCC_ARM",
00319              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00320                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00321                        }
00322              },
00323             {"target": "DISCO_L072CZ_LRWAN1",
00324              "toolchains": "GCC_ARM",
00325              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00326                       }
00327             },
00328             {"target": "MTB_MURATA_ABZ",
00329              "toolchains": "GCC_ARM",
00330              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00331                       }
00332             },
00333         )
00334     },
00335     {
00336         "NUVOTON": (
00337             {"target": "NUMAKER_PFM_NUC472",
00338              "toolchains": "GCC_ARM",
00339              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00340                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00341                        }
00342              },
00343             {"target": "NUMAKER_PFM_M453",
00344              "toolchains": "GCC_ARM",
00345              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00346                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00347                        }
00348              },
00349             {"target": "NUMAKER_PFM_M487",
00350              "toolchains": "GCC_ARM",
00351              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00352                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00353                        }
00354              }
00355         )
00356     },
00357     {
00358         "RENESAS":
00359         (
00360             {
00361              "target": "RZ_A1H",
00362              "toolchains": "GCC_ARM",
00363              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00364                       }
00365             },
00366             {
00367              "target": "GR_LYCHEE",
00368              "toolchains": "GCC_ARM",
00369              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00370                       }
00371             },
00372         )
00373     }
00374 ]
00375 
00376 ################################################################################
00377 
00378 # Driver
00379 
00380 def run_builds(dry_run, vendor):
00381     for vendor_list in build_list:
00382         if vendor in vendor_list:
00383             for build in vendor_list[vendor]:
00384                 toolchain_list = build["toolchains"]
00385                 if type(toolchain_list) != type([]): toolchain_list = [toolchain_list]
00386                 for toolchain in toolchain_list:
00387                     cmdline = ("%s tools/build.py -m %s -t %s -c --silent "%
00388                                (sys.executable, build["target"], toolchain))
00389                     libs = build.get("libs", [])
00390                     if libs:
00391                         cmdline = cmdline + " ".join(["--" + l for l in libs])
00392                     print("Executing: %s" % cmdline)
00393                     if not dry_run:
00394                         if os.system(cmdline) != 0:
00395                             sys.exit(1)
00396 
00397 
00398 def run_test_linking(dry_run, vendor):
00399     """ Function run make.py commands to build and link simple mbed SDK
00400         tests against few libraries to make sure there are no simple linking errors.
00401     """
00402     for vendor_list in linking_list:
00403         if vendor in vendor_list:
00404             for link in vendor_list[vendor]:
00405                 toolchain_list = link["toolchains"]
00406                 if type(toolchain_list) != type([]):
00407                     toolchain_list = [toolchain_list]
00408                 for toolchain in toolchain_list:
00409                     tests = link["tests"]
00410                     # Call make.py for each test group for particular library
00411                     for test_lib in tests:
00412                         test_names = tests[test_lib]
00413                         test_lib_switch = "--" + test_lib if test_lib else ""
00414                         cmdline = ("%s tools/make.py -m %s -t %s -c --silent %s "
00415                                    "-n %s" % (sys.executable, link["target"],
00416                                                toolchain, test_lib_switch,
00417                                                ",".join(test_names)))
00418                         print("Executing: %s" % cmdline)
00419                         if not dry_run:
00420                             if os.system(cmdline) != 0:
00421                                 sys.exit(1)
00422 
00423 if __name__ == "__main__":
00424     parser = ArgumentParser()
00425 
00426     parser.add_argument("--vendor",
00427                         metavar="vendor",
00428                         type=str.upper,
00429                         help="Select a vendor to run travis tests"
00430                         )
00431 
00432     options = parser.parse_args()
00433 
00434     run_builds("-s" in sys.argv, options.vendor)
00435     run_test_linking("-s" in sys.argv, options.vendor)