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