From e6487332e8c5c458067e0c3943b64c4269585045 Mon Sep 17 00:00:00 2001
From: sabrina-shanman <sabrina@highfidelity.io>
Date: Mon, 18 Mar 2019 14:25:34 -0700
Subject: [PATCH] Attempt to fix linker error with Android and draco in
 BuildDracoMeshTask.cpp

---
 libraries/model-baker/src/model-baker/Baker.cpp          | 2 ++
 .../model-baker/src/model-baker/BuildDracoMeshTask.cpp   | 9 +++++++++
 2 files changed, 11 insertions(+)

diff --git a/libraries/model-baker/src/model-baker/Baker.cpp b/libraries/model-baker/src/model-baker/Baker.cpp
index 7bb53376ed..536255a841 100644
--- a/libraries/model-baker/src/model-baker/Baker.cpp
+++ b/libraries/model-baker/src/model-baker/Baker.cpp
@@ -164,6 +164,8 @@ namespace baker {
             // Build Draco meshes
             // NOTE: This task is disabled by default and must be enabled through configuration
             // TODO: Tangent support (Needs changes to FBXSerializer_Mesh as well)
+            // NOTE: Due to an unresolved linker error, BuildDracoMeshTask is not functional on Android
+            // TODO: Figure out why BuildDracoMeshTask.cpp won't link with draco on Android
             const auto buildDracoMeshInputs = BuildDracoMeshTask::Input(meshesIn, normalsPerMesh, tangentsPerMesh).asVarying();
             const auto buildDracoMeshOutputs = model.addJob<BuildDracoMeshTask>("BuildDracoMesh", buildDracoMeshInputs);
             const auto dracoMeshes = buildDracoMeshOutputs.getN<BuildDracoMeshTask::Output>(0);
diff --git a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp
index 46b170fd25..2e378965de 100644
--- a/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp
+++ b/libraries/model-baker/src/model-baker/BuildDracoMeshTask.cpp
@@ -22,8 +22,11 @@
 #pragma GCC diagnostic ignored "-Wsign-compare"
 #endif
 
+
+#ifndef Q_OS_ANDROID
 #include <draco/compression/encode.h>
 #include <draco/mesh/triangle_soup_mesh_builder.h>
+#endif
 
 #ifdef _WIN32
 #pragma warning( pop )
@@ -35,6 +38,7 @@
 #include "ModelBakerLogging.h"
 #include "ModelMath.h"
 
+#ifndef Q_OS_ANDROID
 std::vector<hifi::ByteArray> createMaterialList(const hfm::Mesh& mesh) {
     std::vector<hifi::ByteArray> materialList;
     for (const auto& meshPart : mesh.parts) {
@@ -199,6 +203,7 @@ std::unique_ptr<draco::Mesh> createDracoMesh(const hfm::Mesh& mesh, const std::v
     
     return dracoMesh;
 }
+#endif // not Q_OS_ANDROID
 
 void BuildDracoMeshTask::configure(const Config& config) {
     _encodeSpeed = config.encodeSpeed;
@@ -206,6 +211,9 @@ void BuildDracoMeshTask::configure(const Config& config) {
 }
 
 void BuildDracoMeshTask::run(const baker::BakeContextPointer& context, const Input& input, Output& output) {
+#ifdef Q_OS_ANDROID
+    qCWarning(model_baker) << "BuildDracoMesh is disabled on Android. Output meshes will be empty.";
+#else
     const auto& meshes = input.get0();
     const auto& normalsPerMesh = input.get1();
     const auto& tangentsPerMesh = input.get2();
@@ -239,4 +247,5 @@ void BuildDracoMeshTask::run(const baker::BakeContextPointer& context, const Inp
             dracoBytes = hifi::ByteArray(buffer.data(), (int)buffer.size());
         }
     }
+#endif // not Q_OS_ANDROID
 }