the other jimmy / mbed-sdk-tools

Fork of mbed-sdk-tools by mbed official

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 
00022 import os
00023 import sys
00024 
00025 ################################################################################
00026 # Configure builds here
00027 # "libs" can contain "dsp", "rtos", "eth", "usb_host", "usb", "ublox", "fat"
00028 
00029 build_list = (
00030     { "target": "LPC1768",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "eth", "usb_host", "usb", "ublox", "fat"] },
00031     { "target": "LPC2368",           "toolchains": "GCC_ARM", "libs": ["fat"]  },
00032     { "target": "LPC2460",           "toolchains": "GCC_ARM", "libs": ["rtos", "usb_host", "usb", "fat"]  },
00033     { "target": "LPC11U24",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00034     { "target": "OC_MBUINO",         "toolchains": "GCC_ARM", "libs": ["fat"]  },
00035 
00036     { "target": "LPC11U24_301",      "toolchains": "GCC_ARM", "libs": ["fat"] },
00037 
00038     { "target": "B96B_F446VE",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00039     { "target": "NUCLEO_L053R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00040     { "target": "NUCLEO_L152RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00041     { "target": "NUCLEO_F030R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00042     { "target": "NUCLEO_F031K6",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00043     { "target": "NUCLEO_F042K6",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00044     { "target": "NUCLEO_F070RB",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00045     { "target": "NUCLEO_F072RB",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00046     { "target": "NUCLEO_F091RC",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00047     { "target": "NUCLEO_F103RB",     "toolchains": "GCC_ARM", "libs": ["rtos", "fat"] },
00048     { "target": "NUCLEO_F207ZG",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00049     { "target": "NUCLEO_F302R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00050     { "target": "NUCLEO_F303K8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00051     { "target": "NUCLEO_F303RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00052     { "target": "NUCLEO_F303ZE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00053     { "target": "NUCLEO_F334R8",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00054     { "target": "NUCLEO_F401RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00055     { "target": "NUCLEO_F410RB",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00056     { "target": "NUCLEO_F411RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00057     { "target": "NUCLEO_F412ZG",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00058     { "target": "NUCLEO_L432KC",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00059     { "target": "NUCLEO_L476RG",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00060     { "target": "NUCLEO_L011K4",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00061     { "target": "NUCLEO_L031K6",     "toolchains": "GCC_ARM", "libs": ["dsp"] },
00062     { "target": "NUCLEO_L073RZ",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00063     { "target": "NUCLEO_F429ZI",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00064     { "target": "NUCLEO_F446RE",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00065     { "target": "NUCLEO_F446ZE",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00066     { "target": "NUCLEO_F746ZG",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00067     { "target": "NUCLEO_F767ZI",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00068 
00069     { "target": "MOTE_L152RC",     "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00070 
00071     { "target": "ELMO_F411RE", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00072 
00073     { "target": "MTS_MDOT_F405RG",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos"] },
00074     { "target": "MTS_MDOT_F411RE",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos"] },
00075     { "target": "MTS_DRAGONFLY_F411RE", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00076     { "target": "ARCH_MAX",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00077 
00078     { "target": "DISCO_F051R8",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00079     { "target": "DISCO_F334C8",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00080     { "target": "DISCO_F401VC",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00081     { "target": "DISCO_F407VG",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00082     { "target": "DISCO_F429ZI",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00083     { "target": "DISCO_F469NI",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00084     { "target": "DISCO_F746NG",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00085     { "target": "DISCO_F769NI",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00086 
00087     { "target": "LPC1114",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00088     { "target": "LPC11U35_401",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00089     { "target": "UBLOX_C027",        "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00090     { "target": "LPC11U35_501",      "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00091     { "target": "LPC11U68",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00092     { "target": "LPC11U37H_401",     "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00093 
00094     { "target": "KL05Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00095     { "target": "KL25Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00096     { "target": "KL27Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00097     { "target": "KL43Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00098     { "target": "KL46Z",             "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00099     { "target": "K20D50M",           "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00100     { "target": "TEENSY3_1",         "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00101     { "target": "K64F",              "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00102     { "target": "K22F",              "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00103     { "target": "LPC4088",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00104     { "target": "ARCH_PRO",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00105     { "target": "LPC1549",           "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00106     { "target": "NRF51822",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00107     { "target": "DELTA_DFCM_NNN40",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00108     { "target": "NRF51_DK",          "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00109     { "target": "NRF51_MICROBIT",    "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "fat"] },
00110 
00111     { "target": "EFM32ZG_STK3200",   "toolchains": "GCC_ARM", "libs": ["dsp"] },
00112     { "target": "EFM32HG_STK3400",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
00113     { "target": "EFM32LG_STK3600",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
00114     { "target": "EFM32GG_STK3700",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
00115     { "target": "EFM32WG_STK3800",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb"] },
00116     { "target": "EFM32PG_STK3401",   "toolchains": "GCC_ARM", "libs": ["dsp", "rtos"] },
00117 
00118     { "target": "MAXWSNENV",    "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00119     { "target": "MAX32600MBED", "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00120     { "target": "MAX32620HSP",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00121 
00122     { "target": "RZ_A1H", "toolchains": "GCC_ARM", "libs": ["fat"] },
00123 
00124     { "target": "SAMR21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00125     { "target": "SAMD21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00126     { "target": "SAMD21G18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00127     { "target": "SAML21J18A",  "toolchains": "GCC_ARM", "libs": ["dsp", "fat"] },
00128     { "target": "DISCO_L476VG",      "toolchains": "GCC_ARM", "libs": ["dsp", "rtos", "usb", "fat"] },
00129  )
00130 
00131 ################################################################################
00132 # Configure example test building (linking against external mbed SDK libraries liek fat or rtos)
00133 
00134 linking_list = [
00135     {"target": "LPC1768",
00136      "toolchains": "GCC_ARM",
00137      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_15", "MBED_16", "MBED_17"],
00138                "eth"  : ["NET_1", "NET_2", "NET_3", "NET_4"],
00139                "fat"  : ["MBED_A12", "MBED_19", "PERF_1", "PERF_2", "PERF_3"],
00140                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00141                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00142                }
00143      },
00144     {"target": "K64F",
00145      "toolchains": "GCC_ARM",
00146      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00147                "fat"  : ["MBED_A12", "PERF_1", "PERF_2", "PERF_3"],
00148                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00149                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00150                }
00151      },
00152     {"target": "K22F",
00153      "toolchains": "GCC_ARM",
00154      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00155                "fat"  : ["MBED_A12", "PERF_1", "PERF_2", "PERF_3"],
00156                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00157                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00158                }
00159      },
00160     {"target": "KL43Z",
00161      "toolchains": "GCC_ARM",
00162      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00163                "fat"  : ["MBED_A12", "PERF_1", "PERF_2", "PERF_3"],
00164                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00165                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00166                }
00167      },
00168     {"target": "NUCLEO_F446ZE",
00169      "toolchains": "GCC_ARM",
00170      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00171                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00172                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00173              }
00174     },
00175     {"target": "NUCLEO_F401RE",
00176      "toolchains": "GCC_ARM",
00177      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00178                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00179                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00180              }
00181     },
00182     {"target": "NUCLEO_F411RE",
00183      "toolchains": "GCC_ARM",
00184      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00185                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00186                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00187              }
00188     },
00189     {"target": "NUCLEO_F429ZI",
00190      "toolchains": "GCC_ARM",
00191      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00192                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00193                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00194              }
00195     },
00196     {"target": "NUCLEO_F207ZG",
00197      "toolchains": "GCC_ARM",
00198      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00199                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00200                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00201              }
00202     },
00203     {"target": "NUCLEO_F746ZG",
00204      "toolchains": "GCC_ARM",
00205      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00206                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00207                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00208              }
00209     },
00210     {"target": "NUCLEO_F767ZI",
00211      "toolchains": "GCC_ARM",
00212      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00213                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00214                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00215              }
00216     },
00217     {"target": "DISCO_F407VG",
00218      "toolchains": "GCC_ARM",
00219      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00220                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00221                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00222              }
00223     },
00224     {"target": "NUCLEO_F303ZE",
00225      "toolchains": "GCC_ARM",
00226      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00227                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00228                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00229              }
00230     },
00231     {"target": "DISCO_L476VG",
00232      "toolchains": "GCC_ARM",
00233      "tests": {""     : ["MBED_2", "MBED_10", "MBED_11", "MBED_16"],
00234                "rtos" : ["RTOS_1", "RTOS_2", "RTOS_3"],
00235                "usb"  : ["USB_1", "USB_2" ,"USB_3"],
00236              }
00237     }
00238 
00239     ]
00240 
00241 ################################################################################
00242 
00243 # Driver
00244 
00245 def run_builds(dry_run):
00246     for build in build_list:
00247         toolchain_list = build["toolchains"]
00248         if type(toolchain_list) != type([]): toolchain_list = [toolchain_list]
00249         for toolchain in toolchain_list:
00250             cmdline = "python tools/build.py -m %s -t %s -j 4 -c --silent "% (build["target"], toolchain)
00251             libs = build.get("libs", [])
00252             if libs:
00253                 cmdline = cmdline + " ".join(["--" + l for l in libs])
00254             print "Executing: " + cmdline
00255             if not dry_run:
00256                 if os.system(cmdline) != 0:
00257                     sys.exit(1)
00258 
00259 
00260 def run_test_linking(dry_run):
00261     """ Function run make.py commands to build and link simple mbed SDK
00262         tests against few libraries to make sure there are no simple linking errors.
00263     """
00264     for link in linking_list:
00265         toolchain_list = link["toolchains"]
00266         if type(toolchain_list) != type([]):
00267             toolchain_list = [toolchain_list]
00268         for toolchain in toolchain_list:
00269             tests = link["tests"]
00270             # Call make.py for each test group for particular library
00271             for test_lib in tests:
00272                 test_names = tests[test_lib]
00273                 test_lib_switch = "--" + test_lib if test_lib else ""
00274                 cmdline = "python tools/make.py -m %s -t %s -c --silent %s -n %s " % (link["target"], toolchain, test_lib_switch, ",".join(test_names))
00275                 print "Executing: " + cmdline
00276                 if not dry_run:
00277                     if os.system(cmdline) != 0:
00278                         sys.exit(1)
00279 
00280 def run_test_testsuite(dry_run):
00281     cmdline = "python tools/singletest.py --version"
00282     print "Executing: " + cmdline
00283     if not dry_run:
00284         if os.system(cmdline) != 0:
00285             sys.exit(1)
00286 
00287 if __name__ == "__main__":
00288     run_builds("-s" in sys.argv)
00289     run_test_linking("-s" in sys.argv)
00290     run_test_testsuite("-s" in sys.argv)