nokolexbor 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (486) hide show
  1. checksums.yaml +7 -0
  2. data/ext/nokolexbor/config.h +186 -0
  3. data/ext/nokolexbor/extconf.rb +131 -0
  4. data/ext/nokolexbor/libxml/HTMLparser.h +320 -0
  5. data/ext/nokolexbor/libxml/SAX2.h +173 -0
  6. data/ext/nokolexbor/libxml/chvalid.h +230 -0
  7. data/ext/nokolexbor/libxml/debugXML.h +217 -0
  8. data/ext/nokolexbor/libxml/dict.h +81 -0
  9. data/ext/nokolexbor/libxml/encoding.h +232 -0
  10. data/ext/nokolexbor/libxml/entities.h +153 -0
  11. data/ext/nokolexbor/libxml/globals.h +529 -0
  12. data/ext/nokolexbor/libxml/hash.h +236 -0
  13. data/ext/nokolexbor/libxml/list.h +137 -0
  14. data/ext/nokolexbor/libxml/parser.h +1264 -0
  15. data/ext/nokolexbor/libxml/parserInternals.h +641 -0
  16. data/ext/nokolexbor/libxml/pattern.h +100 -0
  17. data/ext/nokolexbor/libxml/threads.h +94 -0
  18. data/ext/nokolexbor/libxml/tree.h +1315 -0
  19. data/ext/nokolexbor/libxml/uri.h +94 -0
  20. data/ext/nokolexbor/libxml/valid.h +448 -0
  21. data/ext/nokolexbor/libxml/xmlIO.h +369 -0
  22. data/ext/nokolexbor/libxml/xmlautomata.h +146 -0
  23. data/ext/nokolexbor/libxml/xmlerror.h +919 -0
  24. data/ext/nokolexbor/libxml/xmlexports.h +79 -0
  25. data/ext/nokolexbor/libxml/xmlmemory.h +226 -0
  26. data/ext/nokolexbor/libxml/xmlregexp.h +222 -0
  27. data/ext/nokolexbor/libxml/xmlstring.h +140 -0
  28. data/ext/nokolexbor/libxml/xmlversion.h +526 -0
  29. data/ext/nokolexbor/libxml/xpath.h +575 -0
  30. data/ext/nokolexbor/libxml/xpathInternals.h +632 -0
  31. data/ext/nokolexbor/libxml/xpointer.h +137 -0
  32. data/ext/nokolexbor/libxml.h +76 -0
  33. data/ext/nokolexbor/memory.c +39 -0
  34. data/ext/nokolexbor/nl_document.c +51 -0
  35. data/ext/nokolexbor/nl_node.c +790 -0
  36. data/ext/nokolexbor/nl_node_set.c +368 -0
  37. data/ext/nokolexbor/nl_xpath_context.c +200 -0
  38. data/ext/nokolexbor/nokolexbor.c +63 -0
  39. data/ext/nokolexbor/nokolexbor.h +37 -0
  40. data/ext/nokolexbor/private/buf.h +70 -0
  41. data/ext/nokolexbor/private/dict.h +11 -0
  42. data/ext/nokolexbor/private/enc.h +17 -0
  43. data/ext/nokolexbor/private/error.h +21 -0
  44. data/ext/nokolexbor/private/globals.h +9 -0
  45. data/ext/nokolexbor/private/memory.h +9 -0
  46. data/ext/nokolexbor/private/parser.h +27 -0
  47. data/ext/nokolexbor/private/string.h +9 -0
  48. data/ext/nokolexbor/private/threads.h +50 -0
  49. data/ext/nokolexbor/private/tree.h +18 -0
  50. data/ext/nokolexbor/private/xpath.h +7 -0
  51. data/ext/nokolexbor/timsort.h +601 -0
  52. data/ext/nokolexbor/xml_SAX2.c +80 -0
  53. data/ext/nokolexbor/xml_buf.c +363 -0
  54. data/ext/nokolexbor/xml_chvalid.c +334 -0
  55. data/ext/nokolexbor/xml_dict.c +1264 -0
  56. data/ext/nokolexbor/xml_encoding.c +124 -0
  57. data/ext/nokolexbor/xml_error.c +134 -0
  58. data/ext/nokolexbor/xml_globals.c +1085 -0
  59. data/ext/nokolexbor/xml_hash.c +1141 -0
  60. data/ext/nokolexbor/xml_memory.c +203 -0
  61. data/ext/nokolexbor/xml_parser.c +127 -0
  62. data/ext/nokolexbor/xml_parserInternals.c +338 -0
  63. data/ext/nokolexbor/xml_pattern.c +2375 -0
  64. data/ext/nokolexbor/xml_string.c +1051 -0
  65. data/ext/nokolexbor/xml_threads.c +881 -0
  66. data/ext/nokolexbor/xml_tree.c +148 -0
  67. data/ext/nokolexbor/xml_xpath.c +14743 -0
  68. data/lib/nokolexbor/attribute.rb +18 -0
  69. data/lib/nokolexbor/document.rb +6 -0
  70. data/lib/nokolexbor/node.rb +264 -0
  71. data/lib/nokolexbor/node_set.rb +124 -0
  72. data/lib/nokolexbor/version.rb +5 -0
  73. data/lib/nokolexbor/xpath_context.rb +14 -0
  74. data/lib/nokolexbor.rb +17 -0
  75. data/patches/0001-lexbor-support-text-pseudo-element.patch +137 -0
  76. data/patches/0002-lexbor-match-id-class-case-sensitive.patch +22 -0
  77. data/patches/0003-lexbor-attach-template-content-to-self.patch +13 -0
  78. data/vendor/lexbor/CMakeLists.txt +331 -0
  79. data/vendor/lexbor/config.cmake +890 -0
  80. data/vendor/lexbor/feature.cmake +134 -0
  81. data/vendor/lexbor/source/lexbor/core/array.c +208 -0
  82. data/vendor/lexbor/source/lexbor/core/array.h +100 -0
  83. data/vendor/lexbor/source/lexbor/core/array_obj.c +216 -0
  84. data/vendor/lexbor/source/lexbor/core/array_obj.h +134 -0
  85. data/vendor/lexbor/source/lexbor/core/avl.c +442 -0
  86. data/vendor/lexbor/source/lexbor/core/avl.h +82 -0
  87. data/vendor/lexbor/source/lexbor/core/base.h +86 -0
  88. data/vendor/lexbor/source/lexbor/core/bst.c +468 -0
  89. data/vendor/lexbor/source/lexbor/core/bst.h +108 -0
  90. data/vendor/lexbor/source/lexbor/core/bst_map.c +238 -0
  91. data/vendor/lexbor/source/lexbor/core/bst_map.h +87 -0
  92. data/vendor/lexbor/source/lexbor/core/config.cmake +12 -0
  93. data/vendor/lexbor/source/lexbor/core/conv.c +203 -0
  94. data/vendor/lexbor/source/lexbor/core/conv.h +53 -0
  95. data/vendor/lexbor/source/lexbor/core/core.h +35 -0
  96. data/vendor/lexbor/source/lexbor/core/def.h +57 -0
  97. data/vendor/lexbor/source/lexbor/core/diyfp.c +153 -0
  98. data/vendor/lexbor/source/lexbor/core/diyfp.h +258 -0
  99. data/vendor/lexbor/source/lexbor/core/dobject.c +187 -0
  100. data/vendor/lexbor/source/lexbor/core/dobject.h +92 -0
  101. data/vendor/lexbor/source/lexbor/core/dtoa.c +404 -0
  102. data/vendor/lexbor/source/lexbor/core/dtoa.h +28 -0
  103. data/vendor/lexbor/source/lexbor/core/fs.h +60 -0
  104. data/vendor/lexbor/source/lexbor/core/hash.c +476 -0
  105. data/vendor/lexbor/source/lexbor/core/hash.h +218 -0
  106. data/vendor/lexbor/source/lexbor/core/in.c +267 -0
  107. data/vendor/lexbor/source/lexbor/core/in.h +172 -0
  108. data/vendor/lexbor/source/lexbor/core/lexbor.h +35 -0
  109. data/vendor/lexbor/source/lexbor/core/mem.c +228 -0
  110. data/vendor/lexbor/source/lexbor/core/mem.h +141 -0
  111. data/vendor/lexbor/source/lexbor/core/mraw.c +428 -0
  112. data/vendor/lexbor/source/lexbor/core/mraw.h +114 -0
  113. data/vendor/lexbor/source/lexbor/core/perf.h +45 -0
  114. data/vendor/lexbor/source/lexbor/core/plog.c +73 -0
  115. data/vendor/lexbor/source/lexbor/core/plog.h +102 -0
  116. data/vendor/lexbor/source/lexbor/core/print.c +168 -0
  117. data/vendor/lexbor/source/lexbor/core/print.h +39 -0
  118. data/vendor/lexbor/source/lexbor/core/sbst.h +59 -0
  119. data/vendor/lexbor/source/lexbor/core/serialize.c +27 -0
  120. data/vendor/lexbor/source/lexbor/core/serialize.h +32 -0
  121. data/vendor/lexbor/source/lexbor/core/shs.c +118 -0
  122. data/vendor/lexbor/source/lexbor/core/shs.h +82 -0
  123. data/vendor/lexbor/source/lexbor/core/str.c +617 -0
  124. data/vendor/lexbor/source/lexbor/core/str.h +247 -0
  125. data/vendor/lexbor/source/lexbor/core/str_res.h +369 -0
  126. data/vendor/lexbor/source/lexbor/core/strtod.c +326 -0
  127. data/vendor/lexbor/source/lexbor/core/strtod.h +28 -0
  128. data/vendor/lexbor/source/lexbor/core/types.h +39 -0
  129. data/vendor/lexbor/source/lexbor/core/utils.c +43 -0
  130. data/vendor/lexbor/source/lexbor/core/utils.h +36 -0
  131. data/vendor/lexbor/source/lexbor/css/base.h +44 -0
  132. data/vendor/lexbor/source/lexbor/css/config.cmake +2 -0
  133. data/vendor/lexbor/source/lexbor/css/css.h +25 -0
  134. data/vendor/lexbor/source/lexbor/css/log.c +336 -0
  135. data/vendor/lexbor/source/lexbor/css/log.h +103 -0
  136. data/vendor/lexbor/source/lexbor/css/node.h +29 -0
  137. data/vendor/lexbor/source/lexbor/css/parser.c +473 -0
  138. data/vendor/lexbor/source/lexbor/css/parser.h +368 -0
  139. data/vendor/lexbor/source/lexbor/css/selectors/base.h +48 -0
  140. data/vendor/lexbor/source/lexbor/css/selectors/pseudo.c +91 -0
  141. data/vendor/lexbor/source/lexbor/css/selectors/pseudo.h +66 -0
  142. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_const.h +109 -0
  143. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_res.h +302 -0
  144. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_state.c +279 -0
  145. data/vendor/lexbor/source/lexbor/css/selectors/pseudo_state.h +85 -0
  146. data/vendor/lexbor/source/lexbor/css/selectors/selector.c +927 -0
  147. data/vendor/lexbor/source/lexbor/css/selectors/selector.h +200 -0
  148. data/vendor/lexbor/source/lexbor/css/selectors/selectors.c +340 -0
  149. data/vendor/lexbor/source/lexbor/css/selectors/selectors.h +137 -0
  150. data/vendor/lexbor/source/lexbor/css/selectors/state.c +1718 -0
  151. data/vendor/lexbor/source/lexbor/css/selectors/state.h +79 -0
  152. data/vendor/lexbor/source/lexbor/css/stylesheet.h +37 -0
  153. data/vendor/lexbor/source/lexbor/css/syntax/anb.c +443 -0
  154. data/vendor/lexbor/source/lexbor/css/syntax/anb.h +45 -0
  155. data/vendor/lexbor/source/lexbor/css/syntax/base.h +33 -0
  156. data/vendor/lexbor/source/lexbor/css/syntax/parser.c +9 -0
  157. data/vendor/lexbor/source/lexbor/css/syntax/parser.h +25 -0
  158. data/vendor/lexbor/source/lexbor/css/syntax/res.h +48 -0
  159. data/vendor/lexbor/source/lexbor/css/syntax/state.c +2603 -0
  160. data/vendor/lexbor/source/lexbor/css/syntax/state.h +140 -0
  161. data/vendor/lexbor/source/lexbor/css/syntax/state_res.h +273 -0
  162. data/vendor/lexbor/source/lexbor/css/syntax/syntax.c +67 -0
  163. data/vendor/lexbor/source/lexbor/css/syntax/token.c +618 -0
  164. data/vendor/lexbor/source/lexbor/css/syntax/token.h +298 -0
  165. data/vendor/lexbor/source/lexbor/css/syntax/token_res.h +68 -0
  166. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer/error.c +30 -0
  167. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer/error.h +58 -0
  168. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer.c +278 -0
  169. data/vendor/lexbor/source/lexbor/css/syntax/tokenizer.h +121 -0
  170. data/vendor/lexbor/source/lexbor/dom/base.h +32 -0
  171. data/vendor/lexbor/source/lexbor/dom/collection.c +97 -0
  172. data/vendor/lexbor/source/lexbor/dom/collection.h +112 -0
  173. data/vendor/lexbor/source/lexbor/dom/config.cmake +3 -0
  174. data/vendor/lexbor/source/lexbor/dom/dom.h +29 -0
  175. data/vendor/lexbor/source/lexbor/dom/exception.c +18 -0
  176. data/vendor/lexbor/source/lexbor/dom/exception.h +73 -0
  177. data/vendor/lexbor/source/lexbor/dom/interface.c +110 -0
  178. data/vendor/lexbor/source/lexbor/dom/interface.h +88 -0
  179. data/vendor/lexbor/source/lexbor/dom/interfaces/attr.c +445 -0
  180. data/vendor/lexbor/source/lexbor/dom/interfaces/attr.h +152 -0
  181. data/vendor/lexbor/source/lexbor/dom/interfaces/attr_const.h +62 -0
  182. data/vendor/lexbor/source/lexbor/dom/interfaces/attr_res.h +143 -0
  183. data/vendor/lexbor/source/lexbor/dom/interfaces/cdata_section.c +55 -0
  184. data/vendor/lexbor/source/lexbor/dom/interfaces/cdata_section.h +38 -0
  185. data/vendor/lexbor/source/lexbor/dom/interfaces/character_data.c +110 -0
  186. data/vendor/lexbor/source/lexbor/dom/interfaces/character_data.h +51 -0
  187. data/vendor/lexbor/source/lexbor/dom/interfaces/comment.c +64 -0
  188. data/vendor/lexbor/source/lexbor/dom/interfaces/comment.h +42 -0
  189. data/vendor/lexbor/source/lexbor/dom/interfaces/document.c +536 -0
  190. data/vendor/lexbor/source/lexbor/dom/interfaces/document.h +243 -0
  191. data/vendor/lexbor/source/lexbor/dom/interfaces/document_fragment.c +36 -0
  192. data/vendor/lexbor/source/lexbor/dom/interfaces/document_fragment.h +36 -0
  193. data/vendor/lexbor/source/lexbor/dom/interfaces/document_type.c +125 -0
  194. data/vendor/lexbor/source/lexbor/dom/interfaces/document_type.h +108 -0
  195. data/vendor/lexbor/source/lexbor/dom/interfaces/element.c +1411 -0
  196. data/vendor/lexbor/source/lexbor/dom/interfaces/element.h +319 -0
  197. data/vendor/lexbor/source/lexbor/dom/interfaces/event_target.c +32 -0
  198. data/vendor/lexbor/source/lexbor/dom/interfaces/event_target.h +34 -0
  199. data/vendor/lexbor/source/lexbor/dom/interfaces/node.c +661 -0
  200. data/vendor/lexbor/source/lexbor/dom/interfaces/node.h +192 -0
  201. data/vendor/lexbor/source/lexbor/dom/interfaces/processing_instruction.c +87 -0
  202. data/vendor/lexbor/source/lexbor/dom/interfaces/processing_instruction.h +66 -0
  203. data/vendor/lexbor/source/lexbor/dom/interfaces/shadow_root.c +36 -0
  204. data/vendor/lexbor/source/lexbor/dom/interfaces/shadow_root.h +44 -0
  205. data/vendor/lexbor/source/lexbor/dom/interfaces/text.c +63 -0
  206. data/vendor/lexbor/source/lexbor/dom/interfaces/text.h +42 -0
  207. data/vendor/lexbor/source/lexbor/encoding/base.h +218 -0
  208. data/vendor/lexbor/source/lexbor/encoding/big5.c +42839 -0
  209. data/vendor/lexbor/source/lexbor/encoding/config.cmake +12 -0
  210. data/vendor/lexbor/source/lexbor/encoding/const.h +65 -0
  211. data/vendor/lexbor/source/lexbor/encoding/decode.c +3193 -0
  212. data/vendor/lexbor/source/lexbor/encoding/decode.h +370 -0
  213. data/vendor/lexbor/source/lexbor/encoding/encode.c +1931 -0
  214. data/vendor/lexbor/source/lexbor/encoding/encode.h +377 -0
  215. data/vendor/lexbor/source/lexbor/encoding/encoding.c +252 -0
  216. data/vendor/lexbor/source/lexbor/encoding/encoding.h +475 -0
  217. data/vendor/lexbor/source/lexbor/encoding/euc_kr.c +53883 -0
  218. data/vendor/lexbor/source/lexbor/encoding/gb18030.c +47905 -0
  219. data/vendor/lexbor/source/lexbor/encoding/iso_2022_jp_katakana.c +159 -0
  220. data/vendor/lexbor/source/lexbor/encoding/jis0208.c +22477 -0
  221. data/vendor/lexbor/source/lexbor/encoding/jis0212.c +15787 -0
  222. data/vendor/lexbor/source/lexbor/encoding/multi.h +53 -0
  223. data/vendor/lexbor/source/lexbor/encoding/range.c +71 -0
  224. data/vendor/lexbor/source/lexbor/encoding/range.h +34 -0
  225. data/vendor/lexbor/source/lexbor/encoding/res.c +222 -0
  226. data/vendor/lexbor/source/lexbor/encoding/res.h +34 -0
  227. data/vendor/lexbor/source/lexbor/encoding/single.c +13748 -0
  228. data/vendor/lexbor/source/lexbor/encoding/single.h +116 -0
  229. data/vendor/lexbor/source/lexbor/html/base.h +44 -0
  230. data/vendor/lexbor/source/lexbor/html/config.cmake +3 -0
  231. data/vendor/lexbor/source/lexbor/html/encoding.c +574 -0
  232. data/vendor/lexbor/source/lexbor/html/encoding.h +106 -0
  233. data/vendor/lexbor/source/lexbor/html/html.h +107 -0
  234. data/vendor/lexbor/source/lexbor/html/interface.c +165 -0
  235. data/vendor/lexbor/source/lexbor/html/interface.h +186 -0
  236. data/vendor/lexbor/source/lexbor/html/interface_res.h +4449 -0
  237. data/vendor/lexbor/source/lexbor/html/interfaces/anchor_element.c +36 -0
  238. data/vendor/lexbor/source/lexbor/html/interfaces/anchor_element.h +34 -0
  239. data/vendor/lexbor/source/lexbor/html/interfaces/area_element.c +36 -0
  240. data/vendor/lexbor/source/lexbor/html/interfaces/area_element.h +34 -0
  241. data/vendor/lexbor/source/lexbor/html/interfaces/audio_element.c +36 -0
  242. data/vendor/lexbor/source/lexbor/html/interfaces/audio_element.h +34 -0
  243. data/vendor/lexbor/source/lexbor/html/interfaces/base_element.c +36 -0
  244. data/vendor/lexbor/source/lexbor/html/interfaces/base_element.h +34 -0
  245. data/vendor/lexbor/source/lexbor/html/interfaces/body_element.c +36 -0
  246. data/vendor/lexbor/source/lexbor/html/interfaces/body_element.h +34 -0
  247. data/vendor/lexbor/source/lexbor/html/interfaces/br_element.c +36 -0
  248. data/vendor/lexbor/source/lexbor/html/interfaces/br_element.h +34 -0
  249. data/vendor/lexbor/source/lexbor/html/interfaces/button_element.c +36 -0
  250. data/vendor/lexbor/source/lexbor/html/interfaces/button_element.h +34 -0
  251. data/vendor/lexbor/source/lexbor/html/interfaces/canvas_element.c +36 -0
  252. data/vendor/lexbor/source/lexbor/html/interfaces/canvas_element.h +34 -0
  253. data/vendor/lexbor/source/lexbor/html/interfaces/d_list_element.c +36 -0
  254. data/vendor/lexbor/source/lexbor/html/interfaces/d_list_element.h +34 -0
  255. data/vendor/lexbor/source/lexbor/html/interfaces/data_element.c +36 -0
  256. data/vendor/lexbor/source/lexbor/html/interfaces/data_element.h +34 -0
  257. data/vendor/lexbor/source/lexbor/html/interfaces/data_list_element.c +36 -0
  258. data/vendor/lexbor/source/lexbor/html/interfaces/data_list_element.h +34 -0
  259. data/vendor/lexbor/source/lexbor/html/interfaces/details_element.c +36 -0
  260. data/vendor/lexbor/source/lexbor/html/interfaces/details_element.h +34 -0
  261. data/vendor/lexbor/source/lexbor/html/interfaces/dialog_element.c +36 -0
  262. data/vendor/lexbor/source/lexbor/html/interfaces/dialog_element.h +34 -0
  263. data/vendor/lexbor/source/lexbor/html/interfaces/directory_element.c +36 -0
  264. data/vendor/lexbor/source/lexbor/html/interfaces/directory_element.h +34 -0
  265. data/vendor/lexbor/source/lexbor/html/interfaces/div_element.c +36 -0
  266. data/vendor/lexbor/source/lexbor/html/interfaces/div_element.h +34 -0
  267. data/vendor/lexbor/source/lexbor/html/interfaces/document.c +444 -0
  268. data/vendor/lexbor/source/lexbor/html/interfaces/document.h +256 -0
  269. data/vendor/lexbor/source/lexbor/html/interfaces/element.c +64 -0
  270. data/vendor/lexbor/source/lexbor/html/interfaces/element.h +54 -0
  271. data/vendor/lexbor/source/lexbor/html/interfaces/embed_element.c +36 -0
  272. data/vendor/lexbor/source/lexbor/html/interfaces/embed_element.h +34 -0
  273. data/vendor/lexbor/source/lexbor/html/interfaces/field_set_element.c +36 -0
  274. data/vendor/lexbor/source/lexbor/html/interfaces/field_set_element.h +34 -0
  275. data/vendor/lexbor/source/lexbor/html/interfaces/font_element.c +36 -0
  276. data/vendor/lexbor/source/lexbor/html/interfaces/font_element.h +34 -0
  277. data/vendor/lexbor/source/lexbor/html/interfaces/form_element.c +36 -0
  278. data/vendor/lexbor/source/lexbor/html/interfaces/form_element.h +34 -0
  279. data/vendor/lexbor/source/lexbor/html/interfaces/frame_element.c +36 -0
  280. data/vendor/lexbor/source/lexbor/html/interfaces/frame_element.h +34 -0
  281. data/vendor/lexbor/source/lexbor/html/interfaces/frame_set_element.c +36 -0
  282. data/vendor/lexbor/source/lexbor/html/interfaces/frame_set_element.h +34 -0
  283. data/vendor/lexbor/source/lexbor/html/interfaces/head_element.c +36 -0
  284. data/vendor/lexbor/source/lexbor/html/interfaces/head_element.h +34 -0
  285. data/vendor/lexbor/source/lexbor/html/interfaces/heading_element.c +36 -0
  286. data/vendor/lexbor/source/lexbor/html/interfaces/heading_element.h +34 -0
  287. data/vendor/lexbor/source/lexbor/html/interfaces/hr_element.c +36 -0
  288. data/vendor/lexbor/source/lexbor/html/interfaces/hr_element.h +34 -0
  289. data/vendor/lexbor/source/lexbor/html/interfaces/html_element.c +36 -0
  290. data/vendor/lexbor/source/lexbor/html/interfaces/html_element.h +34 -0
  291. data/vendor/lexbor/source/lexbor/html/interfaces/iframe_element.c +36 -0
  292. data/vendor/lexbor/source/lexbor/html/interfaces/iframe_element.h +34 -0
  293. data/vendor/lexbor/source/lexbor/html/interfaces/image_element.c +36 -0
  294. data/vendor/lexbor/source/lexbor/html/interfaces/image_element.h +34 -0
  295. data/vendor/lexbor/source/lexbor/html/interfaces/input_element.c +36 -0
  296. data/vendor/lexbor/source/lexbor/html/interfaces/input_element.h +34 -0
  297. data/vendor/lexbor/source/lexbor/html/interfaces/label_element.c +36 -0
  298. data/vendor/lexbor/source/lexbor/html/interfaces/label_element.h +34 -0
  299. data/vendor/lexbor/source/lexbor/html/interfaces/legend_element.c +36 -0
  300. data/vendor/lexbor/source/lexbor/html/interfaces/legend_element.h +34 -0
  301. data/vendor/lexbor/source/lexbor/html/interfaces/li_element.c +36 -0
  302. data/vendor/lexbor/source/lexbor/html/interfaces/li_element.h +34 -0
  303. data/vendor/lexbor/source/lexbor/html/interfaces/link_element.c +36 -0
  304. data/vendor/lexbor/source/lexbor/html/interfaces/link_element.h +34 -0
  305. data/vendor/lexbor/source/lexbor/html/interfaces/map_element.c +36 -0
  306. data/vendor/lexbor/source/lexbor/html/interfaces/map_element.h +34 -0
  307. data/vendor/lexbor/source/lexbor/html/interfaces/marquee_element.c +36 -0
  308. data/vendor/lexbor/source/lexbor/html/interfaces/marquee_element.h +34 -0
  309. data/vendor/lexbor/source/lexbor/html/interfaces/media_element.c +36 -0
  310. data/vendor/lexbor/source/lexbor/html/interfaces/media_element.h +34 -0
  311. data/vendor/lexbor/source/lexbor/html/interfaces/menu_element.c +36 -0
  312. data/vendor/lexbor/source/lexbor/html/interfaces/menu_element.h +34 -0
  313. data/vendor/lexbor/source/lexbor/html/interfaces/meta_element.c +36 -0
  314. data/vendor/lexbor/source/lexbor/html/interfaces/meta_element.h +34 -0
  315. data/vendor/lexbor/source/lexbor/html/interfaces/meter_element.c +36 -0
  316. data/vendor/lexbor/source/lexbor/html/interfaces/meter_element.h +34 -0
  317. data/vendor/lexbor/source/lexbor/html/interfaces/mod_element.c +36 -0
  318. data/vendor/lexbor/source/lexbor/html/interfaces/mod_element.h +34 -0
  319. data/vendor/lexbor/source/lexbor/html/interfaces/o_list_element.c +36 -0
  320. data/vendor/lexbor/source/lexbor/html/interfaces/o_list_element.h +34 -0
  321. data/vendor/lexbor/source/lexbor/html/interfaces/object_element.c +36 -0
  322. data/vendor/lexbor/source/lexbor/html/interfaces/object_element.h +34 -0
  323. data/vendor/lexbor/source/lexbor/html/interfaces/opt_group_element.c +36 -0
  324. data/vendor/lexbor/source/lexbor/html/interfaces/opt_group_element.h +34 -0
  325. data/vendor/lexbor/source/lexbor/html/interfaces/option_element.c +36 -0
  326. data/vendor/lexbor/source/lexbor/html/interfaces/option_element.h +34 -0
  327. data/vendor/lexbor/source/lexbor/html/interfaces/output_element.c +36 -0
  328. data/vendor/lexbor/source/lexbor/html/interfaces/output_element.h +34 -0
  329. data/vendor/lexbor/source/lexbor/html/interfaces/paragraph_element.c +36 -0
  330. data/vendor/lexbor/source/lexbor/html/interfaces/paragraph_element.h +34 -0
  331. data/vendor/lexbor/source/lexbor/html/interfaces/param_element.c +36 -0
  332. data/vendor/lexbor/source/lexbor/html/interfaces/param_element.h +34 -0
  333. data/vendor/lexbor/source/lexbor/html/interfaces/picture_element.c +36 -0
  334. data/vendor/lexbor/source/lexbor/html/interfaces/picture_element.h +34 -0
  335. data/vendor/lexbor/source/lexbor/html/interfaces/pre_element.c +36 -0
  336. data/vendor/lexbor/source/lexbor/html/interfaces/pre_element.h +34 -0
  337. data/vendor/lexbor/source/lexbor/html/interfaces/progress_element.c +36 -0
  338. data/vendor/lexbor/source/lexbor/html/interfaces/progress_element.h +34 -0
  339. data/vendor/lexbor/source/lexbor/html/interfaces/quote_element.c +36 -0
  340. data/vendor/lexbor/source/lexbor/html/interfaces/quote_element.h +34 -0
  341. data/vendor/lexbor/source/lexbor/html/interfaces/script_element.c +36 -0
  342. data/vendor/lexbor/source/lexbor/html/interfaces/script_element.h +34 -0
  343. data/vendor/lexbor/source/lexbor/html/interfaces/select_element.c +36 -0
  344. data/vendor/lexbor/source/lexbor/html/interfaces/select_element.h +34 -0
  345. data/vendor/lexbor/source/lexbor/html/interfaces/slot_element.c +36 -0
  346. data/vendor/lexbor/source/lexbor/html/interfaces/slot_element.h +34 -0
  347. data/vendor/lexbor/source/lexbor/html/interfaces/source_element.c +36 -0
  348. data/vendor/lexbor/source/lexbor/html/interfaces/source_element.h +34 -0
  349. data/vendor/lexbor/source/lexbor/html/interfaces/span_element.c +36 -0
  350. data/vendor/lexbor/source/lexbor/html/interfaces/span_element.h +34 -0
  351. data/vendor/lexbor/source/lexbor/html/interfaces/style_element.c +36 -0
  352. data/vendor/lexbor/source/lexbor/html/interfaces/style_element.h +34 -0
  353. data/vendor/lexbor/source/lexbor/html/interfaces/table_caption_element.c +36 -0
  354. data/vendor/lexbor/source/lexbor/html/interfaces/table_caption_element.h +34 -0
  355. data/vendor/lexbor/source/lexbor/html/interfaces/table_cell_element.c +36 -0
  356. data/vendor/lexbor/source/lexbor/html/interfaces/table_cell_element.h +34 -0
  357. data/vendor/lexbor/source/lexbor/html/interfaces/table_col_element.c +36 -0
  358. data/vendor/lexbor/source/lexbor/html/interfaces/table_col_element.h +34 -0
  359. data/vendor/lexbor/source/lexbor/html/interfaces/table_element.c +36 -0
  360. data/vendor/lexbor/source/lexbor/html/interfaces/table_element.h +34 -0
  361. data/vendor/lexbor/source/lexbor/html/interfaces/table_row_element.c +36 -0
  362. data/vendor/lexbor/source/lexbor/html/interfaces/table_row_element.h +34 -0
  363. data/vendor/lexbor/source/lexbor/html/interfaces/table_section_element.c +36 -0
  364. data/vendor/lexbor/source/lexbor/html/interfaces/table_section_element.h +34 -0
  365. data/vendor/lexbor/source/lexbor/html/interfaces/template_element.c +46 -0
  366. data/vendor/lexbor/source/lexbor/html/interfaces/template_element.h +38 -0
  367. data/vendor/lexbor/source/lexbor/html/interfaces/text_area_element.c +36 -0
  368. data/vendor/lexbor/source/lexbor/html/interfaces/text_area_element.h +34 -0
  369. data/vendor/lexbor/source/lexbor/html/interfaces/time_element.c +36 -0
  370. data/vendor/lexbor/source/lexbor/html/interfaces/time_element.h +34 -0
  371. data/vendor/lexbor/source/lexbor/html/interfaces/title_element.c +133 -0
  372. data/vendor/lexbor/source/lexbor/html/interfaces/title_element.h +42 -0
  373. data/vendor/lexbor/source/lexbor/html/interfaces/track_element.c +36 -0
  374. data/vendor/lexbor/source/lexbor/html/interfaces/track_element.h +34 -0
  375. data/vendor/lexbor/source/lexbor/html/interfaces/u_list_element.c +36 -0
  376. data/vendor/lexbor/source/lexbor/html/interfaces/u_list_element.h +34 -0
  377. data/vendor/lexbor/source/lexbor/html/interfaces/unknown_element.c +36 -0
  378. data/vendor/lexbor/source/lexbor/html/interfaces/unknown_element.h +34 -0
  379. data/vendor/lexbor/source/lexbor/html/interfaces/video_element.c +36 -0
  380. data/vendor/lexbor/source/lexbor/html/interfaces/video_element.h +34 -0
  381. data/vendor/lexbor/source/lexbor/html/interfaces/window.c +36 -0
  382. data/vendor/lexbor/source/lexbor/html/interfaces/window.h +34 -0
  383. data/vendor/lexbor/source/lexbor/html/node.c +14 -0
  384. data/vendor/lexbor/source/lexbor/html/node.h +67 -0
  385. data/vendor/lexbor/source/lexbor/html/parser.c +469 -0
  386. data/vendor/lexbor/source/lexbor/html/parser.h +170 -0
  387. data/vendor/lexbor/source/lexbor/html/serialize.c +1510 -0
  388. data/vendor/lexbor/source/lexbor/html/serialize.h +93 -0
  389. data/vendor/lexbor/source/lexbor/html/tag.h +103 -0
  390. data/vendor/lexbor/source/lexbor/html/tag_res.h +2262 -0
  391. data/vendor/lexbor/source/lexbor/html/token.c +386 -0
  392. data/vendor/lexbor/source/lexbor/html/token.h +130 -0
  393. data/vendor/lexbor/source/lexbor/html/token_attr.c +44 -0
  394. data/vendor/lexbor/source/lexbor/html/token_attr.h +67 -0
  395. data/vendor/lexbor/source/lexbor/html/tokenizer/error.c +28 -0
  396. data/vendor/lexbor/source/lexbor/html/tokenizer/error.h +141 -0
  397. data/vendor/lexbor/source/lexbor/html/tokenizer/res.h +4956 -0
  398. data/vendor/lexbor/source/lexbor/html/tokenizer/state.c +2171 -0
  399. data/vendor/lexbor/source/lexbor/html/tokenizer/state.h +225 -0
  400. data/vendor/lexbor/source/lexbor/html/tokenizer/state_comment.c +489 -0
  401. data/vendor/lexbor/source/lexbor/html/tokenizer/state_comment.h +27 -0
  402. data/vendor/lexbor/source/lexbor/html/tokenizer/state_doctype.c +1654 -0
  403. data/vendor/lexbor/source/lexbor/html/tokenizer/state_doctype.h +27 -0
  404. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rawtext.c +303 -0
  405. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rawtext.h +32 -0
  406. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rcdata.c +311 -0
  407. data/vendor/lexbor/source/lexbor/html/tokenizer/state_rcdata.h +32 -0
  408. data/vendor/lexbor/source/lexbor/html/tokenizer/state_script.c +1209 -0
  409. data/vendor/lexbor/source/lexbor/html/tokenizer/state_script.h +32 -0
  410. data/vendor/lexbor/source/lexbor/html/tokenizer.c +499 -0
  411. data/vendor/lexbor/source/lexbor/html/tokenizer.h +343 -0
  412. data/vendor/lexbor/source/lexbor/html/tree/active_formatting.c +241 -0
  413. data/vendor/lexbor/source/lexbor/html/tree/active_formatting.h +117 -0
  414. data/vendor/lexbor/source/lexbor/html/tree/error.c +26 -0
  415. data/vendor/lexbor/source/lexbor/html/tree/error.h +114 -0
  416. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_after_body.c +62 -0
  417. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_after_frameset.c +63 -0
  418. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_body.c +82 -0
  419. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_frameset.c +88 -0
  420. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/after_head.c +222 -0
  421. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/before_head.c +144 -0
  422. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/before_html.c +166 -0
  423. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/foreign_content.c +358 -0
  424. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_body.c +1974 -0
  425. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_caption.c +158 -0
  426. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_cell.c +187 -0
  427. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_column_group.c +194 -0
  428. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_frameset.c +149 -0
  429. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_head.c +374 -0
  430. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_head_noscript.c +121 -0
  431. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_row.c +211 -0
  432. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_select.c +341 -0
  433. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_select_in_table.c +115 -0
  434. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table.c +451 -0
  435. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table_body.c +208 -0
  436. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_table_text.c +127 -0
  437. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/in_template.c +189 -0
  438. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/initial.c +411 -0
  439. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode/text.c +61 -0
  440. data/vendor/lexbor/source/lexbor/html/tree/insertion_mode.h +135 -0
  441. data/vendor/lexbor/source/lexbor/html/tree/open_elements.c +251 -0
  442. data/vendor/lexbor/source/lexbor/html/tree/open_elements.h +105 -0
  443. data/vendor/lexbor/source/lexbor/html/tree/template_insertion.c +10 -0
  444. data/vendor/lexbor/source/lexbor/html/tree/template_insertion.h +100 -0
  445. data/vendor/lexbor/source/lexbor/html/tree.c +1726 -0
  446. data/vendor/lexbor/source/lexbor/html/tree.h +431 -0
  447. data/vendor/lexbor/source/lexbor/html/tree_res.h +111 -0
  448. data/vendor/lexbor/source/lexbor/ns/base.h +32 -0
  449. data/vendor/lexbor/source/lexbor/ns/config.cmake +2 -0
  450. data/vendor/lexbor/source/lexbor/ns/const.h +37 -0
  451. data/vendor/lexbor/source/lexbor/ns/ns.c +154 -0
  452. data/vendor/lexbor/source/lexbor/ns/ns.h +66 -0
  453. data/vendor/lexbor/source/lexbor/ns/res.h +97 -0
  454. data/vendor/lexbor/source/lexbor/ports/posix/config.cmake +11 -0
  455. data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/fs.c +236 -0
  456. data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/memory.c +33 -0
  457. data/vendor/lexbor/source/lexbor/ports/posix/lexbor/core/perf.c +158 -0
  458. data/vendor/lexbor/source/lexbor/ports/windows_nt/config.cmake +18 -0
  459. data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/fs.c +239 -0
  460. data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/memory.c +33 -0
  461. data/vendor/lexbor/source/lexbor/ports/windows_nt/lexbor/core/perf.c +81 -0
  462. data/vendor/lexbor/source/lexbor/selectors/base.h +30 -0
  463. data/vendor/lexbor/source/lexbor/selectors/config.cmake +2 -0
  464. data/vendor/lexbor/source/lexbor/selectors/selectors.c +1591 -0
  465. data/vendor/lexbor/source/lexbor/selectors/selectors.h +71 -0
  466. data/vendor/lexbor/source/lexbor/tag/base.h +32 -0
  467. data/vendor/lexbor/source/lexbor/tag/config.cmake +2 -0
  468. data/vendor/lexbor/source/lexbor/tag/const.h +225 -0
  469. data/vendor/lexbor/source/lexbor/tag/res.h +562 -0
  470. data/vendor/lexbor/source/lexbor/tag/tag.c +144 -0
  471. data/vendor/lexbor/source/lexbor/tag/tag.h +123 -0
  472. data/vendor/lexbor/source/lexbor/utils/base.h +32 -0
  473. data/vendor/lexbor/source/lexbor/utils/config.cmake +2 -0
  474. data/vendor/lexbor/source/lexbor/utils/http.c +534 -0
  475. data/vendor/lexbor/source/lexbor/utils/http.h +90 -0
  476. data/vendor/lexbor/source/lexbor/utils/utils.h +15 -0
  477. data/vendor/lexbor/source/lexbor/utils/warc.c +817 -0
  478. data/vendor/lexbor/source/lexbor/utils/warc.h +126 -0
  479. data/vendor/lexbor/utils/lexbor/css/selectors/pseudo.py +231 -0
  480. data/vendor/lexbor/utils/lexbor/css/selectors/tmp/const.h +21 -0
  481. data/vendor/lexbor/utils/lexbor/css/selectors/tmp/res.h +26 -0
  482. data/vendor/lexbor/utils/lexbor/css/syntax/definitions.py +49 -0
  483. data/vendor/lexbor/utils/lexbor/css/syntax/token_res.py +54 -0
  484. data/vendor/lexbor/utils/lexbor/css/syntax/tokenizer_code_map.py +36 -0
  485. data/vendor/lexbor/version +1 -0
  486. metadata +542 -0
