Knight KE / Mbed OS Game_Master
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         "ATMEL":
00154         (
00155             { "target": "SAMR21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00156             { "target": "SAMD21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00157             { "target": "SAMD21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00158             { "target": "SAML21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp"] },
00159         )
00160     },
00161 
00162 
00163     {
00164         "NUVOTON":
00165         (
00166             { "target": "NUMAKER_PFM_NUC472",   "toolchains": "GCC_ARM",    "libs": ["dsp", "usb"] },
00167             { "target": "NUMAKER_PFM_M453",     "toolchains": "GCC_ARM",    "libs": ["dsp", "usb"] },
00168             { "target": "NUMAKER_PFM_M487",     "toolchains": "GCC_ARM",    "libs": ["dsp", "usb"] },
00169         )
00170     },
00171 
00172 
00173     {
00174         "RENESAS":
00175         (
00176             { "target": "RZ_A1H",    "toolchains": "GCC_ARM" },
00177             { "target": "GR_LYCHEE", "toolchains": "GCC_ARM" },
00178         )
00179     }
00180 ]
00181 
00182 ################################################################################
00183 # Configure example test building (linking against external mbed SDK libraries)
00184 
00185 linking_list = [
00186     {
00187     "NXP": (
00188             {"target": "LPC1768",
00189              "toolchains": "GCC_ARM",
00190              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_15", "MBED_16", "MBED_17"],
00191                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00192                        }
00193              },
00194             {"target": "K64F",
00195              "toolchains": "GCC_ARM",
00196              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00197                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00198                        }
00199              },
00200             {"target": "K22F",
00201              "toolchains": "GCC_ARM",
00202              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00203                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00204                        }
00205              },
00206             {"target": "KL43Z",
00207              "toolchains": "GCC_ARM",
00208              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00209                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00210                        }
00211              },
00212          )
00213     },
00214 
00215     {
00216         "STM": (
00217             {"target": "NUCLEO_F446RE",
00218              "toolchains": "GCC_ARM",
00219              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00220                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00221                        }
00222              },
00223             {"target": "NUCLEO_F446ZE",
00224              "toolchains": "GCC_ARM",
00225              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00226                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00227                        }
00228              },
00229             {"target": "NUCLEO_F401RE",
00230              "toolchains": "GCC_ARM",
00231              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00232                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00233                      }
00234             },
00235             {"target": "NUCLEO_F411RE",
00236              "toolchains": "GCC_ARM",
00237              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00238                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00239                        }
00240              },
00241             {"target": "NUCLEO_F412ZG",
00242              "toolchains": "GCC_ARM",
00243              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00244                      }
00245             },
00246             {"target": "NUCLEO_F413ZH",
00247              "toolchains": "GCC_ARM",
00248              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00249                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00250                      }
00251             },
00252             {"target": "NUCLEO_F429ZI",
00253              "toolchains": "GCC_ARM",
00254              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00255                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00256                        }
00257              },
00258             {"target": "NUCLEO_F207ZG",
00259              "toolchains": "GCC_ARM",
00260              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00261                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00262                        }
00263              },
00264             {"target": "NUCLEO_F746ZG",
00265              "toolchains": "GCC_ARM",
00266              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00267                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00268                        }
00269              },
00270             {"target": "NUCLEO_F767ZI",
00271              "toolchains": "GCC_ARM",
00272              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00273                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00274                        }
00275              },
00276             {"target": "NUCLEO_L476RG",
00277              "toolchains": "GCC_ARM",
00278              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00279                      }
00280             },
00281             {"target": "DISCO_F429ZI",
00282              "toolchains": "GCC_ARM",
00283              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00284                      }
00285             },
00286             {"target": "DISCO_F407VG",
00287              "toolchains": "GCC_ARM",
00288              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00289                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00290                        }
00291              },
00292              {"target": "DISCO_F413ZH",
00293              "toolchains": "GCC_ARM",
00294              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00295                        }
00296              },
00297             {"target": "NUCLEO_F303ZE",
00298              "toolchains": "GCC_ARM",
00299              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00300                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00301                      }
00302             },
00303             {"target": "DISCO_L475VG_IOT01A",
00304              "toolchains": "GCC_ARM",
00305              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00306                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00307                        }
00308              },
00309             {"target": "DISCO_L476VG",
00310              "toolchains": "GCC_ARM",
00311              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00312                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00313                        }
00314              },
00315             {"target": "DISCO_L072CZ_LRWAN1",
00316              "toolchains": "GCC_ARM",
00317              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00318                       }
00319             },
00320             {"target": "MTB_MURATA_ABZ",
00321              "toolchains": "GCC_ARM",
00322              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00323                       }
00324             },
00325         )
00326     },
00327     {
00328         "NUVOTON": (
00329             {"target": "NUMAKER_PFM_NUC472",
00330              "toolchains": "GCC_ARM",
00331              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00332                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00333                        }
00334              },
00335             {"target": "NUMAKER_PFM_M453",
00336              "toolchains": "GCC_ARM",
00337              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00338                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00339                        }
00340              },
00341             {"target": "NUMAKER_PFM_M487",
00342              "toolchains": "GCC_ARM",
00343              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00344                        "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00345                        }
00346              }
00347         )
00348     },
00349     {
00350         "RENESAS":
00351         (
00352             {
00353              "target": "RZ_A1H",
00354              "toolchains": "GCC_ARM",
00355              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00356                       }
00357             },
00358             {
00359              "target": "GR_LYCHEE",
00360              "toolchains": "GCC_ARM",
00361              "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00362                       }
00363             },
00364         )
00365     }
00366 ]
00367 
00368 ################################################################################
00369 
00370 # Driver
00371 
00372 def run_builds(dry_run, vendor):
00373     for vendor_list in build_list:
00374         if vendor in vendor_list:
00375             for build in vendor_list[vendor]:
00376                 toolchain_list = build["toolchains"]
00377                 if type(toolchain_list) != type([]): toolchain_list = [toolchain_list]
00378                 for toolchain in toolchain_list:
00379                     cmdline = ("%s tools/build.py -m %s -t %s -c --silent "%
00380                                (sys.executable, build["target"], toolchain))
00381                     libs = build.get("libs", [])
00382                     if libs:
00383                         cmdline = cmdline + " ".join(["--" + l for l in libs])
00384                     print("Executing: %s" % cmdline)
00385                     if not dry_run:
00386                         if os.system(cmdline) != 0:
00387                             sys.exit(1)
00388 
00389 
00390 def run_test_linking(dry_run, vendor):
00391     """ Function run make.py commands to build and link simple mbed SDK
00392         tests against few libraries to make sure there are no simple linking errors.
00393     """
00394     for vendor_list in linking_list:
00395         if vendor in vendor_list:
00396             for link in vendor_list[vendor]:
00397                 toolchain_list = link["toolchains"]
00398                 if type(toolchain_list) != type([]):
00399                     toolchain_list = [toolchain_list]
00400                 for toolchain in toolchain_list:
00401                     tests = link["tests"]
00402                     # Call make.py for each test group for particular library
00403                     for test_lib in tests:
00404                         test_names = tests[test_lib]
00405                         test_lib_switch = "--" + test_lib if test_lib else ""
00406                         cmdline = ("%s tools/make.py -m %s -t %s -c --silent %s "
00407                                    "-n %s" % (sys.executable, link["target"],
00408                                                toolchain, test_lib_switch,
00409                                                ",".join(test_names)))
00410                         print("Executing: %s" % cmdline)
00411                         if not dry_run:
00412                             if os.system(cmdline) != 0:
00413                                 sys.exit(1)
00414 
00415 if __name__ == "__main__":
00416     parser = ArgumentParser()
00417 
00418     parser.add_argument("--vendor",
00419                         metavar="vendor",
00420                         type=str.upper,
00421                         help="Select a vendor to run travis tests"
00422                         )
00423 
00424     options = parser.parse_args()
00425 
00426     run_builds("-s" in sys.argv, options.vendor)
00427     run_test_linking("-s" in sys.argv, options.vendor)