falcata 1.0.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (825) hide show
  1. falcata-1.0.0rc1/CMakeLists.txt +1017 -0
  2. falcata-1.0.0rc1/LICENSE +23 -0
  3. falcata-1.0.0rc1/NOTICE +41 -0
  4. falcata-1.0.0rc1/PKG-INFO +182 -0
  5. falcata-1.0.0rc1/README.rst +130 -0
  6. falcata-1.0.0rc1/cmake/IntegratedOpenCL.cmake +217 -0
  7. falcata-1.0.0rc1/cmake/Sanitizer.cmake +51 -0
  8. falcata-1.0.0rc1/cmake/modules/FindLibR.cmake +267 -0
  9. falcata-1.0.0rc1/cmake/modules/FindNCCL.cmake +84 -0
  10. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/accumulate.hpp +193 -0
  11. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/adjacent_difference.hpp +126 -0
  12. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/adjacent_find.hpp +169 -0
  13. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/all_of.hpp +42 -0
  14. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/any_of.hpp +46 -0
  15. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/binary_search.hpp +43 -0
  16. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/copy.hpp +881 -0
  17. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/copy_if.hpp +67 -0
  18. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/copy_n.hpp +55 -0
  19. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/count.hpp +62 -0
  20. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/count_if.hpp +69 -0
  21. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/balanced_path.hpp +162 -0
  22. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/binary_find.hpp +133 -0
  23. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/compact.hpp +77 -0
  24. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/copy_on_device.hpp +199 -0
  25. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/copy_to_device.hpp +204 -0
  26. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/copy_to_host.hpp +207 -0
  27. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_ballot.hpp +78 -0
  28. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_reduce.hpp +87 -0
  29. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/count_if_with_threads.hpp +129 -0
  30. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema.hpp +70 -0
  31. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_on_cpu.hpp +138 -0
  32. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_atomics.hpp +108 -0
  33. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/find_extrema_with_reduce.hpp +444 -0
  34. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/find_if_with_atomics.hpp +213 -0
  35. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/inplace_reduce.hpp +136 -0
  36. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/insertion_sort.hpp +165 -0
  37. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/merge_path.hpp +116 -0
  38. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_cpu.hpp +366 -0
  39. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/merge_sort_on_gpu.hpp +602 -0
  40. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/merge_with_merge_path.hpp +203 -0
  41. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/radix_sort.hpp +469 -0
  42. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/random_fill.hpp +57 -0
  43. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/reduce_by_key.hpp +119 -0
  44. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/reduce_by_key_with_scan.hpp +541 -0
  45. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/reduce_on_cpu.hpp +110 -0
  46. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/reduce_on_gpu.hpp +286 -0
  47. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/scan.hpp +45 -0
  48. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/scan_on_cpu.hpp +205 -0
  49. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/scan_on_gpu.hpp +330 -0
  50. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/search_all.hpp +86 -0
  51. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/serial_accumulate.hpp +56 -0
  52. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/serial_count_if.hpp +68 -0
  53. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/serial_find_extrema.hpp +87 -0
  54. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/serial_merge.hpp +97 -0
  55. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/serial_reduce.hpp +63 -0
  56. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/serial_reduce_by_key.hpp +106 -0
  57. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/detail/serial_scan.hpp +103 -0
  58. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/equal.hpp +62 -0
  59. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/equal_range.hpp +48 -0
  60. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/exclusive_scan.hpp +109 -0
  61. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/fill.hpp +313 -0
  62. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/fill_n.hpp +42 -0
  63. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/find.hpp +63 -0
  64. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/find_end.hpp +144 -0
  65. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/find_if.hpp +41 -0
  66. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/find_if_not.hpp +49 -0
  67. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/for_each.hpp +72 -0
  68. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/for_each_n.hpp +41 -0
  69. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/gather.hpp +91 -0
  70. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/generate.hpp +55 -0
  71. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/generate_n.hpp +37 -0
  72. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/includes.hpp +162 -0
  73. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/inclusive_scan.hpp +92 -0
  74. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/inner_product.hpp +103 -0
  75. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/inplace_merge.hpp +66 -0
  76. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/iota.hpp +54 -0
  77. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/is_partitioned.hpp +49 -0
  78. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/is_permutation.hpp +73 -0
  79. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/is_sorted.hpp +71 -0
  80. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/lexicographical_compare.hpp +126 -0
  81. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/lower_bound.hpp +50 -0
  82. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/max_element.hpp +82 -0
  83. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/merge.hpp +116 -0
  84. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/min_element.hpp +82 -0
  85. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/minmax_element.hpp +78 -0
  86. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/mismatch.hpp +98 -0
  87. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/next_permutation.hpp +175 -0
  88. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/none_of.hpp +42 -0
  89. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/nth_element.hpp +94 -0
  90. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/partial_sum.hpp +46 -0
  91. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/partition.hpp +45 -0
  92. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/partition_copy.hpp +72 -0
  93. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/partition_point.hpp +52 -0
  94. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/prev_permutation.hpp +175 -0
  95. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/random_shuffle.hpp +90 -0
  96. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/reduce.hpp +310 -0
  97. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/reduce_by_key.hpp +137 -0
  98. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/remove.hpp +60 -0
  99. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/remove_if.hpp +53 -0
  100. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/replace.hpp +96 -0
  101. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/replace_copy.hpp +70 -0
  102. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/reverse.hpp +80 -0
  103. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/reverse_copy.hpp +87 -0
  104. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/rotate.hpp +56 -0
  105. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/rotate_copy.hpp +43 -0
  106. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/scatter.hpp +107 -0
  107. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/scatter_if.hpp +131 -0
  108. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/search.hpp +80 -0
  109. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/search_n.hpp +146 -0
  110. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/set_difference.hpp +191 -0
  111. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/set_intersection.hpp +179 -0
  112. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/set_symmetric_difference.hpp +204 -0
  113. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/set_union.hpp +204 -0
  114. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/sort.hpp +207 -0
  115. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/sort_by_key.hpp +168 -0
  116. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/stable_partition.hpp +78 -0
  117. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/stable_sort.hpp +115 -0
  118. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/stable_sort_by_key.hpp +168 -0
  119. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/swap_ranges.hpp +52 -0
  120. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/transform.hpp +87 -0
  121. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/transform_if.hpp +123 -0
  122. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/transform_reduce.hpp +100 -0
  123. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/unique.hpp +73 -0
  124. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/unique_copy.hpp +175 -0
  125. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm/upper_bound.hpp +49 -0
  126. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/algorithm.hpp +94 -0
  127. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/allocator/buffer_allocator.hpp +118 -0
  128. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/allocator/pinned_allocator.hpp +53 -0
  129. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/allocator.hpp +21 -0
  130. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/async/future.hpp +196 -0
  131. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/async/wait.hpp +56 -0
  132. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/async/wait_guard.hpp +63 -0
  133. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/async.hpp +21 -0
  134. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/buffer.hpp +227 -0
  135. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/cl.hpp +52 -0
  136. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/cl_ext.hpp +22 -0
  137. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/closure.hpp +347 -0
  138. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/command_queue.hpp +2008 -0
  139. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/config.hpp +66 -0
  140. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/array.hpp +317 -0
  141. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/basic_string.hpp +331 -0
  142. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/detail/scalar.hpp +62 -0
  143. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/dynamic_bitset.hpp +237 -0
  144. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/flat_map.hpp +406 -0
  145. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/flat_set.hpp +339 -0
  146. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/mapped_view.hpp +250 -0
  147. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/stack.hpp +81 -0
  148. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/string.hpp +25 -0
  149. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/valarray.hpp +500 -0
  150. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container/vector.hpp +823 -0
  151. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/container.hpp +27 -0
  152. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/context.hpp +245 -0
  153. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/core.hpp +33 -0
  154. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/assert_cl_success.hpp +24 -0
  155. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/buffer_value.hpp +180 -0
  156. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/cl_versions.hpp +64 -0
  157. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/device_ptr.hpp +215 -0
  158. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/diagnostic.hpp +112 -0
  159. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/duration.hpp +54 -0
  160. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/get_object_info.hpp +284 -0
  161. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/getenv.hpp +36 -0
  162. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/global_static.hpp +37 -0
  163. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/is_buffer_iterator.hpp +30 -0
  164. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/is_contiguous_iterator.hpp +118 -0
  165. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/iterator_plus_distance.hpp +53 -0
  166. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/iterator_range_size.hpp +44 -0
  167. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/iterator_traits.hpp +35 -0
  168. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/literal.hpp +53 -0
  169. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/lru_cache.hpp +139 -0
  170. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/meta_kernel.hpp +1145 -0
  171. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/mpl_vector_to_tuple.hpp +65 -0
  172. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/nvidia_compute_capability.hpp +61 -0
  173. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/parameter_cache.hpp +223 -0
  174. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/path.hpp +73 -0
  175. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/print_range.hpp +82 -0
  176. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/read_write_single_value.hpp +78 -0
  177. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/sha1.hpp +58 -0
  178. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/variadic_macros.hpp +35 -0
  179. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/vendor.hpp +50 -0
  180. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/detail/work_size.hpp +37 -0
  181. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/device.hpp +673 -0
  182. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/event.hpp +338 -0
  183. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/exception/context_error.hpp +88 -0
  184. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/exception/no_device_found.hpp +48 -0
  185. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/exception/opencl_error.hpp +158 -0
  186. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/exception/program_build_failure.hpp +58 -0
  187. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/exception/unsupported_extension_error.hpp +71 -0
  188. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/exception.hpp +23 -0
  189. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/experimental/clamp_range.hpp +49 -0
  190. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/experimental/malloc.hpp +51 -0
  191. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/experimental/sort_by_transform.hpp +66 -0
  192. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/experimental/tabulate.hpp +44 -0
  193. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/function.hpp +467 -0
  194. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/as.hpp +51 -0
  195. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/atomic.hpp +141 -0
  196. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/bind.hpp +261 -0
  197. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/common.hpp +29 -0
  198. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/convert.hpp +51 -0
  199. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/detail/macros.hpp +35 -0
  200. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/detail/nvidia_ballot.hpp +48 -0
  201. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/detail/nvidia_popcount.hpp +42 -0
  202. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/detail/unpack.hpp +143 -0
  203. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/field.hpp +86 -0
  204. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/geometry.hpp +32 -0
  205. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/get.hpp +76 -0
  206. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/hash.hpp +91 -0
  207. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/identity.hpp +64 -0
  208. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/integer.hpp +30 -0
  209. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/logical.hpp +208 -0
  210. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/math.hpp +80 -0
  211. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/operator.hpp +100 -0
  212. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/popcount.hpp +55 -0
  213. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional/relational.hpp +39 -0
  214. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/functional.hpp +34 -0
  215. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image/image1d.hpp +204 -0
  216. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image/image2d.hpp +262 -0
  217. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image/image3d.hpp +265 -0
  218. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image/image_format.hpp +135 -0
  219. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image/image_object.hpp +170 -0
  220. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image/image_sampler.hpp +221 -0
  221. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image.hpp +25 -0
  222. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image2d.hpp +12 -0
  223. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image3d.hpp +12 -0
  224. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image_format.hpp +12 -0
  225. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/image_sampler.hpp +12 -0
  226. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/eigen/core.hpp +72 -0
  227. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/eigen.hpp +16 -0
  228. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opencv/core.hpp +141 -0
  229. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opencv/highgui.hpp +33 -0
  230. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opencv/ocl.hpp +51 -0
  231. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opencv.hpp +17 -0
  232. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/acquire.hpp +100 -0
  233. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/cl_gl.hpp +22 -0
  234. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/cl_gl_ext.hpp +22 -0
  235. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/context.hpp +139 -0
  236. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/gl.hpp +20 -0
  237. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/opengl_buffer.hpp +106 -0
  238. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/opengl_renderbuffer.hpp +129 -0
  239. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl/opengl_texture.hpp +133 -0
  240. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/opengl.hpp +24 -0
  241. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/qt/qimage.hpp +69 -0
  242. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/qt/qpoint.hpp +20 -0
  243. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/qt/qpointf.hpp +20 -0
  244. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/qt/qtcore.hpp +18 -0
  245. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/qt/qtgui.hpp +16 -0
  246. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/qt/qvector.hpp +48 -0
  247. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/qt.hpp +17 -0
  248. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/vtk/bounds.hpp +59 -0
  249. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/vtk/data_array.hpp +65 -0
  250. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/vtk/matrix4x4.hpp +46 -0
  251. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/vtk/points.hpp +55 -0
  252. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/interop/vtk.hpp +19 -0
  253. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/buffer_iterator.hpp +295 -0
  254. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/constant_buffer_iterator.hpp +209 -0
  255. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/constant_iterator.hpp +171 -0
  256. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/counting_iterator.hpp +185 -0
  257. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/detail/get_base_iterator_buffer.hpp +52 -0
  258. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/detail/swizzle_iterator.hpp +188 -0
  259. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/discard_iterator.hpp +170 -0
  260. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/function_input_iterator.hpp +186 -0
  261. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/permutation_iterator.hpp +192 -0
  262. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/strided_iterator.hpp +298 -0
  263. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/transform_iterator.hpp +227 -0
  264. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator/zip_iterator.hpp +316 -0
  265. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/iterator.hpp +28 -0
  266. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/kernel.hpp +538 -0
  267. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/context.hpp +364 -0
  268. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/functional.hpp +597 -0
  269. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/get.hpp +148 -0
  270. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/make_pair.hpp +70 -0
  271. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/make_tuple.hpp +127 -0
  272. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/placeholder.hpp +28 -0
  273. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/placeholders.hpp +93 -0
  274. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda/result_of.hpp +113 -0
  275. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/lambda.hpp +22 -0
  276. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/memory/local_buffer.hpp +91 -0
  277. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/memory/svm_ptr.hpp +184 -0
  278. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/memory.hpp +21 -0
  279. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/memory_object.hpp +264 -0
  280. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/pipe.hpp +154 -0
  281. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/platform.hpp +258 -0
  282. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/program.hpp +799 -0
  283. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/bernoulli_distribution.hpp +100 -0
  284. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/default_random_engine.hpp +24 -0
  285. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/discrete_distribution.hpp +160 -0
  286. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/linear_congruential_engine.hpp +238 -0
  287. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/mersenne_twister_engine.hpp +254 -0
  288. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/normal_distribution.hpp +140 -0
  289. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/threefry_engine.hpp +318 -0
  290. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/uniform_int_distribution.hpp +119 -0
  291. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random/uniform_real_distribution.hpp +116 -0
  292. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/random.hpp +28 -0
  293. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/source.hpp +12 -0
  294. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/svm.hpp +72 -0
  295. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/system.hpp +288 -0
  296. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/common_type.hpp +55 -0
  297. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/detail/capture_traits.hpp +33 -0
  298. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/is_device_iterator.hpp +39 -0
  299. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/is_fundamental.hpp +58 -0
  300. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/is_vector_type.hpp +38 -0
  301. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/make_vector_type.hpp +71 -0
  302. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/result_of.hpp +39 -0
  303. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/scalar_type.hpp +72 -0
  304. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/type_definition.hpp +42 -0
  305. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/type_name.hpp +124 -0
  306. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits/vector_size.hpp +65 -0
  307. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/type_traits.hpp +25 -0
  308. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types/builtin.hpp +12 -0
  309. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types/complex.hpp +196 -0
  310. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types/fundamental.hpp +217 -0
  311. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types/pair.hpp +117 -0
  312. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types/size_t.hpp +60 -0
  313. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types/struct.hpp +173 -0
  314. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types/tuple.hpp +220 -0
  315. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/types.hpp +25 -0
  316. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/user_event.hpp +88 -0
  317. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/utility/dim.hpp +76 -0
  318. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/utility/extents.hpp +164 -0
  319. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/utility/invoke.hpp +71 -0
  320. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/utility/program_cache.hpp +172 -0
  321. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/utility/source.hpp +39 -0
  322. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/utility/wait_list.hpp +217 -0
  323. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/utility.hpp +21 -0
  324. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/version.hpp +18 -0
  325. falcata-1.0.0rc1/external_libs/compute/include/boost/compute/wait_list.hpp +12 -0
  326. falcata-1.0.0rc1/external_libs/compute/include/boost/compute.hpp +44 -0
  327. falcata-1.0.0rc1/external_libs/eigen/CMakeLists.txt +653 -0
  328. falcata-1.0.0rc1/external_libs/eigen/Eigen/Cholesky +45 -0
  329. falcata-1.0.0rc1/external_libs/eigen/Eigen/Core +384 -0
  330. falcata-1.0.0rc1/external_libs/eigen/Eigen/Dense +7 -0
  331. falcata-1.0.0rc1/external_libs/eigen/Eigen/Eigenvalues +60 -0
  332. falcata-1.0.0rc1/external_libs/eigen/Eigen/Geometry +59 -0
  333. falcata-1.0.0rc1/external_libs/eigen/Eigen/Householder +29 -0
  334. falcata-1.0.0rc1/external_libs/eigen/Eigen/Jacobi +32 -0
  335. falcata-1.0.0rc1/external_libs/eigen/Eigen/LU +47 -0
  336. falcata-1.0.0rc1/external_libs/eigen/Eigen/QR +50 -0
  337. falcata-1.0.0rc1/external_libs/eigen/Eigen/SVD +50 -0
  338. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Cholesky/LDLT.h +688 -0
  339. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Cholesky/LLT.h +558 -0
  340. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Cholesky/LLT_LAPACKE.h +99 -0
  341. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/ArithmeticSequence.h +413 -0
  342. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Array.h +417 -0
  343. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/ArrayBase.h +226 -0
  344. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/ArrayWrapper.h +209 -0
  345. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Assign.h +90 -0
  346. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/AssignEvaluator.h +1010 -0
  347. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Assign_MKL.h +178 -0
  348. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/BandMatrix.h +353 -0
  349. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Block.h +448 -0
  350. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/BooleanRedux.h +162 -0
  351. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CommaInitializer.h +164 -0
  352. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/ConditionEstimator.h +175 -0
  353. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CoreEvaluators.h +1741 -0
  354. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CoreIterators.h +132 -0
  355. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CwiseBinaryOp.h +183 -0
  356. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CwiseNullaryOp.h +1001 -0
  357. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CwiseTernaryOp.h +197 -0
  358. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CwiseUnaryOp.h +103 -0
  359. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/CwiseUnaryView.h +132 -0
  360. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/DenseBase.h +701 -0
  361. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/DenseCoeffsBase.h +685 -0
  362. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/DenseStorage.h +652 -0
  363. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Diagonal.h +258 -0
  364. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/DiagonalMatrix.h +391 -0
  365. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/DiagonalProduct.h +28 -0
  366. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Dot.h +318 -0
  367. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/EigenBase.h +160 -0
  368. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/ForceAlignedAccess.h +150 -0
  369. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Fuzzy.h +155 -0
  370. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/GeneralProduct.h +465 -0
  371. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/GenericPacketMath.h +1040 -0
  372. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/GlobalFunctions.h +194 -0
  373. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/IO.h +258 -0
  374. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/IndexedView.h +237 -0
  375. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Inverse.h +117 -0
  376. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Map.h +171 -0
  377. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/MapBase.h +310 -0
  378. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/MathFunctions.h +2057 -0
  379. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/MathFunctionsImpl.h +200 -0
  380. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Matrix.h +565 -0
  381. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/MatrixBase.h +547 -0
  382. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/NestByValue.h +85 -0
  383. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/NoAlias.h +109 -0
  384. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/NumTraits.h +335 -0
  385. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/PartialReduxEvaluator.h +232 -0
  386. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/PermutationMatrix.h +605 -0
  387. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/PlainObjectBase.h +1128 -0
  388. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Product.h +191 -0
  389. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/ProductEvaluators.h +1179 -0
  390. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Random.h +218 -0
  391. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Redux.h +515 -0
  392. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Ref.h +381 -0
  393. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Replicate.h +142 -0
  394. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Reshaped.h +454 -0
  395. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/ReturnByValue.h +119 -0
  396. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Reverse.h +217 -0
  397. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Select.h +164 -0
  398. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/SelfAdjointView.h +365 -0
  399. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/SelfCwiseBinaryOp.h +47 -0
  400. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Solve.h +188 -0
  401. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/SolveTriangular.h +235 -0
  402. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/SolverBase.h +168 -0
  403. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/StableNorm.h +251 -0
  404. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/StlIterators.h +463 -0
  405. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Stride.h +116 -0
  406. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Swap.h +68 -0
  407. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Transpose.h +464 -0
  408. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Transpositions.h +386 -0
  409. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/TriangularMatrix.h +1001 -0
  410. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/VectorBlock.h +96 -0
  411. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/VectorwiseOp.h +784 -0
  412. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/Visitor.h +381 -0
  413. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX/Complex.h +372 -0
  414. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX/MathFunctions.h +228 -0
  415. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX/PacketMath.h +1574 -0
  416. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX/TypeCasting.h +115 -0
  417. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX512/Complex.h +422 -0
  418. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX512/MathFunctions.h +362 -0
  419. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX512/PacketMath.h +2303 -0
  420. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AVX512/TypeCasting.h +89 -0
  421. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AltiVec/Complex.h +417 -0
  422. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MathFunctions.h +90 -0
  423. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProduct.h +2937 -0
  424. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductCommon.h +221 -0
  425. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AltiVec/MatrixProductMMA.h +629 -0
  426. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h +2711 -0
  427. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/CUDA/Complex.h +258 -0
  428. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/Default/BFloat16.h +700 -0
  429. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/Default/ConjHelper.h +117 -0
  430. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h +1649 -0
  431. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h +110 -0
  432. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/Default/Half.h +942 -0
  433. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/Default/Settings.h +49 -0
  434. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/Default/TypeCasting.h +120 -0
  435. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/GPU/MathFunctions.h +103 -0
  436. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/GPU/PacketMath.h +1685 -0
  437. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/GPU/TypeCasting.h +80 -0
  438. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/HIP/hcc/math_constants.h +23 -0
  439. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/MSA/Complex.h +648 -0
  440. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/MSA/MathFunctions.h +387 -0
  441. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/MSA/PacketMath.h +1233 -0
  442. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/NEON/Complex.h +584 -0
  443. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/NEON/GeneralBlockPanelKernel.h +183 -0
  444. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/NEON/MathFunctions.h +75 -0
  445. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/NEON/PacketMath.h +4587 -0
  446. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/NEON/TypeCasting.h +1419 -0
  447. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SSE/Complex.h +351 -0
  448. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SSE/MathFunctions.h +199 -0
  449. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SSE/PacketMath.h +1505 -0
  450. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SSE/TypeCasting.h +142 -0
  451. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SVE/MathFunctions.h +44 -0
  452. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SVE/PacketMath.h +752 -0
  453. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SVE/TypeCasting.h +49 -0
  454. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SYCL/InteropHeaders.h +232 -0
  455. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SYCL/MathFunctions.h +301 -0
  456. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SYCL/PacketMath.h +670 -0
  457. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SYCL/SyclMemoryModel.h +694 -0
  458. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/SYCL/TypeCasting.h +85 -0
  459. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/ZVector/Complex.h +426 -0
  460. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/ZVector/MathFunctions.h +233 -0
  461. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/arch/ZVector/PacketMath.h +1060 -0
  462. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/functors/AssignmentFunctors.h +177 -0
  463. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/functors/BinaryFunctors.h +541 -0
  464. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/functors/NullaryFunctors.h +189 -0
  465. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/functors/StlFunctors.h +166 -0
  466. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/functors/TernaryFunctors.h +25 -0
  467. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/functors/UnaryFunctors.h +1131 -0
  468. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h +2645 -0
  469. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h +517 -0
  470. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h +317 -0
  471. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h +145 -0
  472. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h +124 -0
  473. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixVector.h +518 -0
  474. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/GeneralMatrixVector_BLAS.h +136 -0
  475. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/Parallelizer.h +180 -0
  476. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h +544 -0
  477. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h +295 -0
  478. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h +262 -0
  479. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h +118 -0
  480. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/SelfadjointProduct.h +133 -0
  481. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/SelfadjointRank2Update.h +94 -0
  482. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h +472 -0
  483. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h +317 -0
  484. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixVector.h +350 -0
  485. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/TriangularMatrixVector_BLAS.h +255 -0
  486. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/TriangularSolverMatrix.h +337 -0
  487. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h +167 -0
  488. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/products/TriangularSolverVector.h +148 -0
  489. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/BlasUtil.h +583 -0
  490. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/ConfigureVectorization.h +512 -0
  491. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/Constants.h +563 -0
  492. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/DisableStupidWarnings.h +106 -0
  493. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/ForwardDeclarations.h +322 -0
  494. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/IndexedViewHelper.h +186 -0
  495. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/IntegralConstant.h +272 -0
  496. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/MKL_support.h +137 -0
  497. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/Macros.h +1464 -0
  498. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/Memory.h +1163 -0
  499. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/Meta.h +812 -0
  500. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/NonMPL2.h +3 -0
  501. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/ReenableStupidWarnings.h +31 -0
  502. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/ReshapedHelper.h +51 -0
  503. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/StaticAssert.h +221 -0
  504. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/SymbolicIndex.h +293 -0
  505. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Core/util/XprHelper.h +856 -0
  506. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h +346 -0
  507. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/ComplexSchur.h +462 -0
  508. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h +91 -0
  509. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/EigenSolver.h +622 -0
  510. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h +418 -0
  511. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h +226 -0
  512. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h +374 -0
  513. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h +158 -0
  514. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/RealQZ.h +657 -0
  515. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/RealSchur.h +558 -0
  516. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/RealSchur_LAPACKE.h +77 -0
  517. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h +904 -0
  518. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h +87 -0
  519. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Eigenvalues/Tridiagonalization.h +561 -0
  520. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/AlignedBox.h +486 -0
  521. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/AngleAxis.h +247 -0
  522. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/EulerAngles.h +114 -0
  523. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Homogeneous.h +501 -0
  524. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Hyperplane.h +282 -0
  525. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/OrthoMethods.h +235 -0
  526. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/ParametrizedLine.h +232 -0
  527. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Quaternion.h +870 -0
  528. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Rotation2D.h +199 -0
  529. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/RotationBase.h +206 -0
  530. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Scaling.h +188 -0
  531. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Transform.h +1563 -0
  532. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Translation.h +202 -0
  533. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/Umeyama.h +166 -0
  534. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Geometry/arch/Geometry_SIMD.h +168 -0
  535. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Householder/BlockHouseholder.h +110 -0
  536. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Householder/Householder.h +176 -0
  537. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Householder/HouseholderSequence.h +545 -0
  538. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/Jacobi/Jacobi.h +483 -0
  539. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/LU/Determinant.h +117 -0
  540. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/LU/FullPivLU.h +877 -0
  541. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/LU/InverseImpl.h +432 -0
  542. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/LU/PartialPivLU.h +624 -0
  543. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/LU/PartialPivLU_LAPACKE.h +83 -0
  544. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/LU/arch/InverseSize4.h +351 -0
  545. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/QR/ColPivHouseholderQR.h +674 -0
  546. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h +97 -0
  547. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/QR/CompleteOrthogonalDecomposition.h +635 -0
  548. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/QR/FullPivHouseholderQR.h +713 -0
  549. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/QR/HouseholderQR.h +434 -0
  550. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/QR/HouseholderQR_LAPACKE.h +68 -0
  551. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/SVD/BDCSVD.h +1366 -0
  552. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/SVD/JacobiSVD.h +812 -0
  553. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/SVD/JacobiSVD_LAPACKE.h +91 -0
  554. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/SVD/SVDBase.h +376 -0
  555. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/SVD/UpperBidiagonalization.h +414 -0
  556. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/misc/Image.h +82 -0
  557. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/misc/Kernel.h +79 -0
  558. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/misc/RealSvd2x2.h +55 -0
  559. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/misc/blas.h +440 -0
  560. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/misc/lapack.h +152 -0
  561. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/misc/lapacke.h +16292 -0
  562. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/misc/lapacke_mangling.h +17 -0
  563. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h +358 -0
  564. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h +696 -0
  565. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/BlockMethods.h +1442 -0
  566. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h +115 -0
  567. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h +177 -0
  568. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/IndexedViewMethods.h +262 -0
  569. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h +152 -0
  570. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h +95 -0
  571. falcata-1.0.0rc1/external_libs/eigen/Eigen/src/plugins/ReshapedMethods.h +149 -0
  572. falcata-1.0.0rc1/external_libs/fast_double_parser/CMakeLists.txt +101 -0
  573. falcata-1.0.0rc1/external_libs/fast_double_parser/LICENSE +201 -0
  574. falcata-1.0.0rc1/external_libs/fast_double_parser/LICENSE.BSL +25 -0
  575. falcata-1.0.0rc1/external_libs/fast_double_parser/include/fast_double_parser.h +1270 -0
  576. falcata-1.0.0rc1/external_libs/fmt/CMakeLists.txt +101 -0
  577. falcata-1.0.0rc1/external_libs/fmt/LICENSE +27 -0
  578. falcata-1.0.0rc1/external_libs/fmt/include/fmt/args.h +220 -0
  579. falcata-1.0.0rc1/external_libs/fmt/include/fmt/base.h +2958 -0
  580. falcata-1.0.0rc1/external_libs/fmt/include/fmt/chrono.h +2338 -0
  581. falcata-1.0.0rc1/external_libs/fmt/include/fmt/color.h +610 -0
  582. falcata-1.0.0rc1/external_libs/fmt/include/fmt/compile.h +551 -0
  583. falcata-1.0.0rc1/external_libs/fmt/include/fmt/core.h +5 -0
  584. falcata-1.0.0rc1/external_libs/fmt/include/fmt/format-inl.h +1949 -0
  585. falcata-1.0.0rc1/external_libs/fmt/include/fmt/format.h +4232 -0
  586. falcata-1.0.0rc1/external_libs/fmt/include/fmt/os.h +427 -0
  587. falcata-1.0.0rc1/external_libs/fmt/include/fmt/ostream.h +166 -0
  588. falcata-1.0.0rc1/external_libs/fmt/include/fmt/printf.h +633 -0
  589. falcata-1.0.0rc1/external_libs/fmt/include/fmt/ranges.h +848 -0
  590. falcata-1.0.0rc1/external_libs/fmt/include/fmt/std.h +726 -0
  591. falcata-1.0.0rc1/external_libs/fmt/include/fmt/xchar.h +373 -0
  592. falcata-1.0.0rc1/external_libs/nanoarrow/CMakeLists.txt +862 -0
  593. falcata-1.0.0rc1/external_libs/nanoarrow/LICENSE.txt +208 -0
  594. falcata-1.0.0rc1/external_libs/nanoarrow/NOTICE.txt +5 -0
  595. falcata-1.0.0rc1/external_libs/nanoarrow/cmake/config.cmake.in +38 -0
  596. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/common/array.c +1672 -0
  597. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/common/array_stream.c +155 -0
  598. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/common/inline_array.h +1382 -0
  599. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/common/inline_buffer.h +730 -0
  600. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/common/inline_types.h +1046 -0
  601. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/common/schema.c +1729 -0
  602. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/common/utils.c +561 -0
  603. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/hpp/array_stream.hpp +204 -0
  604. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/hpp/buffer.hpp +85 -0
  605. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/hpp/exception.hpp +79 -0
  606. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/hpp/operators.hpp +62 -0
  607. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/hpp/unique.hpp +226 -0
  608. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/hpp/view.hpp +428 -0
  609. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/nanoarrow.h +1285 -0
  610. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/nanoarrow.hpp +30 -0
  611. falcata-1.0.0rc1/external_libs/nanoarrow/src/nanoarrow/nanoarrow_config.h.in +39 -0
  612. falcata-1.0.0rc1/falcata/VERSION.txt +1 -0
  613. falcata-1.0.0rc1/falcata/__init__.py +82 -0
  614. falcata-1.0.0rc1/falcata/__main__.py +78 -0
  615. falcata-1.0.0rc1/falcata/basic.py +5784 -0
  616. falcata-1.0.0rc1/falcata/callback.py +511 -0
  617. falcata-1.0.0rc1/falcata/compat.py +223 -0
  618. falcata-1.0.0rc1/falcata/dask.py +1749 -0
  619. falcata-1.0.0rc1/falcata/engine.py +872 -0
  620. falcata-1.0.0rc1/falcata/importers.py +575 -0
  621. falcata-1.0.0rc1/falcata/libpath.py +95 -0
  622. falcata-1.0.0rc1/falcata/plotting.py +849 -0
  623. falcata-1.0.0rc1/falcata/py.typed +0 -0
  624. falcata-1.0.0rc1/falcata/sklearn.py +1968 -0
  625. falcata-1.0.0rc1/include/Falcata/application.h +93 -0
  626. falcata-1.0.0rc1/include/Falcata/arrow.h +90 -0
  627. falcata-1.0.0rc1/include/Falcata/bin.h +686 -0
  628. falcata-1.0.0rc1/include/Falcata/boosting.h +355 -0
  629. falcata-1.0.0rc1/include/Falcata/c_api.h +1809 -0
  630. falcata-1.0.0rc1/include/Falcata/c_api_compat.h +122 -0
  631. falcata-1.0.0rc1/include/Falcata/config.h +1398 -0
  632. falcata-1.0.0rc1/include/Falcata/cuda/cuda_algorithms.hpp +668 -0
  633. falcata-1.0.0rc1/include/Falcata/cuda/cuda_bagging.hpp +46 -0
  634. falcata-1.0.0rc1/include/Falcata/cuda/cuda_column_data.hpp +221 -0
  635. falcata-1.0.0rc1/include/Falcata/cuda/cuda_metadata.hpp +59 -0
  636. falcata-1.0.0rc1/include/Falcata/cuda/cuda_metric.hpp +50 -0
  637. falcata-1.0.0rc1/include/Falcata/cuda/cuda_nccl_topology.hpp +253 -0
  638. falcata-1.0.0rc1/include/Falcata/cuda/cuda_objective_function.hpp +103 -0
  639. falcata-1.0.0rc1/include/Falcata/cuda/cuda_random.hpp +77 -0
  640. falcata-1.0.0rc1/include/Falcata/cuda/cuda_rocm_interop.h +71 -0
  641. falcata-1.0.0rc1/include/Falcata/cuda/cuda_row_data.hpp +247 -0
  642. falcata-1.0.0rc1/include/Falcata/cuda/cuda_split_info.hpp +130 -0
  643. falcata-1.0.0rc1/include/Falcata/cuda/cuda_tree.hpp +306 -0
  644. falcata-1.0.0rc1/include/Falcata/cuda/cuda_utils.hu +407 -0
  645. falcata-1.0.0rc1/include/Falcata/cuda/pack_codecs.hpp +392 -0
  646. falcata-1.0.0rc1/include/Falcata/cuda/vector_cudahost.h +99 -0
  647. falcata-1.0.0rc1/include/Falcata/dataset.h +1155 -0
  648. falcata-1.0.0rc1/include/Falcata/dataset_loader.h +111 -0
  649. falcata-1.0.0rc1/include/Falcata/export.h +26 -0
  650. falcata-1.0.0rc1/include/Falcata/falcata_plan.h +318 -0
  651. falcata-1.0.0rc1/include/Falcata/feature_group.h +659 -0
  652. falcata-1.0.0rc1/include/Falcata/meta.h +97 -0
  653. falcata-1.0.0rc1/include/Falcata/metric.h +146 -0
  654. falcata-1.0.0rc1/include/Falcata/network.h +318 -0
  655. falcata-1.0.0rc1/include/Falcata/objective_function.h +142 -0
  656. falcata-1.0.0rc1/include/Falcata/prediction_early_stop.h +37 -0
  657. falcata-1.0.0rc1/include/Falcata/sample_strategy.h +91 -0
  658. falcata-1.0.0rc1/include/Falcata/train_share_states.h +367 -0
  659. falcata-1.0.0rc1/include/Falcata/tree.h +742 -0
  660. falcata-1.0.0rc1/include/Falcata/tree_learner.h +119 -0
  661. falcata-1.0.0rc1/include/Falcata/tree_split_math.h +95 -0
  662. falcata-1.0.0rc1/include/Falcata/utils/array_args.h +200 -0
  663. falcata-1.0.0rc1/include/Falcata/utils/binary_writer.h +59 -0
  664. falcata-1.0.0rc1/include/Falcata/utils/byte_buffer.h +63 -0
  665. falcata-1.0.0rc1/include/Falcata/utils/chunked_array.hpp +261 -0
  666. falcata-1.0.0rc1/include/Falcata/utils/common.h +1304 -0
  667. falcata-1.0.0rc1/include/Falcata/utils/file_io.h +79 -0
  668. falcata-1.0.0rc1/include/Falcata/utils/json11.h +226 -0
  669. falcata-1.0.0rc1/include/Falcata/utils/log.h +186 -0
  670. falcata-1.0.0rc1/include/Falcata/utils/openmp_wrapper.h +136 -0
  671. falcata-1.0.0rc1/include/Falcata/utils/pipeline_reader.h +72 -0
  672. falcata-1.0.0rc1/include/Falcata/utils/random.h +118 -0
  673. falcata-1.0.0rc1/include/Falcata/utils/text_reader.h +360 -0
  674. falcata-1.0.0rc1/include/Falcata/utils/threading.h +201 -0
  675. falcata-1.0.0rc1/include/Falcata/utils/yamc/alternate_shared_mutex.hpp +212 -0
  676. falcata-1.0.0rc1/include/Falcata/utils/yamc/yamc_rwlock_sched.hpp +149 -0
  677. falcata-1.0.0rc1/include/Falcata/utils/yamc/yamc_shared_lock.hpp +199 -0
  678. falcata-1.0.0rc1/pyproject.toml +269 -0
  679. falcata-1.0.0rc1/src/application/application.cpp +296 -0
  680. falcata-1.0.0rc1/src/application/predictor.hpp +303 -0
  681. falcata-1.0.0rc1/src/arrow/array.hpp +413 -0
  682. falcata-1.0.0rc1/src/boosting/bagging.hpp +324 -0
  683. falcata-1.0.0rc1/src/boosting/boosting.cpp +112 -0
  684. falcata-1.0.0rc1/src/boosting/cuda/cuda_bagging.cu +118 -0
  685. falcata-1.0.0rc1/src/boosting/cuda/cuda_score_updater.cpp +93 -0
  686. falcata-1.0.0rc1/src/boosting/cuda/cuda_score_updater.cu +46 -0
  687. falcata-1.0.0rc1/src/boosting/cuda/cuda_score_updater.hpp +66 -0
  688. falcata-1.0.0rc1/src/boosting/cuda/nccl_gbdt.cpp +230 -0
  689. falcata-1.0.0rc1/src/boosting/cuda/nccl_gbdt.hpp +152 -0
  690. falcata-1.0.0rc1/src/boosting/cuda/nccl_gbdt_component.hpp +125 -0
  691. falcata-1.0.0rc1/src/boosting/dart.hpp +212 -0
  692. falcata-1.0.0rc1/src/boosting/falb.h +256 -0
  693. falcata-1.0.0rc1/src/boosting/gbdt.cpp +896 -0
  694. falcata-1.0.0rc1/src/boosting/gbdt.h +647 -0
  695. falcata-1.0.0rc1/src/boosting/gbdt_model_binary.cpp +855 -0
  696. falcata-1.0.0rc1/src/boosting/gbdt_model_text.cpp +667 -0
  697. falcata-1.0.0rc1/src/boosting/gbdt_prediction.cpp +100 -0
  698. falcata-1.0.0rc1/src/boosting/goss.hpp +173 -0
  699. falcata-1.0.0rc1/src/boosting/prediction_early_stop.cpp +94 -0
  700. falcata-1.0.0rc1/src/boosting/rf.hpp +237 -0
  701. falcata-1.0.0rc1/src/boosting/sample_strategy.cpp +28 -0
  702. falcata-1.0.0rc1/src/boosting/score_updater.hpp +129 -0
  703. falcata-1.0.0rc1/src/c_api.cpp +3618 -0
  704. falcata-1.0.0rc1/src/cuda/cuda_algorithms.cu +472 -0
  705. falcata-1.0.0rc1/src/cuda/cuda_utils.cpp +61 -0
  706. falcata-1.0.0rc1/src/io/bin.cpp +1077 -0
  707. falcata-1.0.0rc1/src/io/config.cpp +643 -0
  708. falcata-1.0.0rc1/src/io/config_auto.cpp +1116 -0
  709. falcata-1.0.0rc1/src/io/cuda/cuda_column_data.cpp +313 -0
  710. falcata-1.0.0rc1/src/io/cuda/cuda_column_data.cu +77 -0
  711. falcata-1.0.0rc1/src/io/cuda/cuda_dense_binner.cpp +585 -0
  712. falcata-1.0.0rc1/src/io/cuda/cuda_dense_binner.cu +284 -0
  713. falcata-1.0.0rc1/src/io/cuda/cuda_dense_binner.hpp +61 -0
  714. falcata-1.0.0rc1/src/io/cuda/cuda_metadata.cpp +79 -0
  715. falcata-1.0.0rc1/src/io/cuda/cuda_row_data.cpp +903 -0
  716. falcata-1.0.0rc1/src/io/cuda/cuda_tree.cpp +475 -0
  717. falcata-1.0.0rc1/src/io/cuda/cuda_tree.cu +650 -0
  718. falcata-1.0.0rc1/src/io/dataset.cpp +2356 -0
  719. falcata-1.0.0rc1/src/io/dataset_loader.cpp +1592 -0
  720. falcata-1.0.0rc1/src/io/dense_bin.hpp +668 -0
  721. falcata-1.0.0rc1/src/io/file_io.cpp +74 -0
  722. falcata-1.0.0rc1/src/io/json11.cpp +785 -0
  723. falcata-1.0.0rc1/src/io/metadata.cpp +950 -0
  724. falcata-1.0.0rc1/src/io/multi_val_dense_bin.hpp +360 -0
  725. falcata-1.0.0rc1/src/io/multi_val_sparse_bin.hpp +449 -0
  726. falcata-1.0.0rc1/src/io/parser.cpp +319 -0
  727. falcata-1.0.0rc1/src/io/parser.hpp +136 -0
  728. falcata-1.0.0rc1/src/io/sparse_bin.hpp +858 -0
  729. falcata-1.0.0rc1/src/io/train_share_states.cpp +540 -0
  730. falcata-1.0.0rc1/src/io/tree.cpp +1060 -0
  731. falcata-1.0.0rc1/src/main.cpp +46 -0
  732. falcata-1.0.0rc1/src/metric/binary_metric.hpp +389 -0
  733. falcata-1.0.0rc1/src/metric/cuda/cuda_binary_metric.cpp +35 -0
  734. falcata-1.0.0rc1/src/metric/cuda/cuda_binary_metric.hpp +73 -0
  735. falcata-1.0.0rc1/src/metric/cuda/cuda_pointwise_metric.cpp +52 -0
  736. falcata-1.0.0rc1/src/metric/cuda/cuda_pointwise_metric.cu +89 -0
  737. falcata-1.0.0rc1/src/metric/cuda/cuda_pointwise_metric.hpp +46 -0
  738. falcata-1.0.0rc1/src/metric/cuda/cuda_regression_metric.cpp +53 -0
  739. falcata-1.0.0rc1/src/metric/cuda/cuda_regression_metric.hpp +216 -0
  740. falcata-1.0.0rc1/src/metric/dcg_calculator.cpp +174 -0
  741. falcata-1.0.0rc1/src/metric/map_metric.hpp +169 -0
  742. falcata-1.0.0rc1/src/metric/metric.cpp +147 -0
  743. falcata-1.0.0rc1/src/metric/multiclass_metric.hpp +440 -0
  744. falcata-1.0.0rc1/src/metric/rank_metric.hpp +170 -0
  745. falcata-1.0.0rc1/src/metric/regression_metric.hpp +433 -0
  746. falcata-1.0.0rc1/src/metric/xentropy_metric.hpp +359 -0
  747. falcata-1.0.0rc1/src/network/linker_topo.cpp +182 -0
  748. falcata-1.0.0rc1/src/network/linkers.h +329 -0
  749. falcata-1.0.0rc1/src/network/linkers_mpi.cpp +64 -0
  750. falcata-1.0.0rc1/src/network/linkers_socket.cpp +241 -0
  751. falcata-1.0.0rc1/src/network/network.cpp +332 -0
  752. falcata-1.0.0rc1/src/network/socket_wrapper.hpp +333 -0
  753. falcata-1.0.0rc1/src/objective/binary_objective.hpp +239 -0
  754. falcata-1.0.0rc1/src/objective/cuda/cuda_binary_objective.cpp +58 -0
  755. falcata-1.0.0rc1/src/objective/cuda/cuda_binary_objective.cu +230 -0
  756. falcata-1.0.0rc1/src/objective/cuda/cuda_binary_objective.hpp +64 -0
  757. falcata-1.0.0rc1/src/objective/cuda/cuda_multiclass_objective.cpp +63 -0
  758. falcata-1.0.0rc1/src/objective/cuda/cuda_multiclass_objective.cu +109 -0
  759. falcata-1.0.0rc1/src/objective/cuda/cuda_multiclass_objective.hpp +79 -0
  760. falcata-1.0.0rc1/src/objective/cuda/cuda_rank_objective.cpp +69 -0
  761. falcata-1.0.0rc1/src/objective/cuda/cuda_rank_objective.cu +1140 -0
  762. falcata-1.0.0rc1/src/objective/cuda/cuda_rank_objective.hpp +127 -0
  763. falcata-1.0.0rc1/src/objective/cuda/cuda_regression_objective.cpp +116 -0
  764. falcata-1.0.0rc1/src/objective/cuda/cuda_regression_objective.cu +513 -0
  765. falcata-1.0.0rc1/src/objective/cuda/cuda_regression_objective.hpp +186 -0
  766. falcata-1.0.0rc1/src/objective/multi_regression_objective.hpp +168 -0
  767. falcata-1.0.0rc1/src/objective/multiclass_objective.hpp +280 -0
  768. falcata-1.0.0rc1/src/objective/objective_function.cpp +171 -0
  769. falcata-1.0.0rc1/src/objective/rank_objective.hpp +466 -0
  770. falcata-1.0.0rc1/src/objective/regression_objective.hpp +764 -0
  771. falcata-1.0.0rc1/src/objective/xentropy_objective.hpp +317 -0
  772. falcata-1.0.0rc1/src/treelearner/col_sampler.hpp +208 -0
  773. falcata-1.0.0rc1/src/treelearner/cost_effective_gradient_boosting.hpp +175 -0
  774. falcata-1.0.0rc1/src/treelearner/cuda/cuda_best_split_finder.cpp +649 -0
  775. falcata-1.0.0rc1/src/treelearner/cuda/cuda_best_split_finder.cu +3780 -0
  776. falcata-1.0.0rc1/src/treelearner/cuda/cuda_best_split_finder.hpp +616 -0
  777. falcata-1.0.0rc1/src/treelearner/cuda/cuda_construct_jit.cpp +458 -0
  778. falcata-1.0.0rc1/src/treelearner/cuda/cuda_construct_jit.hpp +114 -0
  779. falcata-1.0.0rc1/src/treelearner/cuda/cuda_data_partition.cpp +746 -0
  780. falcata-1.0.0rc1/src/treelearner/cuda/cuda_data_partition.cu +2264 -0
  781. falcata-1.0.0rc1/src/treelearner/cuda/cuda_data_partition.hpp +697 -0
  782. falcata-1.0.0rc1/src/treelearner/cuda/cuda_feature_parallel.hpp +87 -0
  783. falcata-1.0.0rc1/src/treelearner/cuda/cuda_gradient_discretizer.cu +445 -0
  784. falcata-1.0.0rc1/src/treelearner/cuda/cuda_gradient_discretizer.hpp +141 -0
  785. falcata-1.0.0rc1/src/treelearner/cuda/cuda_histogram_constructor.cpp +1223 -0
  786. falcata-1.0.0rc1/src/treelearner/cuda/cuda_histogram_constructor.cu +3604 -0
  787. falcata-1.0.0rc1/src/treelearner/cuda/cuda_histogram_constructor.hpp +900 -0
  788. falcata-1.0.0rc1/src/treelearner/cuda/cuda_hybrid_graph.cu +622 -0
  789. falcata-1.0.0rc1/src/treelearner/cuda/cuda_hybrid_graph.hpp +360 -0
  790. falcata-1.0.0rc1/src/treelearner/cuda/cuda_leaf_splits.cpp +98 -0
  791. falcata-1.0.0rc1/src/treelearner/cuda/cuda_leaf_splits.cu +420 -0
  792. falcata-1.0.0rc1/src/treelearner/cuda/cuda_leaf_splits.hpp +277 -0
  793. falcata-1.0.0rc1/src/treelearner/cuda/cuda_single_gpu_tree_learner.cpp +4308 -0
  794. falcata-1.0.0rc1/src/treelearner/cuda/cuda_single_gpu_tree_learner.cu +691 -0
  795. falcata-1.0.0rc1/src/treelearner/cuda/cuda_single_gpu_tree_learner.hpp +741 -0
  796. falcata-1.0.0rc1/src/treelearner/data_parallel_tree_learner.cpp +470 -0
  797. falcata-1.0.0rc1/src/treelearner/data_partition.hpp +171 -0
  798. falcata-1.0.0rc1/src/treelearner/feature_histogram.cpp +746 -0
  799. falcata-1.0.0rc1/src/treelearner/feature_histogram.hpp +1581 -0
  800. falcata-1.0.0rc1/src/treelearner/feature_parallel_tree_learner.cpp +84 -0
  801. falcata-1.0.0rc1/src/treelearner/gpu_tree_learner.cpp +1132 -0
  802. falcata-1.0.0rc1/src/treelearner/gpu_tree_learner.h +288 -0
  803. falcata-1.0.0rc1/src/treelearner/gradient_discretizer.cpp +263 -0
  804. falcata-1.0.0rc1/src/treelearner/gradient_discretizer.hpp +129 -0
  805. falcata-1.0.0rc1/src/treelearner/leaf_splits.hpp +277 -0
  806. falcata-1.0.0rc1/src/treelearner/linear_leaf_solver.h +92 -0
  807. falcata-1.0.0rc1/src/treelearner/linear_tree_learner.cpp +375 -0
  808. falcata-1.0.0rc1/src/treelearner/linear_tree_learner.h +130 -0
  809. falcata-1.0.0rc1/src/treelearner/monotone_constraints.hpp +1187 -0
  810. falcata-1.0.0rc1/src/treelearner/ocl/histogram16.cl +767 -0
  811. falcata-1.0.0rc1/src/treelearner/ocl/histogram256.cl +792 -0
  812. falcata-1.0.0rc1/src/treelearner/ocl/histogram64.cl +743 -0
  813. falcata-1.0.0rc1/src/treelearner/parallel_tree_learner.h +236 -0
  814. falcata-1.0.0rc1/src/treelearner/serial_tree_learner.cpp +1122 -0
  815. falcata-1.0.0rc1/src/treelearner/serial_tree_learner.h +261 -0
  816. falcata-1.0.0rc1/src/treelearner/split_info.hpp +294 -0
  817. falcata-1.0.0rc1/src/treelearner/tree_learner.cpp +78 -0
  818. falcata-1.0.0rc1/src/treelearner/voting_parallel_tree_learner.cpp +515 -0
  819. falcata-1.0.0rc1/src/utils/openmp_wrapper.cpp +44 -0
  820. falcata-1.0.0rc1/swig/ChunkedArray_API_extensions.i +28 -0
  821. falcata-1.0.0rc1/swig/StringArray.hpp +141 -0
  822. falcata-1.0.0rc1/swig/StringArray.i +98 -0
  823. falcata-1.0.0rc1/swig/StringArray_API_extensions.i +148 -0
  824. falcata-1.0.0rc1/swig/falcatalib.i +289 -0
  825. falcata-1.0.0rc1/swig/pointer_manipulation.i +151 -0
