yabs.1.txt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. :man source: Yabs
  2. :man manual: Yabs Manual
  3. yabs(1)
  4. =======
  5. Name
  6. ----
  7. yabs - Yet another build system
  8. Synopsis
  9. -------
  10. *yabs* [_OPTIONS_] [_FILE_]
  11. Description
  12. -----------
  13. yabs is a build system that can be used to generate Makefiles
  14. Options
  15. -------
  16. *-h*, *--help*::
  17. Print help
  18. *-n*, *--new*::
  19. Create a new build file
  20. *-V*, *--verbose*[_FILE_]::
  21. Verbosely parse configuration file
  22. *-p*, *--parse=*[_FILE_]::
  23. Print configuration file
  24. *-e*, *--extract=*[_FILE_]::
  25. Extract distribution tarball
  26. *-m*, *--make=*[_FILE_]::
  27. Generate Makefile based on profile
  28. Configuration
  29. -------------
  30. Configuration files are written in yaml and can have the extensions yaml, yml,
  31. or ybf. The configuration must be placed in the root directory of the project.
  32. Valid configuration files must at least start with "---", and multi-doc files
  33. must start with "---" and end with "...". Valid keys are as
  34. follows:
  35. *target*::
  36. Name of the binary to be produced. If none is set then the name of the
  37. current directory is used
  38. *os*::
  39. The operating system for the profile. If there is a multi-doc
  40. configuration then the name of the operating system will be appended to
  41. the generated Makefile
  42. *remote*::
  43. Remote system the build will be sent to
  44. *lang*::
  45. The language the project is written in
  46. *arch*::
  47. The architecture of the system
  48. *cc*::
  49. The C compiler to be used
  50. *cxx*::
  51. The C++ compiler to be used
  52. *ccflags*::
  53. C compiler flags
  54. *cxxflags*::
  55. C++ compiler flags
  56. *lflags*::
  57. Linker flags
  58. *libs*::
  59. Libraries to link to. These must not be prepended with "-l" as they
  60. traditionally are in a Makefile
  61. *incdir*::
  62. Directories to include. Directories must not be prepended with "-I" as
  63. they traditionally are in a Makefile.
  64. *dist*::
  65. The distrubution tarball to be generated
  66. *before-script*::
  67. List of scripts that will be executed before anything is done with the
  68. profile
  69. *after-script*::
  70. List of scripts that will be executed after the profile is read
  71. Example
  72. -------
  73. ----
  74. An exmple for a single document project would be:
  75. ---
  76. os: linux
  77. target: yabs
  78. cc: gcc
  79. cxx: g++
  80. incdir: include
  81. ...
  82. The resulting Makefile generated by this configuration would be a single file
  83. named "Makefile" as there is only one profile.
  84. An exmple for multi-document project would be:
  85. ---
  86. os: linux
  87. target: yabs
  88. cc: gcc
  89. cxx: g++
  90. incdir: include
  91. ...
  92. ---
  93. os: freebsd
  94. target: yabs
  95. cc: clang
  96. cxx: clang++
  97. ...
  98. The resulting Makefile generated by this configuration would be two files named
  99. "Makefile-linux" and "Makefile-freebsd" as there are two profiles.
  100. ----
  101. Reporting Bugs
  102. --------------
  103. Report bugs to the yabs mailing list *yabs@librelist.org*. Pull requests may
  104. also be made at *https://github.com/0X1A/yabs*
  105. Author
  106. ------
  107. Alberto Corona <alberto@0x1a.us>