yabs.1 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. '\" t
  2. .\" Title: yabs
  3. .\" Author: [see the "Author" section]
  4. .\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
  5. .\" Date: 02/02/2015
  6. .\" Manual: Yabs Manual
  7. .\" Source: Yabs
  8. .\" Language: English
  9. .\"
  10. .TH "YABS" "1" "02/02/2015" "Yabs" "Yabs Manual"
  11. .\" -----------------------------------------------------------------
  12. .\" * Define some portability stuff
  13. .\" -----------------------------------------------------------------
  14. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  15. .\" http://bugs.debian.org/507673
  16. .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
  17. .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  18. .ie \n(.g .ds Aq \(aq
  19. .el .ds Aq '
  20. .\" -----------------------------------------------------------------
  21. .\" * set default formatting
  22. .\" -----------------------------------------------------------------
  23. .\" disable hyphenation
  24. .nh
  25. .\" disable justification (adjust text to left margin only)
  26. .ad l
  27. .\" -----------------------------------------------------------------
  28. .\" * MAIN CONTENT STARTS HERE *
  29. .\" -----------------------------------------------------------------
  30. .SH "NAME"
  31. yabs \- Yet another build system
  32. .SH "SYNOPSIS"
  33. .sp
  34. \fByabs\fR [\fIOPTIONS\fR] [\fIFILE\fR]
  35. .SH "DESCRIPTION"
  36. .sp
  37. yabs is a build system that can be used to generate Makefiles
  38. .SH "OPTIONS"
  39. .PP
  40. \fB\-h\fR, \fB\-\-help\fR
  41. .RS 4
  42. Print help
  43. .RE
  44. .PP
  45. \fB\-n\fR, \fB\-\-new\fR
  46. .RS 4
  47. Create a new build file
  48. .RE
  49. .PP
  50. \fB\-V\fR, \fB\-\-verbose\fR[\fIFILE\fR]
  51. .RS 4
  52. Verbosely parse configuration file
  53. .RE
  54. .PP
  55. \fB\-p\fR, \fB\-\-parse=\fR[\fIFILE\fR]
  56. .RS 4
  57. Print configuration file
  58. .RE
  59. .PP
  60. \fB\-e\fR, \fB\-\-extract=\fR[\fIFILE\fR]
  61. .RS 4
  62. Extract distribution tarball
  63. .RE
  64. .PP
  65. \fB\-m\fR, \fB\-\-make=\fR[\fIFILE\fR]
  66. .RS 4
  67. Generate Makefile based on profile
  68. .RE
  69. .SH "CONFIGURATION"
  70. .sp
  71. 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:
  72. .PP
  73. \fBtarget\fR
  74. .RS 4
  75. Name of the binary to be produced\&. If none is set then the name of the current directory is used
  76. .RE
  77. .PP
  78. \fBos\fR
  79. .RS 4
  80. 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
  81. .RE
  82. .PP
  83. \fBremote\fR
  84. .RS 4
  85. Remote system the build will be sent to
  86. .RE
  87. .PP
  88. \fBlang\fR
  89. .RS 4
  90. The language the project is written in
  91. .RE
  92. .PP
  93. \fBarch\fR
  94. .RS 4
  95. The architecture of the system
  96. .RE
  97. .PP
  98. \fBcc\fR
  99. .RS 4
  100. The C compiler to be used
  101. .RE
  102. .PP
  103. \fBcxx\fR
  104. .RS 4
  105. The C++ compiler to be used
  106. .RE
  107. .PP
  108. \fBccflags\fR
  109. .RS 4
  110. C compiler flags
  111. .RE
  112. .PP
  113. \fBcxxflags\fR
  114. .RS 4
  115. C++ compiler flags
  116. .RE
  117. .PP
  118. \fBlflags\fR
  119. .RS 4
  120. Linker flags
  121. .RE
  122. .PP
  123. \fBlibs\fR
  124. .RS 4
  125. Libraries to link to\&. These must not be prepended with "\-l" as they traditionally are in a Makefile
  126. .RE
  127. .PP
  128. \fBincdir\fR
  129. .RS 4
  130. Directories to include\&. Directories must not be prepended with "\-I" as they traditionally are in a Makefile\&.
  131. .RE
  132. .PP
  133. \fBdist\fR
  134. .RS 4
  135. The distrubution tarball to be generated
  136. .RE
  137. .PP
  138. \fBbefore\-script\fR
  139. .RS 4
  140. List of scripts that will be executed before anything is done with the profile
  141. .RE
  142. .PP
  143. \fBafter\-script\fR
  144. .RS 4
  145. List of scripts that will be executed after the profile is read
  146. .RE
  147. .SH "EXAMPLE"
  148. .sp
  149. .if n \{\
  150. .RS 4
  151. .\}
  152. .nf
  153. An exmple for a single document project would be:
  154. \-\-\-
  155. os: linux
  156. target: yabs
  157. cc: gcc
  158. cxx: g++
  159. incdir: include
  160. \&.\&.\&.
  161. The resulting Makefile generated by this configuration would be a single file
  162. named "Makefile" as there is only one profile\&.
  163. An exmple for multi\-document project would be:
  164. \-\-\-
  165. os: linux
  166. target: yabs
  167. cc: gcc
  168. cxx: g++
  169. incdir: include
  170. \&.\&.\&.
  171. \-\-\-
  172. os: freebsd
  173. target: yabs
  174. cc: clang
  175. cxx: clang++
  176. \&.\&.\&.
  177. The resulting Makefile generated by this configuration would be two files named
  178. "Makefile\-linux" and "Makefile\-freebsd" as there are two profiles\&.
  179. .fi
  180. .if n \{\
  181. .RE
  182. .\}
  183. .SH "REPORTING BUGS"
  184. .sp
  185. Report bugs to the yabs mailing list \fByabs@librelist\&.org\fR\&. Pull requests may also be made at \fBhttps://github\&.com/0X1A/yabs\fR
  186. .SH "AUTHOR"
  187. .sp
  188. Alberto Corona <alberto@0x1a\&.us>