#! /usr/bin/env python3 """ Vhex kernel configuration script """ import os import sys import scripts __HELP__ = """ usage: configure [OTPIONS ...] [ACTIONS ...] Configuration script for the Vhex unikernel. Actions: board: Board hadling select the board as compilation target --list,list display board list information --info,info display a particular board information vdso: "Fake" kernel compilation like a vDSO --info,info display all infromation that the vdso will exposes --generate,gen generate the fake build source (debug) Options: -h,--help display this message --verbose display more information during the compilation step --board= select the board to target --format= select the format of the library generation. You can use two format: <> static - generate a static library <> vdso - generate a "fake" dynamic library (default) """ #--- # Public #--- def main(argv): """ main entry of the script """ # early check if '-h' in argv or '--help' in argv: print(__HELP__) sys.exit(0) # handle vxSDK configuration if 'VXSDK_PKG_TARGET' in os.environ: argv.append(f"--board={os.environ['VXSDK_PKG_TARGET']}") # default behaviour if not argv: print(__HELP__) sys.exit(0) # configure default value kernconf = { 'VXKERNEL_ENABLE_VERBOSE' : False, 'VXKERNEL_ENABLE_MODULES' : [], 'VXKERNEL_ENABLE_DRIVERS' : [], 'VXKERNEL_TARGET_FORMAT' : 'vdso', } # check user arguments for i, arg in enumerate(argv): if arg == '--verbose': kernconf['VXKERNEL_ENABLE_VERBOSE'] = True elif arg.find('--board=') == 0: scripts.select('board', kernconf, arg[8:]) elif arg.find('--format=') == 0: scripts.select('format', kernconf, arg[9:]) elif arg in ['board', 'format']: scripts.subcommand(arg, argv[i+1:]) else: print(f"argument '{arg}' not recognized", file=sys.stderr) sys.exit(84) # generate the configuration file return scripts.generate_confile(kernconf) main(sys.argv[1:])