Package: py-buildsystem
py_buildsystenpy_buildsystem is a python based buildsystem. It is configured usingyamlfiles.InstalationThe py_buildsytem can be installed using pip, or it can be installed from the source code.from pippip install py_buildsystemfrom source codegit clone https://github.com/ProrokWielki/py_buildsystem.git
cd py_buildsystem
python setup.py installUsageTo run the package use this command:usage: py_buildsystem vX.Y.Z [-h] [-v] -pcc PROJECT_COMPILER_CONFIG -pc PROJECT_CONFIG [compiler path]Options:positional arguments:
  compiler path         Path to compiler

optional arguments:
  -h, --help            show this help message and exit
  -pcc PROJECT_COMPILER_CONFIG, --project_compiler_config PROJECT_COMPILER_CONFIG
                        Project specific toolchain configuration file
  -pc PROJECT_CONFIG, --project_config PROJECT_CONFIG
                        Project configuration file
  -v, --verbose         verbose modeTo use this buildsystem you have to provide twoyamlfiles:project configuration,project specific toolchain configuration.If your toolchain is not in thePATHyou have to provide its path to the toolchainProject configurationThis file contains definitions of the steps to be peformed, compiler definitions and includes.Available steps:compile,link,git,command.Available key-words:defines - list of defines to be passed to the compilerincludes - list of include paths to be passed to compilerproject_root - relative path to the project config file which will be treated as the root path to all the paths int config files (if empty - path of the project config file)Project configuration file example:defines:
  - STM32L452xx

includes:
  - ../../LIB/CMSIS/Device/ST/STM32L4xx/Include
  - ../../LIB/CMSIS/Include

steps:
  - compile MCU:
    source_directories:
      - ../../MCU

    output_direcotry: ../../Output/Obj/MCU

    types:
      - .c
      - .s

  - link Everything:
    source_directories:
      -  ../../Output/Obj

    output_file: ../../Output/file.elf

    types:
      - .oStep compileOptions available:source directories -- list of directories in which the files to compile are located,output directory -- directory to which the output files will be written,types -- file types to be compiled,search_subdirectories -- defines if the sub directories are searched (optional -- default = False).additional_flags -- list of additional flags for this step (optional)Step linkOptions available:source_directories -- list of directories where object files are located,output_file -- executable file which will be created after linking,types -- file types to be linked.additional_flags -- list of additional flags for this step (optional)Step gitOptions available:repo_location -- location of the repositorydestination -- repository clone destinationbranch --  branch to clone (optional -- default = master)Step commandOptions available:location -- location from where to perform commandscommands -- list of commands to callProject specific toolchain configurationThis file defines three thinks:toolchain to be used,compilator flags,linker flags.Project specific toolchain configuration file example:compiler: GCC_ARM

compiler_flags:
  - -mcpu=cortex-m4

linker_flags:
  - --specs=nosys.specs
  - -T ../../MCU/STM32L452RETx_FLASH.ldToolchain configurationEvery toolchain has to have its configuration file. The file contains basic inforamtion about the toolchain, executables names and defines basic flags used by the toolchain.Currently supported toolchains:arm-none-eabi-gcc -- GCC_ARM,arm-none-eabi-g++ -- G++_ARM,gcc -- GCC.g++ -- G++If the toolchain you wish to use is not supported you can add the configuration file to the project.Toolchain configuration file example:compiler: arm-none-eabi-gcc
linker:   arm-none-eabi-gcc

define_flag:  -D
output_flag:  -o
compile_flag: -c
include_flag: -I
comand_line_file: "-Wl,@"
version_flag: --versionProject using itWooden-Clock