@@ -0,0 +1,1017 @@
1
+ cmake_minimum_required(VERSION 3.28)
2
+
3
+ option(USE_MPI "Enable MPI-based distributed learning" OFF)
4
+ option(USE_OPENMP "Enable OpenMP" ON)
5
+ option(USE_GPU "Enable GPU-accelerated training" OFF)
6
+ option(USE_SWIG "Enable SWIG to generate Java API" OFF)
7
+ option(USE_TIMETAG "Set to ON to output time costs" OFF)
8
+ option(USE_CUDA "Enable CUDA-accelerated training " OFF)
9
+ # OFF by default: NCCL has no official Windows distribution and only multi-GPU
10
+ # training needs it. Pass -DUSE_NCCL=ON (with BUILD_WITH_SHARED_NCCL=ON
11
+ # recommended on newer archs) for multi-GPU builds.
12
+ option(USE_NCCL "Enable NCCL for multi-GPU CUDA training (requires USE_CUDA)" OFF)
13
+ option(USE_ROCM "Enable ROCm-accelerated training " OFF)
14
+ option(USE_DEBUG "Set to ON for Debug mode" OFF)
15
+ option(USE_SANITIZER "Use sanitizer flags" OFF)
16
+ # Applies to GNU/Clang and nvcc. Never applied to the R-package build: CRAN
17
+ # rejects -Werror, and R's own headers warn under -Wextra.
18
+ option(USE_WERROR "Treat compiler warnings as errors" ON)
19
+ set(
20
+ ENABLED_SANITIZERS
21
+ "address" "leak" "undefined"
22
+ CACHE
23
+ STRING
24
+ "Semicolon separated list of sanitizer names, e.g., 'address;leak'. \
25
+ Supported sanitizers are address, leak, undefined and thread."
26
+ )
27
+ option(USE_HOMEBREW_FALLBACK "(macOS-only) also look in 'brew --prefix' for libraries (e.g. OpenMP)" ON)
28
+ option(BUILD_CLI "Build the 'falcata' command-line interface in addition to lib_falcata" ON)
29
+ option(BUILD_CPP_TEST "Build C++ tests with Google Test" OFF)
30
+ option(BUILD_STATIC_LIB "Build static library" OFF)
31
+ option(INSTALL_HEADERS "Install headers to CMAKE_INSTALL_PREFIX (e.g. '/usr/local/include')" ON)
32
+ option(__BUILD_FOR_PYTHON "Set to ON if building lib_falcata for use with the Python-package" OFF)
33
+ option(__BUILD_FOR_R "Set to ON if building lib_falcata for use with the R-package" OFF)
34
+ option(__INTEGRATE_OPENCL "Set to ON if building Falcata with the OpenCL ICD Loader and its dependencies included" OFF)
35
+
36
+ # If using Visual Studio generators, always target v10.x of the Windows SDK.
37
+ # Doing this avoids lookups that could fall back to very old versions, e.g. by finding
38
+ # outdated registry entries.
39
+ # ref: https://cmake.org/cmake/help/latest/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.html
40
+ if(CMAKE_GENERATOR MATCHES "Visual Studio")
41
+ set(CMAKE_SYSTEM_VERSION 10.0 CACHE INTERNAL "target Windows SDK version" FORCE)
42
+ endif()
43
+
44
+ project(falcata LANGUAGES C CXX)
45
+
46
+ set(CMAKE_CXX_STANDARD 17)
47
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
48
+
49
+ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules")
50
+
51
+ #-- Sanitizer
52
+ if(USE_SANITIZER)
53
+ if(MSVC)
54
+ message(FATAL_ERROR "Sanitizers are not supported with MSVC.")
55
+ endif()
56
+ include(cmake/Sanitizer.cmake)
57
+ enable_sanitizers("${ENABLED_SANITIZERS}")
58
+ endif()
59
+
60
+ if(__INTEGRATE_OPENCL)
61
+ set(__INTEGRATE_OPENCL ON CACHE BOOL "" FORCE)
62
+ set(USE_GPU OFF CACHE BOOL "" FORCE)
63
+ message(STATUS "Building library with integrated OpenCL components")
64
+ endif()
65
+
66
+ if(__BUILD_FOR_PYTHON OR __BUILD_FOR_R OR USE_SWIG)
67
+ # the SWIG wrapper, the Python and R packages don't require the CLI
68
+ set(BUILD_CLI OFF)
69
+ # installing the SWIG wrapper, the R and Python packages shouldn't place LightGBM's headers
70
+ # outside of where the package is installed
71
+ set(INSTALL_HEADERS OFF)
72
+ endif()
73
+
74
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
75
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.8.2")
76
+ message(FATAL_ERROR "Insufficient gcc version (${CMAKE_CXX_COMPILER_VERSION})")
77
+ endif()
78
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
79
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "3.8")
80
+ message(FATAL_ERROR "Insufficient Clang version (${CMAKE_CXX_COMPILER_VERSION})")
81
+ endif()
82
+ elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
83
+ if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "8.1.0")
84
+ message(FATAL_ERROR "Insufficient AppleClang version (${CMAKE_CXX_COMPILER_VERSION})")
85
+ endif()
86
+ elseif(MSVC)
87
+ if(MSVC_VERSION LESS 1900)
88
+ message(FATAL_ERROR "Insufficient MSVC version (${MSVC_VERSION})")
89
+ endif()
90
+ endif()
91
+
92
+ if(USE_SWIG)
93
+ find_package(SWIG REQUIRED)
94
+ find_package(Java REQUIRED)
95
+ find_package(JNI REQUIRED)
96
+ include(UseJava)
97
+ include(UseSWIG)
98
+ set(SWIG_CXX_EXTENSION "cxx")
99
+ set(SWIG_EXTRA_LIBRARIES "")
100
+ set(SWIG_JAVA_EXTRA_FILE_EXTENSIONS ".java" "JNI.java")
101
+ set(SWIG_MODULE_JAVA_LANGUAGE "JAVA")
102
+ set(SWIG_MODULE_JAVA_SWIG_LANGUAGE_FLAG "java")
103
+ set(CMAKE_SWIG_OUTDIR "${CMAKE_CURRENT_BINARY_DIR}/java")
104
+ include_directories(Java_INCLUDE_DIRS)
105
+ include_directories(JNI_INCLUDE_DIRS)
106
+ include_directories($ENV{JAVA_HOME}/include)
107
+ if(WIN32)
108
+ set(FLC_SWIG_DESTINATION_DIR "${CMAKE_CURRENT_BINARY_DIR}/ai/falcata/windows/x86_64")
109
+ include_directories($ENV{JAVA_HOME}/include/win32)
110
+ elseif(APPLE)
111
+ set(FLC_SWIG_DESTINATION_DIR "${CMAKE_CURRENT_BINARY_DIR}/ai/falcata/osx/x86_64")
112
+ include_directories($ENV{JAVA_HOME}/include/darwin)
113
+ else()
114
+ set(FLC_SWIG_DESTINATION_DIR "${CMAKE_CURRENT_BINARY_DIR}/ai/falcata/linux/x86_64")
115
+ include_directories($ENV{JAVA_HOME}/include/linux)
116
+ endif()
117
+ file(MAKE_DIRECTORY "${FLC_SWIG_DESTINATION_DIR}")
118
+ endif()
119
+
120
+ set(EIGEN_DIR "${PROJECT_SOURCE_DIR}/external_libs/eigen")
121
+ # SYSTEM: vendored headers must not produce warnings we then promote to errors.
122
+ include_directories(SYSTEM ${EIGEN_DIR})
123
+
124
+ # See https://gitlab.com/libeigen/eigen/-/blob/master/COPYING.README
125
+ add_definitions(-DEIGEN_MPL2_ONLY)
126
+ add_definitions(-DEIGEN_DONT_PARALLELIZE)
127
+
128
+ set(FAST_DOUBLE_PARSER_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/external_libs/fast_double_parser/include")
129
+ include_directories(SYSTEM ${FAST_DOUBLE_PARSER_INCLUDE_DIR})
130
+
131
+ set(FMT_INCLUDE_DIR "${PROJECT_SOURCE_DIR}/external_libs/fmt/include")
132
+ include_directories(SYSTEM ${FMT_INCLUDE_DIR})
133
+
134
+ if(BUILD_CPP_TEST AND MSVC)
135
+ # Use /MT flag to statically link the C runtime. Must be set before
136
+ # add_subdirectory(nanoarrow) so the bundled library uses the same runtime
137
+ # as the test executable; otherwise linking fails with unresolved __imp_*
138
+ # symbols (e.g. __imp_realloc).
139
+ set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
140
+ endif()
141
+
142
+ # nanoarrow is only needed by the Arrow-based C API entry points, which are
143
+ # disabled for the R package (the R API never calls them). Skipping the
144
+ # subdirectory keeps the package tarball free of nanoarrow sources, which
145
+ # would otherwise trigger CRAN warnings about diagnostic-suppressing pragmas.
146
+ if(NOT __BUILD_FOR_R)
147
+ add_subdirectory("${PROJECT_SOURCE_DIR}/external_libs/nanoarrow" EXCLUDE_FROM_ALL)
148
+ if(NOT BUILD_STATIC_LIB)
149
+ set_target_properties(nanoarrow_static PROPERTIES POSITION_INDEPENDENT_CODE ON)
150
+ endif()
151
+ endif()
152
+
153
+ if(__BUILD_FOR_R)
154
+ find_package(LibR REQUIRED)
155
+ message(STATUS "LIBR_EXECUTABLE: ${LIBR_EXECUTABLE}")
156
+ message(STATUS "LIBR_INCLUDE_DIRS: ${LIBR_INCLUDE_DIRS}")
157
+ message(STATUS "LIBR_LIBS_DIR: ${LIBR_LIBS_DIR}")
158
+ message(STATUS "LIBR_CORE_LIBRARY: ${LIBR_CORE_LIBRARY}")
159
+ include_directories(${LIBR_INCLUDE_DIRS})
160
+ add_definitions(-DLGB_R_BUILD)
161
+ endif()
162
+
163
+ if(USE_TIMETAG)
164
+ add_definitions(-DTIMETAG)
165
+ endif()
166
+
167
+ if(USE_DEBUG)
168
+ add_definitions(-DDEBUG)
169
+ endif()
170
+
171
+ if(USE_MPI)
172
+ find_package(MPI REQUIRED)
173
+ add_definitions(-DUSE_MPI)
174
+ else()
175
+ add_definitions(-DUSE_SOCKET)
176
+ endif()
177
+
178
+ # The Python build turns USE_CUDA on by default, which is right everywhere CUDA
179
+ # can exist. Apple dropped CUDA support entirely, so honouring it there only
180
+ # produces a confusing configure failure -- fall back to the CPU build instead.
181
+ if(USE_CUDA AND APPLE)
182
+ message(STATUS "USE_CUDA=ON ignored on macOS (no CUDA toolkit exists for it): building CPU-only.")
183
+ set(USE_CUDA OFF CACHE BOOL "Enable CUDA-accelerated training " FORCE)
184
+ endif()
185
+
186
+ if(USE_CUDA)
187
+ set(CMAKE_CUDA_HOST_COMPILER "${CMAKE_CXX_COMPILER}")
188
+ enable_language(CUDA)
189
+ set(USE_OPENMP ON CACHE BOOL "CUDA requires OpenMP" FORCE)
190
+ endif()
191
+
192
+ if(USE_ROCM)
193
+ enable_language(HIP)
194
+ set(USE_OPENMP ON CACHE BOOL "ROCm requires OpenMP" FORCE)
195
+ endif()
196
+
197
+ if(USE_OPENMP)
198
+ if(APPLE)
199
+ find_package(OpenMP)
200
+ if(NOT OpenMP_FOUND)
201
+ if(USE_HOMEBREW_FALLBACK)
202
+ # libomp 15.0+ from brew is keg-only, so have to search in other locations.
203
+ # See https://github.com/Homebrew/homebrew-core/issues/112107#issuecomment-1278042927.
204
+ execute_process(COMMAND brew --prefix libomp
205
+ OUTPUT_VARIABLE HOMEBREW_LIBOMP_PREFIX
206
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
207
+ set(OpenMP_C_FLAGS "-Xpreprocessor -fopenmp -I${HOMEBREW_LIBOMP_PREFIX}/include")
208
+ set(OpenMP_CXX_FLAGS "-Xpreprocessor -fopenmp -I${HOMEBREW_LIBOMP_PREFIX}/include")
209
+ set(OpenMP_C_LIB_NAMES omp)
210
+ set(OpenMP_CXX_LIB_NAMES omp)
211
+ set(OpenMP_omp_LIBRARY ${HOMEBREW_LIBOMP_PREFIX}/lib/libomp.dylib)
212
+ endif()
213
+ find_package(OpenMP REQUIRED)
214
+ endif()
215
+ else()
216
+ find_package(OpenMP REQUIRED)
217
+ endif()
218
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
219
+ endif()
220
+
221
+ if(USE_GPU)
222
+ set(BOOST_COMPUTE_HEADER_DIR ${PROJECT_SOURCE_DIR}/external_libs/compute/include)
223
+ include_directories(${BOOST_COMPUTE_HEADER_DIR})
224
+ find_package(OpenCL REQUIRED)
225
+ include_directories(${OpenCL_INCLUDE_DIRS})
226
+ message(STATUS "OpenCL include directory: " ${OpenCL_INCLUDE_DIRS})
227
+ if(WIN32)
228
+ set(Boost_USE_STATIC_LIBS ON)
229
+ endif()
230
+ find_package(Boost 1.56.0 COMPONENTS filesystem system REQUIRED)
231
+ if(WIN32)
232
+ # disable autolinking in boost
233
+ add_definitions(-DBOOST_ALL_NO_LIB)
234
+ endif()
235
+ include_directories(${Boost_INCLUDE_DIRS})
236
+ add_definitions(-DUSE_GPU)
237
+ endif()
238
+
239
+ if(__INTEGRATE_OPENCL)
240
+ if(APPLE)
241
+ message(FATAL_ERROR "Integrated OpenCL build is not available on macOS")
242
+ else()
243
+ include(cmake/IntegratedOpenCL.cmake)
244
+ add_definitions(-DUSE_GPU)
245
+ endif()
246
+ endif()
247
+
248
+ if(USE_CUDA)
249
+ find_package(CUDAToolkit 11.0 REQUIRED)
250
+ if(USE_NCCL)
251
+ find_package(NCCL REQUIRED)
252
+ else()
253
+ message(STATUS "USE_NCCL is OFF: building single-GPU only, without the NCCL dependency.")
254
+ endif()
255
+ include_directories(${CUDAToolkit_INCLUDE_DIRS})
256
+ # These are forwarded (-Xcompiler=) to nvcc's host compiler. -fPIC and -Wall
257
+ # are GCC/Clang spellings; MSVC (the CUDA host compiler on Windows) rejects
258
+ # them (-fPIC is also meaningless there), so skip them under MSVC. The OpenMP
259
+ # flag is valid for both host compilers.
260
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=${OpenMP_CXX_FLAGS}")
261
+ if(NOT MSVC)
262
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=-fPIC -Xcompiler=-Wall")
263
+ endif()
264
+ # Warnings-as-errors gate our own sources on GCC/Clang. It is skipped under
265
+ # MSVC -- matching the CPU build, which never adds /WX -- both for the host
266
+ # -Xcompiler=-Werror and for nvcc's own device-side "-Werror all-warnings":
267
+ # on Windows, nvcc surfaces device-side diagnostics from vendored headers
268
+ # (fmt, fast_double_parser) that Linux's toolchain does not, and those are
269
+ # not our code. Device code is identical across platforms and is already
270
+ # gated by the Linux CUDA CI.
271
+ if(USE_WERROR AND NOT __BUILD_FOR_R AND NOT MSVC)
272
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=-Werror")
273
+ # nvcc's own device-side diagnostics (e.g. cross-execution-space-call) are
274
+ # separate from the host compiler's; "all-warnings" landed in CUDA 11.2.
275
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.2")
276
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Werror all-warnings")
277
+ else()
278
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Werror cross-execution-space-call")
279
+ endif()
280
+ endif()
281
+
282
+ # If the user passed -DCMAKE_CUDA_ARCHITECTURES (e.g. "120-real" for fast
283
+ # local builds on a single GPU), honor it verbatim. Otherwise build for
284
+ # every architecture the detected toolkit supports.
285
+ # reference for mapping of CUDA toolkit component versions to supported architectures ("compute capabilities"):
286
+ # https://en.wikipedia.org/wiki/CUDA#GPUs_supported
287
+ # CUDA 13.0 removed offline-compilation support for Maxwell (sm_50/52/53), Pascal (sm_60/61/62)
288
+ # and Volta (sm_70/72). sm_75 (Turing) is the lowest still-supported architecture.
289
+ # NOTE: when the user passes nothing, CMake itself injects nvcc's default
290
+ # target ("52") into CMAKE_CUDA_ARCHITECTURES at language enablement -- an
291
+ # arch our code does not even support. Treat that auto-injected value as
292
+ # "not set" so the every-supported-arch fallback below actually runs.
293
+ if(DEFINED CMAKE_CUDA_ARCHITECTURES AND NOT "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL ""
294
+ AND NOT "${CMAKE_CUDA_ARCHITECTURES}" STREQUAL "52")
295
+ set(CUDA_ARCHS "${CMAKE_CUDA_ARCHITECTURES}")
296
+ else()
297
+ if(CUDAToolkit_VERSION VERSION_LESS "13.0")
298
+ set(CUDA_ARCHS "60" "61" "62" "70" "75")
299
+ else()
300
+ set(CUDA_ARCHS "75")
301
+ endif()
302
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.0")
303
+ list(APPEND CUDA_ARCHS "80")
304
+ endif()
305
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.1")
306
+ list(APPEND CUDA_ARCHS "86")
307
+ endif()
308
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.5")
309
+ list(APPEND CUDA_ARCHS "87")
310
+ endif()
311
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "11.8")
312
+ list(APPEND CUDA_ARCHS "89")
313
+ list(APPEND CUDA_ARCHS "90")
314
+ endif()
315
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL "12.8")
316
+ list(APPEND CUDA_ARCHS "100")
317
+ list(APPEND CUDA_ARCHS "120")
318
+ endif()
319
+ # Generate PTX for the most recent architecture for forwards compatibility
320
+ list(POP_BACK CUDA_ARCHS CUDA_LAST_SUPPORTED_ARCH)
321
+ list(TRANSFORM CUDA_ARCHS APPEND "-real")
322
+ list(APPEND CUDA_ARCHS "${CUDA_LAST_SUPPORTED_ARCH}-real" "${CUDA_LAST_SUPPORTED_ARCH}-virtual")
323
+ endif()
324
+ message(STATUS "CUDA_ARCHITECTURES: ${CUDA_ARCHS}")
325
+ if(USE_DEBUG)
326
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -g")
327
+ else()
328
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O3 -lineinfo")
329
+ endif()
330
+ message(STATUS "CMAKE_CUDA_FLAGS: ${CMAKE_CUDA_FLAGS}")
331
+
332
+ add_definitions(-DUSE_CUDA)
333
+ if(USE_NCCL)
334
+ add_definitions(-DUSE_NCCL)
335
+ endif()
336
+
337
+ if(NOT DEFINED CMAKE_CUDA_STANDARD)
338
+ set(CMAKE_CUDA_STANDARD 17)
339
+ set(CMAKE_CUDA_STANDARD_REQUIRED ON)
340
+ endif()
341
+ endif()
342
+
343
+ if(USE_ROCM)
344
+ find_package(HIP)
345
+ include_directories(${HIP_INCLUDE_DIRS})
346
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__HIP_PLATFORM_AMD__")
347
+ set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} ${OpenMP_CXX_FLAGS} -fPIC -Wall")
348
+
349
+ # avoid warning: unused variable 'mask' due to __shfl_down_sync work-around
350
+ set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-unused-variable")
351
+ # avoid warning: 'hipHostAlloc' is deprecated: use hipHostMalloc instead
352
+ set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-deprecated-declarations")
353
+ # avoid many warnings about missing overrides
354
+ set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-inconsistent-missing-override")
355
+ # avoid warning: shift count >= width of type in feature_histogram.hpp
356
+ set(DISABLED_WARNINGS "${DISABLED_WARNINGS} -Wno-shift-count-overflow")
357
+
358
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${DISABLED_WARNINGS}")
359
+ set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} ${DISABLED_WARNINGS}")
360
+
361
+ if(USE_DEBUG)
362
+ set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} -g -O0")
363
+ else()
364
+ set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} -O3")
365
+ endif()
366
+ message(STATUS "CMAKE_HIP_FLAGS: ${CMAKE_HIP_FLAGS}")
367
+
368
+ # Building for ROCm almost always means USE_CUDA.
369
+ # Exceptions to this will be guarded by USE_ROCM.
370
+ add_definitions(-DUSE_CUDA)
371
+ add_definitions(-DUSE_ROCM)
372
+ endif()
373
+
374
+ include(CheckCXXSourceCompiles)
375
+ check_cxx_source_compiles("
376
+ #include <xmmintrin.h>
377
+ int main() {
378
+ int a = 0;
379
+ _mm_prefetch(&a, _MM_HINT_NTA);
380
+ return 0;
381
+ }
382
+ " MM_PREFETCH)
383
+
384
+ if(${MM_PREFETCH})
385
+ message(STATUS "Using _mm_prefetch")
386
+ add_definitions(-DMM_PREFETCH)
387
+ endif()
388
+
389
+ include(CheckCXXSourceCompiles)
390
+ check_cxx_source_compiles("
391
+ #include <mm_malloc.h>
392
+ int main() {
393
+ char *a = (char*)_mm_malloc(8, 16);
394
+ _mm_free(a);
395
+ return 0;
396
+ }
397
+ " MM_MALLOC)
398
+
399
+ if(${MM_MALLOC})
400
+ message(STATUS "Using _mm_malloc")
401
+ add_definitions(-DMM_MALLOC)
402
+ endif()
403
+
404
+ if(UNIX OR MINGW OR CYGWIN)
405
+ set(
406
+ CMAKE_CXX_FLAGS
407
+ "${CMAKE_CXX_FLAGS} -pthread -Wextra -Wall -Wno-ignored-attributes -Wno-unknown-pragmas -Wno-return-type"
408
+ )
409
+ if(MINGW)
410
+ # ignore this warning: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95353
411
+ set(
412
+ CMAKE_CXX_FLAGS
413
+ "${CMAKE_CXX_FLAGS} -Wno-stringop-overflow"
414
+ )
415
+ endif()
416
+ if(USE_DEBUG)
417
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")
418
+ else()
419
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
420
+ endif()
421
+ if(USE_SWIG)
422
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing")
423
+ endif()
424
+ if(NOT USE_OPENMP)
425
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas -Wno-unused-private-field")
426
+ endif()
427
+ if(__BUILD_FOR_R AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
428
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-cast-function-type")
429
+ endif()
430
+ if(USE_WERROR AND NOT __BUILD_FOR_R)
431
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
432
+ endif()
433
+ endif()
434
+
435
+ if(WIN32 AND MINGW)
436
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++")
437
+ endif()
438
+
439
+ # Check if inet_pton is already available, to avoid conflicts with the implementation in LightGBM.
440
+ # As of 2022, MinGW started including a definition of inet_pton.
441
+ if(WIN32)
442
+ include(CheckSymbolExists)
443
+ list(APPEND CMAKE_REQUIRED_LIBRARIES "ws2_32")
444
+ check_symbol_exists(inet_pton "ws2tcpip.h" WIN_INET_PTON_FOUND)
445
+ if(WIN_INET_PTON_FOUND)
446
+ add_definitions(-DWIN_HAS_INET_PTON)
447
+ endif()
448
+ list(REMOVE_ITEM CMAKE_REQUIRED_LIBRARIES "ws2_32")
449
+ endif()
450
+
451
+ if(MSVC)
452
+ # compiling 'fmt' on MSVC: "Unicode support requires compiling with /utf-8"
453
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /MP /utf-8")
454
+ if(USE_CUDA)
455
+ # -Xcompiler=/utf-8 reaches cl.exe for nvcc's host-side compilation,
456
+ # but fmt's use_utf8 check (fmt/base.h) detects /utf-8 by checking how
457
+ # the compiler itself encodes a "§" literal, and nvcc's own
458
+ # front-end parse of .cu files (separate from the host cl.exe it
459
+ # shells out to) doesn't pick up that flag. Disabling FMT_UNICODE
460
+ # skips that compile-time assertion; it only guards an unused
461
+ # Windows-console UTF-8 print codepath, not core formatting.
462
+ set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler=/utf-8 -DFMT_UNICODE=0")
463
+ endif()
464
+ if(__BUILD_FOR_R)
465
+ # MSVC does not like this commit:
466
+ # https://github.com/wch/r-source/commit/fb52ac1a610571fcb8ac92d886b9fefcffaa7d48
467
+ #
468
+ # and raises "error C3646: 'private_data_c': unknown override specifier"
469
+ add_definitions(-DR_LEGACY_RCOMPLEX)
470
+ endif()
471
+ if(USE_DEBUG)
472
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Od")
473
+ else()
474
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /O2 /Ob2 /Oi /Ot /Oy")
475
+ endif()
476
+ else()
477
+ if(NOT BUILD_STATIC_LIB)
478
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
479
+ endif()
480
+ if(NOT USE_DEBUG)
481
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops")
482
+ endif()
483
+ endif()
484
+
485
+ set(Falcata_HEADER_DIR ${PROJECT_SOURCE_DIR}/include)
486
+
487
+ set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})
488
+ set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR})
489
+
490
+ include_directories(${Falcata_HEADER_DIR})
491
+
492
+ if(USE_MPI)
493
+ include_directories(${MPI_CXX_INCLUDE_PATH})
494
+ endif()
495
+
496
+ # zlib backs the FALB binary model format's compressed sections (space is the
497
+ # point for an archived model). Prefer the system zlib (dynamic link keeps the
498
+ # redistributable wheels portable); environments without dev headers (minimal
499
+ # CI containers, stock Windows runners) fall back to a pinned static build.
500
+ find_package(ZLIB)
501
+ if(NOT ZLIB_FOUND)
502
+ message(STATUS "System zlib not found; building pinned static zlib 1.3.1 via FetchContent")
503
+ include(FetchContent)
504
+ set(ZLIB_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
505
+ set(SKIP_INSTALL_ALL ON CACHE BOOL "" FORCE)
506
+ fetchcontent_declare(
507
+ zlib_fallback
508
+ URL https://github.com/madler/zlib/releases/download/v1.3.1/zlib-1.3.1.tar.gz
509
+ URL_HASH SHA256=9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23
510
+ )
511
+ fetchcontent_makeavailable(zlib_fallback)
512
+ set_target_properties(zlibstatic PROPERTIES POSITION_INDEPENDENT_CODE ON)
513
+ target_include_directories(
514
+ zlibstatic
515
+ INTERFACE
516
+ $<BUILD_INTERFACE:${zlib_fallback_SOURCE_DIR}>
517
+ $<BUILD_INTERFACE:${zlib_fallback_BINARY_DIR}>
518
+ )
519
+ add_library(ZLIB::ZLIB ALIAS zlibstatic)
520
+ endif()
521
+
522
+ set(
523
+ FLC_SOURCES
524
+ src/boosting/boosting.cpp
525
+ src/boosting/gbdt_model_binary.cpp
526
+ src/boosting/gbdt_model_text.cpp
527
+ src/boosting/gbdt_prediction.cpp
528
+ src/boosting/gbdt.cpp
529
+ src/boosting/prediction_early_stop.cpp
530
+ src/boosting/sample_strategy.cpp
531
+ src/io/bin.cpp
532
+ src/io/config_auto.cpp
533
+ src/io/config.cpp
534
+ src/io/dataset_loader.cpp
535
+ src/io/dataset.cpp
536
+ src/io/file_io.cpp
537
+ src/io/json11.cpp
538
+ src/io/metadata.cpp
539
+ src/io/parser.cpp
540
+ src/io/train_share_states.cpp
541
+ src/io/tree.cpp
542
+ src/metric/dcg_calculator.cpp
543
+ src/metric/metric.cpp
544
+ src/network/linker_topo.cpp
545
+ src/network/linkers_mpi.cpp
546
+ src/network/linkers_socket.cpp
547
+ src/network/network.cpp
548
+ src/objective/objective_function.cpp
549
+ src/treelearner/data_parallel_tree_learner.cpp
550
+ src/treelearner/feature_histogram.cpp
551
+ src/treelearner/feature_parallel_tree_learner.cpp
552
+ src/treelearner/gpu_tree_learner.cpp
553
+ src/treelearner/gradient_discretizer.cpp
554
+ src/treelearner/linear_tree_learner.cpp
555
+ src/treelearner/serial_tree_learner.cpp
556
+ src/treelearner/tree_learner.cpp
557
+ src/treelearner/voting_parallel_tree_learner.cpp
558
+ src/utils/openmp_wrapper.cpp
559
+ )
560
+ set(
561
+ FLC_CUDA_SOURCES
562
+ src/boosting/cuda/cuda_score_updater.cpp
563
+ src/boosting/cuda/cuda_bagging.cu
564
+ src/boosting/cuda/cuda_score_updater.cu
565
+ src/metric/cuda/cuda_binary_metric.cpp
566
+ src/metric/cuda/cuda_pointwise_metric.cpp
567
+ src/metric/cuda/cuda_regression_metric.cpp
568
+ src/metric/cuda/cuda_pointwise_metric.cu
569
+ src/objective/cuda/cuda_binary_objective.cpp
570
+ src/objective/cuda/cuda_multiclass_objective.cpp
571
+ src/objective/cuda/cuda_rank_objective.cpp
572
+ src/objective/cuda/cuda_regression_objective.cpp
573
+ src/objective/cuda/cuda_binary_objective.cu
574
+ src/objective/cuda/cuda_multiclass_objective.cu
575
+ src/objective/cuda/cuda_rank_objective.cu
576
+ src/objective/cuda/cuda_regression_objective.cu
577
+ src/treelearner/cuda/cuda_best_split_finder.cpp
578
+ src/treelearner/cuda/cuda_data_partition.cpp
579
+ src/treelearner/cuda/cuda_histogram_constructor.cpp
580
+ src/treelearner/cuda/cuda_construct_jit.cpp
581
+ src/treelearner/cuda/cuda_leaf_splits.cpp
582
+ src/treelearner/cuda/cuda_single_gpu_tree_learner.cpp
583
+ src/treelearner/cuda/cuda_best_split_finder.cu
584
+ src/treelearner/cuda/cuda_data_partition.cu
585
+ src/treelearner/cuda/cuda_gradient_discretizer.cu
586
+ src/treelearner/cuda/cuda_histogram_constructor.cu
587
+ src/treelearner/cuda/cuda_hybrid_graph.cu
588
+ src/treelearner/cuda/cuda_leaf_splits.cu
589
+ src/treelearner/cuda/cuda_single_gpu_tree_learner.cu
590
+ src/io/cuda/cuda_column_data.cu
591
+ src/io/cuda/cuda_dense_binner.cu
592
+ src/io/cuda/cuda_tree.cu
593
+ src/io/cuda/cuda_column_data.cpp
594
+ src/io/cuda/cuda_dense_binner.cpp
595
+ src/io/cuda/cuda_metadata.cpp
596
+ src/io/cuda/cuda_row_data.cpp
597
+ src/io/cuda/cuda_tree.cpp
598
+ src/cuda/cuda_utils.cpp
599
+ src/cuda/cuda_algorithms.cu
600
+ )
601
+
602
+ if(USE_NCCL)
603
+ list(APPEND FLC_CUDA_SOURCES src/boosting/cuda/nccl_gbdt.cpp)
604
+ endif()
605
+
606
+ if(USE_CUDA OR USE_ROCM)
607
+ list(APPEND FLC_SOURCES ${FLC_CUDA_SOURCES})
608
+ endif()
609
+
610
+ if(USE_ROCM)
611
+ set(CU_FILES "")
612
+ foreach(file IN LISTS FLC_CUDA_SOURCES)
613
+ string(REGEX MATCH "\\.cu$" is_cu_file "${file}")
614
+ if(is_cu_file)
615
+ list(APPEND CU_FILES "${file}")
616
+ endif()
617
+ endforeach()
618
+ set_source_files_properties(${CU_FILES} PROPERTIES LANGUAGE HIP)
619
+ endif()
620
+
621
+ add_library(falcata_objs OBJECT ${FLC_SOURCES})
622
+ if(NOT __BUILD_FOR_R)
623
+ target_link_libraries(falcata_objs PRIVATE nanoarrow_static)
624
+ target_link_libraries(falcata_objs PUBLIC ZLIB::ZLIB)
625
+ endif()
626
+
627
+ if(BUILD_CLI)
628
+ add_executable(falcata src/main.cpp src/application/application.cpp)
629
+ target_link_libraries(falcata PRIVATE falcata_objs)
630
+ endif()
631
+
632
+ set(API_SOURCES "src/c_api.cpp")
633
+ # Only build the R part of the library if building for
634
+ # use with the R-package
635
+ if(__BUILD_FOR_R)
636
+ list(APPEND API_SOURCES "src/falcata_R.cpp")
637
+ endif()
638
+
639
+ add_library(falcata_capi_objs OBJECT ${API_SOURCES})
640
+ if(NOT __BUILD_FOR_R)
641
+ target_link_libraries(falcata_capi_objs PRIVATE nanoarrow_static)
642
+ endif()
643
+
644
+ if(BUILD_STATIC_LIB)
645
+ add_library(_falcata STATIC)
646
+ else()
647
+ add_library(_falcata SHARED)
648
+ endif()
649
+
650
+ # R expects libraries of the form <project>.{dll,dylib,so}, not lib_<project>.{dll,dylib,so}
651
+ if(__BUILD_FOR_R)
652
+ set_target_properties(
653
+ _falcata
654
+ PROPERTIES
655
+ PREFIX ""
656
+ OUTPUT_NAME "falcata"
657
+ )
658
+ endif()
659
+
660
+ # LightGBM headers include openmp, cuda, R etc. headers,
661
+ # thus PUBLIC is required for building _falcata_swig target.
662
+ target_link_libraries(_falcata PUBLIC falcata_capi_objs falcata_objs)
663
+ target_link_libraries(_falcata PUBLIC ZLIB::ZLIB)
664
+
665
+ if(MSVC AND NOT __BUILD_FOR_R)
666
+ set_target_properties(_falcata PROPERTIES OUTPUT_NAME "lib_falcata")
667
+ endif()
668
+
669
+ if(USE_SWIG)
670
+ set_property(SOURCE swig/falcatalib.i PROPERTY CPLUSPLUS ON)
671
+ list(APPEND swig_options -package ai.falcata)
672
+ set_property(SOURCE swig/falcatalib.i PROPERTY SWIG_FLAGS "${swig_options}")
673
+ swig_add_library(_falcata_swig LANGUAGE java SOURCES swig/falcatalib.i)
674
+ swig_link_libraries(_falcata_swig _falcata)
675
+ if(USE_WERROR AND (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang"))
676
+ # The SWIG wrapper is GENERATED code: it legitimately wraps deprecated C API
677
+ # entry points (the deprecation is aimed at end users, not the binding) and
678
+ # inlines c_api.h helpers into JNI TUs where -Wformat-truncation fires.
679
+ # Same spirit as the vendored SYSTEM includes: -Werror gates our sources,
680
+ # not machine-produced ones.
681
+ target_compile_options(_falcata_swig PRIVATE -Wno-error)
682
+ endif()
683
+ set_target_properties(
684
+ _falcata_swig
685
+ PROPERTIES
686
+ # needed to ensure Linux build does not have lib prefix specified twice, e.g. liblib_falcata_swig
687
+ PREFIX ""
688
+ # needed in some versions of CMake for VS and MinGW builds to ensure output dll has lib prefix
689
+ OUTPUT_NAME "lib_falcata_swig"
690
+ )
691
+ if(WIN32)
692
+ set(FLC_SWIG_LIB_DESTINATION_PATH "${FLC_SWIG_DESTINATION_DIR}/lib_falcata_swig.dll")
693
+ if(MINGW OR CYGWIN)
694
+ set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata.dll")
695
+ set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata_swig.dll")
696
+ else()
697
+ set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/Release/lib_falcata.dll")
698
+ set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/Release/lib_falcata_swig.dll")
699
+ endif()
700
+ elseif(APPLE)
701
+ set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata.dylib")
702
+ set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata_swig.jnilib")
703
+ set(FLC_SWIG_LIB_DESTINATION_PATH "${FLC_SWIG_DESTINATION_DIR}/lib_falcata_swig.dylib")
704
+ else()
705
+ set(FLC_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata.so")
706
+ set(FLC_SWIG_LIB_SOURCE_PATH "${PROJECT_SOURCE_DIR}/lib_falcata_swig.so")
707
+ set(FLC_SWIG_LIB_DESTINATION_PATH "${FLC_SWIG_DESTINATION_DIR}/lib_falcata_swig.so")
708
+ endif()
709
+ add_custom_command(
710
+ TARGET _falcata_swig
711
+ POST_BUILD
712
+ COMMAND "${Java_JAVAC_EXECUTABLE}" -d . java/*.java
713
+ COMMAND
714
+ "${CMAKE_COMMAND}"
715
+ -E
716
+ copy_if_different
717
+ "${FLC_LIB_SOURCE_PATH}"
718
+ "${FLC_SWIG_DESTINATION_DIR}"
719
+ COMMAND
720
+ "${CMAKE_COMMAND}"
721
+ -E
722
+ copy_if_different
723
+ "${FLC_SWIG_LIB_SOURCE_PATH}"
724
+ "${FLC_SWIG_LIB_DESTINATION_PATH}"
725
+ COMMAND "${Java_JAR_EXECUTABLE}" -cf falcatalib.jar ai
726
+ )
727
+ endif()
728
+
729
+ if(USE_MPI)
730
+ target_link_libraries(falcata_objs PUBLIC ${MPI_CXX_LIBRARIES})
731
+ endif()
732
+
733
+ if(USE_OPENMP)
734
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
735
+ target_link_libraries(falcata_objs PUBLIC OpenMP::OpenMP_CXX)
736
+ # c_api headers also includes OpenMP headers, thus compiling
737
+ # falcata_capi_objs needs include directory for OpenMP.
738
+ # Specifying OpenMP in target_link_libraries will get include directory
739
+ # requirements for compilation.
740
+ # This uses CMake's Transitive Usage Requirements. Refer to CMake doc:
741
+ # https://cmake.org/cmake/help/v3.16/manual/cmake-buildsystem.7.html#transitive-usage-requirements
742
+ target_link_libraries(falcata_capi_objs PUBLIC OpenMP::OpenMP_CXX)
743
+ endif()
744
+ endif()
745
+
746
+ if(USE_GPU)
747
+ target_link_libraries(falcata_objs PUBLIC ${OpenCL_LIBRARY} ${Boost_LIBRARIES})
748
+ endif()
749
+
750
+ if(USE_CUDA AND USE_NCCL)
751
+ target_link_libraries(falcata_objs PUBLIC NCCL::NCCL)
752
+ endif()
753
+
754
+ if(USE_CUDA)
755
+ # NVRTC + CUDA driver API for the runtime construct-kernel JIT
756
+ # (src/treelearner/cuda/cuda_construct_jit.cpp). Both are optional at runtime:
757
+ # if NVRTC compile fails the construct dispatch falls back to the AOT kernel.
758
+ target_link_libraries(falcata_objs PUBLIC CUDA::nvrtc CUDA::cuda_driver)
759
+ endif()
760
+
761
+ if(USE_ROCM)
762
+ find_package(rccl)
763
+ target_link_libraries(falcata_objs PUBLIC ${RCCL_LIBRARY})
764
+ endif()
765
+
766
+ if(__INTEGRATE_OPENCL)
767
+ # targets OpenCL and Boost are added in IntegratedOpenCL.cmake
768
+ add_dependencies(falcata_objs OpenCL Boost)
769
+ # variables INTEGRATED_OPENCL_* are set in IntegratedOpenCL.cmake
770
+ target_include_directories(falcata_objs PRIVATE ${INTEGRATED_OPENCL_INCLUDES})
771
+ target_compile_definitions(falcata_objs PRIVATE ${INTEGRATED_OPENCL_DEFINITIONS})
772
+ target_link_libraries(falcata_objs PUBLIC ${INTEGRATED_OPENCL_LIBRARIES} ${CMAKE_DL_LIBS})
773
+ endif()
774
+
775
+ if(USE_CUDA)
776
+
777
+ set_target_properties(
778
+ falcata_objs
779
+ PROPERTIES
780
+ CUDA_ARCHITECTURES "${CUDA_ARCHS}"
781
+ CUDA_SEPARABLE_COMPILATION ON
782
+ )
783
+
784
+ set_target_properties(
785
+ _falcata
786
+ PROPERTIES
787
+ CUDA_ARCHITECTURES "${CUDA_ARCHS}"
788
+ CUDA_RESOLVE_DEVICE_SYMBOLS ON
789
+ )
790
+
791
+ if(BUILD_CLI)
792
+ set_target_properties(
793
+ falcata
794
+ PROPERTIES
795
+ CUDA_ARCHITECTURES "${CUDA_ARCHS}"
796
+ CUDA_RESOLVE_DEVICE_SYMBOLS ON
797
+ )
798
+ endif()
799
+ endif()
800
+
801
+ if(USE_ROCM)
802
+ target_link_libraries(falcata_objs PUBLIC hip::host)
803
+ endif()
804
+
805
+ if(WIN32)
806
+ if(MINGW OR CYGWIN)
807
+ target_link_libraries(falcata_objs PUBLIC ws2_32 iphlpapi)
808
+ endif()
809
+ endif()
810
+
811
+ if(__BUILD_FOR_R)
812
+ # utils/log.h and capi uses R headers, thus both object libraries need to link
813
+ # with R lib.
814
+ if(MSVC)
815
+ set(R_LIB ${LIBR_MSVC_CORE_LIBRARY})
816
+ else()
817
+ set(R_LIB ${LIBR_CORE_LIBRARY})
818
+ endif()
819
+ target_link_libraries(falcata_objs PUBLIC ${R_LIB})
820
+ target_link_libraries(falcata_capi_objs PUBLIC ${R_LIB})
821
+ endif()
822
+
823
+ #-- Google C++ tests
824
+ if(BUILD_CPP_TEST)
825
+ find_package(GTest CONFIG)
826
+ if(NOT GTEST_FOUND)
827
+ message(STATUS "Did not find Google Test in the system root. Fetching Google Test now...")
828
+ include(FetchContent)
829
+ # lint_cmake: -readability/wonkycase
830
+ fetchcontent_declare(
831
+ # lint_cmake: +readability/wonkycase
832
+ googletest
833
+ GIT_REPOSITORY https://github.com/google/googletest.git
834
+ GIT_TAG v1.14.0
835
+ )
836
+ # lint_cmake: -readability/wonkycase
837
+ FetchContent_MakeAvailable(googletest)
838
+ # lint_cmake: +readability/wonkycase
839
+ add_library(GTest::GTest ALIAS gtest)
840
+ endif()
841
+
842
+ set(Falcata_TEST_HEADER_DIR ${PROJECT_SOURCE_DIR}/tests/cpp_tests)
843
+ include_directories(${Falcata_TEST_HEADER_DIR})
844
+
845
+ set(
846
+ CPP_TEST_SOURCES
847
+ tests/cpp_tests/test_array_args.cpp
848
+ tests/cpp_tests/test_arrow.cpp
849
+ tests/cpp_tests/test_arrow_deprecated.cpp
850
+ tests/cpp_tests/test_byte_buffer.cpp
851
+ tests/cpp_tests/test_chunked_array.cpp
852
+ tests/cpp_tests/test_common.cpp
853
+ tests/cpp_tests/test_main.cpp
854
+ tests/cpp_tests/test_serialize.cpp
855
+ tests/cpp_tests/test_single_row.cpp
856
+ tests/cpp_tests/test_stream.cpp
857
+ tests/cpp_tests/testutils.cpp
858
+ )
859
+ if(MSVC)
860
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /permissive-")
861
+ endif()
862
+ add_executable(testfalcata ${CPP_TEST_SOURCES})
863
+ target_link_libraries(testfalcata PRIVATE falcata_objs falcata_capi_objs nanoarrow_static GTest::GTest)
864
+ endif()
865
+
866
+ if(BUILD_CLI)
867
+ install(
868
+ TARGETS falcata
869
+ RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
870
+ )
871
+ endif()
872
+
873
+ if(__BUILD_FOR_PYTHON)
874
+ # must match the Python package directory name (python-package/<name>)
875
+ set(CMAKE_INSTALL_PREFIX "falcata")
876
+ endif()
877
+
878
+ # The macOS linker puts an absolute path to linked libraries in lib_falcata.dylib.
879
+ # This block overrides that information for LightGBM's OpenMP dependency, to allow
880
+ # finding that library in more places.
881
+ #
882
+ # This reduces the risk of runtime issues resulting from multiple {libgomp,libiomp,libomp}.dylib being loaded.
883
+ #
884
+ if(APPLE AND USE_OPENMP AND NOT BUILD_STATIC_LIB)
885
+ # store path to {libgomp,libiomp,libomp}.dylib found at build time in a variable
886
+ get_target_property(
887
+ OpenMP_LIBRARY_LOCATION
888
+ OpenMP::OpenMP_CXX
889
+ INTERFACE_LINK_LIBRARIES
890
+ )
891
+ # get just the filename of that path
892
+ # (to deal with the possibility that it might be 'libomp.dylib' or 'libgomp.dylib' or 'libiomp.dylib')
893
+ get_filename_component(
894
+ OpenMP_LIBRARY_NAME
895
+ ${OpenMP_LIBRARY_LOCATION}
896
+ NAME
897
+ )
898
+ # get directory of that path
899
+ get_filename_component(
900
+ OpenMP_LIBRARY_DIR
901
+ ${OpenMP_LIBRARY_LOCATION}
902
+ DIRECTORY
903
+ )
904
+ # get exact name of the library in a variable
905
+ get_target_property(
906
+ __LIB_FALCATA_OUTPUT_NAME
907
+ _falcata
908
+ OUTPUT_NAME
909
+ )
910
+ if(NOT __LIB_FALCATA_OUTPUT_NAME)
911
+ set(__LIB_FALCATA_OUTPUT_NAME "lib_falcata")
912
+ endif()
913
+
914
+ if(CMAKE_SHARED_LIBRARY_SUFFIX_CXX)
915
+ set(
916
+ __LIB_FALCATA_FILENAME "${__LIB_FALCATA_OUTPUT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX_CXX}"
917
+ CACHE INTERNAL "falcata shared library filename"
918
+ )
919
+ else()
920
+ set(
921
+ __LIB_FALCATA_FILENAME "${__LIB_FALCATA_OUTPUT_NAME}.dylib"
922
+ CACHE INTERNAL "falcata shared library filename"
923
+ )
924
+ endif()
925
+
926
+ # Override the absolute path to OpenMP with a relative one using @rpath.
927
+ #
928
+ # This also ensures that if a {libgomp,libiomp,libomp}.dylib has already been loaded, it'll just use that.
929
+ add_custom_command(
930
+ TARGET _falcata
931
+ POST_BUILD
932
+ COMMAND
933
+ install_name_tool
934
+ -change
935
+ ${OpenMP_LIBRARY_LOCATION}
936
+ "@rpath/${OpenMP_LIBRARY_NAME}"
937
+ "${__LIB_FALCATA_FILENAME}"
938
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
939
+ COMMENT "Replacing hard-coded OpenMP install_name with '@rpath/${OpenMP_LIBRARY_NAME}'..."
940
+ )
941
+ # add RPATH entries to ensure the loader looks in the following, in the following order:
942
+ #
943
+ # - (R-only) ${LIBR_LIBS_DIR} (wherever R for macOS stores vendored third-party libraries)
944
+ # - ${OpenMP_LIBRARY_DIR} (wherever find_package(OpenMP) found OpenMP at build time)
945
+ # - /opt/homebrew/opt/libomp/lib (where 'brew install' / 'brew link' puts libomp.dylib)
946
+ # - /opt/local/lib/libomp (where 'port install' puts libomp.dylib)
947
+ #
948
+
949
+ # with some compilers, OpenMP ships with the compiler (e.g. libgomp with gcc)
950
+ list(APPEND __omp_install_rpaths "${OpenMP_LIBRARY_DIR}")
951
+
952
+ # with clang, libomp doesn't ship with the compiler and might be supplied separately
953
+ if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
954
+ list(
955
+ APPEND __omp_install_rpaths
956
+ "/opt/homebrew/opt/libomp/lib"
957
+ "/opt/local/lib/libomp"
958
+ )
959
+ # It appears that CRAN's macOS binaries compiled with -fopenmp have install names
960
+ # of the form:
961
+ #
962
+ # /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libomp.dylib
963
+ #
964
+ # That corresponds to the libomp.dylib that ships with the R framework for macOS, available
965
+ # from https://cran.r-project.org/bin/macosx/.
966
+ #
967
+ # That absolute-path install name leads to that library being loaded unconditionally.
968
+ #
969
+ # That can result in e.g. 'library(data.table)' loading R's libomp.dylib and 'library(falcata)' loading
970
+ # Homebrew's. Having 2 loaded in the same process can lead to segfaults and unpredictable behavior.
971
+ #
972
+ # This can't be easily avoided by forcing R-package builds in LightGBM to use R's libomp.dylib
973
+ # at build time... LightGBM's CMake uses find_package(OpenMP), and R for macOS only provides the
974
+ # library, not CMake config files for it.
975
+ #
976
+ # Best we can do, to allow CMake-based builds of the R-package here to continue to work
977
+ # alongside CRAN-prepared binaries of other packages with OpenMP dependencies, is to
978
+ # ensure that R's library directory is the first place the loader searches for
979
+ # libomp.dylib when clang is used.
980
+ #
981
+ # ref: https://github.com/lightgbm-org/LightGBM/issues/6628
982
+ #
983
+ if(__BUILD_FOR_R)
984
+ list(PREPEND __omp_install_rpaths "${LIBR_LIBS_DIR}")
985
+ endif()
986
+ endif()
987
+ set_target_properties(
988
+ _falcata
989
+ PROPERTIES
990
+ BUILD_WITH_INSTALL_RPATH TRUE
991
+ INSTALL_RPATH "${__omp_install_rpaths}"
992
+ INSTALL_RPATH_USE_LINK_PATH FALSE
993
+ )
994
+ endif()
995
+
996
+ install(
997
+ TARGETS _falcata
998
+ RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
999
+ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
1000
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX}/lib
1001
+ )
1002
+
1003
+ if(INSTALL_HEADERS)
1004
+ install(
1005
+ DIRECTORY ${Falcata_HEADER_DIR}/Falcata
1006
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/include
1007
+ )
1008
+ install(
1009
+ FILES ${FAST_DOUBLE_PARSER_INCLUDE_DIR}/fast_double_parser.h
1010
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Falcata/utils
1011
+ )
1012
+ install(
1013
+ DIRECTORY ${FMT_INCLUDE_DIR}/
1014
+ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/Falcata/utils
1015
+ FILES_MATCHING PATTERN "*.h"
1016
+ )
1017
+ endif()