CMakeLists.txt 48 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149
  1. # Copyright 2021 The Draco Authors
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License"); you may not
  4. # use this file except in compliance with the License. You may obtain a copy of
  5. # the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  11. # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  12. # License for the specific language governing permissions and limitations under
  13. # the License.
  14. cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
  15. project(draco C CXX)
  16. if(NOT CMAKE_BUILD_TYPE)
  17. set(CMAKE_BUILD_TYPE Release)
  18. endif()
  19. set(draco_root "${CMAKE_CURRENT_SOURCE_DIR}")
  20. set(draco_src_root "${draco_root}/src/draco")
  21. set(draco_build "${Assimp_BINARY_DIR}")
  22. if("${draco_root}" STREQUAL "${draco_build}")
  23. message(
  24. FATAL_ERROR
  25. "Building from within the Draco source tree is not supported.\n"
  26. "Hint: Run these commands\n"
  27. "$ rm -rf CMakeCache.txt CMakeFiles\n"
  28. "$ mkdir -p ../draco_build\n"
  29. "$ cd ../draco_build\n"
  30. "And re-run CMake from the draco_build directory.")
  31. endif()
  32. include(FindPythonInterp)
  33. include("${draco_root}/cmake/draco_build_definitions.cmake")
  34. include("${draco_root}/cmake/draco_cpu_detection.cmake")
  35. include("${draco_root}/cmake/draco_dependencies.cmake")
  36. include("${draco_root}/cmake/draco_emscripten.cmake")
  37. include("${draco_root}/cmake/draco_flags.cmake")
  38. include("${draco_root}/cmake/draco_helpers.cmake")
  39. include("${draco_root}/cmake/draco_install.cmake")
  40. include("${draco_root}/cmake/draco_intrinsics.cmake")
  41. include("${draco_root}/cmake/draco_options.cmake")
  42. include("${draco_root}/cmake/draco_sanitizer.cmake")
  43. include("${draco_root}/cmake/draco_targets.cmake")
  44. include("${draco_root}/cmake/draco_tests.cmake")
  45. include("${draco_root}/cmake/draco_variables.cmake")
  46. # C++ and linker flags.
  47. draco_track_configuration_variable(DRACO_CXX_FLAGS)
  48. draco_track_configuration_variable(DRACO_EXE_LINKER_FLAGS)
  49. # Sanitizer integration.
  50. draco_track_configuration_variable(DRACO_SANITIZE)
  51. # Generated source file directory.
  52. draco_track_configuration_variable(DRACO_GENERATED_SOURCES_DIRECTORY)
  53. # Controls use of std::mutex and absl::Mutex in ThreadPool.
  54. draco_track_configuration_variable(DRACO_THREADPOOL_USE_STD_MUTEX)
  55. if(DRACO_VERBOSE)
  56. draco_dump_cmake_flag_variables()
  57. draco_dump_tracked_configuration_variables()
  58. draco_dump_options()
  59. endif()
  60. # Compiler/linker flags must be lists, but come in from the environment as
  61. # strings. Break them up:
  62. if(NOT "${DRACO_CXX_FLAGS}" STREQUAL "")
  63. separate_arguments(DRACO_CXX_FLAGS)
  64. endif()
  65. if(NOT "${DRACO_EXE_LINKER_FLAGS}" STREQUAL "")
  66. separate_arguments(DRACO_EXE_LINKER_FLAGS)
  67. endif()
  68. draco_reset_target_lists()
  69. draco_setup_options()
  70. draco_set_build_definitions()
  71. draco_set_cxx_flags()
  72. draco_set_exe_linker_flags()
  73. draco_generate_features_h()
  74. # Draco source file listing variables.
  75. list(
  76. APPEND draco_attributes_sources
  77. "${draco_src_root}/attributes/attribute_octahedron_transform.cc"
  78. "${draco_src_root}/attributes/attribute_octahedron_transform.h"
  79. "${draco_src_root}/attributes/attribute_quantization_transform.cc"
  80. "${draco_src_root}/attributes/attribute_quantization_transform.h"
  81. "${draco_src_root}/attributes/attribute_transform.cc"
  82. "${draco_src_root}/attributes/attribute_transform.h"
  83. "${draco_src_root}/attributes/attribute_transform_data.h"
  84. "${draco_src_root}/attributes/attribute_transform_type.h"
  85. "${draco_src_root}/attributes/geometry_attribute.cc"
  86. "${draco_src_root}/attributes/geometry_attribute.h"
  87. "${draco_src_root}/attributes/geometry_indices.h"
  88. "${draco_src_root}/attributes/point_attribute.cc"
  89. "${draco_src_root}/attributes/point_attribute.h")
  90. list(
  91. APPEND
  92. draco_compression_attributes_dec_sources
  93. "${draco_src_root}/compression/attributes/attributes_decoder.cc"
  94. "${draco_src_root}/compression/attributes/attributes_decoder.h"
  95. "${draco_src_root}/compression/attributes/attributes_decoder_interface.h"
  96. "${draco_src_root}/compression/attributes/kd_tree_attributes_decoder.cc"
  97. "${draco_src_root}/compression/attributes/kd_tree_attributes_decoder.h"
  98. "${draco_src_root}/compression/attributes/kd_tree_attributes_shared.h"
  99. "${draco_src_root}/compression/attributes/mesh_attribute_indices_encoding_data.h"
  100. "${draco_src_root}/compression/attributes/normal_compression_utils.h"
  101. "${draco_src_root}/compression/attributes/point_d_vector.h"
  102. "${draco_src_root}/compression/attributes/sequential_attribute_decoder.cc"
  103. "${draco_src_root}/compression/attributes/sequential_attribute_decoder.h"
  104. "${draco_src_root}/compression/attributes/sequential_attribute_decoders_controller.cc"
  105. "${draco_src_root}/compression/attributes/sequential_attribute_decoders_controller.h"
  106. "${draco_src_root}/compression/attributes/sequential_integer_attribute_decoder.cc"
  107. "${draco_src_root}/compression/attributes/sequential_integer_attribute_decoder.h"
  108. "${draco_src_root}/compression/attributes/sequential_normal_attribute_decoder.cc"
  109. "${draco_src_root}/compression/attributes/sequential_normal_attribute_decoder.h"
  110. "${draco_src_root}/compression/attributes/sequential_quantization_attribute_decoder.cc"
  111. "${draco_src_root}/compression/attributes/sequential_quantization_attribute_decoder.h"
  112. )
  113. list(
  114. APPEND
  115. draco_compression_attributes_enc_sources
  116. "${draco_src_root}/compression/attributes/attributes_encoder.cc"
  117. "${draco_src_root}/compression/attributes/attributes_encoder.h"
  118. "${draco_src_root}/compression/attributes/kd_tree_attributes_encoder.cc"
  119. "${draco_src_root}/compression/attributes/kd_tree_attributes_encoder.h"
  120. "${draco_src_root}/compression/attributes/linear_sequencer.h"
  121. "${draco_src_root}/compression/attributes/points_sequencer.h"
  122. "${draco_src_root}/compression/attributes/sequential_attribute_encoder.cc"
  123. "${draco_src_root}/compression/attributes/sequential_attribute_encoder.h"
  124. "${draco_src_root}/compression/attributes/sequential_attribute_encoders_controller.cc"
  125. "${draco_src_root}/compression/attributes/sequential_attribute_encoders_controller.h"
  126. "${draco_src_root}/compression/attributes/sequential_integer_attribute_encoder.cc"
  127. "${draco_src_root}/compression/attributes/sequential_integer_attribute_encoder.h"
  128. "${draco_src_root}/compression/attributes/sequential_normal_attribute_encoder.cc"
  129. "${draco_src_root}/compression/attributes/sequential_normal_attribute_encoder.h"
  130. "${draco_src_root}/compression/attributes/sequential_quantization_attribute_encoder.cc"
  131. "${draco_src_root}/compression/attributes/sequential_quantization_attribute_encoder.h"
  132. )
  133. list(
  134. APPEND
  135. draco_compression_attributes_pred_schemes_dec_sources
  136. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_decoder.h"
  137. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h"
  138. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h"
  139. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_decoder.h"
  140. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_decoder.h"
  141. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h"
  142. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_base.h"
  143. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_decoder.h"
  144. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h"
  145. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h"
  146. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_decoder.h"
  147. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_decoder.h"
  148. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h"
  149. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_decoder.h"
  150. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_decoder_factory.h"
  151. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_decoder_interface.h"
  152. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_decoding_transform.h"
  153. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_delta_decoder.h"
  154. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_factory.h"
  155. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_interface.h"
  156. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_decoding_transform.h"
  157. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h"
  158. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_decoding_transform.h"
  159. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h"
  160. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_wrap_decoding_transform.h"
  161. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h"
  162. )
  163. list(
  164. APPEND
  165. draco_compression_attributes_pred_schemes_enc_sources
  166. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_encoder.h"
  167. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_constrained_multi_parallelogram_shared.h"
  168. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_data.h"
  169. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_encoder.h"
  170. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_encoder.h"
  171. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_area.h"
  172. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_geometric_normal_predictor_base.h"
  173. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_multi_parallelogram_encoder.h"
  174. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_encoder.h"
  175. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_parallelogram_shared.h"
  176. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_encoder.h"
  177. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_encoder.h"
  178. "${draco_src_root}/compression/attributes/prediction_schemes/mesh_prediction_scheme_tex_coords_portable_predictor.h"
  179. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_delta_encoder.h"
  180. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_encoder.h"
  181. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.cc"
  182. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_encoder_factory.h"
  183. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_encoder_interface.h"
  184. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_encoding_transform.h"
  185. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_factory.h"
  186. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_interface.h"
  187. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_encoding_transform.h"
  188. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_base.h"
  189. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_encoding_transform.h"
  190. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_base.h"
  191. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_wrap_encoding_transform.h"
  192. "${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_wrap_transform_base.h"
  193. )
  194. list(
  195. APPEND
  196. draco_compression_bit_coders_sources
  197. "${draco_src_root}/compression/bit_coders/adaptive_rans_bit_coding_shared.h"
  198. "${draco_src_root}/compression/bit_coders/adaptive_rans_bit_decoder.cc"
  199. "${draco_src_root}/compression/bit_coders/adaptive_rans_bit_decoder.h"
  200. "${draco_src_root}/compression/bit_coders/adaptive_rans_bit_encoder.cc"
  201. "${draco_src_root}/compression/bit_coders/adaptive_rans_bit_encoder.h"
  202. "${draco_src_root}/compression/bit_coders/direct_bit_decoder.cc"
  203. "${draco_src_root}/compression/bit_coders/direct_bit_decoder.h"
  204. "${draco_src_root}/compression/bit_coders/direct_bit_encoder.cc"
  205. "${draco_src_root}/compression/bit_coders/direct_bit_encoder.h"
  206. "${draco_src_root}/compression/bit_coders/folded_integer_bit_decoder.h"
  207. "${draco_src_root}/compression/bit_coders/folded_integer_bit_encoder.h"
  208. "${draco_src_root}/compression/bit_coders/rans_bit_decoder.cc"
  209. "${draco_src_root}/compression/bit_coders/rans_bit_decoder.h"
  210. "${draco_src_root}/compression/bit_coders/rans_bit_encoder.cc"
  211. "${draco_src_root}/compression/bit_coders/rans_bit_encoder.h"
  212. "${draco_src_root}/compression/bit_coders/symbol_bit_decoder.cc"
  213. "${draco_src_root}/compression/bit_coders/symbol_bit_decoder.h"
  214. "${draco_src_root}/compression/bit_coders/symbol_bit_encoder.cc"
  215. "${draco_src_root}/compression/bit_coders/symbol_bit_encoder.h")
  216. list(
  217. APPEND draco_enc_config_sources
  218. "${draco_src_root}/compression/config/compression_shared.h"
  219. "${draco_src_root}/compression/config/draco_options.h"
  220. "${draco_src_root}/compression/config/encoder_options.h"
  221. "${draco_src_root}/compression/config/encoding_features.h")
  222. list(
  223. APPEND draco_dec_config_sources
  224. "${draco_src_root}/compression/config/compression_shared.h"
  225. "${draco_src_root}/compression/config/decoder_options.h"
  226. "${draco_src_root}/compression/config/draco_options.h")
  227. list(APPEND draco_compression_options_sources
  228. "${draco_src_root}/compression/draco_compression_options.cc"
  229. "${draco_src_root}/compression/draco_compression_options.h")
  230. list(APPEND draco_compression_decode_sources
  231. "${draco_src_root}/compression/decode.cc"
  232. "${draco_src_root}/compression/decode.h")
  233. list(
  234. APPEND draco_compression_encode_sources
  235. "${draco_src_root}/compression/encode.cc"
  236. "${draco_src_root}/compression/encode.h"
  237. "${draco_src_root}/compression/encode_base.h"
  238. "${draco_src_root}/compression/expert_encode.cc"
  239. "${draco_src_root}/compression/expert_encode.h")
  240. list(
  241. APPEND
  242. draco_compression_mesh_traverser_sources
  243. "${draco_src_root}/compression/mesh/traverser/depth_first_traverser.h"
  244. "${draco_src_root}/compression/mesh/traverser/max_prediction_degree_traverser.h"
  245. "${draco_src_root}/compression/mesh/traverser/mesh_attribute_indices_encoding_observer.h"
  246. "${draco_src_root}/compression/mesh/traverser/mesh_traversal_sequencer.h"
  247. "${draco_src_root}/compression/mesh/traverser/traverser_base.h")
  248. list(
  249. APPEND
  250. draco_compression_mesh_dec_sources
  251. "${draco_src_root}/compression/mesh/mesh_decoder.cc"
  252. "${draco_src_root}/compression/mesh/mesh_decoder.h"
  253. "${draco_src_root}/compression/mesh/mesh_edgebreaker_decoder.cc"
  254. "${draco_src_root}/compression/mesh/mesh_edgebreaker_decoder.h"
  255. "${draco_src_root}/compression/mesh/mesh_edgebreaker_decoder_impl.cc"
  256. "${draco_src_root}/compression/mesh/mesh_edgebreaker_decoder_impl.h"
  257. "${draco_src_root}/compression/mesh/mesh_edgebreaker_decoder_impl_interface.h"
  258. "${draco_src_root}/compression/mesh/mesh_edgebreaker_shared.h"
  259. "${draco_src_root}/compression/mesh/mesh_edgebreaker_traversal_decoder.h"
  260. "${draco_src_root}/compression/mesh/mesh_edgebreaker_traversal_predictive_decoder.h"
  261. "${draco_src_root}/compression/mesh/mesh_edgebreaker_traversal_valence_decoder.h"
  262. "${draco_src_root}/compression/mesh/mesh_sequential_decoder.cc"
  263. "${draco_src_root}/compression/mesh/mesh_sequential_decoder.h")
  264. list(
  265. APPEND
  266. draco_compression_mesh_enc_sources
  267. "${draco_src_root}/compression/mesh/mesh_edgebreaker_encoder.cc"
  268. "${draco_src_root}/compression/mesh/mesh_edgebreaker_encoder.h"
  269. "${draco_src_root}/compression/mesh/mesh_edgebreaker_encoder_impl.cc"
  270. "${draco_src_root}/compression/mesh/mesh_edgebreaker_encoder_impl.h"
  271. "${draco_src_root}/compression/mesh/mesh_edgebreaker_encoder_impl_interface.h"
  272. "${draco_src_root}/compression/mesh/mesh_edgebreaker_shared.h"
  273. "${draco_src_root}/compression/mesh/mesh_edgebreaker_traversal_encoder.h"
  274. "${draco_src_root}/compression/mesh/mesh_edgebreaker_traversal_predictive_encoder.h"
  275. "${draco_src_root}/compression/mesh/mesh_edgebreaker_traversal_valence_encoder.h"
  276. "${draco_src_root}/compression/mesh/mesh_encoder.cc"
  277. "${draco_src_root}/compression/mesh/mesh_encoder.h"
  278. "${draco_src_root}/compression/mesh/mesh_sequential_encoder.cc"
  279. "${draco_src_root}/compression/mesh/mesh_sequential_encoder.h")
  280. list(
  281. APPEND
  282. draco_compression_point_cloud_dec_sources
  283. "${draco_src_root}/compression/point_cloud/point_cloud_decoder.cc"
  284. "${draco_src_root}/compression/point_cloud/point_cloud_decoder.h"
  285. "${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_decoder.cc"
  286. "${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_decoder.h"
  287. "${draco_src_root}/compression/point_cloud/point_cloud_sequential_decoder.cc"
  288. "${draco_src_root}/compression/point_cloud/point_cloud_sequential_decoder.h"
  289. )
  290. list(
  291. APPEND
  292. draco_compression_point_cloud_enc_sources
  293. "${draco_src_root}/compression/point_cloud/point_cloud_encoder.cc"
  294. "${draco_src_root}/compression/point_cloud/point_cloud_encoder.h"
  295. "${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_encoder.cc"
  296. "${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_encoder.h"
  297. "${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoder.cc"
  298. "${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoder.h"
  299. )
  300. list(
  301. APPEND draco_compression_entropy_sources
  302. "${draco_src_root}/compression/entropy/ans.h"
  303. "${draco_src_root}/compression/entropy/rans_symbol_coding.h"
  304. "${draco_src_root}/compression/entropy/rans_symbol_decoder.h"
  305. "${draco_src_root}/compression/entropy/rans_symbol_encoder.h"
  306. "${draco_src_root}/compression/entropy/shannon_entropy.cc"
  307. "${draco_src_root}/compression/entropy/shannon_entropy.h"
  308. "${draco_src_root}/compression/entropy/symbol_decoding.cc"
  309. "${draco_src_root}/compression/entropy/symbol_decoding.h"
  310. "${draco_src_root}/compression/entropy/symbol_encoding.cc"
  311. "${draco_src_root}/compression/entropy/symbol_encoding.h")
  312. list(
  313. APPEND draco_core_sources
  314. "${draco_src_root}/core/bit_utils.cc"
  315. "${draco_src_root}/core/bit_utils.h"
  316. "${draco_src_root}/core/bounding_box.cc"
  317. "${draco_src_root}/core/bounding_box.h"
  318. "${draco_src_root}/core/constants.h"
  319. "${draco_src_root}/core/cycle_timer.cc"
  320. "${draco_src_root}/core/cycle_timer.h"
  321. "${draco_src_root}/core/data_buffer.cc"
  322. "${draco_src_root}/core/data_buffer.h"
  323. "${draco_src_root}/core/decoder_buffer.cc"
  324. "${draco_src_root}/core/decoder_buffer.h"
  325. "${draco_src_root}/core/divide.cc"
  326. "${draco_src_root}/core/divide.h"
  327. "${draco_src_root}/core/draco_index_type.h"
  328. "${draco_src_root}/core/draco_index_type_vector.h"
  329. "${draco_src_root}/core/draco_types.cc"
  330. "${draco_src_root}/core/draco_types.h"
  331. "${draco_src_root}/core/draco_version.h"
  332. "${draco_src_root}/core/encoder_buffer.cc"
  333. "${draco_src_root}/core/encoder_buffer.h"
  334. "${draco_src_root}/core/hash_utils.cc"
  335. "${draco_src_root}/core/hash_utils.h"
  336. "${draco_src_root}/core/macros.h"
  337. "${draco_src_root}/core/math_utils.h"
  338. "${draco_src_root}/core/options.cc"
  339. "${draco_src_root}/core/options.h"
  340. "${draco_src_root}/core/quantization_utils.cc"
  341. "${draco_src_root}/core/quantization_utils.h"
  342. "${draco_src_root}/core/status.h"
  343. "${draco_src_root}/core/status_or.h"
  344. "${draco_src_root}/core/varint_decoding.h"
  345. "${draco_src_root}/core/varint_encoding.h"
  346. "${draco_src_root}/core/vector_d.h")
  347. list(
  348. APPEND draco_io_sources
  349. "${draco_src_root}/io/file_reader_factory.cc"
  350. "${draco_src_root}/io/file_reader_factory.h"
  351. "${draco_src_root}/io/file_reader_interface.h"
  352. "${draco_src_root}/io/file_utils.cc"
  353. "${draco_src_root}/io/file_utils.h"
  354. "${draco_src_root}/io/file_writer_factory.cc"
  355. "${draco_src_root}/io/file_writer_factory.h"
  356. "${draco_src_root}/io/file_writer_interface.h"
  357. "${draco_src_root}/io/file_writer_utils.h"
  358. "${draco_src_root}/io/file_writer_utils.cc"
  359. "${draco_src_root}/io/mesh_io.cc"
  360. "${draco_src_root}/io/mesh_io.h"
  361. "${draco_src_root}/io/obj_decoder.cc"
  362. "${draco_src_root}/io/obj_decoder.h"
  363. "${draco_src_root}/io/obj_encoder.cc"
  364. "${draco_src_root}/io/obj_encoder.h"
  365. "${draco_src_root}/io/parser_utils.cc"
  366. "${draco_src_root}/io/parser_utils.h"
  367. "${draco_src_root}/io/ply_decoder.cc"
  368. "${draco_src_root}/io/ply_decoder.h"
  369. "${draco_src_root}/io/ply_encoder.cc"
  370. "${draco_src_root}/io/ply_encoder.h"
  371. "${draco_src_root}/io/ply_property_reader.h"
  372. "${draco_src_root}/io/ply_property_writer.h"
  373. "${draco_src_root}/io/ply_reader.cc"
  374. "${draco_src_root}/io/ply_reader.h"
  375. "${draco_src_root}/io/stl_decoder.cc"
  376. "${draco_src_root}/io/stl_decoder.h"
  377. "${draco_src_root}/io/stl_encoder.cc"
  378. "${draco_src_root}/io/stl_encoder.h"
  379. "${draco_src_root}/io/point_cloud_io.cc"
  380. "${draco_src_root}/io/point_cloud_io.h"
  381. "${draco_src_root}/io/stdio_file_reader.cc"
  382. "${draco_src_root}/io/stdio_file_reader.h"
  383. "${draco_src_root}/io/stdio_file_writer.cc"
  384. "${draco_src_root}/io/stdio_file_writer.h")
  385. list(
  386. APPEND draco_mesh_sources
  387. "${draco_src_root}/mesh/corner_table.cc"
  388. "${draco_src_root}/mesh/corner_table.h"
  389. "${draco_src_root}/mesh/corner_table_iterators.h"
  390. "${draco_src_root}/mesh/mesh.cc"
  391. "${draco_src_root}/mesh/mesh.h"
  392. "${draco_src_root}/mesh/mesh_are_equivalent.cc"
  393. "${draco_src_root}/mesh/mesh_are_equivalent.h"
  394. "${draco_src_root}/mesh/mesh_attribute_corner_table.cc"
  395. "${draco_src_root}/mesh/mesh_attribute_corner_table.h"
  396. "${draco_src_root}/mesh/mesh_cleanup.cc"
  397. "${draco_src_root}/mesh/mesh_cleanup.h"
  398. "${draco_src_root}/mesh/mesh_features.cc"
  399. "${draco_src_root}/mesh/mesh_features.h"
  400. "${draco_src_root}/mesh/mesh_indices.h"
  401. "${draco_src_root}/mesh/mesh_misc_functions.cc"
  402. "${draco_src_root}/mesh/mesh_misc_functions.h"
  403. "${draco_src_root}/mesh/mesh_stripifier.cc"
  404. "${draco_src_root}/mesh/mesh_stripifier.h"
  405. "${draco_src_root}/mesh/triangle_soup_mesh_builder.cc"
  406. "${draco_src_root}/mesh/triangle_soup_mesh_builder.h"
  407. "${draco_src_root}/mesh/valence_cache.h")
  408. list(
  409. APPEND draco_point_cloud_sources
  410. "${draco_src_root}/point_cloud/point_cloud.cc"
  411. "${draco_src_root}/point_cloud/point_cloud.h"
  412. "${draco_src_root}/point_cloud/point_cloud_builder.cc"
  413. "${draco_src_root}/point_cloud/point_cloud_builder.h")
  414. list(
  415. APPEND
  416. draco_points_common_sources
  417. "${draco_src_root}/compression/point_cloud/algorithms/point_cloud_compression_method.h"
  418. "${draco_src_root}/compression/point_cloud/algorithms/point_cloud_types.h"
  419. "${draco_src_root}/compression/point_cloud/algorithms/quantize_points_3.h"
  420. "${draco_src_root}/compression/point_cloud/algorithms/queuing_policy.h")
  421. list(
  422. APPEND
  423. draco_points_dec_sources
  424. "${draco_src_root}/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.cc"
  425. "${draco_src_root}/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_decoder.h"
  426. "${draco_src_root}/compression/point_cloud/algorithms/float_points_tree_decoder.cc"
  427. "${draco_src_root}/compression/point_cloud/algorithms/float_points_tree_decoder.h"
  428. )
  429. list(
  430. APPEND
  431. draco_points_enc_sources
  432. "${draco_src_root}/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.cc"
  433. "${draco_src_root}/compression/point_cloud/algorithms/dynamic_integer_points_kd_tree_encoder.h"
  434. "${draco_src_root}/compression/point_cloud/algorithms/float_points_tree_encoder.cc"
  435. "${draco_src_root}/compression/point_cloud/algorithms/float_points_tree_encoder.h"
  436. )
  437. list(
  438. APPEND draco_metadata_sources
  439. "${draco_src_root}/metadata/geometry_metadata.cc"
  440. "${draco_src_root}/metadata/geometry_metadata.h"
  441. "${draco_src_root}/metadata/metadata.cc"
  442. "${draco_src_root}/metadata/metadata.h"
  443. "${draco_src_root}/metadata/property_table.cc"
  444. "${draco_src_root}/metadata/property_table.h"
  445. "${draco_src_root}/metadata/structural_metadata.cc"
  446. "${draco_src_root}/metadata/structural_metadata.h")
  447. list(APPEND draco_metadata_enc_sources
  448. "${draco_src_root}/metadata/metadata_encoder.cc"
  449. "${draco_src_root}/metadata/metadata_encoder.h")
  450. list(APPEND draco_metadata_dec_sources
  451. "${draco_src_root}/metadata/metadata_decoder.cc"
  452. "${draco_src_root}/metadata/metadata_decoder.h")
  453. list(APPEND draco_animation_sources
  454. "${draco_src_root}/animation/keyframe_animation.cc"
  455. "${draco_src_root}/animation/keyframe_animation.h")
  456. list(APPEND draco_animation_enc_sources
  457. "${draco_src_root}/animation/keyframe_animation_encoder.cc"
  458. "${draco_src_root}/animation/keyframe_animation_encoder.h")
  459. list(APPEND draco_animation_dec_sources
  460. "${draco_src_root}/animation/keyframe_animation_decoder.cc"
  461. "${draco_src_root}/animation/keyframe_animation_decoder.h")
  462. list(
  463. APPEND draco_js_dec_sources
  464. "${draco_src_root}/javascript/emscripten/decoder_webidl_wrapper.cc"
  465. "${draco_src_root}/javascript/emscripten/draco_decoder_glue_wrapper.cc"
  466. )
  467. list(
  468. APPEND draco_js_enc_sources
  469. "${draco_src_root}/javascript/emscripten/draco_encoder_glue_wrapper.cc"
  470. "${draco_src_root}/javascript/emscripten/encoder_webidl_wrapper.cc")
  471. list(
  472. APPEND
  473. draco_animation_js_dec_sources
  474. "${draco_src_root}/javascript/emscripten/animation_decoder_webidl_wrapper.cc"
  475. "${draco_src_root}/javascript/emscripten/draco_animation_decoder_glue_wrapper.cc"
  476. )
  477. list(
  478. APPEND
  479. draco_animation_js_enc_sources
  480. "${draco_src_root}/javascript/emscripten/animation_encoder_webidl_wrapper.cc"
  481. "${draco_src_root}/javascript/emscripten/draco_animation_encoder_glue_wrapper.cc"
  482. )
  483. list(APPEND draco_unity_plug_sources
  484. "${draco_src_root}/unity/draco_unity_plugin.cc"
  485. "${draco_src_root}/unity/draco_unity_plugin.h")
  486. list(APPEND draco_maya_plug_sources
  487. "${draco_src_root}/maya/draco_maya_plugin.cc"
  488. "${draco_src_root}/maya/draco_maya_plugin.h")
  489. if(DRACO_TRANSCODER_SUPPORTED)
  490. list(
  491. APPEND draco_animation_sources
  492. "${draco_src_root}/animation/animation.cc"
  493. "${draco_src_root}/animation/animation.h"
  494. "${draco_src_root}/animation/node_animation_data.h"
  495. "${draco_src_root}/animation/skin.cc"
  496. "${draco_src_root}/animation/skin.h")
  497. list(
  498. APPEND draco_io_sources
  499. "${draco_src_root}/io/gltf_decoder.cc"
  500. "${draco_src_root}/io/gltf_decoder.h"
  501. "${draco_src_root}/io/gltf_encoder.cc"
  502. "${draco_src_root}/io/gltf_encoder.h"
  503. "${draco_src_root}/io/gltf_utils.cc"
  504. "${draco_src_root}/io/gltf_utils.h"
  505. "${draco_src_root}/io/image_compression_options.h"
  506. "${draco_src_root}/io/scene_io.cc"
  507. "${draco_src_root}/io/scene_io.h"
  508. "${draco_src_root}/io/texture_io.cc"
  509. "${draco_src_root}/io/texture_io.h"
  510. "${draco_src_root}/io/tiny_gltf_utils.cc"
  511. "${draco_src_root}/io/tiny_gltf_utils.h")
  512. list(
  513. APPEND draco_material_sources
  514. "${draco_src_root}/material/material.cc"
  515. "${draco_src_root}/material/material.h"
  516. "${draco_src_root}/material/material_library.cc"
  517. "${draco_src_root}/material/material_library.h")
  518. list(
  519. APPEND draco_mesh_sources
  520. "${draco_src_root}/mesh/mesh_connected_components.h"
  521. "${draco_src_root}/mesh/mesh_splitter.cc"
  522. "${draco_src_root}/mesh/mesh_splitter.h"
  523. "${draco_src_root}/mesh/mesh_utils.cc"
  524. "${draco_src_root}/mesh/mesh_utils.h")
  525. list(
  526. APPEND draco_scene_sources
  527. "${draco_src_root}/scene/instance_array.cc"
  528. "${draco_src_root}/scene/instance_array.h"
  529. "${draco_src_root}/scene/light.cc"
  530. "${draco_src_root}/scene/light.h"
  531. "${draco_src_root}/scene/mesh_group.h"
  532. "${draco_src_root}/scene/scene.cc"
  533. "${draco_src_root}/scene/scene.h"
  534. "${draco_src_root}/scene/scene_are_equivalent.cc"
  535. "${draco_src_root}/scene/scene_are_equivalent.h"
  536. "${draco_src_root}/scene/scene_indices.h"
  537. "${draco_src_root}/scene/scene_node.h"
  538. "${draco_src_root}/scene/scene_utils.cc"
  539. "${draco_src_root}/scene/scene_utils.h"
  540. "${draco_src_root}/scene/trs_matrix.cc"
  541. "${draco_src_root}/scene/trs_matrix.h")
  542. list(
  543. APPEND draco_texture_sources
  544. "${draco_src_root}/texture/source_image.cc"
  545. "${draco_src_root}/texture/source_image.h"
  546. "${draco_src_root}/texture/texture.h"
  547. "${draco_src_root}/texture/texture_library.cc"
  548. "${draco_src_root}/texture/texture_library.h"
  549. "${draco_src_root}/texture/texture_map.cc"
  550. "${draco_src_root}/texture/texture_map.h"
  551. "${draco_src_root}/texture/texture_transform.cc"
  552. "${draco_src_root}/texture/texture_transform.h"
  553. "${draco_src_root}/texture/texture_utils.cc"
  554. "${draco_src_root}/texture/texture_utils.h")
  555. endif()
  556. #
  557. # Draco targets.
  558. #
  559. if(EMSCRIPTEN AND DRACO_JS_GLUE)
  560. # Draco decoder and encoder "executable" targets in various flavors for
  561. # Emscripten.
  562. if(DRACO_TRANSCODER_SUPPORTED)
  563. message(FATAL_ERROR "The transcoder is not supported in Emscripten.")
  564. endif()
  565. list(
  566. APPEND draco_decoder_src
  567. ${draco_attributes_sources}
  568. ${draco_compression_attributes_dec_sources}
  569. ${draco_compression_attributes_pred_schemes_dec_sources}
  570. ${draco_compression_bit_coders_sources}
  571. ${draco_compression_decode_sources}
  572. ${draco_compression_entropy_sources}
  573. ${draco_compression_mesh_traverser_sources}
  574. ${draco_compression_mesh_dec_sources}
  575. ${draco_compression_options_sources}
  576. ${draco_compression_point_cloud_dec_sources}
  577. ${draco_core_sources}
  578. ${draco_dec_config_sources}
  579. ${draco_js_dec_sources}
  580. ${draco_mesh_sources}
  581. ${draco_metadata_dec_sources}
  582. ${draco_metadata_sources}
  583. ${draco_point_cloud_sources}
  584. ${draco_points_dec_sources})
  585. list(
  586. APPEND draco_encoder_src
  587. ${draco_attributes_sources}
  588. ${draco_compression_attributes_enc_sources}
  589. ${draco_compression_attributes_pred_schemes_enc_sources}
  590. ${draco_compression_bit_coders_sources}
  591. ${draco_compression_encode_sources}
  592. ${draco_compression_entropy_sources}
  593. ${draco_compression_mesh_traverser_sources}
  594. ${draco_compression_mesh_enc_sources}
  595. ${draco_compression_options_sources}
  596. ${draco_compression_point_cloud_enc_sources}
  597. ${draco_core_sources}
  598. ${draco_enc_config_sources}
  599. ${draco_js_enc_sources}
  600. ${draco_mesh_sources}
  601. ${draco_metadata_enc_sources}
  602. ${draco_metadata_sources}
  603. ${draco_point_cloud_sources}
  604. ${draco_points_enc_sources})
  605. list(APPEND draco_js_dec_idl
  606. "${draco_src_root}/javascript/emscripten/draco_web_decoder.idl")
  607. list(APPEND draco_js_enc_idl
  608. "${draco_src_root}/javascript/emscripten/draco_web_encoder.idl")
  609. list(
  610. APPEND
  611. draco_animation_js_dec_idl
  612. "${draco_src_root}/javascript/emscripten/draco_animation_web_decoder.idl")
  613. list(
  614. APPEND
  615. draco_animation_js_enc_idl
  616. "${draco_src_root}/javascript/emscripten/draco_animation_web_encoder.idl")
  617. list(APPEND draco_pre_link_js_sources
  618. "${draco_src_root}/javascript/emscripten/prepareCallbacks.js"
  619. "${draco_src_root}/javascript/emscripten/version.js")
  620. list(APPEND draco_post_link_js_sources
  621. "${draco_src_root}/javascript/emscripten/finalize.js")
  622. list(APPEND draco_post_link_js_decoder_sources ${draco_post_link_js_sources}
  623. "${draco_src_root}/javascript/emscripten/decoder_functions.js")
  624. set(draco_decoder_glue_path "${draco_build}/glue_decoder")
  625. set(draco_encoder_glue_path "${draco_build}/glue_encoder")
  626. draco_generate_emscripten_glue(INPUT_IDL ${draco_js_dec_idl}
  627. OUTPUT_PATH ${draco_decoder_glue_path})
  628. draco_generate_emscripten_glue(INPUT_IDL ${draco_js_enc_idl}
  629. OUTPUT_PATH ${draco_encoder_glue_path})
  630. if(DRACO_DECODER_ATTRIBUTE_DEDUPLICATION)
  631. list(APPEND draco_decoder_features
  632. "DRACO_ATTRIBUTE_INDICES_DEDUPLICATION_SUPPORTED"
  633. "DRACO_ATTRIBUTE_VALUES_DEDUPLICATION_SUPPORTED")
  634. endif()
  635. draco_add_emscripten_executable(
  636. NAME draco_decoder
  637. SOURCES ${draco_decoder_src}
  638. DEFINES ${draco_defines}
  639. FEATURES ${draco_decoder_features}
  640. INCLUDES ${draco_include_paths}
  641. LINK_FLAGS "-sEXPORT_NAME=\"DracoDecoderModule\""
  642. GLUE_PATH ${draco_decoder_glue_path}
  643. PRE_LINK_JS_SOURCES ${draco_pre_link_js_sources}
  644. POST_LINK_JS_SOURCES ${draco_post_link_js_decoder_sources})
  645. draco_add_emscripten_executable(
  646. NAME draco_encoder
  647. SOURCES ${draco_encoder_src}
  648. DEFINES ${draco_defines}
  649. FEATURES DRACO_ATTRIBUTE_INDICES_DEDUPLICATION_SUPPORTED
  650. DRACO_ATTRIBUTE_VALUES_DEDUPLICATION_SUPPORTED
  651. INCLUDES ${draco_include_paths}
  652. LINK_FLAGS "-sEXPORT_NAME=\"DracoEncoderModule\""
  653. GLUE_PATH ${draco_encoder_glue_path}
  654. PRE_LINK_JS_SOURCES ${draco_pre_link_js_sources}
  655. POST_LINK_JS_SOURCES ${draco_post_link_js_sources})
  656. if(DRACO_ANIMATION_ENCODING)
  657. set(draco_anim_decoder_glue_path "${draco_build}/glue_animation_decoder")
  658. set(draco_anim_encoder_glue_path "${draco_build}/glue_animation_encoder")
  659. draco_generate_emscripten_glue(INPUT_IDL ${draco_animation_js_dec_idl}
  660. OUTPUT_PATH ${draco_anim_decoder_glue_path})
  661. draco_generate_emscripten_glue(INPUT_IDL ${draco_animation_js_enc_idl}
  662. OUTPUT_PATH ${draco_anim_encoder_glue_path})
  663. draco_add_emscripten_executable(
  664. NAME draco_animation_decoder
  665. SOURCES ${draco_animation_dec_sources} ${draco_animation_js_dec_sources}
  666. ${draco_animation_sources} ${draco_decoder_src}
  667. DEFINES ${draco_defines}
  668. INCLUDES ${draco_include_paths}
  669. LINK_FLAGS "-sEXPORT_NAME=\"DracoAnimationDecoderModule\""
  670. GLUE_PATH ${draco_anim_decoder_glue_path}
  671. PRE_LINK_JS_SOURCES ${draco_pre_link_js_sources}
  672. POST_LINK_JS_SOURCES ${draco_post_link_js_decoder_sources})
  673. draco_add_emscripten_executable(
  674. NAME draco_animation_encoder
  675. SOURCES ${draco_animation_enc_sources} ${draco_animation_js_enc_sources}
  676. ${draco_animation_sources} ${draco_encoder_src}
  677. DEFINES ${draco_defines}
  678. INCLUDES ${draco_include_paths}
  679. LINK_FLAGS "-sEXPORT_NAME=\"DracoAnimationEncoderModule\""
  680. GLUE_PATH ${draco_anim_encoder_glue_path}
  681. PRE_LINK_JS_SOURCES ${draco_pre_link_js_sources}
  682. POST_LINK_JS_SOURCES ${draco_post_link_js_sources})
  683. endif()
  684. else()
  685. # Standard Draco libs, encoder and decoder. Object collections that mirror the
  686. # Draco directory structure.
  687. draco_add_library(
  688. NAME draco_attributes
  689. TYPE OBJECT
  690. SOURCES ${draco_attributes_sources}
  691. DEFINES ${draco_defines}
  692. INCLUDES ${draco_include_paths})
  693. draco_add_library(
  694. NAME draco_compression_attributes_dec OBJECT
  695. ${draco_compression_attributes_dec_sources}
  696. TYPE OBJECT
  697. SOURCES ${draco_compression_attributes_dec_sources}
  698. DEFINES ${draco_defines}
  699. INCLUDES ${draco_include_paths})
  700. draco_add_library(
  701. NAME draco_compression_attributes_enc
  702. TYPE OBJECT
  703. SOURCES ${draco_compression_attributes_enc_sources}
  704. DEFINES ${draco_defines}
  705. INCLUDES ${draco_include_paths})
  706. draco_add_library(
  707. NAME draco_compression_attributes_pred_schemes_dec
  708. TYPE OBJECT
  709. SOURCES ${draco_compression_attributes_pred_schemes_dec_sources})
  710. draco_add_library(
  711. NAME draco_compression_attributes_pred_schemes_enc
  712. TYPE OBJECT
  713. SOURCES ${draco_compression_attributes_pred_schemes_enc_sources}
  714. DEFINES ${draco_defines}
  715. INCLUDES ${draco_include_paths})
  716. draco_add_library(
  717. NAME draco_compression_bit_coders
  718. TYPE OBJECT
  719. SOURCES ${draco_compression_bit_coders_sources}
  720. DEFINES ${draco_defines}
  721. INCLUDES ${draco_include_paths})
  722. draco_add_library(
  723. NAME draco_enc_config
  724. TYPE OBJECT
  725. SOURCES ${draco_enc_config_sources}
  726. DEFINES ${draco_defines}
  727. INCLUDES ${draco_include_paths})
  728. draco_add_library(
  729. NAME draco_dec_config
  730. TYPE OBJECT
  731. SOURCES ${draco_dec_config_sources}
  732. DEFINES ${draco_defines}
  733. INCLUDES ${draco_include_paths})
  734. draco_add_library(
  735. NAME draco_compression_decode
  736. TYPE OBJECT
  737. SOURCES ${draco_compression_decode_sources}
  738. DEFINES ${draco_defines}
  739. INCLUDES ${draco_include_paths})
  740. draco_add_library(
  741. NAME draco_compression_encode
  742. TYPE OBJECT
  743. SOURCES ${draco_compression_encode_sources}
  744. DEFINES ${draco_defines}
  745. INCLUDES ${draco_include_paths})
  746. draco_add_library(
  747. NAME draco_compression_entropy
  748. TYPE OBJECT
  749. SOURCES ${draco_compression_entropy_sources}
  750. DEFINES ${draco_defines}
  751. INCLUDES ${draco_include_paths})
  752. draco_add_library(
  753. NAME draco_compression_mesh_traverser
  754. TYPE OBJECT
  755. SOURCES ${draco_compression_mesh_traverser_sources}
  756. DEFINES ${draco_defines}
  757. INCLUDES ${draco_include_paths})
  758. draco_add_library(
  759. NAME draco_compression_mesh_dec
  760. TYPE OBJECT
  761. SOURCES ${draco_compression_mesh_dec_sources}
  762. DEFINES ${draco_defines}
  763. INCLUDES ${draco_include_paths})
  764. draco_add_library(
  765. NAME draco_compression_mesh_enc
  766. TYPE OBJECT
  767. SOURCES ${draco_compression_mesh_enc_sources}
  768. DEFINES ${draco_defines}
  769. INCLUDES ${draco_include_paths})
  770. draco_add_library(
  771. NAME draco_compression_options
  772. TYPE OBJECT
  773. SOURCES ${draco_compression_options_sources}
  774. DEFINES ${draco_defines}
  775. INCLUDES ${draco_include_paths})
  776. draco_add_library(
  777. NAME draco_compression_point_cloud_dec
  778. TYPE OBJECT
  779. SOURCES ${draco_compression_point_cloud_dec_sources}
  780. DEFINES ${draco_defines}
  781. INCLUDES ${draco_include_paths})
  782. draco_add_library(
  783. NAME draco_compression_point_cloud_enc
  784. TYPE OBJECT
  785. SOURCES ${draco_compression_point_cloud_enc_sources}
  786. DEFINES ${draco_defines}
  787. INCLUDES ${draco_include_paths})
  788. draco_add_library(
  789. NAME draco_core
  790. TYPE OBJECT
  791. SOURCES ${draco_core_sources}
  792. DEFINES ${draco_defines}
  793. INCLUDES ${draco_include_paths})
  794. draco_add_library(
  795. NAME draco_io
  796. TYPE OBJECT
  797. SOURCES ${draco_io_sources}
  798. DEFINES ${draco_defines}
  799. INCLUDES ${draco_include_paths})
  800. draco_add_library(
  801. NAME draco_mesh
  802. TYPE OBJECT
  803. SOURCES ${draco_mesh_sources}
  804. DEFINES ${draco_defines}
  805. INCLUDES ${draco_include_paths})
  806. draco_add_library(
  807. NAME draco_metadata_dec
  808. TYPE OBJECT
  809. SOURCES ${draco_metadata_dec_sources}
  810. DEFINES ${draco_defines}
  811. INCLUDES ${draco_include_paths})
  812. draco_add_library(
  813. NAME draco_metadata_enc
  814. TYPE OBJECT
  815. SOURCES ${draco_metadata_enc_sources}
  816. DEFINES ${draco_defines}
  817. INCLUDES ${draco_include_paths})
  818. draco_add_library(
  819. NAME draco_metadata
  820. TYPE OBJECT
  821. SOURCES ${draco_metadata_sources}
  822. DEFINES ${draco_defines}
  823. INCLUDES ${draco_include_paths})
  824. draco_add_library(
  825. NAME draco_animation_dec
  826. TYPE OBJECT
  827. SOURCES ${draco_animation_dec_sources}
  828. DEFINES ${draco_defines}
  829. INCLUDES ${draco_include_paths})
  830. draco_add_library(
  831. NAME draco_animation_enc
  832. TYPE OBJECT
  833. SOURCES ${draco_animation_enc_sources}
  834. DEFINES ${draco_defines}
  835. INCLUDES ${draco_include_paths})
  836. draco_add_library(
  837. NAME draco_animation
  838. TYPE OBJECT
  839. SOURCES ${draco_animation_sources}
  840. DEFINES ${draco_defines}
  841. INCLUDES ${draco_include_paths})
  842. draco_add_library(
  843. NAME draco_point_cloud
  844. TYPE OBJECT
  845. SOURCES ${draco_point_cloud_sources}
  846. DEFINES ${draco_defines}
  847. INCLUDES ${draco_include_paths})
  848. draco_add_library(
  849. NAME draco_points_dec
  850. TYPE OBJECT
  851. SOURCES ${draco_points_common_sources} ${draco_points_dec_sources}
  852. DEFINES ${draco_defines}
  853. INCLUDES ${draco_include_paths})
  854. draco_add_library(
  855. NAME draco_points_enc
  856. TYPE OBJECT
  857. SOURCES ${draco_points_common_sources} ${draco_points_enc_sources}
  858. DEFINES ${draco_defines}
  859. INCLUDES ${draco_include_paths})
  860. if(DRACO_TRANSCODER_SUPPORTED)
  861. if(MSVC)
  862. # TODO(https://github.com/google/draco/issues/826)
  863. set_source_files_properties("${draco_src_root}/io/gltf_decoder.cc"
  864. PROPERTIES COMPILE_OPTIONS "/Od")
  865. endif()
  866. draco_add_library(
  867. NAME draco_material
  868. TYPE OBJECT
  869. SOURCES ${draco_material_sources}
  870. DEFINES ${draco_defines}
  871. INCLUDES ${draco_include_paths})
  872. draco_add_library(
  873. NAME draco_scene
  874. TYPE OBJECT
  875. SOURCES ${draco_scene_sources}
  876. DEFINES ${draco_defines}
  877. INCLUDES ${draco_include_paths})
  878. draco_add_library(
  879. NAME draco_texture
  880. TYPE OBJECT
  881. SOURCES ${draco_texture_sources}
  882. DEFINES ${draco_defines}
  883. INCLUDES ${draco_include_paths})
  884. endif()
  885. list(
  886. APPEND draco_object_library_deps
  887. draco_attributes
  888. draco_compression_attributes_dec
  889. draco_compression_attributes_enc
  890. draco_compression_attributes_pred_schemes_dec
  891. draco_compression_attributes_pred_schemes_enc
  892. draco_compression_bit_coders
  893. draco_compression_decode
  894. draco_compression_encode
  895. draco_compression_entropy
  896. draco_compression_mesh_dec
  897. draco_compression_mesh_enc
  898. draco_compression_options
  899. draco_compression_point_cloud_dec
  900. draco_compression_point_cloud_enc
  901. draco_core
  902. draco_dec_config
  903. draco_enc_config
  904. draco_io
  905. draco_mesh
  906. draco_metadata
  907. draco_metadata_dec
  908. draco_metadata_enc
  909. draco_animation
  910. draco_animation_dec
  911. draco_animation_enc
  912. draco_point_cloud
  913. draco_points_dec
  914. draco_points_enc)
  915. if(DRACO_TRANSCODER_SUPPORTED)
  916. list(APPEND draco_object_library_deps draco_material draco_scene
  917. draco_texture)
  918. endif()
  919. # Library targets that consume the object collections.
  920. if(MSVC)
  921. # In order to produce a DLL and import library the Windows tools require
  922. # that the exported symbols are part of the DLL target. The unfortunate side
  923. # effect of this is that a single configuration cannot output both the
  924. # static library and the DLL: This results in an either/or situation.
  925. # Windows users of the draco build can have a DLL and an import library, or
  926. # they can have a static library; they cannot have both from a single
  927. # configuration of the build.
  928. if(BUILD_SHARED_LIBS)
  929. set(draco_lib_type SHARED)
  930. else()
  931. set(draco_lib_type STATIC)
  932. endif()
  933. draco_add_library(
  934. NAME draco
  935. OUTPUT_NAME draco
  936. TYPE ${draco_lib_type}
  937. DEFINES ${draco_defines}
  938. INCLUDES ${draco_include_paths}
  939. OBJLIB_DEPS ${draco_object_library_deps}
  940. LIB_DEPS ${draco_lib_deps})
  941. add_library(draco::draco ALIAS draco)
  942. else()
  943. draco_add_library(
  944. NAME draco_static
  945. OUTPUT_NAME draco
  946. TYPE STATIC
  947. DEFINES ${draco_defines}
  948. INCLUDES ${draco_include_paths}
  949. OBJLIB_DEPS ${draco_object_library_deps}
  950. LIB_DEPS ${draco_lib_deps})
  951. if(BUILD_SHARED_LIBS)
  952. draco_add_library(
  953. NAME draco_shared
  954. SOURCES "${draco_src_root}/core/draco_version.h"
  955. OUTPUT_NAME draco
  956. TYPE SHARED
  957. DEFINES ${draco_defines}
  958. INCLUDES ${draco_include_paths}
  959. LIB_DEPS draco_static)
  960. add_library(draco::draco ALIAS draco_shared)
  961. set_target_properties(draco_shared PROPERTIES EXPORT_NAME draco)
  962. else()
  963. add_library(draco::draco ALIAS draco_static)
  964. set_target_properties(draco_static PROPERTIES EXPORT_NAME draco)
  965. endif()
  966. endif()
  967. if(DRACO_UNITY_PLUGIN)
  968. if(IOS)
  969. set(unity_decoder_lib_type STATIC)
  970. else()
  971. set(unity_decoder_lib_type MODULE)
  972. endif()
  973. draco_add_library(
  974. NAME draco_unity_plugin
  975. TYPE OBJECT
  976. SOURCES ${draco_unity_plug_sources}
  977. DEFINES ${draco_defines}
  978. INCLUDES ${draco_include_paths})
  979. draco_add_library(
  980. NAME dracodec_unity
  981. TYPE ${unity_decoder_lib_type}
  982. DEFINES ${draco_defines}
  983. INCLUDES ${draco_include_paths}
  984. OBJLIB_DEPS draco_unity_plugin
  985. LIB_DEPS ${draco_plugin_dependency})
  986. # For Mac, we need to build a .bundle for the unity plugin.
  987. if(APPLE)
  988. set_target_properties(dracodec_unity PROPERTIES BUNDLE true)
  989. endif()
  990. endif()
  991. if(DRACO_MAYA_PLUGIN)
  992. draco_add_library(
  993. NAME draco_maya_plugin
  994. TYPE OBJECT
  995. SOURCES ${draco_maya_plug_sources}
  996. DEFINES ${draco_defines}
  997. INCLUDES ${draco_include_paths})
  998. draco_add_library(
  999. NAME draco_maya_wrapper
  1000. TYPE MODULE
  1001. DEFINES ${draco_defines}
  1002. INCLUDES ${draco_include_paths}
  1003. OBJLIB_DEPS draco_maya_plugin
  1004. LIB_DEPS ${draco_plugin_dependency})
  1005. # For Mac, we need to build a .bundle for the plugin.
  1006. if(APPLE)
  1007. set_target_properties(draco_maya_wrapper PROPERTIES BUNDLE true)
  1008. endif()
  1009. endif()
  1010. # Draco app targets.
  1011. draco_add_executable(
  1012. NAME draco_decoder
  1013. SOURCES "${draco_src_root}/tools/draco_decoder.cc" ${draco_io_sources}
  1014. DEFINES ${draco_defines}
  1015. INCLUDES ${draco_include_paths}
  1016. LIB_DEPS ${draco_dependency})
  1017. draco_add_executable(
  1018. NAME draco_encoder
  1019. SOURCES "${draco_src_root}/tools/draco_encoder.cc" ${draco_io_sources}
  1020. DEFINES ${draco_defines}
  1021. INCLUDES ${draco_include_paths}
  1022. LIB_DEPS ${draco_dependency})
  1023. if(DRACO_TRANSCODER_SUPPORTED)
  1024. draco_add_executable(
  1025. NAME draco_transcoder
  1026. SOURCES "${draco_src_root}/tools/draco_transcoder.cc"
  1027. "${draco_src_root}/tools/draco_transcoder_lib.cc"
  1028. "${draco_src_root}/tools/draco_transcoder_lib.h"
  1029. ${draco_io_sources}
  1030. DEFINES ${draco_defines}
  1031. INCLUDES ${draco_include_paths}
  1032. LIB_DEPS ${draco_dependency})
  1033. if(DRACO_SIMPLIFIER_SUPPORTED)
  1034. draco_add_executable(
  1035. NAME draco_simplifier
  1036. SOURCES ${draco_pipeline_proto_header}
  1037. "${draco_src_root}/tools/draco_simplifier.cc"
  1038. "${draco_src_root}/tools/draco_simplifier_lib.cc"
  1039. "${draco_src_root}/tools/draco_simplifier_lib.h"
  1040. ${draco_io_sources}
  1041. DEFINES ${draco_defines}
  1042. INCLUDES ${draco_include_paths}
  1043. LIB_DEPS ${draco_dependency})
  1044. endif()
  1045. endif()
  1046. draco_setup_install_target()
  1047. draco_setup_test_targets()
  1048. endif()
  1049. if(DRACO_VERBOSE)
  1050. draco_dump_cmake_flag_variables()
  1051. draco_dump_tracked_configuration_variables()
  1052. draco_dump_options()
  1053. endif()