123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- :man source: Yabs
- :man manual: Yabs Manual
- yabs(1)
- =======
- Name
- ----
- yabs - Yet another build system
- Synopsis
- -------
- *yabs* [_OPTIONS_] [_FILE_]
- Description
- -----------
- yabs is a build system that can be used to generate Makefiles
- Options
- -------
- *-h*, *--help*::
- Print help
- *-n*, *--new*::
- Create a new build file
- *-V*, *--verbose*[_FILE_]::
- Verbosely parse configuration file
- *-p*, *--parse=*[_FILE_]::
- Print configuration file
- *-e*, *--extract=*[_FILE_]::
- Extract distribution tarball
- *-m*, *--make=*[_FILE_]::
- Generate Makefile based on profile
- Configuration
- -------------
- Configuration files are written in yaml and can have the extensions yaml, yml,
- or ybf. The configuration must be placed in the root directory of the project.
- Valid configuration files must at least start with "---", and multi-doc files
- must start with "---" and end with "...". Valid keys are as
- follows:
- *target*::
- Name of the binary to be produced. If none is set then the name of the
- current directory is used
- *os*::
- The operating system for the profile. If there is a multi-doc
- configuration then the name of the operating system will be appended to
- the generated Makefile
- *remote*::
- Remote system the build will be sent to
- *lang*::
- The language the project is written in
- *arch*::
- The architecture of the system
- *cc*::
- The C compiler to be used
- *cxx*::
- The C++ compiler to be used
- *ccflags*::
- C compiler flags
- *cxxflags*::
- C++ compiler flags
- *lflags*::
- Linker flags
- *libs*::
- Libraries to link to. These must not be prepended with "-l" as they
- traditionally are in a Makefile
- *incdir*::
- Directories to include. Directories must not be prepended with "-I" as
- they traditionally are in a Makefile.
- *dist*::
- The distrubution tarball to be generated
- *before-script*::
- List of scripts that will be executed before anything is done with the
- profile
- *after-script*::
- List of scripts that will be executed after the profile is read
- Example
- -------
- ----
- An exmple for a single document project would be:
- ---
- os: linux
- target: yabs
- cc: gcc
- cxx: g++
- incdir: include
- ...
- The resulting Makefile generated by this configuration would be a single file
- named "Makefile" as there is only one profile.
- An exmple for multi-document project would be:
- ---
- os: linux
- target: yabs
- cc: gcc
- cxx: g++
- incdir: include
- ...
- ---
- os: freebsd
- target: yabs
- cc: clang
- cxx: clang++
- ...
- The resulting Makefile generated by this configuration would be two files named
- "Makefile-linux" and "Makefile-freebsd" as there are two profiles.
- ----
- Reporting Bugs
- --------------
- Report bugs to the yabs mailing list *yabs@librelist.org*. Pull requests may
- also be made at *https://github.com/0X1A/yabs*
- Author
- ------
- Alberto Corona <alberto@0x1a.us>
|