CMakeLists.txt 45 KB

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