@@ -0,0 +1,890 @@
1
+ ################
2
+ ## Dependencies
3
+ #########################
4
+ IF(NOT LEXBOR_WITHOUT_THREADS)
5
+ set(CMAKE_THREAD_PREFER_PTHREAD 1)
6
+ find_package(Threads REQUIRED)
7
+ IF(NOT CMAKE_USE_PTHREADS_INIT)
8
+ message(FATAL_ERROR "Could NOT find pthreads (missing: CMAKE_USE_PTHREADS_INIT)")
9
+ ENDIF()
10
+ ENDIF()
11
+
12
+ ################
13
+ ## Detect OS type
14
+ #########################
15
+ set(LEXBOR_PLATFORM "UNDEF")
16
+
17
+ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
18
+ IF(EXISTS "/etc/centos-release")
19
+ set(LEXBOR_PLATFORM "CentOS")
20
+ ENDIF(EXISTS "/etc/centos-release")
21
+
22
+ IF(EXISTS "/etc/debian_version")
23
+ set(LEXBOR_PLATFORM "Debian")
24
+ ENDIF(EXISTS "/etc/debian_version")
25
+
26
+ IF(EXISTS "/etc/redhat-release")
27
+ set(LEXBOR_PLATFORM "Redhat")
28
+ ENDIF(EXISTS "/etc/redhat-release")
29
+
30
+ IF(EXISTS "/etc/fedora-release")
31
+ set(LEXBOR_PLATFORM "Redhat")
32
+ ENDIF(EXISTS "/etc/fedora-release")
33
+
34
+ IF(EXISTS "/etc/SuSE-release")
35
+ set(LEXBOR_PLATFORM "SuSe")
36
+ ENDIF(EXISTS "/etc/SuSE-release")
37
+
38
+ IF(EXISTS "/etc/gentoo-release")
39
+ set(LEXBOR_PLATFORM "Gentoo")
40
+ ENDIF(EXISTS "/etc/gentoo-release")
41
+ ENDIF()
42
+
43
+ ################
44
+ ## OS ports
45
+ #########################
46
+ if (WIN32)
47
+ set(LEXBOR_OS_PORT_NAME "windows_nt")
48
+ else ()
49
+ set(LEXBOR_OS_PORT_NAME "posix")
50
+ endif (WIN32)
51
+
52
+ ################
53
+ ## Macro
54
+ #########################
55
+ MACRO(LIST_JOIN tlist glue out)
56
+ set(value "")
57
+ set(nlist "${${tlist}}")
58
+
59
+ FOREACH(entry ${nlist})
60
+ set(value "${entry}${glue}${value}")
61
+ ENDFOREACH()
62
+
63
+ STRING(REGEX REPLACE "${glue}\$" " " value ${value})
64
+
65
+ set(${out} "${value}")
66
+
67
+ unset(value)
68
+ unset(nlist)
69
+ ENDMACRO()
70
+
71
+ MACRO(LIST_TO_COLUMN tlist column join_by out_result)
72
+ set(out "")
73
+ set(line "")
74
+
75
+ STRING(STRIP ${join_by} join_by_cls)
76
+
77
+ FOREACH(mname ${tlist})
78
+ IF(NOT "${line}" STREQUAL "")
79
+ set(tmp "${line}${join_by}${mname}")
80
+ ELSE()
81
+ set(tmp "${mname}")
82
+ ENDIF()
83
+
84
+ STRING(LENGTH "${tmp}" str_len)
85
+
86
+ IF("${str_len}" GREATER "${column}" OR "${str_len}" EQUAL "${column}")
87
+ set(out "${out}\n${line}${join_by_cls}")
88
+
89
+ set(line "")
90
+ set(tmp "${mname}")
91
+ ENDIF()
92
+
93
+ set(line ${tmp})
94
+ ENDFOREACH()
95
+
96
+ IF(NOT "${line}" STREQUAL "")
97
+ set(out "${out}\n${line}")
98
+ ENDIF()
99
+
100
+ STRING(STRIP ${out} out)
101
+ set(${out_result} ${out})
102
+
103
+ unset(line)
104
+ unset(out)
105
+ ENDMACRO()
106
+
107
+ MACRO(SUBDIRLIST_PRIVATE curdir prefix postfix to_list)
108
+ FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
109
+
110
+ FOREACH(child ${children})
111
+ IF(IS_DIRECTORY "${curdir}/${child}")
112
+ LIST(APPEND ${to_list} "${prefix}${child}${postfix}")
113
+ SUBDIRLIST_PRIVATE("${curdir}/${child}" "${prefix}${child}/" "${postfix}" ${to_list})
114
+ ENDIF()
115
+ ENDFOREACH()
116
+ ENDMACRO()
117
+
118
+ MACRO(SUBDIRLIST curdir prefix postfix out_result)
119
+ SUBDIRLIST_PRIVATE("${curdir}" "${prefix}" "${postfix}" dirlist)
120
+
121
+ SET(${out_result} ${dirlist})
122
+ ENDMACRO()
123
+
124
+ MACRO(GET_MODULES_SUB_LIST modules curdir)
125
+ FILE(GLOB children ${curdir}/ ${curdir}/*)
126
+
127
+ FOREACH(child ${children})
128
+ string(REGEX MATCH "\\.[^/]+$" MATCHSTR ${child})
129
+
130
+ IF(IS_DIRECTORY ${child} AND MATCHSTR STREQUAL "")
131
+ string(REGEX MATCH "[^/]+$" MATCHSTR ${child})
132
+
133
+ IF(NOT MATCHSTR STREQUAL "ports")
134
+ LIST(APPEND ${modules} ${MATCHSTR})
135
+ ELSE()
136
+ IF(EXISTS "${child}/${LEXBOR_OS_PORT_NAME}/config.cmake")
137
+ include("${child}/${LEXBOR_OS_PORT_NAME}/config.cmake")
138
+ ENDIF()
139
+ ENDIF()
140
+ ENDIF()
141
+ ENDFOREACH()
142
+ ENDMACRO()
143
+
144
+ MACRO(GET_MODULES_LIST modules curdir)
145
+ FILE(GLOB children ${curdir}/ ${curdir}/*)
146
+
147
+ FOREACH(child ${children})
148
+ string(REGEX MATCH "\\.[^/]+$" MATCHSTR ${child})
149
+ IF(IS_DIRECTORY ${child} AND MATCHSTR STREQUAL "")
150
+ GET_MODULES_SUB_LIST(${modules} ${dirs} ${child})
151
+ ENDIF()
152
+ ENDFOREACH()
153
+ ENDMACRO()
154
+
155
+ MACRO(INCLUDE_MODULE_CONFIG pname module module_dir)
156
+ set(conf_path "${module_dir}/config.cmake")
157
+
158
+ string(TOUPPER ${module} module_upper)
159
+ string(TOUPPER ${pname} pname_upper)
160
+
161
+ set(tmp "${pname_upper}_${module_upper}_INCLUDED")
162
+
163
+ IF("${${tmp}}" STREQUAL "")
164
+ set(${tmp} TRUE)
165
+
166
+ set(DEPENDENCIES "")
167
+
168
+ IF(EXISTS "${conf_path}")
169
+ set(CURRENT_LIB_NAME "${PROJECT_NAME}-${module}")
170
+ set(CURRENT_LIB_NAME_STATIC "${PROJECT_NAME}-${module}-static")
171
+
172
+ include("${conf_path}")
173
+ ENDIF()
174
+
175
+ IF(NOT DEPENDENCIES STREQUAL "")
176
+ STRING(REGEX REPLACE "[ \t\n]+" " " DEPENDENCIES ${DEPENDENCIES})
177
+ ENDIF()
178
+
179
+ set(tmp "${pname_upper}_${module_upper}_DEPENDENCIES")
180
+ set(${tmp} "${DEPENDENCIES}")
181
+
182
+ set(tmp "${pname_upper}_${module_upper}_TITLE")
183
+ set(${tmp} "${TITLE}")
184
+
185
+ set(tmp "${pname_upper}_${module_upper}_DESCRIPTION")
186
+ set(${tmp} "${DESCRIPTION}")
187
+ ENDIF()
188
+ ENDMACRO()
189
+
190
+ MACRO(GET_MODULE_TITLE pname module result)
191
+ string(TOUPPER ${module} module_upper)
192
+ string(TOUPPER ${pname} pname_upper)
193
+
194
+ set(${result} "${${pname_upper}_${module_upper}_TITLE}")
195
+
196
+ unset(module_upper)
197
+ unset(pname_upper)
198
+ ENDMACRO()
199
+
200
+ MACRO(GET_MODULE_DESCRIPTION pname module result)
201
+ string(TOUPPER ${module} module_upper)
202
+ string(TOUPPER ${pname} pname_upper)
203
+
204
+ set(${result} "${${pname_upper}_${module_upper}_DESCRIPTION}")
205
+
206
+ unset(module_upper)
207
+ unset(pname_upper)
208
+ ENDMACRO()
209
+
210
+ MACRO(GET_MODULE_DEPENDENCIES pname module result)
211
+ string(TOUPPER ${module} module_upper)
212
+ string(TOUPPER ${pname} pname_upper)
213
+
214
+ set(${result} "${${pname_upper}_${module_upper}_DEPENDENCIES}")
215
+
216
+ unset(module_upper)
217
+ unset(pname_upper)
218
+ ENDMACRO()
219
+
220
+ MACRO(GET_MODULE_INCLUDED pname module result)
221
+ string(TOUPPER ${module} module_upper)
222
+ string(TOUPPER ${pname} pname_upper)
223
+
224
+ set(${result} "${${pname_upper}_${module_upper}_INCLUDED}")
225
+
226
+ unset(module_upper)
227
+ unset(pname_upper)
228
+ ENDMACRO()
229
+
230
+ MACRO(GET_MODULE_RESURSES headers sources source_dir pname module)
231
+ file(GLOB_RECURSE headers "${source_dir}/${pname}/${module}/*.h")
232
+ file(GLOB_RECURSE sources "${source_dir}/${pname}/${module}/*.c")
233
+
234
+ set(port_dir_name "${source_dir}/${pname}/ports/${LEXBOR_OS_PORT_NAME}/${pname}/${module}")
235
+
236
+ IF(IS_DIRECTORY ${port_dir_name})
237
+ file(GLOB_RECURSE port_headers "${port_dir_name}/*.h")
238
+ file(GLOB_RECURSE port_sources "${port_dir_name}/*.c")
239
+
240
+ LIST(APPEND ${headers} ${port_headers})
241
+ LIST(APPEND ${sources} ${port_sources})
242
+ ENDIF()
243
+ ENDMACRO()
244
+
245
+ MACRO(GET_MODULE_VERSION major minor patch vstr source_dir pname module)
246
+ string(TOUPPER ${module} module_upper)
247
+
248
+ set(version_file "${source_dir}/${pname}/${module}/base.h")
249
+ set(version_prefix "LXB_${module_upper}_VERSION")
250
+
251
+ IF(${module} STREQUAL "core")
252
+ set(version_prefix "LEXBOR_VERSION")
253
+ ENDIF()
254
+
255
+ set(version_cache "${version_prefix}_CACHE")
256
+
257
+ IF(NOT "${${version_cache}}" STREQUAL "")
258
+ set(${vstr} "${${version_cache}}")
259
+ ELSE()
260
+ file(STRINGS ${version_file} VERSION_PARTS
261
+ REGEX "^#define[ \t]+${version_prefix}_(MAJOR|MINOR|PATCH)[ \t]+[0-9]+$")
262
+
263
+ list(GET VERSION_PARTS 0 VERSION_MAJOR_PART)
264
+ list(GET VERSION_PARTS 1 VERSION_MINOR_PART)
265
+ list(GET VERSION_PARTS 2 VERSION_PATCH_PART)
266
+
267
+ string(REGEX REPLACE "#define[ \t]+${version_prefix}_MAJOR[ \t]+([0-9]+).*" "\\1" A ${VERSION_MAJOR_PART})
268
+ string(REGEX REPLACE "#define[ \t]+${version_prefix}_MINOR[ \t]+([0-9]+).*" "\\1" B ${VERSION_MINOR_PART})
269
+ string(REGEX REPLACE "#define[ \t]+${version_prefix}_PATCH[ \t]+([0-9]+).*" "\\1" C ${VERSION_PATCH_PART})
270
+
271
+ set(${major} ${A})
272
+ set(${minor} ${B})
273
+ set(${patch} ${C})
274
+ set(${vstr} "${A}.${B}.${C}")
275
+
276
+ set(${version_cache} "${${vstr}}")
277
+ ENDIF()
278
+ ENDMACRO()
279
+
280
+ MACRO(GET_LEXBOR_VERSION major minor patch vstr)
281
+ file(STRINGS ${LEXBOR_VERSION_FILEPATH} version_part
282
+ REGEX "^LEXBOR_VERSION[ \t]*=[ \t]*[0-9.]+$")
283
+
284
+ string(REGEX REPLACE "LEXBOR_VERSION=([0-9]+).*" "\\1" AV ${version_part})
285
+ string(REGEX REPLACE "LEXBOR_VERSION[ \t]*=[ \t]*[0-9]+.([0-9]+).*" "\\1" BV ${version_part})
286
+ string(REGEX REPLACE "LEXBOR_VERSION[ \t]*=[ \t]*[0-9]+.[0-9]+.([0-9]+).*" "\\1" CV ${version_part})
287
+
288
+ set(${major} ${AV})
289
+ set(${minor} ${BV})
290
+ set(${patch} ${CV})
291
+ set(${vstr} "${AV}.${BV}.${CV}")
292
+ ENDMACRO()
293
+
294
+ MACRO(SET_MODULE_LIB_DEPENDENCIES libname deps postfix)
295
+ IF(NOT ${deps} EQUAL "")
296
+ string(REGEX REPLACE " +" ";" dep_list ${deps})
297
+
298
+ FOREACH(dep ${dep_list})
299
+ set(dep_libname "${PROJECT_NAME}-${dep}${postfix}")
300
+
301
+ add_dependencies(${libname} "${dep_libname}")
302
+ target_link_libraries(${libname} "${dep_libname}")
303
+ ENDFOREACH()
304
+ ENDIF()
305
+ ENDMACRO()
306
+
307
+ MACRO(ADD_MODULE_LIBRARY type libname version_string major)
308
+ target_link_libraries(${libname} ${CMAKE_THREAD_LIBS_INIT})
309
+ set_target_properties(${libname} PROPERTIES OUTPUT_NAME ${libname})
310
+ set_target_properties(${libname} PROPERTIES VERSION ${version_string} SOVERSION ${major})
311
+
312
+ install(TARGETS ${libname}
313
+ RUNTIME DESTINATION "${LEXBOR_INSTALL_DLL_EXE_DIR}"
314
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
315
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
316
+ ENDMACRO()
317
+
318
+ MACRO(INSTALL_MODULE_HEADERS header_path pname module)
319
+ set(dir_search "${header_path}/${pname}/${module}")
320
+
321
+ IF(NOT IS_DIRECTORY "${dir_search}")
322
+ message(FATAL_ERROR "Install headers: \"${dir_search}\" in not a directory.")
323
+ ENDIF()
324
+
325
+ install(DIRECTORY "${dir_search}" DESTINATION "include/${pname}"
326
+ FILES_MATCHING PATTERN "*.h")
327
+
328
+ file(GLOB header_dirs "${dir_search}/*")
329
+
330
+ FOREACH(item ${header_dirs})
331
+ IF(IS_DIRECTORY "${item}")
332
+ install(DIRECTORY "${item}" DESTINATION "include/${pname}/${module}"
333
+ FILES_MATCHING PATTERN "*.h")
334
+ ENDIF()
335
+ ENDFOREACH()
336
+ ENDMACRO()
337
+
338
+ MACRO(MODULE_PRINT module version dep)
339
+ message(STATUS "Append module: ${module} (${version})")
340
+
341
+ IF(LEXBOR_PRINT_MODULE_DEPENDENCIES)
342
+ IF(NOT ${dep} EQUAL "")
343
+ message(" dependencies: ${dep}")
344
+ ENDIF()
345
+ ENDIF()
346
+ ENDMACRO()
347
+
348
+ MACRO(EXECUTABLE_LIST name_prefix sources)
349
+ FOREACH(src ${sources})
350
+ get_filename_component(barename ${src} NAME_WE)
351
+ get_filename_component(build_dir ${src} DIRECTORY)
352
+
353
+ STRING(REGEX REPLACE "^${LEXBOR_DIR_ROOT}" "" build_dir ${build_dir})
354
+ STRING(REGEX REPLACE "^/+" "" build_dir ${build_dir})
355
+ STRING(REGEX REPLACE "/+" "_" build_exe ${build_dir})
356
+
357
+ set(exe_name "${name_prefix}${build_exe}_${barename}")
358
+
359
+ add_executable("${exe_name}" ${src})
360
+ set_target_properties("${exe_name}" PROPERTIES
361
+ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/${build_dir}"
362
+ OUTPUT_NAME "${barename}")
363
+
364
+ IF(WIN32 AND LEXBOR_BUILD_SHARED)
365
+ add_custom_command(TARGET "${exe_name}"
366
+ POST_BUILD
367
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${LEXBOR_LIB_NAME}> $<TARGET_FILE_DIR:${exe_name}>
368
+ COMMENT "Copy dll file to ${CMAKE_CURRENT_BINARY_DIR} directory" VERBATIM
369
+ )
370
+
371
+ IF(TEST_UNIT_LIB_NAME)
372
+ add_custom_command(TARGET "${exe_name}"
373
+ POST_BUILD
374
+ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:${TEST_UNIT_LIB_NAME}> $<TARGET_FILE_DIR:${exe_name}>
375
+ COMMENT "Copy dll file to ${CMAKE_CURRENT_BINARY_DIR} directory" VERBATIM
376
+ )
377
+ ENDIF()
378
+ ENDIF()
379
+
380
+ add_dependencies("${exe_name}" ${ARGN})
381
+ target_link_libraries("${exe_name}" ${ARGN})
382
+ ENDFOREACH()
383
+ ENDMACRO()
384
+
385
+ MACRO(APPEND_TESTS name_prefix sources)
386
+ FOREACH(src ${sources})
387
+ get_filename_component(barename ${src} NAME_WE)
388
+ get_filename_component(build_dir ${src} DIRECTORY)
389
+
390
+ STRING(REGEX REPLACE "^${CMAKE_CURRENT_SOURCE_DIR}" "/" relative_path ${build_dir})
391
+
392
+ set(relative_path "${relative_path}/${barename}")
393
+ STRING(REGEX REPLACE "^/+" "" relative_path ${relative_path})
394
+
395
+ STRING(REGEX REPLACE "/+" "_" arg_name ${relative_path})
396
+ STRING(REGEX REPLACE "^_+" "" arg_name ${arg_name})
397
+
398
+ STRING(REGEX REPLACE "^${LEXBOR_DIR_ROOT}" "" build_dir ${build_dir})
399
+ STRING(REGEX REPLACE "^/+" "" build_dir ${build_dir})
400
+
401
+ IF (NOT "${${arg_name}_arg}" STREQUAL "")
402
+ add_test("${name_prefix}${arg_name}" "${CMAKE_BINARY_DIR}/${build_dir}/${barename}"
403
+ "${${arg_name}_arg}")
404
+ ELSE()
405
+ add_test("${name_prefix}${arg_name}" "${CMAKE_BINARY_DIR}/${build_dir}/${barename}")
406
+ ENDIF()
407
+
408
+ FOREACH(i RANGE 100)
409
+ IF("${${name_prefix}${arg_name}_arg_${i}}" STREQUAL "")
410
+ break()
411
+ ENDIF()
412
+
413
+ add_test("${name_prefix}${barename}_${i}" "${CMAKE_BINARY_DIR}/${build_dir}/${barename}"
414
+ "${${arg_name}_arg_${i}}")
415
+ ENDFOREACH()
416
+ ENDFOREACH()
417
+ ENDMACRO()
418
+
419
+ MACRO(FIND_AND_APPEND_SUB_DIRS npath skip_error)
420
+ FILE(GLOB children ${npath}/ ${npath}/*)
421
+
422
+ FOREACH(child ${children})
423
+ IF(${skip_error} AND NOT EXISTS "${child}/CMakeLists.txt")
424
+ CONTINUE()
425
+ ENDIF()
426
+
427
+ string(REGEX MATCH "\\.[^/]+$" MATCHSTR ${child})
428
+ IF(IS_DIRECTORY ${child} AND MATCHSTR STREQUAL "")
429
+ string(REGEX MATCH "[^/]+$" MATCHSTR ${child})
430
+ IF(NOT MATCHSTR STREQUAL "ports")
431
+ add_subdirectory(${child})
432
+ ELSE()
433
+ IF(EXISTS "${child}/${LEXBOR_OS_PORT_NAME}/port.cmake")
434
+ message(STATUS "Include port: ${child}/${LEXBOR_OS_PORT_NAME}")
435
+ include("${child}/${LEXBOR_OS_PORT_NAME}/port.cmake")
436
+ ENDIF()
437
+
438
+ add_subdirectory("${child}/${LEXBOR_OS_PORT_NAME}")
439
+ ENDIF()
440
+ ENDIF()
441
+ ENDFOREACH()
442
+ ENDMACRO()
443
+
444
+ MACRO(MAKE_RPM_SPEC module libname out_result)
445
+ INCLUDE_MODULE_CONFIG(${PROJECT_NAME} ${module} "${LEXBOR_SOURCE_LEXBOR}/${module}")
446
+
447
+ GET_MODULE_VERSION(major minor patch version_string
448
+ "${LEXBOR_SOURCE}" "${PROJECT_NAME}" ${module})
449
+ GET_MODULE_DEPENDENCIES(${PROJECT_NAME} ${module} deps)
450
+
451
+ set(requires "")
452
+ set(requires_devel "")
453
+
454
+ IF(NOT ${deps} STREQUAL "")
455
+ string(REPLACE " " ";" deps ${deps})
456
+ ENDIF()
457
+
458
+ FOREACH(dep ${deps})
459
+ IF(${dep} STREQUAL "")
460
+ CONTINUE()
461
+ ENDIF()
462
+
463
+ GET_MODULE_VERSION(dep_major dep_minor dep_patch dep_version_string
464
+ "${LEXBOR_SOURCE}" "${PROJECT_NAME}" ${dep})
465
+
466
+ set(dep_libname "${PROJECT_NAME}-${dep}")
467
+ set(requires "${requires}Requires: lib${dep_libname} = %{epoch}:${dep_version_string}-%{release}\n")
468
+ set(requires_devel "${requires_devel}Requires: lib${dep_libname}-devel = %{epoch}:${dep_version_string}-%{release}\n")
469
+ ENDFOREACH()
470
+
471
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/liblexbor-module.spec.in" rpm_module_in)
472
+
473
+ GET_MODULE_DESCRIPTION("${PROJECT_NAME}" ${module} desc)
474
+
475
+ STRING(REGEX REPLACE "%%NAME%%" "${module}" rpm_module_in ${rpm_module_in})
476
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${libname}" rpm_module_in ${rpm_module_in})
477
+ STRING(REGEX REPLACE "%%VERSION%%" "${version_string}" rpm_module_in ${rpm_module_in})
478
+ STRING(REGEX REPLACE "%%REQUIRES%%" "${requires}" rpm_module_in ${rpm_module_in})
479
+ STRING(REGEX REPLACE "%%REQUIRES_DEVEL%%" "${requires_devel}" rpm_module_in ${rpm_module_in})
480
+ STRING(REGEX REPLACE "%%DESCRIPTION%%" "${desc}" rpm_module_in ${rpm_module_in})
481
+
482
+ set(${out_result} ${rpm_module_in})
483
+ ENDMACRO()
484
+
485
+ MACRO(CREATE_RPM_SPEC_FILE)
486
+ set(modules_specs "")
487
+ set(req_modules "")
488
+ set(req_modules_devel "")
489
+
490
+ FOREACH(module ${LEXBOR_MODULES})
491
+ set(libname "${PROJECT_NAME}-${module}")
492
+
493
+ MAKE_RPM_SPEC(${module} ${libname} module_spec)
494
+
495
+ set(modules_specs "${modules_specs}${module_spec}\n")
496
+
497
+ GET_MODULE_VERSION(major minor patch version_string
498
+ "${LEXBOR_SOURCE}" "${PROJECT_NAME}" ${module})
499
+
500
+ set(req_modules "${req_modules}Requires: lib${libname} = %{epoch}:${version_string}-%{release}\n")
501
+ set(req_modules_devel "${req_modules_devel}Requires: lib${libname}-devel = %{epoch}:${version_string}-%{release}\n")
502
+ ENDFOREACH()
503
+
504
+ STRING(STRIP ${modules_specs} modules_specs)
505
+
506
+ set(sorted_modules ${LEXBOR_MODULES})
507
+ LIST(SORT sorted_modules)
508
+
509
+ LIST_TO_COLUMN("${sorted_modules}" "80" ", " modules_names)
510
+
511
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/liblexbor.spec.in"
512
+ rpm_spec_in)
513
+
514
+ STRING(REGEX REPLACE "%%REQUIRES%%" "${req_modules}" rpm_spec_in ${rpm_spec_in})
515
+ STRING(REGEX REPLACE "%%REQUIRES_DEVEL%%" "${req_modules_devel}" rpm_spec_in ${rpm_spec_in})
516
+ STRING(REGEX REPLACE "%%MODULES_SPECS%%" "${modules_specs}" rpm_spec_in ${rpm_spec_in})
517
+ STRING(REGEX REPLACE "%%MODULES_NAMES%%" "${modules_names}" rpm_spec_in ${rpm_spec_in})
518
+
519
+ file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/rpm/liblexbor.spec"
520
+ "${rpm_spec_in}")
521
+
522
+ unset(modules_specs)
523
+ unset(req_modules)
524
+ unset(req_modules_devel)
525
+ ENDMACRO()
526
+
527
+ MACRO(CREATE_DEB_DIRS with_inc module libname arch debian_in_dir debian_dir)
528
+ file(READ "${debian_in_dir}/dirs" dirs)
529
+ file(READ "${debian_in_dir}/dev.dirs" dev_dirs)
530
+ file(READ "${debian_in_dir}/install" inst)
531
+ file(READ "${debian_in_dir}/dev.install" dev_inst)
532
+
533
+ STRING(REGEX REPLACE "%%ARCH%%" "${arch}" dirs "${dirs}")
534
+ STRING(REGEX REPLACE "%%ARCH%%" "${arch}" dev_dirs "${dev_dirs}")
535
+ STRING(REGEX REPLACE "%%ARCH%%" "${arch}" inst "${inst}")
536
+ STRING(REGEX REPLACE "%%ARCH%%" "${arch}" dev_inst "${dev_inst}")
537
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${libname}" inst "${inst}")
538
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${libname}" dev_inst "${dev_inst}")
539
+
540
+ IF(${with_inc})
541
+ IF(NOT ${module} STREQUAL "")
542
+ STRING(REGEX REPLACE "%%INCLUDES%%" "usr/include/lexbor/${module}" dev_dirs "${dev_dirs}")
543
+ STRING(REGEX REPLACE "%%INCLUDES%%" "usr/include/lexbor/${module}" dev_inst "${dev_inst}")
544
+ ELSE()
545
+ STRING(REGEX REPLACE "%%INCLUDES%%" "usr/include/lexbor" dev_dirs "${dev_dirs}")
546
+ STRING(REGEX REPLACE "%%INCLUDES%%" "usr/include/lexbor" dev_inst "${dev_inst}")
547
+ ENDIF()
548
+ ELSE()
549
+ STRING(REGEX REPLACE "%%INCLUDES%%" "" dev_dirs "${dev_dirs}")
550
+ STRING(REGEX REPLACE "%%INCLUDES%%" "" dev_inst "${dev_inst}")
551
+ ENDIF()
552
+
553
+ file(WRITE "${debian_dir}/lib${libname}.dirs" "${dirs}")
554
+ file(WRITE "${debian_dir}/lib${libname}-dev.dirs" "${dev_dirs}")
555
+ file(WRITE "${debian_dir}/lib${libname}.install" "${inst}")
556
+ file(WRITE "${debian_dir}/lib${libname}-dev.install" "${dev_inst}")
557
+
558
+ unset(dirs)
559
+ unset(dev_dirs)
560
+ unset(inst)
561
+ unset(dev_inst)
562
+ ENDMACRO()
563
+
564
+ MACRO(PACKAGE_DEB_CREATE_MAKEFILES)
565
+ set(mkdeps "")
566
+ set(mkmodules "")
567
+
568
+ # Create deps for modules
569
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/packaging/deb/Makefile.module.in" mkmodule_in)
570
+
571
+ FOREACH(module ${LEXBOR_MODULES})
572
+ set(libname "${PROJECT_NAME}-${module}")
573
+ set(module_out "${mkmodule_in}")
574
+ set(deps_cp "")
575
+
576
+ INCLUDE_MODULE_CONFIG(${PROJECT_NAME} ${module} "${LEXBOR_SOURCE_LEXBOR}/${module}")
577
+
578
+ GET_MODULE_VERSION(major minor patch version_string
579
+ "${LEXBOR_SOURCE}" ${PROJECT_NAME} ${module})
580
+ GET_MODULE_DEPENDENCIES(${PROJECT_NAME} ${module} deps)
581
+
582
+ LIST(APPEND mkdeps "lib${libname}")
583
+ LIST(APPEND deps_cp "source/${PROJECT_NAME}/${module}")
584
+ LIST(APPEND deps_cp "source/${PROJECT_NAME}/ports/${LEXBOR_OS_PORT_NAME}/config.cmake")
585
+
586
+ set(port_path "source/${PROJECT_NAME}/ports/${LEXBOR_OS_PORT_NAME}/${PROJECT_NAME}/${module}")
587
+
588
+ IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${port_path}")
589
+ LIST(APPEND deps_cp "${port_path}")
590
+ ENDIF()
591
+
592
+ IF(NOT ${deps} STREQUAL "")
593
+ string(REPLACE " " ";" deps ${deps})
594
+
595
+ FOREACH(dep ${deps})
596
+ LIST(APPEND deps_cp "source/${PROJECT_NAME}/${dep}")
597
+
598
+ set(port_path "source/${PROJECT_NAME}/ports/${LEXBOR_OS_PORT_NAME}/${PROJECT_NAME}/${dep}")
599
+
600
+ IF(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${port_path}")
601
+ LIST(APPEND deps_cp "${port_path}")
602
+ ENDIF()
603
+ ENDFOREACH()
604
+ ENDIF()
605
+
606
+ LIST_JOIN(deps_cp " " deps_cp)
607
+
608
+ STRING(REGEX REPLACE "%%MODULE%%" "${module}" module_out "${module_out}")
609
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${libname}" module_out "${module_out}")
610
+ STRING(REGEX REPLACE "%%MODULE_VERSION%%" "${version_string}" module_out "${module_out}")
611
+ STRING(REGEX REPLACE "%%FOR_COPY%%" "${deps_cp}" module_out "${module_out}")
612
+
613
+ set(mkmodules "${mkmodules}\n# ${module}\n${module_out}")
614
+ ENDFOREACH()
615
+
616
+ # Create Makefile
617
+ file(READ "${CMAKE_CURRENT_SOURCE_DIR}/packaging/deb/Makefile.in" mkfile_in)
618
+
619
+ LIST_JOIN(mkdeps " " mkdeps)
620
+ STRING(REGEX REPLACE "%%MODULES_DEPS%%" "${mkdeps}" mkfile_in "${mkfile_in}")
621
+ STRING(REGEX REPLACE "%%MODULES%%" "${mkmodules}" mkfile_in "${mkfile_in}")
622
+
623
+ file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/packaging/deb/Makefile" "${mkfile_in}")
624
+
625
+ unset(port_path)
626
+ unset(mkdeps)
627
+ unset(mkmodules)
628
+ unset(deps_cp)
629
+ unset(libname)
630
+ unset(mkfile_in)
631
+ unset(module_out)
632
+ unset(mkmodule_in)
633
+ ENDMACRO()
634
+
635
+ MACRO(PACKAGE_DEB_CREATE_DEBIAN_MAIN arch codename curdate)
636
+ set(debian_dir "${CMAKE_CURRENT_SOURCE_DIR}/packaging/deb/debian/${PROJECT_NAME}")
637
+ set(debian_in_dir "${CMAKE_CURRENT_SOURCE_DIR}/packaging/deb/debian_main_in")
638
+
639
+ message(STATUS "Create DEB files for \"${PROJECT_NAME}\": ${debian_dir}")
640
+
641
+ set(deps "${LEXBOR_MODULES}")
642
+
643
+ file(MAKE_DIRECTORY "${debian_dir}/source")
644
+
645
+ # changelog
646
+ file(READ "${debian_in_dir}/changelog" data)
647
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${PROJECT_NAME}" data "${data}")
648
+ STRING(REGEX REPLACE "%%VERSION%%" "${LEXBOR_VERSION_STRING}" data "${data}")
649
+ STRING(REGEX REPLACE "%%DISTRO%%" "${LEXBOR_MAKE_DISTRO_NUM}" data "${data}")
650
+ STRING(REGEX REPLACE "%%CODENAME%%" "${codename}" data "${data}")
651
+ STRING(REGEX REPLACE "%%DATE%%" "${curdate}" data "${data}")
652
+ file(WRITE "${debian_dir}/changelog" "${data}")
653
+
654
+ # compat
655
+ file(COPY "${debian_in_dir}/compat" DESTINATION "${debian_dir}")
656
+
657
+ # docs
658
+ file(COPY "${debian_in_dir}/docs" DESTINATION "${debian_dir}")
659
+
660
+ # rules
661
+ file(COPY "${debian_in_dir}/rules" DESTINATION "${debian_dir}")
662
+
663
+ # source/format
664
+ file(COPY "${debian_in_dir}/source/format" DESTINATION "${debian_dir}/source")
665
+
666
+ # control
667
+ file(READ "${debian_in_dir}/control" data)
668
+ STRING(REGEX REPLACE "%%VERSION_DISTRO%%" "${LEXBOR_VERSION_STRING}-${LEXBOR_MAKE_DISTRO_NUM}~${codename}" data "${data}")
669
+
670
+ # control -- sort modules
671
+ set(sorted_modules ${deps})
672
+ LIST(SORT sorted_modules)
673
+
674
+ LIST_TO_COLUMN("${sorted_modules}" "79" ", " modules_names)
675
+
676
+ IF(NOT ${modules_names} STREQUAL "")
677
+ STRING(REGEX REPLACE "\n" "\n " modules_names ${modules_names})
678
+ STRING(STRIP ${modules_names} modules_names)
679
+ ENDIF()
680
+
681
+ # control -- replace and save
682
+ STRING(REGEX REPLACE "%%NAME%%" "${module}" data "${data}")
683
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${PROJECT_NAME}" data "${data}")
684
+ STRING(REGEX REPLACE "%%MODULES_NAMES%%" "${modules_names}" data ${data})
685
+
686
+ file(WRITE "${debian_dir}/control" "${data}")
687
+
688
+ # copyright
689
+ file(READ "${debian_in_dir}/copyright" data)
690
+
691
+ set(files "")
692
+ string(TIMESTAMP year "%Y")
693
+
694
+ SUBDIRLIST("${CMAKE_CURRENT_SOURCE_DIR}/source" "source/" "/*" dirs_list)
695
+
696
+ LIST(APPEND files ${dirs_list})
697
+ LIST_JOIN(files "\n " files)
698
+
699
+ STRING(REGEX REPLACE "%%YEAR%%" "${year}" data "${data}")
700
+ STRING(REGEX REPLACE "%%FILES%%" "${files}" data "${data}")
701
+
702
+ file(WRITE "${debian_dir}/copyright" "${data}")
703
+
704
+ # dirs and install
705
+ CREATE_DEB_DIRS(TRUE "" ${PROJECT_NAME} "${arch}" "${debian_in_dir}" "${debian_dir}")
706
+ ENDMACRO()
707
+
708
+ MACRO(PACKAGE_DEB_CREATE_DEBIAN arch codename curdate)
709
+ PACKAGE_DEB_CREATE_DEBIAN_MAIN(${arch} "${codename}" "${curdate}")
710
+
711
+ FOREACH(module ${LEXBOR_MODULES})
712
+ set(libname "${PROJECT_NAME}-${module}")
713
+ set(debian_dir "${CMAKE_CURRENT_SOURCE_DIR}/packaging/deb/debian/${module}")
714
+ set(debian_in_dir "${CMAKE_CURRENT_SOURCE_DIR}/packaging/deb/debian_in")
715
+
716
+ message(STATUS "Create DEB files for \"${module}\": ${debian_dir}")
717
+
718
+ INCLUDE_MODULE_CONFIG(${PROJECT_NAME} ${module} "${LEXBOR_SOURCE_LEXBOR}/${module}")
719
+
720
+ GET_MODULE_VERSION(major minor patch version_string
721
+ "${LEXBOR_SOURCE}" ${PROJECT_NAME} ${module})
722
+ GET_MODULE_DEPENDENCIES(${PROJECT_NAME} ${module} deps)
723
+
724
+ IF(NOT "${deps}" STREQUAL "")
725
+ string(REPLACE " " ";" deps ${deps})
726
+ ENDIF()
727
+
728
+ file(MAKE_DIRECTORY "${debian_dir}/source")
729
+
730
+ # changelog
731
+ file(READ "${debian_in_dir}/changelog" data)
732
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${libname}" data "${data}")
733
+ STRING(REGEX REPLACE "%%VERSION%%" "${version_string}" data "${data}")
734
+ STRING(REGEX REPLACE "%%DISTRO%%" "${LEXBOR_MAKE_DISTRO_NUM}" data "${data}")
735
+ STRING(REGEX REPLACE "%%CODENAME%%" "${codename}" data "${data}")
736
+ STRING(REGEX REPLACE "%%DATE%%" "${curdate}" data "${data}")
737
+ file(WRITE "${debian_dir}/changelog" "${data}")
738
+
739
+ # compat
740
+ file(COPY "${debian_in_dir}/compat" DESTINATION "${debian_dir}")
741
+
742
+ # docs
743
+ file(COPY "${debian_in_dir}/docs" DESTINATION "${debian_dir}")
744
+
745
+ # rules
746
+ file(COPY "${debian_in_dir}/rules" DESTINATION "${debian_dir}")
747
+
748
+ # source/format
749
+ file(COPY "${debian_in_dir}/source/format" DESTINATION "${debian_dir}/source")
750
+
751
+ # control
752
+ file(READ "${debian_in_dir}/control" data)
753
+
754
+ # control -- Depends
755
+ set(version_distro "${version_string}-${LEXBOR_MAKE_DISTRO_NUM}~${codename}")
756
+
757
+ set(requires "\${misc:Depends}, \${shlibs:Depends}")
758
+ set(requires_devel "\${misc:Depends}")
759
+ set(requires_devel "lib${libname} (= ${version_distro})")
760
+
761
+ FOREACH(dep ${deps})
762
+ IF("${dep}" STREQUAL "")
763
+ CONTINUE()
764
+ ENDIF()
765
+
766
+ GET_MODULE_VERSION(dep_major dep_minor dep_patch dep_version_string
767
+ "${LEXBOR_SOURCE}" "${PROJECT_NAME}" ${dep})
768
+
769
+ set(dep_version_distro "${dep_version_string}-${LEXBOR_MAKE_DISTRO_NUM}~${codename}")
770
+
771
+ set(dep_libname "${PROJECT_NAME}-${dep}")
772
+ LIST(APPEND requires "lib${dep_libname} (= ${dep_version_distro})")
773
+ LIST(APPEND requires_devel "lib${dep_libname}-dev (= ${dep_version_distro})")
774
+ ENDFOREACH()
775
+
776
+ LIST_JOIN(requires ",\n " requires)
777
+ LIST_JOIN(requires_devel ",\n " requires_devel)
778
+
779
+ set(requires "Depends: ${requires}\n")
780
+ set(requires_devel "Depends: ${requires_devel}\n")
781
+
782
+ # control -- description
783
+ GET_MODULE_DESCRIPTION("${PROJECT_NAME}" ${module} desc)
784
+
785
+ IF(NOT "${desc}" STREQUAL "")
786
+ STRING(REGEX REPLACE "\n" "\n " desc ${desc})
787
+ STRING(STRIP ${desc} desc)
788
+ set(desc " ${desc}")
789
+ ENDIF()
790
+
791
+ IF(NOT "${desc}" STREQUAL "")
792
+ STRING(REGEX REPLACE "(^|\n) (\n|$)" "\\1 .\\2" desc ${desc})
793
+ ENDIF()
794
+
795
+ # control -- replace and save
796
+ STRING(REGEX REPLACE "%%NAME%%" "${module}" data "${data}")
797
+ STRING(REGEX REPLACE "%%LIBNAME%%" "${libname}" data "${data}")
798
+ STRING(REGEX REPLACE "%%DEPENDS%%" "${requires}" data ${data})
799
+ STRING(REGEX REPLACE "%%DEPENDS_DEVEL%%" "${requires_devel}" data ${data})
800
+ STRING(REGEX REPLACE "%%DESCRIPTION%%" "${desc}" data ${data})
801
+
802
+ file(WRITE "${debian_dir}/control" "${data}")
803
+
804
+ # copyright
805
+ file(READ "${debian_in_dir}/copyright" data)
806
+
807
+ set(files "")
808
+ set(deps_with "${deps};${module}")
809
+ string(TIMESTAMP year "%Y")
810
+
811
+ FOREACH(dep ${deps_with})
812
+ IF("${dep}" STREQUAL "")
813
+ CONTINUE()
814
+ ENDIF()
815
+
816
+ SUBDIRLIST("${CMAKE_CURRENT_SOURCE_DIR}/source/${PROJECT_NAME}/${dep}"
817
+ "source/${PROJECT_NAME}/${dep}/" "/*" dirs_list)
818
+ LIST(APPEND files "source/${PROJECT_NAME}/${dep}/*")
819
+ LIST(APPEND files ${dirs_list})
820
+ ENDFOREACH()
821
+
822
+ LIST_JOIN(files "\n " files)
823
+
824
+ STRING(REGEX REPLACE "%%NAME%%" "${module}" data "${data}")
825
+ STRING(REGEX REPLACE "%%YEAR%%" "${year}" data "${data}")
826
+ STRING(REGEX REPLACE "%%FILES%%" "${files}" data "${data}")
827
+
828
+ file(WRITE "${debian_dir}/copyright" "${data}")
829
+
830
+ # dirs and install
831
+ CREATE_DEB_DIRS(TRUE ${module} ${libname} "${arch}" "${debian_in_dir}"
832
+ "${debian_dir}")
833
+ ENDFOREACH()
834
+
835
+ unset(requires)
836
+ unset(requires_devel)
837
+ unset(dirs_list)
838
+ unset(files)
839
+ unset(year)
840
+ unset(deps)
841
+ unset(data)
842
+ unset(debian_in_dir)
843
+ unset(debian_dir)
844
+ unset(dep_libname)
845
+ unset(libname)
846
+ unset(arch)
847
+ ENDMACRO()
848
+
849
+ MACRO(CREATE_DEB_FILES)
850
+ execute_process(COMMAND "dpkg-architecture" "-qDEB_HOST_MULTIARCH"
851
+ OUTPUT_VARIABLE arch)
852
+
853
+ IF("${arch}" STREQUAL "")
854
+ message(FATAL_ERROR "Failed to get current architecture")
855
+ ENDIF()
856
+
857
+ execute_process(COMMAND "lsb_release" "-cs" OUTPUT_VARIABLE codename)
858
+
859
+ IF("${codename}" STREQUAL "")
860
+ message(FATAL_ERROR "Failed to get current codename")
861
+ ENDIF()
862
+
863
+ execute_process(COMMAND "date" "+%a, %d %b %Y %T +0300"
864
+ OUTPUT_VARIABLE curdate)
865
+
866
+ IF("${curdate}" STREQUAL "")
867
+ message(FATAL_ERROR "Failed to get current date")
868
+ ENDIF()
869
+
870
+ STRING(STRIP ${arch} arch)
871
+ STRING(STRIP ${codename} codename)
872
+ STRING(STRIP ${curdate} curdate)
873
+
874
+ PACKAGE_DEB_CREATE_MAKEFILES(${arch})
875
+ PACKAGE_DEB_CREATE_DEBIAN(${arch} "${codename}" "${curdate}")
876
+
877
+ unset(arch)
878
+ unset(codename)
879
+ unset(curdate)
880
+ ENDMACRO()
881
+
882
+ ################
883
+ ## ARGS
884
+ #########################
885
+ IF(LEXBOR_WITHOUT_THREADS)
886
+ message(STATUS "Build without Threads")
887
+ add_definitions(-DLEXBOR_WITHOUT_THREADS)
888
+ ELSE()
889
+ message(STATUS "Build with Threads")
890
+ ENDIF()