pmfile 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. -- $Source$
  2. -- $State$
  3. local d = ROOTDIR.."lang/cem/libcc.ansi/"
  4. local crt = ackfile {
  5. ACKINCLUDES = {PARENT, "%ROOTDIR%h"},
  6. file (d.."head_ac.e"),
  7. install = pm.install("%BINDIR%%PLATIND%/%PLATFORM%/c-ansi.o")
  8. }
  9. local libc = acklibrary {
  10. ACKBUILDFLAGS = {PARENT, "-ansi"},
  11. ACKINCLUDES = {PARENT, "%ROOTDIR%h", d.."headers"},
  12. outputs = {"%U%/libc.a"},
  13. -- assert
  14. ackfile (d.."assert/assert.c"),
  15. -- ctype
  16. ackfile (d.."ctype/tolower.c"),
  17. ackfile (d.."ctype/toupper.c"),
  18. ackfile {
  19. tabgen (d.."ctype/char.tab")
  20. },
  21. foreach {
  22. rule = ackfile,
  23. simple {
  24. outputs = {
  25. "%U%/isalnum.c",
  26. "%U%/isalpha.c",
  27. "%U%/iscntrl.c",
  28. "%U%/isdigit.c",
  29. "%U%/isgraph.c",
  30. "%U%/islower.c",
  31. "%U%/isprint.c",
  32. "%U%/ispunct.c",
  33. "%U%/isspace.c",
  34. "%U%/isupper.c",
  35. "%U%/isxdigit.c",
  36. "%U%/isascii.c",
  37. },
  38. command = {
  39. "cd %out[1]:dirname% && %in[1]%"
  40. },
  41. file (d.."ctype/genfiles")
  42. }
  43. },
  44. -- errno
  45. ackfile (d.."errno/errlist.c"),
  46. -- locale
  47. ackfile (d.."locale/localeconv.c"),
  48. ackfile (d.."locale/setlocale.c"),
  49. -- math
  50. ackfile (d.."math/asin.c"),
  51. ackfile (d.."math/atan2.c"),
  52. ackfile (d.."math/atan.c"),
  53. ackfile (d.."math/ceil.c"),
  54. ackfile (d.."math/fabs.c"),
  55. ackfile (d.."math/pow.c"),
  56. ackfile (d.."math/log10.c"),
  57. ackfile (d.."math/log.c"),
  58. ackfile (d.."math/sin.c"),
  59. ackfile (d.."math/sinh.c"),
  60. ackfile (d.."math/sqrt.c"),
  61. ackfile (d.."math/tan.c"),
  62. ackfile (d.."math/tanh.c"),
  63. ackfile (d.."math/exp.c"),
  64. ackfile (d.."math/ldexp.c"),
  65. ackfile (d.."math/fmod.c"),
  66. ackfile (d.."math/floor.c"),
  67. ackfile (d.."math/hugeval.c"),
  68. ackfile (d.."math/frexp.e"),
  69. ackfile (d.."math/modf.e"),
  70. ackfile (d.."math/isnan.c"),
  71. -- misc
  72. ackfile (d.."misc/environ.c"),
  73. --[[
  74. ackfile (d.."misc/getgrent.c"),
  75. ackfile (d.."misc/getopt.c"),
  76. ackfile (d.."misc/getpass.c"),
  77. ackfile (d.."misc/getpw.c"),
  78. ackfile (d.."misc/getw.c"),
  79. ackfile (d.."misc/putw.c"),
  80. ackfile (d.."misc/putenv.c"),
  81. ackfile (d.."misc/environ.c"),
  82. ackfile (d.."misc/popen.c"),
  83. ackfile (d.."misc/sleep.c"),
  84. ackfile (d.."misc/termcap.c"),
  85. ackfile (d.."misc/fdopen.c"),
  86. ackfile (d.."misc/closedir.c"),
  87. group {
  88. ACKDEFINES = {PARENT, "UFS"},
  89. ackfile (d.."misc/getdents.c")
  90. },
  91. ackfile (d.."misc/opendir.c"),
  92. ackfile (d.."misc/readdir.c"),
  93. ackfile (d.."misc/rewinddir.c"),
  94. ackfile (d.."misc/seekdir.c"),
  95. ackfile (d.."misc/telldir.c"),
  96. ackfile (d.."misc/isatty.c"),
  97. ackfile (d.."misc/mktemp.c"),
  98. ackfile (d.."misc/hypot.c"),
  99. --]]
  100. -- setjmp
  101. ackfile (d.."setjmp/setjmp.e"),
  102. --ackfile (d.."setjmp/sigmisc.c"),
  103. -- signal
  104. ackfile (d.."signal/raise.c"),
  105. -- stdio
  106. ackfile (d.."stdio/tmpfile.c"),
  107. ackfile (d.."stdio/tmpnam.c"),
  108. -- ackfile (d.."stdio/rename.c"),
  109. -- ackfile (d.."stdio/remove.c"),
  110. ackfile (d.."stdio/fopen.c"),
  111. ackfile (d.."stdio/freopen.c"),
  112. ackfile (d.."stdio/setbuf.c"),
  113. ackfile (d.."stdio/setvbuf.c"),
  114. ackfile (d.."stdio/perror.c"),
  115. ackfile (d.."stdio/fprintf.c"),
  116. ackfile (d.."stdio/printf.c"),
  117. ackfile (d.."stdio/sprintf.c"),
  118. ackfile (d.."stdio/vfprintf.c"),
  119. ackfile (d.."stdio/vprintf.c"),
  120. ackfile (d.."stdio/vsprintf.c"),
  121. ackfile (d.."stdio/doprnt.c"),
  122. ackfile (d.."stdio/icompute.c"),
  123. ackfile (d.."stdio/fscanf.c"),
  124. ackfile (d.."stdio/scanf.c"),
  125. ackfile (d.."stdio/sscanf.c"),
  126. ackfile (d.."stdio/doscan.c"),
  127. ackfile (d.."stdio/fgetc.c"),
  128. ackfile (d.."stdio/fgets.c"),
  129. ackfile (d.."stdio/getc.c"),
  130. ackfile (d.."stdio/getchar.c"),
  131. ackfile (d.."stdio/gets.c"),
  132. ackfile (d.."stdio/putc.c"),
  133. ackfile (d.."stdio/putchar.c"),
  134. ackfile (d.."stdio/fputc.c"),
  135. ackfile (d.."stdio/puts.c"),
  136. ackfile (d.."stdio/fputs.c"),
  137. ackfile (d.."stdio/ungetc.c"),
  138. ackfile (d.."stdio/fread.c"),
  139. ackfile (d.."stdio/fwrite.c"),
  140. ackfile (d.."stdio/fgetpos.c"),
  141. ackfile (d.."stdio/fsetpos.c"),
  142. ackfile (d.."stdio/rewind.c"),
  143. ackfile (d.."stdio/fseek.c"),
  144. ackfile (d.."stdio/ftell.c"),
  145. ackfile (d.."stdio/clearerr.c"),
  146. ackfile (d.."stdio/feof.c"),
  147. ackfile (d.."stdio/ferror.c"),
  148. ackfile (d.."stdio/fileno.c"),
  149. ackfile (d.."stdio/fltpr.c"),
  150. ackfile (d.."stdio/ecvt.c"),
  151. ackfile (d.."stdio/fillbuf.c"),
  152. ackfile (d.."stdio/fclose.c"),
  153. ackfile (d.."stdio/flushbuf.c"),
  154. ackfile (d.."stdio/fflush.c"),
  155. -- ackfile (d.."stdio/isatty.c"),
  156. ackfile (d.."stdio/data.c"),
  157. -- stdlib
  158. ackfile (d.."stdlib/abort.c"),
  159. ackfile (d.."stdlib/abs.c"),
  160. ackfile (d.."stdlib/atof.c"),
  161. ackfile (d.."stdlib/atoi.c"),
  162. ackfile (d.."stdlib/atol.c"),
  163. ackfile (d.."stdlib/bsearch.c"),
  164. ackfile (d.."stdlib/div.c"),
  165. ackfile (d.."stdlib/atexit.c"),
  166. ackfile (d.."stdlib/exit.c"),
  167. ackfile (d.."stdlib/getenv.c"),
  168. ackfile (d.."stdlib/labs.c"),
  169. ackfile (d.."stdlib/ldiv.c"),
  170. ackfile (d.."stdlib/mblen.c"),
  171. ackfile (d.."stdlib/mbstowcs.c"),
  172. ackfile (d.."stdlib/mbtowc.c"),
  173. ackfile (d.."stdlib/qsort.c"),
  174. ackfile (d.."stdlib/rand.c"),
  175. ackfile (d.."stdlib/strtod.c"),
  176. ackfile (d.."stdlib/strtol.c"),
  177. -- ackfile (d.."stdlib/system.c"),
  178. ackfile (d.."stdlib/wcstombs.c"),
  179. ackfile (d.."stdlib/wctomb.c"),
  180. ackfile (d.."stdlib/ext_comp.c"),
  181. ackfile {
  182. simple {
  183. outputs = {"%U%/malloc.c"},
  184. command = {
  185. "rm -f %out% && for i in %in[2-]%; do %in[1]% $i >> %out%; done"
  186. },
  187. file (d.."stdlib/malloc/add_file"),
  188. file (d.."stdlib/malloc/READ_ME"),
  189. file (d.."stdlib/malloc/size_type.h"),
  190. file (d.."stdlib/malloc/param.h"),
  191. file (d.."stdlib/malloc/impl.h"),
  192. file (d.."stdlib/malloc/check.h"),
  193. file (d.."stdlib/malloc/log.h"),
  194. file (d.."stdlib/malloc/phys.h"),
  195. file (d.."stdlib/malloc/mal.c"),
  196. file (d.."stdlib/malloc/log.c"),
  197. file (d.."stdlib/malloc/phys.c"),
  198. file (d.."stdlib/malloc/check.c"),
  199. }
  200. },
  201. -- string
  202. ackfile (d.."string/memchr.c"),
  203. ackfile (d.."string/memcmp.c"),
  204. ackfile (d.."string/memcpy.c"),
  205. ackfile (d.."string/memmove.c"),
  206. ackfile (d.."string/memset.c"),
  207. ackfile (d.."string/strcat.c"),
  208. ackfile (d.."string/strchr.c"),
  209. ackfile (d.."string/strcmp.c"),
  210. ackfile (d.."string/strcoll.c"),
  211. ackfile (d.."string/strcpy.c"),
  212. ackfile (d.."string/strcspn.c"),
  213. ackfile (d.."string/strerror.c"),
  214. ackfile (d.."string/strncat.c"),
  215. ackfile (d.."string/strncpy.c"),
  216. ackfile (d.."string/strrchr.c"),
  217. ackfile (d.."string/strstr.c"),
  218. ackfile (d.."string/strlen.c"),
  219. ackfile (d.."string/strtok.c"),
  220. ackfile (d.."string/strpbrk.c"),
  221. ackfile (d.."string/strspn.c"),
  222. ackfile (d.."string/strncmp.c"),
  223. ackfile (d.."string/strxfrm.c"),
  224. -- time
  225. ackfile (d.."time/ctime.c"),
  226. ackfile (d.."time/asctime.c"),
  227. ackfile (d.."time/localtime.c"),
  228. ackfile (d.."time/clock.c"),
  229. ackfile (d.."time/difftime.c"),
  230. ackfile (d.."time/gmtime.c"),
  231. ackfile (d.."time/mktime.c"),
  232. ackfile (d.."time/strftime.c"),
  233. ackfile (d.."time/time.c"),
  234. ackfile (d.."time/tzset.c"),
  235. ackfile (d.."time/misc.c"),
  236. install = {
  237. pm.install("%BINDIR%%PLATIND%/%PLATFORM%/libc.a")
  238. }
  239. }
  240. local headers = group {
  241. install = {
  242. pm.install(d.."headers/sys/time.h", "%BINDIR%include/ansi/sys/time.h"),
  243. pm.install(d.."headers/sys/ioctl.h", "%BINDIR%include/ansi/sys/ioctl.h"),
  244. pm.install(d.."headers/assert.h", "%BINDIR%include/ansi/assert.h"),
  245. pm.install(d.."headers/ctype.h", "%BINDIR%include/ansi/ctype.h"),
  246. pm.install(d.."headers/errno.h", "%BINDIR%include/ansi/errno.h"),
  247. pm.install(d.."headers/float.h", "%BINDIR%include/ansi/float.h"),
  248. pm.install(d.."headers/limits.h", "%BINDIR%include/ansi/limits.h"),
  249. pm.install(d.."headers/math.h", "%BINDIR%include/ansi/math.h"),
  250. pm.install(d.."headers/setjmp.h", "%BINDIR%include/ansi/setjmp.h"),
  251. pm.install(d.."headers/signal.h", "%BINDIR%include/ansi/signal.h"),
  252. pm.install(d.."headers/stdarg.h", "%BINDIR%include/ansi/stdarg.h"),
  253. pm.install(d.."headers/stddef.h", "%BINDIR%include/ansi/stddef.h"),
  254. pm.install(d.."headers/stdint.h", "%BINDIR%include/ansi/stdint.h"),
  255. pm.install(d.."headers/stdio.h", "%BINDIR%include/ansi/stdio.h"),
  256. pm.install(d.."headers/stdlib.h", "%BINDIR%include/ansi/stdlib.h"),
  257. pm.install(d.."headers/string.h", "%BINDIR%include/ansi/string.h"),
  258. pm.install(d.."headers/time.h", "%BINDIR%include/ansi/time.h"),
  259. pm.install(d.."headers/iso646.h", "%BINDIR%include/ansi/iso646.h"),
  260. pm.install(d.."headers/stdbool.h", "%BINDIR%include/ansi/stdbool.h"),
  261. pm.install(d.."headers/locale.h", "%BINDIR%include/ansi/locale.h"),
  262. pm.install(d.."headers/tgmath.h", "%BINDIR%include/ansi/tgmath.h"),
  263. }
  264. }
  265. lang_cem_ansi_runtime = group {
  266. crt,
  267. libc,
  268. headers
  269. }